Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows 7

วิธีการตรวจสอบ เปิดใช้งาน หรือปิดใช้งานเวอร์ชันโปรโตคอล SMB บน Windows

การบล็อกข้อความเซิร์ฟเวอร์ (SMB) โปรโตคอลเครือข่ายใช้เพื่อแชร์และเข้าถึงโฟลเดอร์ ไฟล์ เครื่องพิมพ์ และอุปกรณ์อื่นๆ ผ่านเครือข่าย (พอร์ต TCP 445) ในบทความนี้ เราจะพิจารณาว่า SMB เวอร์ชันใด (ภาษาถิ่น) ที่มีอยู่ใน Windows เวอร์ชันต่างๆ (และเกี่ยวข้องกับ samba อย่างไร เวอร์ชันบน Linux); วิธีตรวจสอบเวอร์ชัน SMB ที่ใช้บนคอมพิวเตอร์ของคุณ และวิธีเปิดหรือปิดใช้งานภาษาถิ่น SMBv1, SMBv2 และ SMBv3

สารบัญ:

  • เวอร์ชันโปรโตคอล SMB ใน Windows
  • จะตรวจสอบเวอร์ชัน SMB บน Windows ได้อย่างไร
  • ตรวจสอบภาษา SMB ที่ใช้ด้วย Get-SMBConnection
  • หยุดใช้โปรโตคอล SMBv1 ที่ไม่ปลอดภัย
  • จะเปิดใช้งานและปิดใช้งาน SMBv1, SMBv2 และ SMBv3 บน Windows ได้อย่างไร

เวอร์ชันโปรโตคอล SMB ใน Windows

มีโปรโตคอล SMB (ภาษาถิ่น) หลายเวอร์ชันที่ปรากฏใน Windows เวอร์ชันใหม่อย่างสม่ำเสมอ (และ samba) :

  • CIFS – Windows NT 4.0
  • SMB 1.0 – Windows 2000
  • SMB 2.0 – Windows Server 2008 และ Windows Vista SP1 (รองรับใน Samba 3.6)
  • SMB 2.1 – Windows Server 2008 R2 และ Windows 7 (Samba 4.0)
  • SMB 3.0 – Windows Server 2012 และ Windows 8 (Samba 4.2)
  • SMB 3.02 – Windows Server 2012 R2 และ Windows 8.1 (ไม่รองรับใน Samba)
  • SMB 3.1.1 – Windows Server 2016 และ Windows 10 (ไม่รองรับใน Samba)
แซมบ้า ใช้เพื่อปรับใช้โปรโตคอล SMB ใน Linux/Unix Samba 4.14 และใหม่กว่าใช้ SMB 2.1 เป็นค่าเริ่มต้น

ในการสื่อสารเครือข่าย SMB ไคลเอ็นต์และเซิร์ฟเวอร์ใช้เวอร์ชันโปรโตคอล SMB สูงสุดที่ทั้งไคลเอ็นต์และเซิร์ฟเวอร์รองรับ

ตารางสรุปความเข้ากันได้ของเวอร์ชัน SMB มีลักษณะดังนี้ เมื่อใช้ตารางนี้ คุณจะระบุเวอร์ชันของโปรโตคอล SMB ที่เลือกได้เมื่อ Windows รุ่นต่างๆ โต้ตอบกัน:

ระบบปฏิบัติการ Windows 10, Win Server 2016Windows 8.1, Win Server 2012 R2Windows 8, Server 2012Windows 7, Server 2008 R2Windows Vista, Server 2008Windows XP, Server 2003 และรุ่นก่อนหน้า Windows 10, Windows Server 2016SMB 3.1.1SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0Windows 8.1, เซิร์ฟเวอร์ 2012 R2SMB 3.02SMB 3.02SMB 3.0SMB 2.1SMB 2.0SMB 1.0Windows 8, เซิร์ฟเวอร์ 2012SMB 3.0SMB 3.0SMB 3.0SMB 2.1SMB 2.0SMB 1.0Windows 7, เซิร์ฟเวอร์ 2008 R2SMB 2.1SMB 2.1SMB 2.1SMB 2.1SMB 2.0SMB 1.0Windows Vista, เซิร์ฟเวอร์ 2008SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 2.0SMB 1.0Windows XP, 2003 และรุ่นก่อนหน้าSMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0SMB 1.0

ตัวอย่างเช่น หากคอมพิวเตอร์ไคลเอนต์ที่ใช้ Windows 8.1 เชื่อมต่อกับเซิร์ฟเวอร์ไฟล์ที่มี Windows Server 2016 จะใช้โปรโตคอล SMB 3.0.2

ตามตาราง Windows XP และ Windows Server 2003 สามารถใช้ SMB 1.0 เท่านั้นในการเข้าถึงโฟลเดอร์และไฟล์ที่แชร์ SMBv1 ถูกปิดใช้งานใน Windows Server เวอร์ชันใหม่กว่า (2012 R2 / 2016) ดังนั้น หากคุณยังคงใช้อุปกรณ์ Windows XP และ Windows Server 2003 บนเครือข่ายของคุณ อุปกรณ์เหล่านั้นจะไม่สามารถเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันบนเซิร์ฟเวอร์ไฟล์ที่ใช้ Windows Server 2016

หากใช้ Windows Server 2019/2016 ที่ปิดใช้งาน SMB v1.0 เป็นตัวควบคุมโดเมน ไคลเอ็นต์ Windows XP/Server 2003 จะไม่สามารถเข้าถึงโฟลเดอร์ SYSVOL และ NETLOGON บนตัวควบคุมโดเมนและรับรองความถูกต้องด้วย AD

คุณอาจได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามเชื่อมต่อกับโฟลเดอร์ที่ใช้ร่วมกันบนเซิร์ฟเวอร์ไฟล์ที่ปิดใช้งาน SMBv1:

ชื่อเครือข่ายที่ระบุไม่สามารถใช้ได้อีกต่อไป

จะตรวจสอบเวอร์ชัน SMB บน Windows ได้อย่างไร

มาดูวิธีการค้นหาเวอร์ชันของ SMB ที่เปิดใช้งานบนอุปกรณ์ Windows ของคุณ

ใน Windows 10/8.1 และ Windows Server 2019/2016/2012R2 คุณสามารถตรวจสอบสถานะของภาษาถิ่นต่างๆ ของโปรโตคอล SMB ได้โดยใช้ PowerShell:

Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol

วิธีการตรวจสอบ เปิดใช้งาน หรือปิดใช้งานเวอร์ชันโปรโตคอล SMB บน Windows

คำสั่งนี้ส่งคืนว่าโปรโตคอล SMB1 ถูกปิดใช้งาน (EnableSMB1Protocol = True ) และเปิดใช้งานโปรโตคอล SMB2 และ SMB3 แล้ว (EnableSMB1Protocol = False )

โปรดทราบว่าโปรโตคอล SMBv3 และ SMBv2 มีความเกี่ยวข้องกันอย่างใกล้ชิด คุณไม่สามารถปิดใช้งานหรือเปิดใช้งาน SMBv3 หรือ SMBv2 แยกกันได้ พวกเขาจะเปิดใช้งาน/ปิดใช้งานร่วมกันเสมอเพราะใช้สแต็กเดียวกัน

บน Windows 7, Vista และ Windows Server 2008 R2/2008:

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

หากไม่มีพารามิเตอร์ชื่อ SMB1 หรือ SMB2 ในรีจิสตรีคีย์นี้ โปรโตคอล SMBv1 และ SMBv2 จะถูกเปิดใช้งานโดยค่าเริ่มต้น

วิธีการตรวจสอบ เปิดใช้งาน หรือปิดใช้งานเวอร์ชันโปรโตคอล SMB บน Windows

นอกจากนี้ ในเวอร์ชัน Windows เหล่านี้ คุณสามารถตรวจสอบได้ว่าภาษาของไคลเอ็นต์ SMB ใดได้รับอนุญาตให้เชื่อมต่อกับโฮสต์ระยะไกล:

sc.exe query mrxsmb10

SERVICE_NAME:mrxsmb10TYPE :2 FILE_SYSTEM_DRIVERSTATE :4 RUNNING(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)WIN32_EXIT_CODE :0 (0x0)SERVICE_EXIT_CODE :0 (0x0) CHECKPOINT :0x0WAIT_HINT ก่อน :0 WAIT_HINT 

sc.exe query mrxsmb20

SERVICE_NAME:mrxsmb20TYPE :2 FILE_SYSTEM_DRIVERSTATE :4 RUNNING(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)WIN32_EXIT_CODE :0 (0x0)SERVICE_EXIT_CODE :0 (0x0)CHECKPOINT :0x0WAIT_HINT ก่อน :0WAIT_HINT 

ในทั้งสองกรณี บริการกำลังทำงานอยู่ (STATE = 4 Running ). ซึ่งหมายความว่าอุปกรณ์ Windows ปัจจุบันสามารถเชื่อมต่อกับทั้งโฮสต์ SMBv1 และ SMBv2

การตรวจสอบภาษา SMB ที่ใช้ด้วย Get-SMBConnection

เมื่อสื่อสารผ่าน SMB คอมพิวเตอร์จะใช้เวอร์ชัน SMB สูงสุดที่ทั้งไคลเอ็นต์และเซิร์ฟเวอร์รองรับ Get-SMBConnection PowerShell cmdlet สามารถใช้เพื่อตรวจสอบเวอร์ชัน SMB ที่ใช้ในการเข้าถึงคอมพิวเตอร์ระยะไกล:

วิธีการตรวจสอบ เปิดใช้งาน หรือปิดใช้งานเวอร์ชันโปรโตคอล SMB บน Windows

เวอร์ชัน SMB ที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกล (ServerName ) อยู่ใน ภาษาถิ่น คอลัมน์

คุณสามารถแสดงข้อมูลเกี่ยวกับเวอร์ชัน SMB ที่ใช้ในการเข้าถึงเซิร์ฟเวอร์เฉพาะได้:

Get-SmbConnection -ServerName srvfs01

หากคุณต้องการแสดงว่ามีการใช้การเข้ารหัส SMB หรือไม่ (แนะนำใน SMB 3.0):

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

บน Linux คุณสามารถแสดงรายการการเชื่อมต่อ SMB และใช้ภาษาถิ่นใน samba โดยใช้คำสั่ง:

$ sudo smbstatus

ที่ฝั่งเซิร์ฟเวอร์ Windows SMB คุณสามารถแสดงรายการเวอร์ชันของโปรโตคอล SMB ที่ไคลเอ็นต์กำลังใช้อยู่ รันคำสั่ง:

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

วิธีการตรวจสอบ เปิดใช้งาน หรือปิดใช้งานเวอร์ชันโปรโตคอล SMB บน Windowsในตัวอย่างนี้ มีไคลเอนต์ 898 ที่เชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ SMB 2.1 (Windows 7/ Windows 2008 R2) และลูกค้า SMB 3.02 8 ราย

คุณสามารถใช้ PowerShell เพื่อเปิดใช้งานการตรวจสอบเวอร์ชัน SMB ที่ใช้สำหรับการเชื่อมต่อ:

Set-SmbServerConfiguration –AuditSmb1Access $true

เหตุการณ์การเชื่อมต่อ SMB สามารถส่งออกจากบันทึกตัวแสดงเหตุการณ์:

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

หยุดใช้โปรโตคอล SMBv1 ที่ไม่ปลอดภัย

ในช่วงไม่กี่ปีที่ผ่านมา Microsoft ได้ปิดใช้งานโปรโตคอล SMB 1.0 แบบเดิมในผลิตภัณฑ์ทั้งหมดอย่างเป็นระบบด้วยเหตุผลด้านความปลอดภัย นี่เป็นเพราะช่องโหว่ที่สำคัญจำนวนมากในโปรโตคอลนี้ (จำเหตุการณ์ที่เกิดขึ้นกับ Wannacrypt และ Petya ransomware ซึ่งใช้ประโยชน์จากช่องโหว่ในโปรโตคอล SMBv1) Microsoft และบริษัทไอทีอื่นๆ ขอแนะนำอย่างยิ่งให้คุณหยุดใช้ SMBv1 ในเครือข่ายของคุณ

อย่างไรก็ตาม การปิดใช้งาน SMBv1 อาจทำให้เกิดปัญหาในการเข้าถึงไฟล์และโฟลเดอร์ที่แชร์ใน Windows 10 เวอร์ชันใหม่กว่า (Windows Server 2016/2019) จากไคลเอนต์รุ่นเก่า (Windows XP, Windows Server 2003), ระบบปฏิบัติการของบริษัทอื่น (Mac OSX 10.8 Mountain Lion, Snow Leopard, Mavericks, Linux distros เก่า), อุปกรณ์ NAS รุ่นเก่า

หากไม่มีอุปกรณ์รุ่นเก่าเหลืออยู่ในเครือข่ายของคุณที่รองรับเฉพาะ SMBv1 อย่าลืมปิดการใช้งาน SMB dialect นี้ใน Windows

หากคุณมีไคลเอ็นต์ที่ใช้ Windows XP, Windows Server 2003 หรืออุปกรณ์อื่นๆ ที่รองรับ SMBv1 เท่านั้น ควรอัปเดตหรือแยกออก

จะเปิดใช้งานและปิดใช้งาน SMBv1, SMBv2 และ SMBv3 บน Windows ได้อย่างไร

มาดูวิธีเปิดใช้งานและปิดใช้งาน SMB เวอร์ชันต่างๆ บน Windows กัน เราจะครอบคลุมการจัดการไคลเอ็นต์ SMB และเซิร์ฟเวอร์ (เป็นส่วนประกอบ Windows ที่แตกต่างกัน)

Windows 10, 8.1 และ Windows Server 2019/2016/2012R2 :

ปิดใช้งานไคลเอ็นต์และเซิร์ฟเวอร์ SMBv1:

Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

ปิดการใช้งานเซิร์ฟเวอร์ SMBv1 เท่านั้น:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

เปิดใช้งานไคลเอ็นต์และเซิร์ฟเวอร์ SMBv1:

Enable-WindowsOptionalFeature -Online -FeatureName smb1protocol

เปิดใช้งานเฉพาะเซิร์ฟเวอร์ SMBv1:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

เรียนรู้เพิ่มเติมเกี่ยวกับโปรโตคอล SMBv1 บน Windows 10 และ Windows Server 2016/2019

ปิดใช้งานเซิร์ฟเวอร์ SMBv2 และ SMBv3:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

เปิดใช้งานเซิร์ฟเวอร์ SMBv2 และ SMBv3:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

วิธีการตรวจสอบ เปิดใช้งาน หรือปิดใช้งานเวอร์ชันโปรโตคอล SMB บน Windows

Windows 7, Vista และ Windows Server 2008 R2/2008 :

ปิดใช้งานเซิร์ฟเวอร์ SMBv1:

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

วิธีการตรวจสอบ เปิดใช้งาน หรือปิดใช้งานเวอร์ชันโปรโตคอล SMB บน Windows

เปิดใช้งานเซิร์ฟเวอร์ SMBv1:

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

ปิดการใช้งานไคลเอ็นต์ SMBv1:

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

เปิดใช้งานไคลเอ็นต์ SMBv1:

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

ปิดการใช้งานเซิร์ฟเวอร์ SMBv2:

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

เปิดใช้งานเซิร์ฟเวอร์ SMBv2:

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

ปิดการใช้งานไคลเอ็นต์ SMBv2:

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

เปิดใช้งานไคลเอ็นต์ SMBv2:

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

คุณสามารถปิดใช้งานเซิร์ฟเวอร์ SMBv1 บนคอมพิวเตอร์ที่เข้าร่วมโดเมนได้โดยการปรับใช้พารามิเตอร์รีจิสทรีต่อไปนี้ผ่าน GPO:

  • คีย์:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  • ชื่อ:SMB1
  • ประเภท:REG_DWORD
  • ค่า:0

ตั้งค่าพารามิเตอร์รีจิสตรี SMB2=0 เพื่อปิดการใช้งานเซิร์ฟเวอร์ SMBv2

หากต้องการปิดใช้งานไคลเอ็นต์ SMBv1 คุณต้องเผยแพร่การตั้งค่ารีจิสทรีต่อไปนี้:

  • คีย์:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10
  • ชื่อ:สตาร์ท
  • ประเภท:REG_DWORD
  • มูลค่า:4
เมื่อปิดใช้งานการสนับสนุนการแชร์ไฟล์ SMB 1.0/CIFS บน Windows คุณอาจพบข้อผิดพลาด 0x80070035 ไม่พบเส้นทางเครือข่าย ได้รับข้อผิดพลาดเมื่อเข้าถึงโฟลเดอร์ SMB ที่แชร์ และปัญหาเกี่ยวกับการค้นพบเครือข่าย ในกรณีนี้ คุณต้องใช้บริการ Discovery Service แทนบริการ Computer Browser (ลิงค์)