Làm thế nào để Kiểm tra, Bật hoặc Tắt các Phiên bản Giao thức SMB trên Windows?

0
56

Giao thức mạng Khối Thông báo Máy chủ (SMB) đượ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 những 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 các phiên bản samba 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
  • Làm thế nào để kiểm tra phiên bản SMB trên Windows?
  • Kiểm tra các phương ngữ SMB đã sử dụng với Get-SMBConnection
  • Ngừng sử dụng Giao thức SMBv1 không an toàn
  • Làm cách nào để bật và tắt SMBv1, SMBv2 và SMBv3 trên Windows?

Các 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 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ành Windows 10, Win Server 2016 Windows 8.1, Win Server 2012 R2 Windows 8, Server 2012 Windows 7, Server 2008 R2 Windows Vista, Server 2008 Windows XP, Server 2003 trở về trước
Windows 10, Windows Server 2016 SMB 3.1.1 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8.1, Server 2012 R2 SMB 3.02 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8, Server 2012 SMB 3.0 SMB 3.0 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 7, Server 2008 R2 SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.0 SMB 1.0
Windows Vista, Server 2008 SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 1.0
Windows XP, 2003 trở về trước SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 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 ( không còn được hỗ trợ ) 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ị tắt được sử dụng làm bộ điều khiển miền, thì các 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 xác đị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 kích hoạ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

How to check which SMB version is enabled on Windows with PowerShell

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:SYSTEMCurrentControlSetServicesLanmanServerParameters | 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.

Checking smb version on Windows 7 SP1

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: mrxsmb10
TYPE: 2 FILE_SYSTEM_DRIVER
TIỂU SỬ: 4 CHẠY
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE: 0 (0x0)
SERVICE_EXIT_CODE: 0 (0x0)
KIỂM TRA: 0x0
WAIT_HINT: 0x0

sc.exe query mrxsmb20

SERVICE_NAME: mrxsmb20
TYPE: 2 FILE_SYSTEM_DRIVER
TIỂU SỬ: 4 CHẠY
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE: 0 (0x0)
SERVICE_EXIT_CODE: 0 (0x0)
KIỂM TRA: 0x0
WAIT_HINT: 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 với 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 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:

How to find out what SMB dialect is in use using Get-SmbConnection cmdlet

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 cột Phương ngữ.

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

Get-SmbSession used Dialect versions 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 máy khách 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 phiên bản Windows 10 mới hơn (Windows Server 2016/2019) từ các máy khách cũ (Windows XP, Windows Server 2003), HĐH 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.

Làm cách nào để 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 Windows khác nhau).

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

Dsable smb2 using set-smbserverconfiguration cmdlet

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

Tắt máy chủ SMBv1:

Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesLanmanServerParameters" SMB1 -Type DWORD -Value 0 –Force

How to disable SMB 1 on Windows 7 via registry?

Bật máy chủ SMBv1:

Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesLanmanServerParameters" 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:SYSTEMCurrentControlSetServicesLanmanServerParameters" SMB2 -Type DWORD -Value 0 -Force

Bật máy chủ SMBv2:

Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesLanmanServerParameters" 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 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 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à các vấn đề 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).

Dịch từ: http://woshub.com/smb-1-0-support-in-windows-server-2012-r2/

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây