在 Windows 中偵測、啟用和停用 SMBv1、SMBv2 和 SMBv3

在 Windows 中偵測、啟用和停用 SMBv1、SMBv2 和 SMBv3

本文說明如何在 SMB 用戶端和伺服器元件上啟用和停用伺服器消息塊 (SMB) 第 1 版 (SMBv1)、SMB 第 2 版 (SMBv2) 和 SMB 第 3 版 (SMBv3)。

如果您停用或移除SMBv1,可能會遇到舊電腦或軟體的相容性問題。 SMBv1 有顯著的安全性弱點,強烈建議您不要使用它。

在任何 Windows 11 或 Windows Server 2019 及後續版本中,SMBv1 預設未安裝。 除了家用版和專業版以外,Windows 10 預設也不會安裝 SMBv1。 建議您不要重新安裝SMBv1,而是更新仍需要它的SMB伺服器。 如需需要SMBv1的合作夥伴清單及其移除需求的更新,請參閱 SMB1產品清查所。

停用SMBv2或SMBv3用於疑難排解

我們建議保持啟用 SMBv2 和 SMBv3,但您可能會發現在進行故障排除時暫時禁用其中一個是有用的。 如需詳細資訊,請參閱 使用命令行或註冊表編輯器來管理 SMB 通訊協定。

停用 SMBv3 會停用下列功能:

透明故障轉移:提供客戶端在維護或故障轉移期間重新連線的方式,而不會中斷叢集節點

向外延展:提供所有檔案叢集節點上共享數據的並行存取權

SMB 多重通道:如果客戶端與伺服器之間有多個路徑可用,有助於匯總網路頻寬和容錯

SMB 直接存取:提供高效能的遠端直接記憶體存取(RDMA)網路支援,並具備低延遲和低 CPU 使用量的特性。

加密:提供端對端加密,並避免在不受信任網路上遭到竊聽的風險。

目錄租賃:透過緩存提升分公司應用程式的回應速度

效能優化:優化小型隨機讀取/寫入 I/O 作業

停用 SMBv2 會停用下列功能:

要求合併:支援以單一網路要求傳送多個 SMBv2 要求

較大規模的讀取和寫入:改善更快速網路的使用

快取資料夾和檔案屬性:讓客戶端能夠保留資料夾和檔案的本機複本

持久句柄:提供在暫時中斷連線之後,以透明方式重新連線到伺服器的方式

改善訊息簽署:使用哈希型訊息驗證碼 (HMAC) 安全哈希演算法 (SHA) 搭配 256 位摘要 (HMAC SHA-256), 而不是使用 Message-Digest 演算法 5 (MD5) 作為哈希演算法

改善檔案共用的延展性:大幅增加每部伺服器的使用者、共用和開啟檔案數目

支援符號連結

用戶端 oplock 租用模型:限制在用戶端與伺服器之間傳輸的數據,改善高延遲網路的效能,以及增加 SMB 伺服器延展性

大型最大傳輸單元 (MTU) 支援:支援充分利用 10 吉比特乙太網路 (GbE)

改善能源效率:提供開啟檔案至伺服器的客戶端進入休眠模式的方法

SMBv2 通訊協定是在 Windows Vista 和 Windows Server 2008 中引進的。 SMBv3 通訊協定是在 Windows 8 和 Windows Server 2012 中引進的。 有關 SMBv2 和 SMBv3 能力的更多資訊,請參閱以下文章:

Windows Server 中使用 SMB 3 通訊協定的檔案共用概觀

1.3 概觀

使用 PowerShell 移除 SMBv1

您可以使用 Get-WindowsOptionalFeature、 Disable-WindowsOptionalFeature 和 Enable-WindowsOptionalFeature PowerShell 命令來偵測、停用和啟用 SMBv1 用戶端或伺服器。 請在具備管理員許可權的命令提示字元中執行命令。

Note

執行 PowerShell 命令以停用或啟用 SMBv1 之後,計算機會重新啟動。

Detect:

Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Disable:

Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Enable:

Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

Tip

您可以執行 Get-SmbServerConfiguration 命令來偵測 SMBv1 狀態, Get-SmbServerConfiguration | Format-List EnableSMB1Protocol而不提升權限: 。

移除 SMBv1

Server

Client

預設不會在 Windows Server 2019 和更新版本上安裝 SMBv1。 在舊版的 Windows Server 上,您可以使用伺服器管理員來移除 SMBv1:

在您想要從中移除 SMBv1 的伺服器上,開啟 [伺服器管理員]。

在 [伺服器管理員儀錶板] 的 [設定此本地伺服器] 底下,選取 [新增角色和功能]。

在開始之前頁面上,選擇啟動移除角色和功能精靈,然後在下一頁選擇下一步。

在 [選取目的地伺服器] 頁面上,於 [伺服器集區]下,確定已選取要從中移除功能的伺服器,然後選取 [下一步] 。

在刪除伺服器角色頁面,選擇 下一步。

在 [移除功能] 頁面上,清除 [SMB 1.0/CIFS 檔案共用支援] 核取方塊,然後選取 [ 下一步]。

在確認刪除選擇確認功能已列出,然後選擇Remove。

在 Windows 8.1、Windows 10 和 Windows 11 上,您可以使用移除程式來停用 SMBv1。

若要在這些作系統上停用SMBv1,請執行下列步驟:

在 [控制台] 中,選取 [程式和功能]。

在 [控制面板首頁]下,選取 [開啟或關閉 Windows 功能] 以開啟 [Windows 功能] 對話框。

在 [Windows 功能 ] 對話方塊中,向下捲動清單,清除 [SMB 1.0/CIFS 檔案共用支援] 的複選框,然後選取 [ 確定]。

Windows 套用變更之後,在確認頁面上選取 [ 立即重新啟動]。

使用命令行或註冊表編輯器來管理SMB通訊協定

從 Windows 10 Fall Creators Update 和 Windows Server 2019 開始,預設不會再安裝 SMBv1。 如需詳細資訊,請參閱 windows 10 版本 1709、Windows Server 版本 1709 和更新版本 中預設不會安裝SMBv1。

當您在 Windows 8 或 Windows Server 2012 中啟用或停用 SMBv2 時,SMBv3 也會同時啟用或停用。 這種行為發生是因為這些協定共用相同的協議堆疊。

Server

Client

您可以使用 Set-SMBServerConfiguration Cmdlet 在伺服器元件上啟用或停用 SMBv1、SMBv2 和 SMBv3 通訊協定。 您可以使用 Get-SmbServerConfiguration Cmdlet 來擷取 SMB 伺服器設定。

執行 Set-SMBServerConfiguration Cmdlet 之後,您不需要重新啟動電腦。

SMBv1

Detect:

Get-SmbServerConfiguration | Select EnableSMB1Protocol

Disable:

Set-SmbServerConfiguration -EnableSMB1Protocol $false

Enable:

Set-SmbServerConfiguration -EnableSMB1Protocol $true

如需詳細資訊,請參閱 停止使用SMB1。

SMBv2 和SMBv3

Detect:

Get-SmbServerConfiguration | Select EnableSMB2Protocol

Disable:

Set-SmbServerConfiguration -EnableSMB2Protocol $false

Enable:

Set-SmbServerConfiguration -EnableSMB2Protocol $true

在 Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008 上啟用或停用 SMB

若要在執行 Windows 7、Windows Server 2008 R2、Windows Vista 或 Windows Server 2008 的 SMB 伺服器上啟用或停用 SMB 通訊協定,請使用 Windows PowerShell 或註冊表編輯器,如下列各節所述。

使用 Windows PowerShell

您可以使用 Get-Item、 Get-ItemProperty 和 Set-ItemProperty Cmdlet 來偵測、啟用和停用 SMB 通訊協定。

Note

下列各節中的命令需要 PowerShell 2.0 或更新版本。

SMB 伺服器上的SMBv1

Detect:

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

預設配置 Enabled。 因此,不會建立名為 value 的登錄,因此命令不會傳回 SMB1 值。

Disable:

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

Enable:

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

Note

在您進行這些變更之後,必須重新啟動電腦以應用這些變更。

如需詳細資訊,請參閱 停止使用SMB1。

SMB 伺服器上的SMBv2和SMBv3

Detect:

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

Disable:

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

Enable:

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

Note

在您進行這些變更之後,必須重新啟動電腦以應用這些變更。

使用註冊表編輯器

Important

請仔細依照本節中的步驟執行。 如果您未正確修改登錄,可能會發生嚴重問題。 在修改之前,備份登錄以供還原,以免發生問題。

若要在SMB伺服器上啟用或停用SMBv1,請開啟註冊表編輯器,然後移至下列登錄機碼路徑:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

設定具有下列屬性的項目:

對於名稱,請使用 SMB1。

對於類型,請使用 REG_DWORD。

對於資料,請使用 0 表示 已停用 ,並使用 1 表示 已啟用。 預設值為 1 或 Enabled。 在此情況下,不會建立任何登錄機碼。

若要在SMB伺服器上啟用或停用SMBv2,請開啟註冊表編輯器,然後移至下列登錄機碼路徑:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

設定具有下列屬性的項目:

對於名稱,請使用 SMB2。

對於類型,請使用 REG_DWORD。

對於資料,請使用 0 表示 已停用 ,並使用 1 表示 已啟用。 預設值為 1 或 Enabled。 在此情況下,不會建立任何登錄機碼。

Note

在您進行這些變更之後,必須重新啟動電腦以應用這些變更。

以下說明如何在執行 Windows 用戶端和 Windows Server 的 SMB 用戶端上偵測狀態、啟用和停用 SMB 通訊協定。

SMB 用戶端上的SMBv1

Detect:

sc.exe qc lanmanworkstation

Disable:

sc.exe config lanmanworkstation depend= bowser/mrxsmb20/nsi

sc.exe config mrxsmb10 start= disabled

Enable:

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

sc.exe config mrxsmb10 start= auto

如需詳細資訊,請參閱 停止使用SMB1。

SMB 用戶端上的SMBv2和SMBv3

Detect:

sc.exe qc lanmanworkstation

Disable:

sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi

sc.exe config mrxsmb20 start= disabled

Enable:

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

sc.exe config mrxsmb20 start= auto

Note

您必須在提升權限的命令提示字元中執行這些命令。

在您進行這些變更之後,必須重新啟動電腦以應用這些變更。

使用組策略停用SMBv1

本節說明如何使用組策略停用 SMBv1。 您可以在各種 Windows 版本上使用此方法。

Server

Client

SMBv1

您可以透過在註冊表中配置以下新項目,在 SMB 伺服器上停用 SMBv1:

關鍵路徑: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

註冊表項目: SMB1

參賽類型: REG_DWORD

條目資料: 0,表示 已停用

若要使用組策略來設定此專案,請採取下列步驟:

開啟組策略管理主控台。 以滑鼠右鍵按一下應該包含新喜好設定項目的群組原則物件 (GPO),然後選取 [編輯]。

在 [電腦設定] 底下的主控台樹狀結構中,展開 [喜好設定 ] 資料夾,然後展開 [Windows 設定] 資料夾。

以滑鼠右鍵按一下 [登錄] 節點,指向 [ 新增],然後選取 [登錄項目]。

在 [[新增登錄屬性] 對話框中,選取或輸入下列值:

動作: 建立

蜂巢: HKEY_LOCAL_MACHINE

索引鍵路徑: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

值名稱: SMB1

值類型: REG_DWORD

值資料: 0

此程式會停用SMBv1伺服器元件。 您必須將此原則套用至網域中所有必要的工作站、伺服器和域控制器。

Note

您可以設定 Windows Management Instrumentation (WMI) 篩選來排除特定作系統,或排除用戶端或伺服器作系統。 如需詳細資訊,請參閱 組策略篩選 和 建立 GPO的 WMI 篩選。

Important

某些系統需要存取 SYSVOL 資料夾或其他檔案共用,但不支援 SMBv2 或 SMBv3。 這類系統的範例包括舊版 Windows 系統和舊版 Linux 和合作夥伴系統。 當您在這些系統上的域控制器上停用SMBv1時,請小心。

SMBv1

若要停用 SMBv1 用戶端,您必須更新服務登錄機碼,以防止啟動 MRxSMB10 驅動程式。 然後,您需要從LanmanWorkstation的條目中刪除對MRxSMB10的依賴關係,以便它可以正常啟動,而無需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

Note

預設值包括 MRxSMB10,現在已將其作為相依性移除。

若要使用組策略設定這些專案,請執行下列步驟:

開啟組策略管理主控台。 以滑鼠右鍵按一下應該包含新喜好設定專案的 GPO,然後選取 [編輯]。

在 [電腦設定] 底下的主控台樹狀結構中,展開 [喜好設定 ] 資料夾,然後展開 [Windows 設定] 資料夾。

以滑鼠右鍵按一下 [登錄] 節點,指向 [ 新增],然後選取 [登錄項目]。

在 [[新增登錄屬性] 對話框中,選取或輸入下列值:

動作: 更新

蜂巢: HKEY_LOCAL_MACHINE

索引鍵路徑: SYSTEM\CurrentControlSet\services\mrxsmb10

值名稱: 開始

值類型: REG_DWORD

價值數據: 4

若要移除已停用之 MRxSMB10 驅動程式的相依性,請開啟 [ 新增登錄屬性] 對話方塊,然後選取或輸入下列值:

動作: 將

蜂巢: HKEY_LOCAL_MACHINE

索引鍵路徑: SYSTEM\CurrentControlSet\Services\LanmanWorkstation

值名稱: DependOnService

值類型: REG_MULTI_SZ

價值數據:

Bowser

MRxSmb20

NSI

Note

請勿在三個 Value 資料 字串中包含項目符號。 僅列出字串,如下列螢幕快照所示。

預設值包含許多 Windows 版本中的 MRxSMB10 。 透過將預設值取代為這三個字串,您可以有效地移除 MRxSMB10 作為 LanmanWorkstation 的相依性。 您可以使用這三個值,而不是四個預設值。

Note

當您使用 Group Policy Management Console 時,您不需要使用引號或逗號。 只需將每個項目分別輸入到單獨的行中。

若要完成停用SMBv1,請重新啟動目標系統。

稽核 SMBv1 使用量

若要判斷哪些客戶端嘗試使用SMBv1連線到SMB伺服器,您可以在Windows Server 和 Windows 用戶端上啟用稽核。 若要啟用或停用稽核,請使用 Set-SmbServerConfiguration Cmdlet。 若要檢查稽核狀態,請使用 Get-SmbServerConfiguration Cmdlet。

Enable:

Set-SmbServerConfiguration -AuditSmb1Access $true

Disable:

Set-SmbServerConfiguration -AuditSmb1Access $false

Detect:

Get-SmbServerConfiguration | Select AuditSmb1Access

啟用SMBv1稽核之後,您可以檢查 Microsoft-Windows-SMBServer\Audit 事件記錄檔中是否有存取事件。 每次客戶端嘗試使用 SMBv1 連線到伺服器時,記錄檔中會出現事件 ID 為 3000 的項目。

檢查群組原則設定

如果所有設定都位於相同的 GPO 中,組策略管理會顯示下列設定:

測試並驗證原則

完成組策略管理控制台中的設定步驟之後,請提供組策略時間,以將更新套用至其設定。 如果需要進行測試,請在命令提示字元執行 gpupdate /force,然後檢閱目標計算機,以確定已正確套用登錄設定。 確認 SMBv2 和 SMBv3 對環境中的所有其他系統都正常運作。

Note

測試原則之後,請重新啟動目標系統。

相关数据

365bet资讯网 桌面图标删不掉?6种方法轻松解决!
bat365app官网入口登录 揭秘云计算大数据:为何难盈利?五大困境破解之道
365bet资讯网 荣耀8自拍表现如何?(以荣耀8自拍为例,探讨其拍照性能和自拍功能)