应启用“网络访问:不允许 SAM 帐户和共享的匿名枚举”与“网络访问:限制对命名管道和共享的匿名访问”两项策略,并清空四项可匿名访问项,以彻底阻断空会话漏洞。
要禁止匿名用户枚举本地账户和共享资源,核心是启用两项关键安全策略:一是“网络访问:不允许 sam 帐户和共享的匿名枚举”,二是“网络访问:限制对命名管道和共享的匿名访问”。这两项设置能有效堵住空会话(null session)漏洞,防止攻击者通过未认证连接获取用户名列表或共享名列表。
启用“不允许 SAM 帐户和共享的匿名枚举”
该策略直接阻止匿名用户读取本地 SAM 数据库中的账户名,以及列出本机共享名称。
- 按 Win + R 打开运行框,输入 gpedit.msc 回车(仅限专业版/企业版/教育版;家庭版需改用注册表或 PowerShell)
- 依次展开:计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 安全选项
- 在右侧找到:网络访问:不允许 SAM 帐户和共享的匿名枚举
- 双击打开,选择已启用,点击确定
启用“限制对命名管道和共享的匿名访问”
这项策略配合上一项,进一步收紧空会话权限,限制匿名用户访问命名管道(如 srvsvc、winreg)和共享文件夹的能力。
- 仍在同一路径(安全选项下),找到:网络访问:限制对命名管道和共享的匿名访问
- 双击,设为已启用
- 注意:启用后,系统将只允许访问注册表中
NullSessionPipes和NullSessionShares明确列出的管道与共享(默认为空),其余一律拒绝
清理残留的匿名可访问项
即使启用了上述策略,若之前手动配置过允许匿名访问的例外项,仍可能留下风险点。
- 在同一“安全选项”列表中,检查并清空以下四项的值(双击→编辑→删除全部内容):
• 网络访问:可匿名访问的共享
• 网络访问:可匿名访问的命名管道
• 网络访问:可远程访问的注册表路径
• 网络访问:可远程访问的注册表路径和子路径 - 清空后点击确定,避免因遗留条目绕过主策略
验证与补充建议
策略生效无需重启,但建议立即测试效果:
- 从另一台 Windows 计算机(使用普通用户或来宾账户),尝试执行:
net view \目标IP—— 应提示“拒绝访问”或“找不到网络路径”net user /domain(若在域环境)或net user(本地)—— 无法通过空会话获取列表 - 额外加固建议:
• 禁用 Guest 账户(计算机管理 → 本地用户和组 → 用户 → Guest 属性 → 勾选“账户已禁用”)
• 关闭 SMBv1(PowerShell 运行Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol -NoRestart)
• 防火墙规则限制 445/TCP 入站(尤其面向公网时)

















