如何在 Windows 中偵測、啟用和停用 SMBv1、SMBv2 和 SMBv3 (部分機器翻譯)
本文內容
為了進行故障排除,禁用 SMBv2 或 SMBv3
如何透過 PowerShell 移除 SMBv1
如何檢測狀態、啟用和停用 SMB 協定:
使用 Group Policy 停用 SMBv1
本文介紹如何在 SMB 客戶端和伺服器組件上啟用和禁用伺服器訊息區塊(SMB)版本 1 (SMBv1)、SMB 版本 2 (SMBv2)以及 SMB 版本 3 (SMBv3)。
雖然停用或刪除 SMBv1 可能會導致舊電腦或軟體出現一些相容性問題,但 SMBv1 有重大安全漏洞,且我們強烈建議您不要使用它 。 預設不安裝 SMB 1.0 在任何版本的 Windows 11 或 Windows Server 2019 及更高版本中。 SMB 1.0 也不會在 Windows 10 中預設安裝,除了家庭版和專業版。 我們建議不要重新安裝 SMB 1.0,而是更新仍需要它的 SMB 伺服器。 有關需要 SMB 1.0 的第三方清單及其刪除該要求的更新,請查閱SMB1 Product Clearinghouse 。
為了進行故障排除,禁用 SMBv2 或 SMBv3
我們建議保持啟用 SMBv2 和 SMBv3,但您可能會發現在進行故障排除時暫時禁用其中一個是有用的。 有關詳細資訊,請參閱如何在 SMB 伺服器上偵測狀態、啟用和停用 SMB 協定 。
在 Windows 10、Windows 8.1、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2 和 Windows Server 2012 中,禁用 SMBv3 會停用以下功能:
Transparent Failover - 在維護或故障轉移期間,客戶端在群集節點之間重新連接而不中斷。
Scale Out - 同時造訪所有文件叢集節點上的共享數據。
Multichannel - 聚合網路帶寬並實現在客戶端和伺服器之間存在多條可用路徑時的容錯。
SMB Direct - 添加 RDMA 網路支援,實現高性能,低延遲和低 CPU 使用。
Encryption - 提供端到端的加密,保護免受在不受信任的網路上的竊聽。
Directory Leasing - 透過緩存提高分公司應用程序的響應時間。
Performance Optimizations - 針對小規模隨機讀/寫 I / O 進行優化。
在 Windows 7 和 Windows Server 2008 R2 中,禁用 SMBv2 會停用以下功能:
Request compounding - 允許將多個 SMBv2 請求作為單一的網路請求發送
更多的讀寫 - 更好地利用更快的網路
資料夾和文件屬性的快取 - 客戶端保留文件和文件夾的本地副本
耐用的控制代碼 - 允許在暫時斷開連接時重新連接到伺服器
改進的消息驗證 - HMAC SHA-256 取代 MD5 作為標記算法
改進的檔案共享擴展性 - 每個伺服器的使用者數、共用數和開啟文件數大幅增加
支援符號連結
客戶端 Oplock 租用模型 - 限制在客戶端和伺服器之間傳輸的數據,提高在高延遲網路上的性能並增加 SMB 伺服器的可擴展性
大型 MTU 支援 - 以充分利用 10 Gigabit Ethernet(GbE)
提高能源效率 - 連接到伺服器並打開文件的客戶端可以進入睡眠模式
SMBv2 協議在 Windows Vista 和 Windows Server 2008 中帶入,而 SMBv3 協議則在 Windows 8 和 Windows Server 2012 中帶入。 有關 SMBv2 和 SMBv3 能力的更多資訊,請參閱以下文章:
以下是使用 PowerShell 指令(需要提升權限)來檢測、停用和啟用 SMBv1 客戶端和伺服器的步驟:
注意
在您執行 PowerShell 指令以停用或啟用 SMBv1 後,電腦將重新啟動。
偵測:
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
停用:
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
啟用:
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
提示
您可以透過執行下列指令來偵測 SMBv1 狀態(無需提升):Get-SmbServerConfiguration | Format-List EnableSMB1Protocol
。
Windows Server 2012、Windows Server 2012 R2、Windows Server 2016 和 Windows Server 2019:使用 Server Manager 方法
要從 Windows Server 中移除 SMBv1:
在要刪除 SMBv1 的伺服器的 Server Manager Dashboard 上的設定此本機伺服器 ,選擇新增角色與功能 。
在開始之前 ,選擇 Start the Remove Roles and Features Wizard ,然後在下一頁選擇Next 。
在選擇目標伺服器 位於 Server Pool 確保選擇要從中刪除功能的伺服器,然後選擇Next 。
在刪除伺服器列 選擇 Next 。
在刪除功能 清除複選框SMB 1.0/CIFS File Sharing Support 並選擇 Next 。
在確認刪除選擇 確認功能已列出,然後選擇Remove 。
Windows 8.1、Windows 10 和 Windows 11:使用「新增或移除程式」方法
要在上述提到的作業系統中停用 SMBv1:
在 Control Panel 選擇 Programs and Features 。
在 Control Panel Home 下 選擇開啟或關閉 Windows 功能 以開啟 Windows Features 框。
在 Windows Features 框,向下滾動列表,清除SMB 1.0/CIFS File Sharing Support 並選擇 OK 。
Windows 套用變更後,在確認頁面上選擇立即重新啟動 。
注意
當您在 Windows 8 或 Windows Server 2012 中啟用或停用 SMBv2 時,SMBv3 也會同時啟用或停用。 這種行為發生是因為這些協定共用相同的協議堆疊。
Windows 8 和 Windows Server 2012 引進了新的Set-SMBServerConfiguration Windows PowerShell cmdlet。 這個命令讓您能夠在伺服器元件上啟用或停用 SMBv1、SMBv2 和 SMBv3 協定。
執行後,無需重新啟動電腦Set-SMBServerConfiguration cmdlet。
偵測:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
停用:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
啟用:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
有關詳細資訊,請參閱 Microsoft 的伺服器儲存 。
偵測:
Get-SmbServerConfiguration | Select EnableSMB2Protocol
停用:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
啟用:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
對於 Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008:
要在執行 Windows 7、Windows Server 2008 R2、Windows Vista 或 Windows Server 2008 的 SMB 伺服器上啟用或停用 SMB 協定,請使用 Windows PowerShell 或註冊表編輯器。
注意
這種方法需要使用 PowerShell 2.0 或更新版本。
偵測:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
預設設置下,SMBv1 是啟用的(沒有建立註冊表命名值),因此不會回歸 SMB1 的值。
停用:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force
啟用:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force
註記 進行這些變更後,您必須重新啟動電腦。
有關詳細資訊,請參閱 Microsoft 的伺服器儲存 。
偵測:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
停用:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force
啟用:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 -Force
注意
在您進行這些變更之後,必須重新啟動電腦以應用這些變更。
重要
請仔細依照本節中的步驟執行。 如果您未正確修改登錄,可能會發生嚴重問題。 在修改之前,備份登錄以供還原 ,以免發生問題。
要在 SMB 伺服器上啟用或停用 SMBv1,請設置以下註冊表鍵:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Registry entry: SMB1
REG_DWORD: 0 = Disabled
REG_DWORD: 1 = Enabled
Default: 1 = Enabled (No registry key is created)
要在 SMB 伺服器上啟用或停用 SMBv2,請設置以下註冊表鍵:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Registry entry: SMB2
REG_DWORD: 0 = Disabled
REG_DWORD: 1 = Enabled
Default: 1 = Enabled (No registry key is created)
注意
在您進行這些變更之後,必須重新啟動電腦以應用這些變更。
以下是如何在執行 Windows 10、Windows Server 2019、Windows 8.1、Windows Server 2016、Windows Server 2012 R2 和 Windows Server 2012 的 SMB 客戶端上檢測狀態、啟用和停用 SMB 協定的方法:
偵測
sc.exe qc lanmanworkstation
停用:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
啟用:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
有關詳細資訊,請參閱Microsoft 的伺服器儲存
偵測:
sc.exe qc lanmanworkstation
停用:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
啟用:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
注意
您必須在提升權限的命令提示字元中執行這些命令。
在您進行這些變更之後,必須重新啟動電腦以應用這些變更。
本節介紹如何使用 Group Policy 停用 SMBv1。 您可以在不同版本的 Windows 上使用這個方法。
這個步驟會在註冊表中設置以下新項目:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
登錄:SMB1
REG_DWORD: 0 = 停用
若要使用 Group Policy 進行設置,請按照以下步驟操作:
開啟 [群組原則管理主控台] 。 右鍵點選應包含新首選項的群組原則物件 (GPO),然後按一下 Edit 。
在控制台中Computer Configuration 開啟 Preferences 資料夾,然後開啟Windows Settings 資料夾。
右鍵點選 Registry 節點,指向New 然後選擇 Registry Item 。
在New Registry Properties 對話框,選擇以下內容:
啟動 : 建立
Hive : HKEY_LOCAL_MACHINE
Key Path : SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
設置名稱 : SMB1
設置選項 : REG_DWORD
設置數據 : 0
這個步驟停用了 SMBv1 Server 元件。 這個 Group Policy 必須應用到區域中的所有必要的工作站、伺服器和區域控制器。
注意
WMI 篩選器 也可以設定為排除不支援的作業系統或選定的排除項,例如 Windows XP。
重要
在對區域控制器進行這些變更時要小心,特別是對於那些需要造訪 SYSVOL 或其他共用文件的舊版 Windows XP、舊版 Linux 和不支援 SMBv2 或 SMBv3 的第三方系統。在停用 SMBv1 的情況下,請謹慎確認這些系統的兼容性,以避免造成造訪問題。
要停用 SMBv1 使用者端,需要更新服務註冊表項以停用 MRxSMB10 然後依賴 MRxSMB10 需要從條目中刪除LanmanWorkstation 這樣就可以正常啟動,無需MRxSMB10 首次啟動。
這項指南會更新並替換註冊表中以下兩個項目的預設值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10
登錄:開啟 REG_DWORD: 4 = 停用
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation
登錄:DependOnService REG_MULTI_SZ: "Bowser","MRxSmb20″,"NSI"
注意
預設包含的 MRxSMB10 現在已被移除為相容性。
若要使用 Group Policy 進行設置,請按照以下步驟操作:
開啟 [群組原則管理主控台] 。 右鍵點選應包含新首選項的 GPO,然後按編輯 。
在控制台中Computer Configuration 開啟 Preferences 資料夾,然後開啟Windows Settings 資料夾。
右鍵點選 Registry 節點,指向New 然後選擇 Registry Item 。
在New Registry Properties 對話框,選擇以下內容:
啟用 :更新
Hive : HKEY_LOCAL_MACHINE
Key Path : SYSTEM\CurrentControlSet\services\mrxsmb10
設置名稱 :開始
設置選項 : REG_DWORD
設置數據 : 4
然後刪除對 MRxSMB10 已停用。
在New Registry Properties 對話框,選擇以下內容:
啟用 :重置
Hive : HKEY_LOCAL_MACHINE
Key Path : SYSTEM\CurrentControlSet\Services\LanmanWorkstation
設置名稱 : DependOnService
設置種類 : REG_MULTI_SZ
設置數據 :
注意
這三個字串將不會有項目符號(參見下面的螢幕截圖)。
預設值包括 MRxSMB10 在許多版本的Windows 中,因此透過用此多值字串取代它們,實際上是刪除 MRxSMB10 作為相容項LanmanWorkstation 並從四個預設值減少到上面的這三個值。
注意
當您使用 Group Policy Management Console 時,您不需要使用引號或逗號。 只需將每個項目分別輸入到個別的行列中。
重新啟動目標系統以完成停用 SMB v1。
若要確定哪些使用者端試圖使用 SMBv1 連接到 SMB 伺服器,您可以在 Windows Server 2016、Windows 10 和 Windows Server 2019 上啟用審核。 如果已安裝了 2018 年 5 月的月度更新,您還可以在 Windows 7 和 Windows Server 2008 R2 上進行審核;如果安裝了 2017 年 7 月的月度更新,則還可以在 Windows 8.1 和 Windows Server 2012 R2 上進行審核。
啟用:
Set-SmbServerConfiguration -AuditSmb1Access $true
停用:
Set-SmbServerConfiguration -AuditSmb1Access $false
偵測:
Get-SmbServerConfiguration | Select AuditSmb1Access
當啟用 SMBv1 審核時,事件 3000 會出現在 Microsoft-Windows-SMBServer\Audit 事件日誌中,辨別每個嘗試使用 SMBv1 連接的使用者端。
如果所有設定都在同一個 GPO 中,Group Policy Management 將顯示以下設定。
在完成本文中的設置步驟後,允許進行複製和更新。 依測試需求,執行gpupdate /force 在命令提示字元下,然後檢查目標電腦以確保註冊表設定正確應用。 確認 SMBv2 和 SMBv3 對環境中的所有其他系統都正常運作。