本章目录(5)On this page (5)
  1. SMB 与旧协议
  2. 凭据与协议加固
  3. RDP
  4. 权限收口
  5. 验证清单
文章Articles

Windows 主机基线

面向域内工作站的 Windows 加固清单:权限收口、协议关闭、审计开启,每一项都配验证命令。

更新Updated 2026.09.22hardeningwindowsendpoint

面向域内工作站的基线。域控和服务器另有一套,不在这篇里。

SMB 与旧协议

# SMBv1:直接禁用(不重启,运行时生效)
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Set-SmbClientConfiguration -EnableSMB1Protocol $false -Force

# 验证
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol

# SMB 签名:域环境下必须开启,否则横向移动容易被中间人
Set-SmbClientConfiguration -RequireSecuritySignature $true -Force
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force

EnableSMB1Protocol 在很多版本的默认值是 $true——不是默认关的,别想当然。

凭据与协议加固

# 禁用 NTLMv1(NetNTLMv1 = Level 1)
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' `
  -Name 'LmCompatibilityLevel' -Value 5

# 限制 NTLM:本地账户空密码、远程登录本地账户
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' `
  -Name 'NoLMHash' -Value 1
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' `
  -Name 'LimitBlankPasswordUse' -Value 1

# 禁用 WDigest(缓存的明文密码哈希)
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest' `
  -Name 'UseLogonCredential' -Value 0

# 验证
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' |
  Select-Object LmCompatibilityLevel, NoLMHash, LimitBlankPasswordUse

LmCompatibilityLevel = 5 表示只允许 NTLMv2。改完必须在重启前确认没有老旧设备,否则那台设备会直接域认证失败——这是本篇最容易出事的一条。

RDP

# 禁止把 RDP 暴露到本机以外的所有网卡(0 = 所有网卡)
Set-ItemProperty 'HKLM:\System\CurrentControlSet\Control\Terminal Server' `
  -Name 'fDenyTSConnections' -Value 1

# 改端口只是让人少扫一点,不是安全措施
Set-ItemProperty 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' `
  -Name 'PortNumber' -Value 13389

RDP 的真正控制点是网络层:只允许从管理网段到 3389 的流量(见 VLAN 网络划分 的 ACL 那一节)。主机侧的设置是第二道防线。

权限收口

# 本地管理员组成员收口(会自动清掉非域管的成员,需重启生效)
Get-LocalGroupMember -Group 'Administrators'

# 启用「管理员批准模式」,并关闭「自动提升」对所有可执行文件
Set-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' `
  -Name 'EnableLUA' -Value 1
Set-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' `
  -Name 'ConsentPromptBehaviorAdmin' -Value 0   # 管理员都弹窗
Set-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' `
  -Name 'PromptOnSecureDesktop' -Value 1       # 安全桌面,防 UI 欺骗

EnableLUA = 0(关 UAC)在很多老环境里是「默认状态」,改的时候要评估现有软件的兼容性——部分国产办公软件在 UAC 开启后确实会出问题,别一次全切。

验证清单

改完之后跑一遍,任何一条不符就是没生效:

Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, RequireSecuritySignature
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa' | Select-Object LmCompatibilityLevel
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' | Select-Object EnableLUA
Get-LocalGroupMember -Group 'Administrators'
Get-Service -Name TermService | Select-Object StartType