赞
踩
SMB签名概述
服务器消息块(SMB)是Windows最常用的文件协议。SMB签名是一项功能,通过它可以在数据包级别对使用SMB的通信进行数字签名。对数据包进行数字签名可以使数据包的接收者确认其来源和真实性。SMB协议中的这种安全机制有助于避免诸如篡改数据包和“中间人”攻击之类的问题。
SMB签名在所有当前受支持的Windows版本中都可用,但是默认情况下仅在域控制器上启用SMB签名。建议将其用于域控制器,因为SMB是客户端用于下载组策略信息的协议。SMB签名提供了一种确保客户端接收到真正的组策略的方法。
SMB签名是在Windows 2000中引入的(当时它还被移植回Microsoft Windows NT 4.0和Microsoft Windows 98)。随着Windows Vista和Windows Server 2008中SMB2的引入,使用新的哈希算法(HMAC SHA-256代替了旧的MD5)改进了签名。当时,设置已更新,以简化配置和互操作性(您可以在后面的文章中找到详细信息)。SMB2签名的另一个重要改进是性能。在SMB1中,启用签名会大大降低性能,尤其是在通过WAN时。如果将SMB2加签名用于1GbE网络和现代CPU,则与SMB1相比,性能下降的幅度有限。如果使用更快的网络(例如10GbE),则签名对性能的影响会更大。
SMB1签名配置和默认值
有两种主要方法可以为SMB1客户端和SMB1服务器配置签名。设置组策略来配置它比较容易。例如,这是默认情况下如何将域控制器配置为要求签名。另一种方法是使用注册表设置。在每一侧(SMB1客户端和SMB1服务器),可以将SMB1签名设置为“必需”,“启用”或“禁用”。
这是SMB1客户端签名设置的摘要:
表格1
设置 组策略设置 注册表项
需要 数字签名通信(始终)–已启用 RequireSecuritySignature = 1
已启用* 数字签名通信(如果服务器同意)–已启用 EnableSecuritySignature = 1,RequireSecuritySignature = 0
残障人士 数字签名通信(如果服务器同意)–禁用 EnableSecuritySignature = 0,RequireSecuritySignature = 0
这是SMB1服务器签名设置的摘要:
表2
设置 组策略设置 注册表项
需要*** 数字签名通信(始终)–已启用 RequireSecuritySignature = 1
已启用 数字签名通信(如果客户同意)–已启用 EnableSecuritySignature = 1,RequireSecuritySignature = 0
残废** 数字签名通信(如果客户同意)–已禁用 EnableSecuritySignature = 0,RequireSecuritySignature = 0
*在SMB1客户端上签名的默认设置为“已启用”。
**在SMB1服务器上签名的默认设置为“禁用”。
***用于在域控制器上签名的默认设置(通过组策略定义)为“必需”。
组策略设置位于“计算机配置” Windows“设置”“安全设置”“本地策略”“安全选项”下。
客户端注册表项存储在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanWorkStationParameters下。
服务器注册表项存储在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanServerParameters下。
所有注册表项的类型均为DWORD。
SMB2签名配置和默认值
SMB2通过仅设置一项即可简化此配置:是否需要签名。可以通过组策略或注册表设置在SMB2客户端和SMB2服务器上进行配置。在每一侧,签名都可以设置为“必需”或“不需要”。
这是SMB2客户端和SMB2服务器签名设置的摘要:
表3
设置 组策略设置 注册表项
必填* 数字签名通信(始终)–已启用 RequireSecuritySignature = 1
不需要** 数字签名通信(始终)–已禁用 RequireSecuritySignature = 0
*在域控制器上签名的默认设置(通过组策略定义)为“必需”。
**在SMB2服务器和SMB客户端上签名的默认设置为“不需要”。
组策略设置位于“计算机配置” Windows“设置”“安全设置”“本地策略”“安全选项”下。
客户端注册表项存储在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanWorkStationParameters下。
服务器注册表项存储在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanmanServerParameters下。
所有注册表项的类型均为DWORD。
SMB签署有效行为
SMB客户端和SMB服务器之间进行了协商,以决定是否将有效使用签名。
以下是SMB2的有效行为的摘要:
表4
服务器–必需 服务器–不需要
客户–必填 签 签
客户–不需要 签* 未签名**
以下是Windows当前版本中SMB1的有效行为的摘要:
表5
服务器–必需 服务器–已启用 服务器–禁用
客户–必填 签 签 签
客户端-已启用 签* 签 未签名**
客户端–禁用 签 未签名 未签名
*域控制器SMB流量的默认值。
**所有其他SMB流量的默认值。
较旧的SMB1签名行为
关于SMB1签名的一个常见混淆源是,较早版本的Windows具有不同的签名行为。如http://support.microsoft.com/kb/950876所述,该行为在2008年进行了更改,以匹配Windows Server 2008和Windows Vista的行为。以下是Windows Server 2003和Windows XP(或更早版本)的早期版本的有效行为的摘要:
表6
旧服务器–必需 旧服务器-已启用 旧服务器–禁用
老客户–必填 签 签 无法连接
旧客户端-已启用 签* 签 未签名**
老客户-残疾人 无法连接 未签名 未签名
*域控制器SMB1流量的默认值。
**所有其他SMB1流量的默认值。
如果您有旧的SMB1服务器或旧的SMB1客户端,则应对其进行修补或更新,以消除在配置错误的环境中连接失败的可能性。
更改SMB签名行为
通常,建议您保留默认的SMB签名设置。但是,客户有时希望在特定情况下重新配置SMB签名。例如,客户可能需要:
提高域控制器中的SMB性能。的确,SMB签名将需要进行其他处理以进行哈希计算,因此您可以通过禁用“域控制器”上的“必需”设置来提高域控制器SMB的性能。但是,我们强烈建议不要更改默认值,因为它还会使您的组策略受到篡改和中间人攻击。
通过禁用域控制器上的“必需”设置,允许使用WAN“优化”设备来加快分支机构和总部之间的SMB流量。同样,您是以性能换取安全性。尽管这些设备可能是合法的,但它们本质上是充当代理的角色,并且可以中继过时的组策略设置甚至是被篡改的组策略设置(如果受到威胁)。
提高不是域控制器的SMB客户端或SMB服务器的安全性。通过在SMB客户端或SMB服务器上启用“必需”设置,可以强制对所有SMB通信进行签名。不建议对所有SMB通信进行签名,因为这将需要其他处理(用于哈希计算),并且会降低SMB性能。
如果您决定必须更改SMB签名设置,则建议使用“数字签名通信(始终)”组策略设置。如果无法通过组策略执行此操作,则可以使用“ RequireSecuritySignature”注册表设置。
重要说明:我们不再建议使用“数字签名通信(如果客户同意)”或“数字签名通信(如果服务器同意)”组策略设置。我们也不再建议使用“ EnableSecuritySignature”注册表设置。这些仅影响SMB1行为的选项可以由“(始终)数字签名通信”组策略设置或“ RequireSecuritySignature”注册表设置有效地代替。
参考文献
这是一些知识库文章(支持)和TechNet文章,它们提供了有关SMB签名的其他详细信息。请仔细解释这些引用,因为其中一些引用了较旧的SMB1行为。
http://support.microsoft.com/kb/887429-较旧版本的OS的服务器消息块签名概述
http://support.microsoft.com/kb/916846-组策略或注册表中SMB签名不匹配
http://support.microsoft.com/kb/950876-Windows Server 2003和Windows XP修复程序,以匹配Windows Server 2008或Windows Vista SP1签名。
http://technet.microsoft.com/zh-cn/library/cc728025.aspx-组策略:Microsoft网络客户端:对通信进行数字签名(始终)
http://technet.microsoft.com/zh-cn/library/cc785861.aspx-组策略:Microsoft网络客户端:对通信进行数字签名(如果服务器同意)
http://technet.microsoft.com/zh-cn/library/cc786681.aspx-组策略:Microsoft网络服务器:对通信进行数字签名(始终)
http://technet.microsoft.com/zh-cn/library/cc759474.aspx-组策略:Microsoft网络服务器:对通信进行数字签名(如果客户端同意)
http://technet.microsoft.com/zh-cn/library/cc512612.aspx-如何用安全性射击自己,第1部分
PS:关于SMB3的快速说明
尽管SMB3中用于签名的加密有所更改(SMB3使用AES-CMAC进行签名,而不是SMB2中的HMAC SHA-256),但本博客中描述的总体SMB2行为也适用于SMB3。
PPS:内德·皮尔(Ned Pyle)在2017年9月9日发布的便条
安全与安全有关–无论您想要还是不想要。如果安全至关重要,则性能无关紧要,而应用程序/传输协议安全的代价就是性能。如果您还不完全了解这些选项,那么5年前SMB中的加密已取代了签名。SMB 3.1.1(Windows 10,Windows Server 2016)中的加密性能实际上比签名性能要好得多,当然也要安全得多。
您应该查看:
https://aka.ms/stopusingsmb1- 或这些签名都无关紧要。
https://blogs.technet.microsoft.com/secguide/- 检查安全性基线,包括SMB。
https://blogs.technet.microsoft.com/srd/2015/02/10/ms15-011-ms15-014-hardening-group-policy/
https://support.microsoft.com/zh-CN/help/3000483/ms15-011-vulnerability-in-group-policy-could-allow-remote-code-execution-february-10,-2015
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。