close

如何在 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

使用組策略配置流程
打開組策略管理控制台。右鍵單擊應包含新首選項的組策略對像 (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」,」MRxSmb20〞,」NSI」
注意:默認包含的 MRxSMB10 現已作為依賴項刪除。

arrow
arrow
    文章標籤
    SMB 服務 分享
    全站熱搜

    嚴祐 發表在 痞客邦 留言(0) 人氣()