文章主要介紹瞭如何在 Windows 和 Windows Server 中啟用/禁用 SMBv1、SMBv2 和 SMBv3的方法,需要的朋友可以參考下。
如何在 SMB 客戶端和伺服器元件上啟用/禁用伺服器訊息塊 SMBv1、SMBv2 和 SMBv3。
注意:建議由專業技術工程師完成以下操作。
禁用 SMBv2 和 SMBv3 的影響
我們建議不要禁用 SMBv2 或 SMBv3。禁用 SMBv2 或 SMBv3 只能作為臨時故障排除措施。請勿使 SMBv2 或 SMBv3 保持禁用狀態。
禁用 SMBv2 的影響
在 Windows 7 和 Windows Server 2008 R2 中,禁用 SMBv2 會停用以下功能:
- 請求複合 - 允許傳送多個 SMB 2 請求作為單個網路請求
- 大型讀寫 - 更好地利用更快速的網路
- 資料夾和檔案屬性快取 - 客戶端保留資料夾和檔案的本地副本
- 持久控制程式碼 - 如果臨時斷開連線,則允許連線以透明方式重新連線到伺服器
- 改進的訊息簽名 - HMAC SHA-256 代替 MD5 作為雜湊演算法
- 改進的檔案共享擴充套件性 - 每個伺服器的使用者數量、共享數量和開啟檔案數量大大增加
- 支援符號連結
- 客戶端 oplock 租賃模式 - 限制在客戶端和伺服器之間傳輸的資料,從而提高高延遲網路效能並增強 SMB 伺服器的擴充套件性
- 大型 MTU 支援 - 可充分利用 10 千兆位元組 (GB) 乙太網
- 改進的能效 - 向伺服器開啟檔案的客戶端可以睡眠
禁用 SMBv3 的影響
在 Windows 8、Windows 8.1、Windows 10、Windows Server 2012 和 Windows Server 2016 中,禁用 SMBv3 會停用以下功能(以及以上列表中所述的 SMBv2 功能):
- 透明故障轉移 - 在維護或故障轉移期間,客戶端會重新連線,不會干擾群集節點
- 擴充套件 – 併發訪問所有檔案群集節點上的共享資料
- 多通道 - 如果客戶端和伺服器之間有多個路徑可用時,則聚合網路頻寬和容錯
- SMB 直通 – 增加 RDMA 網路支援,實現極高的效能、低延遲和低 CPU 利用率
- 加密 – 提供端到端加密,並防止不可靠網路上的竊聽
- 目錄租賃 - 透過快取改進分支機構中應用程式的響應時間
- 效能最佳化 - 對小型隨機讀/寫 I/O 的最佳化
在 SMB 伺服器上啟用/禁用 SMB 協議
Windows 8 和 Windows Server 2012
Windows 8 和 Windows Server 2012 引入了新的 Set-SMBServerConfiguration Windows PowerShell cmdlet。 透過此 cmdlet,你可以在伺服器元件上啟用或禁用 SMBv1、SMBv2 和 SMBv3 協議。
注意:因為 SMBv2 和 SMBv3 共用一個堆疊,所以在 Windows 8 或 Windows Server 2012 中啟用或禁用 SMBv2 時,也會啟用或禁用 SMBv3。
使用 PowerShell cmdlet
執行 Set-SMBServerConfiguration cmdlet 後,無須重啟計算機。
若要獲取 SMB 伺服器協議配置的當前狀態,請執行以下 cmdlet:
Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
若要在 SMB 伺服器上禁用 SMBv1,請執行以下 cmdlet:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
若要在 SMB 伺服器上禁用 SMBv2 和 SMBv3,請執行以下 cmdlet:
Set-SmbServerConfiguration -EnableSMB2Protocol $false
若要在 SMB 伺服器上啟用 SMBv1,請執行以下 cmdlet:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
若要在 SMB 伺服器上啟用 SMBv2 和 SMBv3,請執行以下 cmdlet:
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 或登錄檔編輯器。
使用 Windows PowerShell 2.0 或更高版本的 PowerShell
若要在 SMB 伺服器上禁用 SMBv1,請執行以下 cmdlet:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type Dword -Value 0 -Force
若要在 SMB 伺服器上禁用 SMBv2 和 SMBv3,請執行以下 cmdlet:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force
若要在 SMB 伺服器上啟用 SMBv1,請執行以下 cmdlet:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force
若要在 SMB 伺服器上啟用 SMBv2 和 SMBv3,請執行以下 cmdlet:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 -Force
注意:進行這些更改後,必須重啟計算機。
使用登錄檔編輯器
注意:以下內容包含有關如何修改登錄檔的資訊。修改登錄檔之前,一定要先對其進行備份。並且一定要知道在發生問題時如何還原登錄檔。有關如何備份、還原和修改登錄檔的更多資訊,請檢視 如何在 Windows 中備份和還原登錄檔。
若要在 SMB 伺服器上啟用或禁用 SMBv1,請配置以下注冊表項:
登錄檔子項:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 登錄檔項: SMB1
REG_DWORD: 0 = 已禁用
REG_DWORD: 1 = 已啟用
預設值: 1 = 已啟用
若要在 SMB 伺服器上啟用或禁用 SMBv2,請配置以下注冊表項:
登錄檔子項:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 登錄檔項: SMB2
REG_DWORD: 0 = 已禁用
REG_DWORD: 1 = 已啟用
預設值: 1 = 已啟用
在 SMB 客戶端上啟用/禁用 SMB 協議
Windows Vista、Windows Server 2008、Windows 7、Windows Server 2008 R2、Windows 8 和 Windows Server 2012
注意:因為 SMBv2 和 SMBv3 共用一個堆疊,所以在 Windows 8 或 Windows Server 2012 中啟用或禁用 SMBv2 時,也會啟用或禁用 SMBv3。
若要在 SMB 客戶端上禁用 SMBv1,請執行以下命令:
sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi
sc.exe config mrxsmb10 start= disabled
若要在 SMB 客戶端上啟用 SMBv1,請執行以下命令:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
若要在 SMB 客戶端上禁用 SMBv2 和 SMBv3,請執行以下命令:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled
若要在 SMB 客戶端上啟用 SMBv2 和 SMBv3,請執行以下命令:
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
注意:
必須在提升的命令提示符中執行這些命令。
進行這些更改後,必須重啟計算機。
使用組策略禁用 SMBv1 伺服器
這將在登錄檔中配置以下新項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 登錄檔項: SMB1 REG_DWORD: 0 = Disabled
使用組策略配置流程
1、開啟組策略管理控制檯。右鍵單擊應包含新首選項的組策略物件 (GPO),然後單擊 編輯。
2、在 計算機配置 下的控制檯樹中,展開 首選項 資料夾,然後展開 Windows 設定 資料夾。
3、右鍵單擊 登錄檔 節點,指向 新建,然後選擇 登錄檔項。
4、在 新建登錄檔屬性 對話方塊中,選擇以下內容:
操作: 建立
Hive: HKEY_LOCAL_MACHINE
登錄檔項路徑: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
值名稱: SMB1
值型別: REG_DWORD
值資料: 0
5、將此組策略應用到域中所有必需的工作站、伺服器和域控制器,以禁用 SMBv1 伺服器元件。也可以將 WMI 篩選器設定為不包含不受支援的操作系統或選中的排除項(如 Windows XP)。
注意:在舊版 Windows XP 或 Linux 早期版本以及第三方系統(不支援 SMBv2 或 SMBv3)需要訪問 SYSVOL 或其他檔案共享(已啟用 SMB v1)的域控制器上進行這些更改時要謹慎小心。
使用組策略禁用 SMBv1 客戶端
若要禁用 SMBv1 客戶端,需要將服務登錄檔項更新為禁止 MRxSMB10 啟動,然後還需要將 MRxSMB10 的依賴項從 LanmanWorkstation 項中刪除,以便它可以正常啟動(無需首先啟動 MRxSMB10)。
這將更新和替換登錄檔以下 2 個項中的預設值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\mrxsmb10 登錄檔項: Start REG_DWORD: 4 = Disabled
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation 登錄檔項: DependOnService REG_MULTI_SZ: “Bowser”,”MRxSmb20″,”NSI”
注意:預設包含的 MRxSMB10 現已作為依賴項刪除。
使用組策略配置流程
1、開啟組策略管理控制檯。右鍵單擊應包含新首選項的組策略物件 (GPO),然後單擊 編輯。
2、在 計算機配置 下的控制檯樹中,展開 首選項 資料夾,然後展開 Windows 設定 資料夾。
3、右鍵單擊 登錄檔 節點,指向 新建,然後選擇 登錄檔項。
4、在 新建登錄檔屬性 對話方塊中,選擇以下內容:
操作: 更新
Hive: HKEY_LOCAL_MACHINE
登錄檔項路徑: SYSTEM\CurrentControlSet\services\mrxsmb10
值名稱: Start
值型別: REG_DWORD
值資料: 4
然後刪除剛剛禁用的 MRxSMB10 的依賴項
5、在 新建登錄檔屬性 對話方塊中,選擇以下內容:
操作: 替換
Hive: HKEY_LOCAL_MACHINE
登錄檔項路徑: SYSTEM\CurrentControlSet\Services\LanmanWorkstation
值名稱: DependOnService
值型別 REG_MULTI_SZ
值資料:
Bowser
MRxSmb20
NSI
注意: 這 3 個字串不帶專案符號(具體如下)
在 Windows 的多個版本中,預設值包括 MRxSMB10,透過將其替換為此多值字串,實際上就刪除了作為 LanmanServer 依賴項的 MRxSMB10,結果是從四個預設值減少為上述這三個值。
注意:使用組策略管理控制檯時,無需使用引號或逗號。只需在各行鍵入每個項,如上面所示。
需要重新啟動
應用策略且正確設定登錄檔後,必須重新啟動目標系統,然後才能禁用 SMB v1。
摘要
如果所有設定均在同一組策略物件 (GPO) 中,組策略管理將顯示以下設定。
測試和驗證
配置完成後即允許策略進行復制和更新。作為測試的必要步驟,請從 CMD.EXE 提示符處執行 gpupdate/force,然後檢視目標計算機,以確保登錄檔設定得以正確應用。確保 SMBv2 和 SMBv3 在環境中的所有其他系統中正常執行。
注意:請務必重新啟動目標系統。
如何在 Windows 8.1、Windows 10、Windows 2012 R2 和 Windows Server 2016 中輕鬆刪除 SMBv1
Windows Server:使用 “伺服器管理器”
Windows Server:使用 PowerShell (Remove-WindowsFeature FS-SMB1)
Windows 客戶端:使用 PowerShell (Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol)
參考與適用性
本文來源自微軟官方技術文件:如何在 Windows 和 Windows Server 中啟用和禁用 SMBv1、SMBv2 和 SMBv3。
如有變化,以微軟官方為準。
這篇文章中的資訊適用於:
Windows 10 Pro released in July 2015,
Windows 10 Enterprise released in July 2015
Windows Vista Enterprise
Windows Vista Business
Windows Vista Home Basic
Windows Vista Home Premium
Windows Vista Ultimate
Windows 7 Enterprise
Windows 7 Home Basic
Windows 7 Home Premium
Windows 7 Professional
Windows 7 Ultimate
Windows Server 2008 Datacenter
Windows Server 2008 Enterprise
Windows Server 2008 Standard
Windows Server 2008 R2 Datacenter
Windows Server 2008 R2 Enterprise
Windows Server 2008 R2 Standard
Windows 8
Windows 8 Enterprise
Windows 8 Pro
Windows Server 2012 Datacenter
Windows Server 2012 Datacente
Windows Server 2012 Essentials
Windows Server 2012 Foundation
Windows Server 2012 Foundation
Windows Server 2012 Standard
Windows Server 2012 Standard
Windows Server 2016