本文介紹如何在SMB客戶端和服務器組件上啟用/禁用服務器消息塊SMBv1、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-SMBServerConfigurationcmdlet后,無須重啟計算機。

若要獲取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:SYSTEMCurrentControlSetServicesLanmanServerParameters" SMB1 -Type DWORD -Value 0 -Force

若要在SMB服務器上禁用SMBv2和SMBv3,請運行以下cmdlet:

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

若要在SMB服務器上啟用SMBv1,請運行以下cmdlet:

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

若要在SMB服務器上啟用SMBv2和SMBv3,請運行以下cmdlet:

Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesLanmanServerParameters" 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_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters 注冊表項: SMB1 REG_DWORD: 0 = Disabled
使用組策略配置流程

打開組策略管理控制臺。右鍵單擊應包含新首選項的組策略對象 (GPO),然后單擊編輯。

在計算機配置下的控制臺樹中,展開首選項文件夾,然后展開Windows 設置文件夾。

右鍵單擊注冊表節點,指向新建,然后選擇注冊表項。

sg1

在新建注冊表屬性對話框中,選擇以下內容:

    操作: 創建

    Hive: HKEY_LOCAL_MACHINE

    注冊表項路徑: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

    值名稱: SMB1

    值類型: REG_DWORD

    值數據: 0

sg2

將此組策略應用到域中所有必需的工作站、服務器和域控制器,以禁用 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”,”MR

默認包含的 MRxSMB10 現已作為依賴項刪除。
使用組策略配置流程

打開組策略管理控制臺。右鍵單擊應包含新首選項的組策略對象 (GPO),然后單擊編輯。

在計算機配置下的控制臺樹中,展開首選項文件夾,然后展開Windows 設置文件夾。

右鍵單擊注冊表節點,指向新建,然后選擇注冊表項。

sg3

在新建注冊表屬性對話框中,選擇以下內容:

    操作: 更新

    Hive: HKEY_LOCAL_MACHINE

    注冊表項路徑: SYSTEM\CurrentControlSet\services\mrxsmb10

    值名稱: Start

    值類型: REG_DWORD

    值數據: 4

sg4

然后刪除剛剛禁用的 MRxSMB10 的依賴項

在新建注冊表屬性對話框中,選擇以下內容:

    操作: 替換

    Hive: HKEY_LOCAL_MACHINE

    注冊表項路徑: SYSTEM\CurrentControlSet\Services\LanmanWorkstation

    值名稱: DependOnService

    值類型 REG_MULTI_SZ

    值數據:

        Bowser

        MRxSmb20

        NSI

這 3 個字符串不帶項目符號(具體如下):

在Windows的多個版本中,默認值包括MRxSMB10,通過將其替換為此多值字符串,實際上就刪除了作為 LanmanServer依賴項的MRxSMB10,結果是從四個默認值減少為上述這三個值。

使用組策略管理控制臺時,無需使用引號或逗號。只需在各行鍵入每個項,如上面所示。
需要重新啟動

應用策略且正確設置注冊表后,必須重新啟動目標系統,然后才能禁用SMB v1。
摘要

如果所有設置均在同一組策略對象 (GPO) 中,組策略管理將顯示以下設置。

sg6
測試和驗證

配置完成后即允許策略進行復制和更新。作為測試的必要步驟,請從 CMD.EXE 提示符處運行 gpupdate/force,然后查看目標計算機,以確保注冊表設置得以正確應用。確保 SMBv2 和 SMBv3 在環境中的所有其他系統中正常運行。
注意

請務必重新啟動目標系統。
如何在 Windows 8.1、Windows 10、Windows 2012 R2和 Windows Server 2016中刪除SMBv1
Windows Server:使用PowerShell (Remove-WindowsFeature FS-SMB1)

sg8
Windows客戶端:使用 “添加或刪除程序”

sg9
Windows客戶端:使用PowerShell (Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol)

sg10
參考與適用性

本文來源自微軟官方技術文檔:如何在 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 Essentials

Windows Server 2012 Foundation

Windows Server 2012 Standard

Windows Server 2016

最后修改:2023 年 12 月 01 日 02 : 02 PM
如果覺得我的文章對你有用,請隨意贊賞