伺服器消息塊簽署概觀
本文說明伺服器消息塊 (SMB) 2.x 和 3.x 簽署,以及如何判斷是否需要 SMB 簽署。
簡介
SMB 簽署(也稱為安全性簽章)是SMB通訊協定中的安全性機制。 SMB 簽署表示每個SMB訊息都包含使用會話密鑰所產生的簽章。 用戶端會將整個訊息的哈希放入SMB標頭的簽章欄位中。
SMB 簽署會先出現在 Windows 2000 Microsoft、Microsoft Windows NT 4.0 和 Microsoft Windows 98 中。 簽署演算法經過一段時間的演進。 SMB 2.02 簽署已藉由引進哈希式訊息驗證代碼 (HMAC) SHA-256 來改善,取代了 SMB1 中使用的舊 MD5 方法。 SMB 3.0 新增 AES-CMAC 演算法。 在 Windows Server 2022 和 Windows 11 中,我們新增 了 AES-128-GMAC 簽署加速。 如果您想要最佳效能和保護組合,請考慮升級至最新的 Windows 版本。
SMB 簽署如何保護連線
如果有人在傳輸期間變更訊息,哈希將不會相符,而SMB會知道有人竄改數據。 簽章也會確認寄件人和接收者的身分識別。 這可防止轉送攻擊。 在理想情況下,您會使用 Kerberos 而非 NTLMv2,讓您的會話密鑰啟動強式。 請勿使用IP位址連線到共用,也不會使用 CNAME 記錄,或者您將使用NTLM而非 Kerberos。 請改用 Kerberos。 如需詳細資訊,請參閱 使用計算機名稱別名取代 DNS CNAME 記錄 。
SMB 簽署的原則位置
SMB 簽署原則位於電腦設定>Windows 設定>安全性設定>本機原則>安全性選項。
- Microsoft 網路用戶端: 數位簽章通訊 (一律)
登錄機碼:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
登錄值:RequireSecuritySignature
數據類型:REG_DWORD
資料:0 (停用)、1 (啟用) - Microsoft網路用戶端:數位簽署通訊(如果伺服器同意)
登錄機碼:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters
登錄值: EnableSecuritySignature
數據類型:REG_DWORD
資料:0 (停用)、1 (啟用) - Microsoft 網路伺服器: 數位簽章通訊 (一律)
登錄機碼:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters
登錄值:RequireSecuritySignature
數據類型:REG_DWORD
資料:0 (停用)、1 (啟用) - Microsoft網路伺服器:數位簽署通訊(如果用戶端同意)
登錄機碼:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters
登錄值: EnableSecuritySignature
數據類型:REG_DWORD
資料:0 (停用)、1 (啟用)
注意 在這些原則中,「一律」表示需要SMB簽署,而「如果伺服器同意」或「如果用戶端同意」表示已啟用SMB簽署。
了解 "RequireSecuritySignature" 和 "EnableSecuritySignature"
會忽略SMB2+ 用戶端和SMB2+ 伺服器的 EnableSecuritySignature 登入設定。 因此,除非您使用 SMB1,否則此設定不會執行任何動作。 SMB 2.02 及更高版本的簽署僅由是否需要來控制。 當伺服器或用戶端需要 SMB 簽署時,會使用此設定。 只有當兩者都已將簽署設為 0 時,才會進行簽署。
- | 伺服器 – RequireSecuritySignature=1 | 伺服器 – RequireSecuritySignature=0 |
---|---|---|
用戶端 – RequireSecuritySignature=1 | Signed | Signed |
用戶端 – RequireSecuritySignature=0 | Signed | 未簽署 |
參考
Windows 10 中的 SMB 2 和 SMB 3 安全性:簽章與加密金鑰剖析
預設不會在 Windows 10 版本 1709、Windows Server 版本 1709 和更新版本中安裝 SMBv1