这些设置通常用于配置 Windows 系统的 SMB 协议行为以及相关的安全性和身份验证选项。[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters] 详细解释 说明
Windows SMB 协议行为、身份验证与安全选项完整解构分析报告
核心组件:LanmanServer(SMB 服务端,对外提供文件 / 打印共享)、LanmanWorkstation(SMB 客户端,访问远程 SMB 共享);内核驱动
srv.sys(服务端)、mrxsmb*.sys(客户端重定向器);配置来源:注册表 + 组策略 GPO,组策略会覆盖本地注册表原始值。
配置维度:①SMB 协议版本启用禁用;②SMB 数据包签名;③SMB3 会话加密;④身份验证 LM/NTLMv2 级别;⑤各种协商、超时、兼容行为;全部配置计算机级,不支持按用户配置,重启生效居多Microsoft ...。
一、底层原理
1、SMB 架构分层
应用层(LanmanServer / LanmanWorkstation svchost进程)
↓
内核驱动层:
srv.sys SMB服务端内核驱动(入站连接,TCP445)
mrxsmb20.sys SMB2/3客户端重定向器驱动(出站连接)
mrxsmb10.sys SMBv1客户端驱动(旧)
↓
传输层:tcpip.sys TCP 445(SMB over TCP/IP);SMBv1兼容NetBT 139
- LanmanServer (Server 服务):监听 TCP445,接收外部 SMB 客户端连接,调用本地 NTFS 文件系统,输出共享资源;内核
srv.sys完成绝大部分报文处理,svchost 内 LanmanServer 更多做策略加载、会话管理、安全描述符校验。 - LanmanWorkstation (Workstation 服务):SMB 客户端,访问
\\server\share,mrxsmb20.sys把本地文件系统 IRP 转换成 SMB 网络报文发给远端服务器。 - 协商流程:
- Negotiate:客户端、服务端互相通告支持 SMB 版本(SMB1 / SMB2.02 / SMB2.1 / SMB3.0 / SMB3.1.1),协商双方共同支持最高版本。
- SessionSetup:身份认证(Kerberos 优先,回退 NTLM)。
- TreeConnect:连接目标共享。
- 安全机制
- SMB 签名:对每个 SMB 报文做 HMAC 哈希,防止中间人篡改报文、SMB 中继攻击;SMBv1 使用 MD5;SMB2 使用 HMAC‑SHA256;SMB3 使用 AES‑CMAC/GMACMicrosoft ...。
- SMB3 加密:SMB3.0 + 支持整会话 AES 加密;签名≠加密,签名只防篡改,不防窃听;加密同时提供保密性 + 完整性Microsoft ...。
- 身份验证:SMB 会话建立依托 Windows LSA/SSP;优先 Kerberos,失败回退 NTLM;
LmCompatibilityLevel控制 LM、NTLM、NTLMv2 的协商行为GitHub。 - SMB3.1.1 预认证完整性:保护 Negotiate/SessionSetup 报文,阻止版本降级攻击,不可关闭GitHub。
关键区分:
- SMB 签名:所有 SMB 版本都支持;校验报文完整性,明文依然可以被抓包读取。
- SMB 会话加密:仅 SMB3.0 及以上;整条会话密文传输,抓包看不到业务数据。
2、配置生效原理
- GPO 组策略优先级高于本地注册表;组策略写入注册表的策略覆盖项,重启服务 / 重启整机才加载大部分 SMB 配置,热生效项极少。
- 两套注册表位置:
HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters→ SMB 服务端配置(入站连接)HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters→ SMB 客户端配置(出站连接)
- 身份验证(LM‑NTLM)不属于 Lanman*,在
HKLM\SYSTEM\CurrentControlSet\Control\Lsa,LSA 组件读取,控制 NTLM SSP 行为,会影响 SMB、RPC 等全部使用 NTLM 的组件GitHub。
二、依赖文件
| 文件 | 模块 | 角色 |
|---|---|---|
srv.sys |
内核驱动 | SMB 服务端,处理入站 TCP445 连接,报文解析,签名、加密执行内核逻辑 |
mrxsmb20.sys |
内核驱动 | SMB2/SMB3 客户端重定向器;把本地 IRP 转换 SMB 报文 |
mrxsmb10.sys |
内核驱动 | SMBv1 客户端驱动,现代系统默认禁用Microsoft ... |
svchost.exe -k netsvcs |
宿主进程 | 承载 LanmanServer、LanmanWorkstation 服务 |
lanmanserver.dll |
服务 DLL | SMB 服务端用户态策略加载、会话管理、共享 ACL 校验 |
lanmanworkstation.dll |
服务 DLL | SMB 客户端用户态,处理远程共享连接管理 |
lsass.exe / msv1_0.dll |
LSA NTLM SSP | SMB 会话身份验证,LM‑NTLMv2 协商,LmCompatibilityLevel由 LSA 读取GitHub |
tcpip.sys |
内核网络 | TCP445 传输 |
ntfs.sys |
文件系统 | SMB 服务端,读取本地共享文件 |
secpol.msc / gpedit.msc |
策略编辑器 | 配置 SMB 签名、安全选项组策略,最终写入注册表 |
Get‑SmbServerConfiguration |
PowerShell | 读取 / 设置 SMB 服务端运行时配置(部分可热生效) |
三、依赖关系
1、服务依赖拓扑
- LanmanServer(Server):依赖
RPC、DCOM、NSI网络存储接口驱动;内核依赖srv.sys;停止服务,本机所有 SMB 共享全部关闭,入站 SMB 连接拒绝。 - LanmanWorkstation(Workstation):依赖 RPC、DNS Client、
mrxsmb20.sys;停止则本机无法访问任何\\server\share远程共享。
二者不直接互相依赖,内核驱动间接耦合;域环境 Netlogon 同时依赖这两个服务Microsoft ...。
- 防火墙依赖:Windows 防火墙入站规则【文件和打印机共享】放行 TCP 445;SMBv1 兼容需要 TCP139 (NetBT),现代环境禁用。
- 权限依赖:注册表
LanmanServer / LanmanWorkstation参数修改,必须管理员权限。 - 重启约束:
- 修改 SMB 协议版本开关、签名注册表值:需要重启操作系统才完整加载内核驱动配置。
- PowerShell
Set‑SmbServerConfiguration部分参数可热生效,不需要重启。
2、关键注册表参数清单
📌 SMB 服务端 HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
| 值名 | 类型 | 含义 | 推荐安全值 |
|---|---|---|---|
SMB1 |
REG_DWORD | 1 启用 SMBv1 服务端;0 禁用 | 0(禁用)Microsoft ... |
SMB2 |
REG_DWORD | 1 启用 SMB2/SMB3 服务端;0 禁用 | 1 |
EnableSecuritySignature |
REG_DWORD | 如果客户端支持,则启用 SMB 签名 | 1Microsoft ... |
RequireSecuritySignature |
REG_DWORD | 强制入站 SMB 连接必须使用签名;拒绝未签名客户端 | 1(域控强烈建议 1) |
RequireEncryption |
REG_DWORD | 全局 SMB3 加密强制;拒绝非加密会话 | 0/1;开启仅 SMB3 客户端可连接 |
📌 SMB 客户端 HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
| 值名 | 类型 | 含义 | 推荐安全值 |
|---|---|---|---|
EnableSecuritySignature |
REG_DWORD | 出站连接,如果服务器支持,开启 SMB 签名 | 1Microsoft ... |
RequireSecuritySignature |
REG_DWORD | 本机向外连接 SMB 服务器,强制对方必须支持签名,否则连接失败 | 1 |
📌 NTLM 身份验证 LSA
HKLM\SYSTEM\CurrentControlSet\Control\Lsa
| 值名 | 类型 | 含义 | 推荐安全值 |
|---|---|---|---|
LmCompatibilityLevel |
REG_DWORD | LM‑NTLM 协商级别;5 = 仅发送 NTLMv2 响应,拒绝 LM、NTLM1 | 5GitHub |
NoLMHash |
REG_DWORD | 不在本地存储 LM 哈希 | 1 |
LmCompatibilityLevel=5:客户端向外连接只发出 NTLMv2 响应;服务器侧会拒绝 LM/NTLMv1 身份验证。
3、配置冲突依赖
- SMB 签名协商逻辑
- 服务端
RequireSecuritySignature=1:任何客户端不提供 SMB 签名直接断开连接。 - 客户端
RequireSecuritySignature=1:连接远端服务器,如果服务器不支持签名,本机拒绝建立 SMB 会话。 - 仅
EnableSecuritySignature=1(Require=0):双方都支持签名就签名;一方不支持就降级无签名。
- 服务端
- SMB 加密(SMB3 Only)
- 全局
RequireEncryption=1,或者单共享‑EncryptData $true:只有 SMB3.x 客户端可以建立会话;SMB2/SMBv1 直接连接失败Microsoft ...。
- 全局
- GPO 优先级:组策略「安全选项」会覆盖 LanmanServer / LanmanWorkstation Parameters 注册表;直接改注册表,如果 GPO 存在,下一次组策略刷新会被覆盖。
四、配套链
4.1 组策略路径
- SMB 签名(安全选项)
计算机配置\Windows设置\安全设置\本地策略\安全选项
- Microsoft 网络服务器:对通信进行数字签名 (始终) →
LanmanServer RequireSecuritySignature - Microsoft 网络服务器:对通信进行数字签名 (如果客户端同意) →
LanmanServer EnableSecuritySignature - Microsoft 网络客户端:对通信进行数字签名 (始终) →
LanmanWorkstation RequireSecuritySignature - Microsoft 网络客户端:对通信进行数字签名 (如果服务器同意) →
LanmanWorkstation EnableSecuritySignatureGitHub
- LM‑NTLM 级别:
计算机配置\Windows设置\安全设置\本地策略\安全选项\LAN管理器身份验证级别→ 映射LmCompatibilityLevel。 - SMB 加密、审核:
计算机配置\管理模板\网络\Lanman服务器:审核不支持签名客户端、SMB 加密相关策略Microsoft ...。
4.2 PowerShell 管理配套(现代 Windows,优先使用)
# 查询SMB服务端全部配置
Get‑SmbServerConfiguration
# 设置全局强制加密(SMB3 only)
Set‑SmbServerConfiguration ‑RequireEncryption $true
# 查看本机SMB共享,单共享加密开关
Get‑SmbShare
Set‑SmbShare ‑Name ShareName ‑EncryptData $true
# 查看已建立SMB会话
Get‑SmbSession
4.3 命令行、排错配套
sc qc LanmanServer、sc qc LanmanWorkstation查看服务依赖。smbclient.exe(没有,Windows 无内置);抓包 Wireshark 过滤smb2;观察 Negotiate、SessionSetup 报文。- 事件日志:Microsoft‑Windows‑SMB‑Server、Microsoft‑Windows‑SMB‑Client;可以开启审核客户端不支持签名事件 ID,排查签名导致连接失败Microsoft ...。
4.4 安全防护配套
- 禁用 SMBv1:PowerShell
Disable‑WindowsOptionalFeature ‑Online ‑FeatureName SMB1Protocol;同时注册表LanmanServer\Parameters SMB1=0;还要禁用 mrxsmb10 驱动启动项Microsoft ...。 - 域控加固:域控制器强制开启服务端 RequireSecuritySignature=1,防御 SMB 中继攻击。
五、完整逻辑链路
链路 A:入站 SMB 连接完整协商(外部客户端访问本机共享)
外部客户端 → TCP 445 到达本机
↓ tcpip.sys → srv.sys内核驱动接收报文
Negotiate阶段:协商双方共同支持最高SMB版本
↓
SessionSetup身份认证:Kerberos优先,回退NTLM;LSA lsass.exe校验凭据,受LmCompatibilityLevel控制
↓
SMB签名协商:读取LanmanServer参数
如果 RequireSecuritySignature=1,客户端不能提供签名 → 直接断开连接
↓
如果SMB3且RequireEncryption开启:协商AES加密会话;非SMB3客户端直接拒绝
↓
TreeConnect连接共享;ACL校验用户访问权限
↓
srv.sys <‑> ntfs.sys,读写本地文件,返回SMB应答报文
链路 B:本机 SMB 客户端访问远端服务器(\server\share)
用户输入 \\Server\Share
↓ LanmanWorkstation服务 → mrxsmb20.sys内核重定向器
发出Negotiate协商报文
↓
SessionSetup身份认证,LSA按照LmCompatibilityLevel构造NTLMv2凭据
↓
读取LanmanWorkstation\Parameters签名配置:
如果 RequireSecuritySignature=1,远端服务器不支持SMB签名 → 本机主动终止会话
↓
成功建立会话;本地文件IRP被mrxsmb20转换成SMB网络请求发给远端服务器
链路 C:修改注册表 / GPO 配置加载链路
管理员修改注册表 / GPO编辑安全选项
↓ GPO客户端服务刷新策略,写入覆盖注册表
👉 情况1:SMB版本开关、RequireSecuritySignature注册表:**重启整机,srv.sys/mrxsmb*.sys内核驱动加载新配置**
👉 情况2:PowerShell Set‑SmbServerConfiguration:部分参数热生效,通知运行中srv.sys更新运行时配置
↓
后续新建立SMB会话使用新安全配置;**已经存在的旧SMB会话维持旧配置,不会动态变更**
⚠️重点:已经存在的活跃 SMB 会话不会自动应用新配置;必须断开现有会话,新会话才会生效。
六、边界与约束(故障边界,高频坑)
1、协议版本边界
- SMBv1 强烈建议全局禁用;存在大量历史高危漏洞(EternalBlue);Win11 22H2 + 默认移除 SMBv1 组件Microsoft ...。
- 禁用 SMB2=0,则 SMB2、SMB3 全部关闭;SMB3 构建在 SMB2 框架之上,没有独立开关。
- SMB3 加密仅 SMB3.0 及以上支持;SMB2 没有会话加密能力;开启全局 RequireEncryption,老旧 SMB2 设备完全无法连接。
2、SMB 签名边界(最常见兼容故障)
- 服务端
RequireSecuritySignature=1,所有入站连接必须支持 SMB 签名;老旧第三方 NAS、部分嵌入式设备不支持 SMB 签名,直接连接失败。 - 客户端
RequireSecuritySignature=1,本机去连接第三方不支持签名 NAS,直接会话终止。
生产加固:域控制器强制开启 RequireSecuritySignature=1;普通文件服务器评估老旧设备兼容性,谨慎开启强制,优先 EnableSecuritySignature=1(协商优先签名,不强求)。
- 签名≠加密:开启 SMB 签名,报文防篡改,但抓包仍然可以读取明文业务数据;需要机密性必须 SMB3 加密。
3、身份验证 LmCompatibilityLevel 边界
LmCompatibilityLevel=5:本机客户端只发送 NTLMv2;极老旧只支持 LM/NTLMv1 设备无法完成 NTLM 身份验证。- 该参数全局影响全部 NTLM SSP 调用(SMB、RPC、LDAP NTLM),不是只控制 SMB。
- Kerberos 不受 LmCompatibilityLevel 影响;只有回退 NTLM 时才生效。
4、配置生效硬边界
- 注册表修改
RequireSecuritySignature、SMB1/SMB2 开关,仅重启整机内核驱动加载才完整生效;只重启 LanmanServer 服务不足以刷新内核驱动配置。 - 已经建立的活跃 SMB 会话不会继承新配置;只有新发起会话使用新策略。
- GPO 组策略优先级高于本地注册表;直接改注册表,如果对应 GPO 配置存在,下次 gpupdate 会被覆盖,配置丢失。
- PowerShell
Get‑SmbServerConfiguration读取的是运行时生效配置,可以和原始注册表不一致(GPO 覆盖)。
5、SMB 加密边界
- 加密粒度:全局服务器级别 RequireEncryption,或者单共享级别‑EncryptData;单共享优先级高于全局配置Microsoft ...。
- SMB3.1.1 预认证完整性,不能关闭;老旧客户端不兼容 SMB3.1.1 会协商降级到 SMB3.0。
- 开启加密后,Wireshark 抓包 SMB payload 全部密文;但是 Negotiate、SessionSetup 头部部分元数据仍然明文。
6、典型故障‑根因对照表
| 现象 | 根因 |
|---|---|
| Windows 访问 NAS,报错 “指定的会话不存在” | 服务器端 RequireSecuritySignature=1;NAS 固件不支持 SMB 签名 |
| 本机向外访问 SMB 共享失败,服务器本身正常 | LanmanWorkstation RequireSecuritySignature=1;远端服务器不支持 SMB 签名 |
| 开启 RequireEncryption 后,老设备无法连接 | 老设备只支持 SMB2,SMB 加密仅 SMB3 可用 |
| 改注册表 SMB 签名参数,但现象无变化 | 没有重启整机;已有旧会话还在;GPO 策略覆盖注册表值 |
| 域控制器 SYSVOL 访问异常 | 域控强制 SMB 签名;客户端不支持签名;或者 LmCompatibilityLevel 设置过高 |
| 禁用 SMBv1 后老设备无法访问 | 设备只实现 SMBv1,没有 SMB2 支持,硬件老旧无固件升级 |
7、重大误区澄清
❌误区:SMB 签名可以加密数据,抓包看不到内容。 ✅真相:SMB 签名只提供报文完整性防篡改;业务载荷明文;加密功能是 SMB3 独立特性。
❌误区:修改 LanmanServer 注册表,重启 Server 服务就生效。 ✅真相:签名、协议版本属于内核srv.sys驱动配置,需要整机重启;重启服务不会重新加载内核驱动参数。
❌误区:LmCompatibilityLevel 只影响 SMB 协议。 ✅真相:LSA NTLM SSP 全局参数,SMB、RPC、DCOM 只要回退 NTLM 身份验证全部受该参数控制。
❌误区:新配置立刻作用在已经连接的 SMB 会话。 ✅真相:现有会话维持旧安全配置;断开重连的新会话才应用策略。
七、总结
- Windows SMB 分为服务端 LanmanServer(srv.sys 内核驱动,入站)、客户端 LanmanWorkstation(mrxsmb20.sys,出站);配置分为服务端参数、客户端参数两套独立注册表,组策略 GPO 优先级高于本地注册表。
- 四大安全配置维度:①SMB 协议版本开关;②SMB 报文签名(完整性,防中继篡改);③SMB3 会话加密(保密性 + 完整性);④LSA 的
LmCompatibilityLevel控制 LM‑NTLM‑NTLMv2 身份验证协商。 - 关键行为:
RequireSecuritySignature=1:强制会话必须签名,不满足直接断开;EnableSecuritySignature=1协商优先签名,兼容降级。LmCompatibilityLevel=5推荐加固,客户端只发出 NTLMv2 凭据,拒绝 LM/NTLMv1。- SMB3 加密仅 SMB3.x 可用,全局或单共享粒度开启,开启会拒绝 SMB2 设备。
- 生效硬边界:协议版本、SMB 签名注册表修改需要整机重启加载内核驱动;已经存在 SMB 会话不会自动刷新配置;GPO 会覆盖本地注册表。
- 加固建议:域控制器强制开启服务端
RequireSecuritySignature=1;普通文件服务器评估老旧 NAS / 嵌入式设备兼容性;永久禁用 SMBv1;优先 Kerberos 身份验证,限制 NTLM 降级使用。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"EnablePlainTextPassword"=dword:00000000 ; 启用明文密码(0 禁用,1 启用),此项为禁用明文密码传输
"EnableSecuritySignature"=dword:00000001 ; 启用安全签名(0 禁用,1 启用),此项启用 SMB 连接的安全签名
"RequireSecuritySignature"=dword:00000000 ; 强制要求安全签名(0 禁用,1 启用),此项为禁用强制要求安全签名
"ServiceDll"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,\
00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,\
77,00,6b,00,73,00,73,00,76,00,63,00,2e,00,64,00,6c,00,6c,00,00,00 ; 指定服务 DLL 的路径
"ServiceDllUnloadOnStop"=dword:00000001 ; 启动时卸载服务 DLL(0 禁用,1 启用),此项启用在停止时卸载指定的 DLL 文件
"AllowInsecureGuestAuth"=dword:00000001 ; 允许不安全的来宾身份验证(0 禁用,1 启用),此项启用来宾用户的身份验证,即使没有安全保护
说明:
- EnablePlainTextPassword: 如果设置为
0,则禁用明文密码传输,增加网络安全性。 - EnableSecuritySignature: 启用 SMB 协议中的安全签名,可以防止中间人攻击,确保数据传输的完整性。
- RequireSecuritySignature: 该项设置为
0表示没有强制要求所有连接必须使用安全签名。 - ServiceDll: 指定了服务 DLL 文件的路径,该路径通常是某个系统服务或网络功能所依赖的动态链接库(DLL)。
- ServiceDllUnloadOnStop: 启用时,在服务停止时会卸载对应的 DLL 文件。
- AllowInsecureGuestAuth: 允许使用不安全的来宾身份验证,这可能会在网络共享中提供更简便的访问方式,但也会增加安全风险。《网络发现 对应》
这些设置通常用于配置 Windows 系统的 SMB 协议行为以及相关的安全性和身份验证选项。
《网络发现 对应》该注册表配置启用了不安全的来宾身份验证。具体来说:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"AllowInsecureGuestAuth"=dword:00000001
AllowInsecureGuestAuth 设置为 1 允许使用不安全的来宾身份验证。这意味着在网络共享中,来宾用户可以不经过安全验证就访问某些资源,这样虽然提供了更方便的访问方式,但也增加了安全风险。因此,出于安全考虑,通常建议禁用此项。

浙公网安备 33010602011771号