Windows Server 默认配置下,攻击者一旦获得低权限立足点,横向移动或提取凭证的难度往往比预想中低得多。组策略不是简单的“开关合集”,它是防御体系里最核心的强制控制层。加固的起点,不是安装补丁,而是立即锁定那些被滥用的基础协议和权限委派。
阻断凭证窃取与哈希传递凭证盗窃和哈希传递攻击的核心依赖是内存中的明文密码和高权限下的LSASS进程访问。首要动作是限制本地管理员权限的泛滥。通过组策略,在“计算机配置”>“策略”>“Windows设置”>“安全设置”>“受限制的组”中,严格定义本地 Administrators 组成员。任何不在列表中的账户都会被强制剔除,这比手动清理更彻底。接着,针对LSASS保护,在“计算机配置”>“管理模板”>“系统”>“本地安全机构”中,启用“将本地安全机构配置为作为受保护进程运行”。勾选“使用硬件虚拟技术”选项后,LSASS将运行在隔离的虚拟安全模式下,即使攻击者获得调试权限,也无法从受保护的进程中转储哈希。对于WDigest明文密码泄露问题,需要在注册表路径“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest”下将 UseLogonCredential 值设为 0,这可通过组策略首选项直接推送,无需重启即可生效。
强制实施凭据卫士与远程凭据防护凭据卫士是防御哈希传递的决定性技术。在“计算机配置”>“管理模板”>“系统”>“Device Guard”中,启用“打开基于虚拟化的安全”,并将“凭据保护配置”设为“使用UEFI锁启用”。开启后,域凭据将存储在基于虚拟化的安全隔离区,即便内核被攻破,哈希依然不可提取。对于远程桌面连接的场景,必须启用“远程凭据防护”。在“计算机配置”>“管理模板”>“Windows组件”>“远程桌面服务”>“远程桌面会话主机”>“安全”中,启用“要求使用远程凭据防护进行远程桌面连接”。这确保RDP会话建立前进行设备与用户双重认证,彻底阻断“传递哈希”登录远程桌面的路径。配置完成后,客户端需使用参数“/remoteguard”发起连接。
禁用高危协议与弱加密套件SMBv1 和 NetBIOS 是勒索软件传播和侦察活动的最爱。通过组策略集中禁用这些遗留协议,比单机脚本更可靠。SMBv1 的禁用需通过“计算机配置”>“首选项”>“控制面板设置”>“服务”,将“Server”和“Workstation”服务对应的 SMB1 依赖项移除,或者直接部署注册表项禁用 MRxSmb10 和 LanmanServer 的 SMB1 组件。NetBIOS 的关闭在“网络连接”的高级 TCP/IP 设置中操作,但通过组策略批量部署,应在“计算机配置”>“管理模板”>“网络”>“DNS 客户端”中启用“关闭多播名称解析”,同时在 WINS 设置中禁用 TCP/IP 上的 NetBIOS。对于加密套件,必须通过“计算机配置”>“管理模板”>“网络”>“SSL 配置设置”指定 SSL 密码套件顺序,剔除所有 RC4、3DES 和 NULL 算法,确保只保留支持向前保密(PFS)的 AES-GCM 套件。
LAPS 解决本地管理员密码同质化企业环境中,如果每台服务器的本地管理员密码相同,一台失陷即意味着全网沦陷。本地管理员密码解决方案(LAPS)是唯一解。安装 LAPS 后,扩展 Active Directory 架构,在“计算机配置”>“管理模板”>“LAPS”中配置“密码设置”,定义密码长度、复杂性和过期天数。关键配置项是“启用本地管理员密码管理”,激活后,每台计算机对象在 AD 中自动存储唯一的加密密码。访问控制通过 Active Directory 权限委派实现,必须严格限制“ms-Mcs-AdmPwd”属性的读取权限,仅授权给特定运维组和受保护的主机组,并启用审计日志记录每一次密码读取事件。这样即使攻击者攻陷一台服务器并窃取本地哈希,也无法横向移动到其他机器。
AppLocker 与 WDAC 构建应用白名单在服务器环境中,运行未经授权的可执行文件、脚本和安装程序是灾难的前兆。AppLocker 是构建零信任执行策略的基础。首先在“计算机配置”>“Windows设置”>“安全设置”>“应用程序控制策略”>“AppLocker”中,将“强制规则”配置为“审核模式”收集数据。分析事件日志后,逐步过渡到“强制模式”。规则应覆盖可执行文件(.exe)、Windows Installer(.msi)、脚本(.ps1, .vbs)和 DLL。路径规则容易绕过,必须优先使用发布者规则,仅允许经过特定数字签名且产品名称匹配的软件运行。例如,仅允许 Microsoft Corporation 签名的 PowerShell 执行,而非任何路径下的 powershell.exe。对于更严苛的环境,Windows Defender 应用程序控制(WDAC)提供内核级强制,通过“计算机配置”>“管理模板”>“系统”>“Device Guard”部署代码完整性策略,禁止所有未签名驱动和用户模式代码执行,这能防御高级内存注入和内核漏洞利用。
精细化用户权限分配与审计策略用户权限分配中的高危条目必须清零。在“计算机配置”>“Windows设置”>“安全设置”>“本地策略”>“用户权限分配”中,“作为批处理作业登录”、“作为服务登录”和“允许通过远程桌面服务登录”必须移除 Everyone 和 Users 组,仅添加特定服务账户。最危险的权限是“调试程序”(SeDebugPrivilege)和“备份文件和目录”,拥有这些权限等同于管理员。默认情况下仅 Administrators 拥有,需定期核查,防止第三方软件安装时被篡改。审计策略必须开启“审核进程创建”,并在命令行中包含参数。通过“计算机配置”>“Windows设置”>“安全设置”>“高级审核策略配置”>“详细跟踪”,启用“审核进程创建”。这样 Sysmon 或 Windows 事件日志将记录所有执行命令的完整命令行,为溯源提供关键证据。同时,必须启用“审核登录事件”和“审核账户管理”,并将日志容量在“事件日志”策略中调至最大,配置覆盖策略为“按需覆盖旧事件”,防止攻击者通过生成大量垃圾日志撑爆存储。
PowerShell 约束与语言模式锁定无约束的 PowerShell 是攻击者的理想工具。仅靠脚本执行策略(ExecutionPolicy)限制远远不够,因其可被命令行参数轻松绕过。真正的加固是通过“计算机配置”>“管理模板”>“Windows组件”>“Windows PowerShell”启用“打开脚本执行”。设置为“仅允许签名脚本”后,结合“打开模块日志记录”和“打开脚本块日志记录”。脚本块日志记录会将混淆代码在执行前自动解混淆并记录,是检测无文件攻击的核心数据源。更彻底的防御是部署受限语言模式。通过环境变量“__PSLockdownPolicy”设为 4,强制 PowerShell 进入受限语言模式,禁止使用 .NET 反射、Add-Type 和 COM 对象创建,直接切断大多数基于 PowerShell 的攻击工具链的运行基础。
# 通过组策略部署受限语言模式的注册表项示例 New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Force New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -Name "__PSLockdownPolicy" -Value 4 -PropertyType DWORD -ForceRDP 与网络层身份验证强化
远程桌面服务是服务器管理的生命线,也是暴力破解和漏洞利用的高发端口。在“计算机配置”>“管理模板”>“Windows组件”>“远程桌面服务”>“远程桌面会话主机”>“安全”中,必须将“要求使用特定安全层进行远程(RDP)连接”设置为“SSL(TLS 1.0)”,并启用“要求使用网络级别身份验证对远程连接进行用户身份验证”。NLA 在建立 RDP 会话前完成身份验证,大幅降低服务器资源消耗和未授权访问风险。针对暴力破解,需配置账户锁定策略。在“计算机配置”>“Windows设置”>“安全设置”>“账户策略”>“账户锁定策略”中,设置“账户锁定阈值”为 5 次无效登录,锁定时间 30 分钟。但需注意,此策略可能被利用进行拒绝服务攻击,因此应结合“允许管理员账户锁定”策略,并为紧急访问准备专用的本地管理密码或破碎玻璃账户。
安全基线自动化与合规性检查手动逐台配置组策略不仅低效,且容易产生配置漂移。必须使用安全合规性工具包(Security Compliance Toolkit)中的基线策略。下载对应 Windows Server 版本的安全基线,通过 LGPO.exe 或组策略管理控制台导入。重点导入“域控制器安全基线”和“成员服务器安全基线”。导入后,并非全盘接受,必须根据业务需求裁剪。例如,基线可能禁用某些旧版.NET支持,需在测试后调整。持续合规性监控通过“安全合规性管理器”或 PowerShell DSC 实现。编写 DSC 配置脚本,定期检查关键注册表项、服务状态和用户权限分配,一旦检测到偏离基线,自动修正或告警。例如,定期检查 LAPS 是否正常运行,AppLocker 服务是否处于运行状态,以及审计策略是否被篡改。
# DSC 配置示例:强制 AppLocker 服务运行
Configuration AppLockerServiceCheck {
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node localhost {
Service AppIDSvc {
Name = "AppIDSvc"
State = "Running"
StartType = "Automatic"
}
}
}
组策略安全加固的本质是将安全基线转化为强制性的、不可绕过的技术控制。每一项配置都直接对应一种或多种攻击技术的阻断。从凭证保护到应用控制,从协议禁用到审计覆盖,这些策略相互咬合形成纵深防御。部署过程中,务必遵循“审核-测试-强制”的渐进流程,在生产环境批量推送前,在代表性子集上验证兼容性。安全策略的生效不是终点,持续监控策略应用状态和例外处理,才能确保防御体系不被时间和配置变更腐蚀。
