Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Windows 7

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

Giao thức mạng Server Message Block (SMB) dùng để chia sẻ và truy cập thư mục, file, máy in và thiết bị khác qua mạng (cổng TCP 445). Bài này xem xét các phiên bản (dialects) SMB có sẵn trong các phiên bản Windows khác nhau (và mối liên quan với phiên bản samba trên Linux); cách kiểm tra phiên bản SMB đang dùng trên máy; và cách bật/tắt các dialect SMBv1, SMBv2, SMBv3.

Mục lục

Các phiên bản giao thức SMB trong Windows

Có vài phiên bản giao thức SMB (dialects) xuất hiện liên tiếp 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 (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 hỗ trợ trong Samba)
  • SMB 3.1.1 – Windows Server 2016 và Windows 10 (không hỗ trợ trong Samba)

Samba dùng để triển khai giao thức SMB trong Linux/Unix. Samba 4.14 trở lên dùng SMB 2.1 mặc định.

Trong giao tiếp SMB qua mạng, client và server dùng phiên bản SMB tối đa mà cả hai hỗ trợ.

Bảng tóm tắt tương thích phiên bản SMB như sau. Dùng bảng này xác định phiên bản SMB được chọn khi các phiên bản Windows khác nhau tương tác:

Hệ điều hành Win 10, Server 2016 Win 8.1, Server 2012 R2 Win 8, Server 2012 Win 7, Server 2008 R2 Win Vista, Server 2008 Win XP, Server 2003 và cũ hơn
Win 10, Server 2016SMB 3.1.1SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Win 8.1, Server 2012 R2SMB 3.02SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Win 8, Server 2012SMB 3.0SMB 3.0SMB 3.0SMB 2.1SMB 2.0SMB 1.0
Win 7, Server 2008 R2SMB 2.1SMB 2.1SMB 2.1SMB 2.1SMB 2.0SMB 1.0
Win Vista, Server 2008SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 1.0
Win XP, 2003 và cũ hơnSMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0

Ví dụ: client Windows 8.1 kết nối file server Windows Server 2016 sẽ dùng SMB 3.0.2.

Theo bảng, Windows XP và Windows Server 2003 chỉ dùng SMB 1.0 truy cập thư mục/file chia sẻ. SMBv1 bị tắt trong Windows Server mới (2012 R2/2016). Vì vậy, nếu vẫn dùng thiết bị Windows XP/Server 2003 trong mạng, chúng không truy cập được thư mục chia sẻ trên file server chạy Windows Server 2016.

Nếu Windows Server 2019/2016 tắt SMB v1.0 làm domain controller, client Windows XP/Server 2003 không truy cập được thư mục SYSVOL và NETLOGON trên domain controller và xác thực AD.

Có thể nhận lỗi sau khi thử kết nối thư mục chia sẻ trên file server tắt SMBv1:

The specified network name is no longer available

Cách kiểm tra phiên bản SMB trên Windows

Xem cách tìm phiên bản SMB nào được bật trên thiết bị Windows.

Trên Windows 10/8.1 và Windows Server 2019/2016/2012R2, kiểm tra trạng thái các dialect SMB bằng PowerShell:

Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol

Kết quả trả về SMB1 protocol disabled (EnableSMB1Protocol = False), SMB2 và SMB3 enabled (EnableSMB2Protocol = True).

Lưu ý: Giao thức SMBv3 và SMBv2 liên quan chặt chẽ. Không thể bật/tắt SMBv3 hoặc SMBv2 riêng biệt. Chúng luôn bật/tắt cùng nhau vì dùng chung stack.

Trên Windows 7, Vista, 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ố SMB1 hoặc SMB2 trong khóa registry này, SMBv1 và SMBv2 bật mặc định.

Cũng trên các phiên bản này, kiểm tra dialect SMB client cho phép kết nối đến host từ xa:

sc.exe query mrxsmb10
SERVICE_NAME: mrxsmb10 TYPE : 2 FILE_SYSTEM_DRIVER STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0
sc.exe query mrxsmb20
SERVICE_NAME: mrxsmb20 TYPE : 2 FILE_SYSTEM_DRIVER STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0

Cả hai service đều running (STATE = 4 Running). Nghĩa là thiết bị Windows hiện tại có thể kết nối đến cả host SMBv1 và SMBv2.

Kiểm tra dialect SMB đang dùng với Get-SMBConnection

Khi giao tiếp qua SMB, máy tính dùng phiên bản SMB tối đa mà cả client và server hỗ trợ. Cmdlet PowerShell Get-SMBConnection kiểm tra phiên bản SMB dùng để truy cập máy từ xa:

Phiên bản SMB dùng kết nối đến server từ xa (ServerName) liệt kê ở cột Dialect.

Hiển thị thông tin phiên bản SMB dùng truy cập server cụ thể:

Get-SmbConnection -ServerName srvfs01

Muốn xem có dùng mã hóa SMB không (giới thiệu từ SMB 3.0):

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

Trên Linux, hiển thị danh sách kết nối SMB và dialect dùng trong samba:

$ sudo smbstatus

Ở phía server SMB Windows, hiển thị danh sách phiên bản giao thức SMB client đang dùng. Chạy lệnh:

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

Ví dụ: 898 client kết nối server dùng SMB 2.1 (Windows 7/2008 R2) và 8 client dùng SMB 3.02.

Dùng PowerShell bật audit phiên bản SMB dùng cho kết nối:

Set-SmbServerConfiguration –AuditSmb1Access $true

Sự kiện kết nối SMB sau đó xuất từ log Event Viewer:

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

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

Quá khứ vài năm, Microsoft hệ thống tắt giao thức SMB 1.0 cũ trong tất cả sản phẩm vì lý do bảo mật. Do số lượng lỗ hổng nghiêm trọng trong giao thức này (nhớ sự cố wannacrypt và petya ransomware khai thác lỗ hổng SMBv1). Microsoft và các công ty IT khuyến cáo mạnh mẽ ngừng sử dụng SMBv1 trong mạng của bạn.

Tuy nhiên, tắt SMBv1 có thể gây vấn đề truy cập file/thư mục chia sẻ trên Windows 10 mới (Windows Server 2016/2019) từ client cũ (Windows XP, Windows Server 2003), OS bên thứ ba (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, distro Linux cũ), thiết bị NAS cũ.

Nếu không còn thiết bị cũ chỉ hỗ trợ SMBv1 trong mạng, hãy chắc chắn tắt dialect SMB này trong Windows.

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

Cách bật/tắt SMBv1, SMBv2, SMBv3 trên Windows

Xem các cách bật/tắt phiên bản SMB khác nhau trên Windows. SMB client và server quản lý riêng biệt (là thành phần Windows khác nhau).

Windows 10, 8.1, Windows Server 2019/2016/2012R2

Tắt SMBv1 client và server:

Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

Tắt chỉ SMBv1 server:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

Bật SMBv1 client và server:

Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol

Bật chỉ SMBv1 server:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

Tắt SMBv2 và SMBv3 server:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Bật SMBv2 và SMBv3 server:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

Windows 7, Vista, Windows Server 2008 R2/2008

Tắt SMBv1 server:

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

Bật SMBv1 server:

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

Tắt SMBv1 client:

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

Bật SMBv1 client:

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

Tắt SMBv2 server:

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

Bật SMBv2 server:

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

Tắt SMBv2 client:

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

Bật SMBv2 client:

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

Có thể tắt SMBv1 server trên máy tham gia domain bằng cách triển khai tham số registry sau qua GPO:

  • Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  • Name: SMB1
  • Type: REG_DWORD
  • Value: 0

Đặt tham số registry SMB2=0 để tắt SMBv2 server.

Để tắt SMBv1 client, triển khai cài đặt registry sau:

  • Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10
  • Name: Start
  • Type: REG_DWORD
  • Value: 4
Khi tắt SMB 1.0/CIFS File Sharing Support trên Windows, có thể gặp lỗi 0x80070035 network path not found, lỗi truy cập thư mục SMB chia sẻ, vấn đề network discovery. Lúc này phải dùng Discovery Service thay vì Computer Browser service.