SMB 安全性增強功能

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Azure Stack HCI 21H2 版本、Windows 11、Windows 10

本文說明了 Windows Server 和 Windows 中的 SMB 安全增強功能。

SMB 加密

SMB 加密提供 SMB 數據的端到端加密,保護數據不受不受信任網路上竊聽行為的影響。 您可以輕鬆設置 SMB 加密,但可能需要支付額外用於專門的硬體或軟體的成本。 此功能不需要網際網路通訊協定安全性 (IPsec) 或 WAN 加速器。 SMB 加密可以按共享基礎、對整個文件伺服器或在映射驅動器時設置。

注意

SMB 加密不涵蓋待用資料的安全性,這通常會由 BitLocker 磁碟機加密來處理。

在需要保護敏感數據不受攔截攻擊的任何情況下,您都可以考慮使用 SMB 加密。 可能的案例包括:

  • 您可以使用 SMB 協議移動訊息工作者的敏感數據。 SMB 加密提供了文件伺服器和客戶端之間的端到端隱私和完整性保證。 它提供這種安全性,無論經過的網路如何,例如由非 Microsoft 提供者維護的廣域網路(WAN)連接。
  • SMB 3.0 可讓檔案伺服器為伺服器應用程式提供持續可用的儲存體,例如 SQL Server 或 Hyper-V。 啟用 SMB 加密,可讓您有機會保護該資訊免於遭受窺探攻擊。 SMB 加密比多數存放區域網路 (SAN) 所需的專用硬體解決方案更容易使用。

Windows Server 2022 和 Windows 11 引入了用於 SMB 3.1.1 加密的 AES-256-GCM 和 AES-256-CCM 加密套件。 當連接到支援更先進密碼方法的另一台計算機時,Windows 會自動進行協商。 您還可以透過 Group Policy 強制使用這種方法。 Windows 仍然支援 AES-128-GCM 和 AES-128-CCM。 預設情況下,SMB 3.1.1 協商使用 AES-128-GCM,實現安全性和性能的最佳平衡。

Windows Server 2022 和 Windows 11 的 SMB Direct 現在支援加密。 先前,啟用 SMB 加密會停用直接資料放置,導致 RDMA 效能與 TCP 一樣慢。 現在,資料在放置之前已加密,導致在新增 AES-128 和 AES-256 保護的封包隱私權時,造成相對次要的效能降低。 您可以使用 Windows Admin Center , Set-SmbServerConfiguration , or UNC 強化分組策略

此外,Windows Server 容錯移轉叢集現在支援對 Cluster Shared Volumes (CSV) 和儲存匯流排層 (SBL) 的加密節點內儲存通訊進行精細控制。 這種支援代表在使用 Storage Spaces Direct 和 SMB Direct 時,您可以對集群內的東西向通訊進行加密,提高安全性。

重要

與非加密相比,任何端到端加密保護都會帶來顯著的性能操作成本。

啟用 SMB 加密

您可以為整個檔案伺服器啟用 SMB 加密,或僅針對特定的檔案共用啟用。 使用以下程序之一來啟用 SMB 加密。

使用 Windows Admin Center 啟用 SMB 加密。

  1. 下載和安裝 Windows Admin Center
  2. 連接到文件伺服器。
  3. 選擇 Files &分享檔案
  4. 選擇 檔案分享按鍵。
  5. 若要要求對共用進行加密,請選擇共用名稱,然後選擇 啟用 SMB 加密
  6. 若要要求在伺服器上加密,請選擇檔案伺服器設定
  7. 下,SMB 3 加密,選擇所有客戶端均需要(其他為已拒絕),然後選擇儲存

使用 UNC 強化啟用 SMB 加密。

UNC 強化允許您設置 SMB 客戶端,無論伺服器加密設置如何,都會要求使用加密。 此功能有助於防止攔截攻擊。 若要設定 UNC 強化,請參考MS15-011:Group Policy 中的漏洞可能會讓遠端程式碼執行。 有關攔截攻擊防禦的詳細資訊,請參閱How to Defend Users from Interception Attacks via SMB Client Defense

使用 Windows PowerShell 啟用 SMB 加密

  1. 登入您的伺服器,然後在您的電腦上以提升的會話權限執行 PowerShell。

  2. 要為單個文件共享啟用 SMB 加密,執行以下命令。

    Set-SmbShare –Name <sharename> -EncryptData $true
    
  3. 要為整個文件伺服器啟用 SMB 加密,執行以下命令。

    Set-SmbServerConfiguration –EncryptData $true
    
  4. 要建立一個新的已啟用 SMB 加密的 SMB 文件共享,請執行以下命令。

    New-SmbShare –Name <sharename> -Path <pathname> –EncryptData $true
    

使用加密映射驅動器。

  1. 要在使用 PowerShell 映射驅動器時啟用 SMB 加密,執行以下命令。

    New-SMBMapping -LocalPath <drive letter> -RemotePath <UNC path> -RequirePrivacy $TRUE
    
  2. 要在使用 CMD 映射驅動器時啟用 SMB 加密,執行以下命令。

    NET USE <drive letter> <UNC path> /REQUIREPRIVACY
    

部署 SMB 加密的考量

預設情況下,啟用 SMB 加密的文件共享或伺服器只允許 SMB 3.0、3.02 和 3.1.1 客戶端造訪指定的文件共享。 此限制強制執行管理員的意圖,以確保所有造訪共享的客戶端的數據得到保護。

然而,在某些情況下,管理員可能希望允許不支援 SMB 3.x 的客戶端進行未加密的造訪。 這種情況可能發生在使用混合客戶端操作系統版本的過渡期間。 要允許不支援 SMB 3.x 的客戶端進行未加密造訪,請在 Windows PowerShell 中輸入以下腳本:

Set-SmbServerConfiguration –RejectUnencryptedAccess $false

注意

我們不建議在已設置加密的情況下允許未加密的造訪。 更新客戶端以支援加密。

下一節中將說明預先身份驗證完整性功能防止攔截攻擊將連接從 SMB 3.1.1 降級為 SMB 2.x(這將使用未加密的造訪)。 然而,它無法防止降級到 SMB 1.0,這也會導致未加密的造訪。

若要確保 SMB 3.1.1 用戶端一律使用 SMB 加密來存取加密的共用,您必須停用 SMB 1.0 伺服器。 有關說明,請使用 Windows Admin Center 連接到伺服器並開啟檔案& 檔案分享副檔名,然後選擇檔案分享選項卡提示卸載。 有關詳細資訊,請參閱如何在 Windows 中偵測、啟用和停用SMBv1、SMBv2 和 SMBv3

如果 –RejectUnencryptedAccess 設定保留其預設設定$true,僅允許具有加密功能的 SMB 3.x 使用者端存取檔案共用(SMB 1.0 使用者端也會被拒絕)。

在設置 SMB 加密時,請考慮以下問題:

  • SMB 加密使用高階加密標準(AES)-GCM 和 CCM 算法來對數據進行加密和解密。 AES-CMAC 和 AES-GMAC 還為加密的文件共享提供數據完整性驗證(驗證),而不受 SMB 驗證設置的影響。 如果您想啟用 SMB 驗證而不使用加密,您仍然可以這樣做。 有關詳細資訊,請參閱Configure SMB Signing with Confidence
  • 如果您的機構使用廣域網路(WAN)加速設備,當您嘗試訪問文件共享或伺服器時,可能會遇到問題。
  • 使用預設設定(不允許對加密檔案共用進行未加密存取),如果不支援 SMB 3.x 的使用者端嘗試存取加密檔案共用,事件 ID 1003 會記錄到 Microsoft-Windows-SmbServer/Operational 事件日誌,使用者端會收到存取被拒絕的錯誤訊息。
  • SMB 加密和 NTFS 文件系統中的加密文件系統(EFS)是不相關的,SMB 加密不需要使用或依賴 EFS。
  • SMB 加密和 BitLocker 磁盤加密是不相關的,SMB 加密不需要使用或依賴 BitLocker 磁盤加密。

預先驗證完整性

SMB 3.1.1 具有檢測攔截攻擊的能力,這些攻擊試圖透過使用預先身份驗證完整性降級客戶端和伺服器協商的協議或能力。 預先身份驗證完整性是 SMB 3.1.1 中的強制性功能。 它透過使用加密標記來防止對 Negotiate 和 Session Setup 訊息的任何篡改。 所產生的雜湊會作為輸入來產生工作階段的密碼編譯金鑰,包括其簽署金鑰。 這個過程使客戶端和伺服器能夠相互信任連接和會話屬性。 當客戶端或伺服器檢測到此類攻擊時,連接將被中斷,並且事件 ID 1005 會被記錄在 Microsoft-Windows-SmbServer/Operational 事件日誌中。

由於這種保護,並為了充分利用 SMB 加密的所有功能,我們強烈建議禁用 SMB 1.0 伺服器。 有關說明,請使用 Windows Admin Center 連接到伺服器並開啟檔案& 檔案分享副檔名,然後選擇檔案分享選項卡提示卸載。 有關詳細資訊,請參閱如何在 Windows 中偵測、啟用和停用SMBv1、SMBv2 和 SMBv3

新的簽署演算法

SMB 3.0 和 3.02 使用更近期的加密算法進行驗證:高級加密標準(AES)-基於密碼的消息驗證碼(CMAC)。 SMB 2.0 則使用較舊的 HMAC-SHA256 加密演算法。 在具有 AES 指令支援的多數新型 CPU 上,AES-CMAC 和 AES-CCM 可大幅提高資料加密的速度。

Windows Server 2022 和 Windows 11 使用了 SMB 3.1.1 簽名的 AES-128-GMAC。 在連接到支援該方法的另一台電腦時,Windows 會自動協商這種性能更好的密碼方法。 Windows 仍然支援 AES-128-CMAC。 有關詳細資訊,請參閱Configure SMB Signing with Confidence

停用 SMB 1.0

從 Windows Server 版本 1709 和 Windows 10 版本 1709 開始,預設情況下不安裝 SMB 1.0。 有關刪除 SMB1 的說明,請使用 Windows Admin Center 連接到伺服器,開啟 File &File Sharing 副檔名,然後選擇檔案分享選項卡提示卸載。 有關詳細資訊,請參閱如何在 Windows 中偵測、啟用和停用SMBv1、SMBv2 和 SMBv3

如果它仍然安裝,您應該立即禁用 SMB1。 有關檢測和停用 SMB 1.0 使用的詳細資訊,請參閱停止使用 SMB1。 有關先前或目前需要 SMB 1.0 的軟體交換區,請參閱 SMB1 Product Clearinghouse