Computer >> Máy Tính >  >> Hệ thống >> Windows 7

Cách kiểm tra, bật hoặc tắt các phiên bản giao thức SMB trên Windows?

Khối thông báo máy chủ (SMB) giao thức mạng được sử dụng để chia sẻ và truy cập các thư mục, tệp, máy in và các thiết bị khác qua mạng (cổng TCP 445). Trong bài viết này, chúng ta sẽ xem xét phiên bản (phương ngữ) nào của SMB có sẵn trong các phiên bản Windows khác nhau (và cách chúng liên quan đến samba phiên bản trên Linux); cách kiểm tra phiên bản SMB đang sử dụng trên máy tính của bạn; và cách bật hoặc tắt phương ngữ SMBv1, SMBv2 và SMBv3.

Nội dung:

  • Các phiên bản giao thức SMB trong Windows
  • Cách kiểm tra phiên bản SMB trên Windows?
  • Kiểm tra các phương ngữ SMB đã sử dụng bằng Get-SMBConnection
  • Ngừng sử dụng Giao thức SMBv1 không an toàn
  • Cách bật và tắt SMBv1, SMBv2 và SMBv3 trên Windows?

Phiên bản Giao thức SMB trong Windows

Có một số phiên bản của giao thức SMB (phương ngữ) liên tục xuất hiện trong các phiên bản Windows mới (và samba):

  • CIFS - Windows NT 4.0
  • SMB 1.0 - Windows 2000
  • SMB 2.0 - Windows Server 2008 và Windows Vista SP1 (được hỗ trợ trong Samba 3.6)
  • SMB 2.1 - Windows Server 2008 R2 và Windows 7 (Samba 4.0)
  • SMB 3.0 - Windows Server 2012 và Windows 8 (Samba 4.2)
  • SMB 3.02 - Windows Server 2012 R2 và Windows 8.1 (không được hỗ trợ trong Samba)
  • SMB 3.1.1 - Windows Server 2016 và Windows 10 (không được hỗ trợ trong Samba)
Samba được sử dụng để triển khai giao thức SMB trong Linux / Unix. Samba 4.14 và mới hơn sử dụng SMB 2.1 theo mặc định.

Trong giao tiếp mạng SMB, máy khách và máy chủ sử dụng phiên bản giao thức SMB tối đa được hỗ trợ bởi cả máy khách và máy chủ.

Bảng tóm tắt về khả năng tương thích của phiên bản SMB trông như thế này. Sử dụng bảng này, bạn có thể xác định phiên bản của giao thức SMB được chọn khi các phiên bản Windows khác nhau tương tác:

Hệ điều hànhWindows 10, Win Server 2016Windows 8.1, Win Server 2012 R2Windows 8, Server 2012Windows 7, Server 2008 R2Windows Vista, Server 2008Windows XP, Server 2003 trở về trướcWindows 10, Windows Server 2016SMB 3.1.1SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0Windows 8.1, Server 2012 R2SMB 3.02SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0Windows 8, Server 2012SMB 3.0SMB 3.0SMB 3.0SMB 2.1SMB 2.0SMB 1.0Windows 7, Server 2008 R2SMB 2.1SMB 2.1SMB 2.1SMB 2.1SMB 2.0SMB 1.0Windows Vista, Server 2008SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 1.0Windows XP, 2003 trở về trướcSMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0

Ví dụ:nếu máy khách chạy Windows 8.1 kết nối với máy chủ tệp có Windows Server 2016, giao thức SMB 3.0.2 sẽ được sử dụng.

Theo bảng, Windows XP và Windows Server 2003 chỉ có thể sử dụng SMB 1.0 để truy cập các thư mục và tệp được chia sẻ. SMBv1 bị tắt trong các phiên bản Windows Server mới hơn (2012 R2 / 2016). Vì vậy, nếu bạn vẫn đang sử dụng các thiết bị Windows XP và Windows Server 2003 trên mạng của mình, chúng sẽ không thể truy cập các thư mục được chia sẻ trên máy chủ tệp chạy Windows Server 2016.

Nếu Windows Server 2019/2016 với SMB v1.0 bị vô hiệu hóa được sử dụng làm bộ điều khiển miền thì máy khách Windows XP / Server 2003 sẽ không thể truy cập các thư mục SYSVOL và NETLOGON trên bộ điều khiển miền và xác thực bằng AD.

Bạn có thể gặp lỗi sau khi cố gắng kết nối với thư mục được chia sẻ trên máy chủ tệp đã tắt SMBv1:

 Tên mạng được chỉ định không còn nữa 

Làm thế nào để Kiểm tra Phiên bản SMB trên Windows?

Hãy xem cách tìm ra phiên bản SMB nào được bật trên thiết bị Windows của bạn.

Trên Windows 10 / 8.1 và Windows Server 2019/2016 / 2012R2, bạn có thể kiểm tra trạng thái của các phương ngữ khác nhau của giao thức SMB bằng PowerShell:

Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol

Cách kiểm tra, bật hoặc tắt các phiên bản giao thức SMB trên Windows?

Lệnh này trả về rằng giao thức SMB1 bị vô hiệu hóa (EnableSMB1Protocol = True ) và các giao thức SMB2 và SMB3 được bật (EnableSMB1Protocol = False ).

Lưu ý rằng giao thức SMBv3 và SMBv2 có liên quan chặt chẽ với nhau. Bạn không thể tắt hoặc bật SMBv3 hoặc SMBv2 một cách riêng biệt. Chúng luôn chỉ được bật / tắt cùng nhau vì chúng chia sẻ cùng một ngăn xếp.

Trên Windows 7, Vista và Windows Server 2008 R2 / 2008:

Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

Nếu không có tham số nào có tên SMB1 hoặc SMB2 trong khóa đăng ký này, thì giao thức SMBv1 và SMBv2 được bật theo mặc định.

Cách kiểm tra, bật hoặc tắt các phiên bản giao thức SMB trên Windows?

Cũng trên các phiên bản Windows này, bạn có thể kiểm tra phương ngữ ứng dụng khách SMB nào được phép kết nối với máy chủ từ xa:

sc.exe query mrxsmb10

 SERVICE_NAME:mrxsmb10TYPE:2 FILE_SYSTEM_DRIVERSTATE:4 CHẠY (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE:0 (0x0) SERVICE_EXIT_CODE:0 (0x0) CHECKPOINT:0 (0x0) CHECKPOINT:0 (0x0) CHECKPOINT:0 (0x0) 

sc.exe query mrxsmb20

 SERVICE_NAME:mrxsmb20TYPE:2 FILE_SYSTEM_DRIVERSTATE:4 CHẠY (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE:0 (0x0) SERVICE_EXIT_CODE:0 (0x0) CHECKPOINT:0 (0x0) CHECKPOINT:0 (0x0) CHECKPOINT:0 (0x0) 

Trong cả hai trường hợp, các dịch vụ đang chạy (STATE = 4 Running ). Điều này có nghĩa là thiết bị Windows hiện tại có thể kết nối với cả máy chủ SMBv1 và SMBv2.

Kiểm tra các phương ngữ SMB đã sử dụng bằng Get-SMBConnection

Khi giao tiếp qua SMB, các máy tính sử dụng phiên bản SMB tối đa được hỗ trợ bởi cả máy khách và máy chủ. Get-SMBConnection Lệnh ghép ngắn PowerShell có thể được sử dụng để kiểm tra phiên bản SMB được sử dụng để truy cập máy tính từ xa:

Cách kiểm tra, bật hoặc tắt các phiên bản giao thức SMB trên Windows?

Phiên bản SMB được sử dụng để kết nối với máy chủ từ xa ( Tên máy chủ ) được liệt kê trong Phương ngữ cột.

Bạn có thể hiển thị thông tin về các phiên bản SMB được sử dụng để truy cập một máy chủ cụ thể:

Get-SmbConnection -ServerName srvfs01

Nếu bạn muốn hiển thị nếu mã hóa SMB đang được sử dụng (được giới thiệu trong SMB 3.0):

Get-SmbConnection | ft ServerName,ShareName,Dialect,Encrypted,UserName

Trên Linux, bạn có thể hiển thị danh sách các kết nối SMB và phương ngữ được sử dụng trong samba bằng lệnh:

$ sudo smbstatus

Ở phía máy chủ SMB của Windows, bạn có thể hiển thị danh sách các phiên bản của giao thức SMB mà máy khách hiện đang sử dụng. Chạy lệnh:

Get-SmbSession | Select-Object -ExpandProperty Dialect | Sort-Object -Unique

Cách kiểm tra, bật hoặc tắt các phiên bản giao thức SMB trên Windows? Trong ví dụ này, có 898 máy khách được kết nối với máy chủ bằng SMB 2.1 (Windows 7 / Windows 2008 R2) và 8 khách hàng SMB 3.02.

Bạn có thể sử dụng PowerShell để cho phép kiểm tra các phiên bản SMB được sử dụng cho kết nối:

Set-SmbServerConfiguration –AuditSmb1Access $true

Các sự kiện kết nối SMB sau đó có thể được xuất từ ​​nhật ký của Trình xem sự kiện:

Get-WinEvent -LogName Microsoft-Windows-SMBServer/Audit

Ngừng sử dụng Giao thức SMBv1 không an toàn

Trong vài năm qua, Microsoft đã vô hiệu hóa một cách có hệ thống giao thức SMB 1.0 cũ trong tất cả các sản phẩm vì lý do bảo mật. Điều này là do số lượng lớn các lỗ hổng nghiêm trọng trong giao thức này (hãy nhớ các sự cố với wannacrypt và petya ransomware, đã khai thác một lỗ hổng trong giao thức SMBv1). Microsoft và các công ty CNTT khác thực sự khuyên bạn nên ngừng sử dụng SMBv1 trong mạng của mình.

Tuy nhiên, việc tắt SMBv1 có thể gây ra sự cố khi truy cập các tệp và thư mục được chia sẻ trên các phiên bản mới hơn của Windows 10 (Windows Server 2016/2019) từ các máy khách cũ (Windows XP, Windows Server 2003), hệ điều hành của bên thứ ba (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, các bản phân phối Linux cũ), thiết bị NAS cũ.

Nếu không còn thiết bị kế thừa nào trên mạng của bạn chỉ hỗ trợ SMBv1, hãy đảm bảo tắt phương ngữ SMB này trong Windows.

Nếu bạn có máy khách chạy Windows XP, Windows Server 2003 hoặc các thiết bị khác chỉ hỗ trợ SMBv1, chúng nên được cập nhật hoặc cách ly.

Cách bật và tắt SMBv1, SMBv2 và SMBv3 trên Windows?

Hãy xem các cách để bật và tắt các phiên bản SMB khác nhau trên Windows. Chúng tôi sẽ đề cập đến quản lý máy khách và máy chủ SMB (chúng là các thành phần khác nhau của Windows).

Windows 10, 8.1 và Windows Server 2019/2016 / 2012R2 :

Tắt máy khách và máy chủ SMBv1:

Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

Chỉ tắt máy chủ SMBv1:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

Bật máy khách và máy chủ SMBv1:

Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol

Chỉ bật máy chủ SMBv1:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

Tìm hiểu thêm về giao thức SMBv1 trên Windows 10 và Windows Server 2016/2019.

Tắt máy chủ SMBv2 và SMBv3:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Bật máy chủ SMBv2 và SMBv3:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

Cách kiểm tra, bật hoặc tắt các phiên bản giao thức SMB trên Windows?

Windows 7, Vista và Windows Server 2008 R2 / 2008 :

Tắt máy chủ SMBv1:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

Cách kiểm tra, bật hoặc tắt các phiên bản giao thức SMB trên Windows?

Bật máy chủ SMBv1:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force

Tắt ứng dụng SMBv1:

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled

Bật ứng dụng SMBv1:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto

Tắt máy chủ SMBv2:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force

Bật máy chủ SMBv2:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 –Force

Tắt ứng dụng SMBv2:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled

Bật ứng dụng SMBv2:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto

Bạn có thể vô hiệu hóa máy chủ SMBv1 trên các máy tính tham gia miền bằng cách triển khai tham số đăng ký sau thông qua GPO:

  • Khóa:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters
  • Tên:SMB1
  • Loại:REG_DWORD
  • Giá trị:0

Đặt tham số đăng ký SMB2=0 để tắt máy chủ SMBv2.

Để vô hiệu hóa ứng dụng khách SMBv1, bạn cần phổ biến cài đặt đăng ký sau:

  • Khóa:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ mrxsmb10
  • Tên:Bắt đầu
  • Loại:REG_DWORD
  • Giá trị:4
Khi tắt Hỗ trợ Chia sẻ Tệp SMB 1.0 / CIFS trên Windows, bạn có thể gặp phải lỗi không tìm thấy đường dẫn mạng 0x80070035, gặp lỗi khi truy cập các thư mục SMB được chia sẻ và sự cố với việc khám phá mạng. Trong trường hợp này, bạn phải sử dụng Dịch vụ Khám phá thay vì Dịch vụ Trình duyệt Máy tính (liên kết).