Windows服务器安全加固
Windows服务器安全加固
概述
Windows 服务器是企业 IT 基础设施的重要组成部分,运行着 Active Directory、Exchange、SQL Server 等关键业务系统。由于 Windows 的市场占有率高且默认配置偏向易用性,它一直是攻击者的重点目标。对 Windows 服务器进行安全加固,是减少攻击面、提升整体安全性的必要措施。
Windows 服务器加固需要覆盖多个层面:操作系统层面的账户策略和安全策略配置、网络层面的防火墙和协议安全、远程访问层面的 RDP 加固、以及应用层面的服务管理和补丁管理。每个层面的加固措施都需要根据业务需求进行权衡,避免过度加固影响正常业务运行。
本文将以 Windows Server 2019/2022 为基础,详细介绍各关键加固领域的配置方法和最佳实践。加固标准参考 CIS Benchmark for Microsoft Windows Server 和等保 2.0 三级要求。
核心概念
组策略安全配置
账户策略(Computer Configuration > Windows Settings > Security Settings > Account Policies):设置密码最小长度 14 位、密码复杂度要求启用、密码最长使用期限 90 天、密码历史记录 24 个、账户锁定阈值 5 次、锁定持续时间 15 分钟、重置锁定计数器 15 分钟。
审核策略(Audit Policy):启用关键事件的成功和失败审计,包括:账户登录事件(成功+失败)、账户管理(成功+失败)、登录事件(成功+失败)、策略更改(成功+失败)、特权使用(失败)、系统事件(成功+失败)。这些审计日志是安全监控和事件调查的重要数据来源。
安全选项配置:启用 Ctrl+Alt+Del 登录要求、不显示上次登录用户名、在密码到期前提示用户更改密码(14天)、禁用匿名 SID/名称枚举、限制对 CD-ROM 和软驱的匿名访问。
服务管理与最小化
禁用不必要的服务:在服务器核心安装模式下已大幅减少服务数量,但仍需审查并禁用不需要的服务。常见可禁用的服务包括:Print Spooler(非打印服务器)、Windows Search、Remote Registry、Xbox 相关服务、Bluetooth 服务。
每个服务都可能成为攻击面。例如 Print Spooler 服务曾被用于 PrintNightmare(CVE-2021-34527)漏洞攻击。使用 PowerShell 命令 Get-Service | Where-Object {$_.StartType -eq 'Automatic'} 列出所有自动启动的服务,逐一审查其必要性。
服务账户安全:为运行服务的账户配置最小权限,避免使用 LocalSystem 账户运行服务。使用 gMSA(Group Managed Service Accounts)管理服务账户密码的自动轮换。
RDP安全加固
网络级别身份验证(NLA):启用 NLA 要求用户在建立 RDP 会话前先进行身份验证,可以减少 DoS 攻击的风险。在系统属性的远程选项卡中勾选"只允许运行带网络级别身份验证的远程桌面的计算机连接"。
RDP 端口修改:将默认的 3389 端口修改为非标准端口,减少自动化扫描攻击的风险。修改注册表 HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp 中的 PortNumber 值。
限制 RDP 访问:通过组策略限制允许 RDP 远程登录的用户组("允许通过远程桌面服务登录"),使用 RDP Gateway 进行远程访问的集中管理。设置会话超时时间,空闲会话自动断开。配置 IP 白名单,仅允许特定 IP 段进行 RDP 连接。
RDP 加固还包括:限制剪贴板重定向、限制驱动器映射(防止通过 RDP 通道传输文件)、启用 RDP 传输层安全(TLS)加密。
Windows防火墙配置
启用 Windows Defender 防火墙并配置入站默认拒绝策略(Block all inbound connections)。仅开放业务必需的入站端口,如 HTTP/HTTPS(80/443)、RDP(修改后的自定义端口)等。
创建详细的防火墙规则:按程序、端口、协议和IP地址精确控制。使用 New-NetFirewallRule PowerShell cmdlet 创建规则。启用防火墙的登录功能(Set-NetFirewallProfile -LogFileName ... -LogAllowed True -LogBlocked True),用于安全审计和攻击检测。
配置出站规则:虽然出站连接通常允许,但对于高安全环境,可以限制出站连接仅允许到白名单 IP 和端口,有效阻止 C2 通信和数据外泄。
补丁管理
建立定期补丁管理流程:每月至少一次安全补丁更新(微软每月第二个周二发布补丁星期二),紧急零日漏洞补丁应在评估后尽快部署。使用 WSUS(Windows Server Update Services)或 SCCM 进行集中化的补丁管理。
补丁部署策略:先在测试环境中验证补丁兼容性,再分批次部署到生产环境。保留补丁回滚能力,确保在补丁导致兼容性问题时能快速恢复。
实战要点
- 使用安全基线模板:微软提供了官方的安全基线配置工具(Microsoft Security Compliance Toolkit),包含了基于 CIS 和 STIG 标准的组策略模板,可以直接导入应用。
- 配置 LAPS 管理本地密码:部署 LAPS(Local Administrator Password Solution)自动管理域内计算机的本地管理员密码,确保每台机器的本地管理员密码唯一且定期轮换。
- 启用 PowerShell 日志记录:配置 PowerShell 的模块日志记录(Module Logging)、脚本块日志记录(Script Block Logging)和转录日志记录(Transcription),PowerShell 是攻击者最常用的攻击工具之一。
- 配置 AppLocker 或 WDAC:部署应用控制策略(AppLocker 或 Windows Defender Application Control),限制只能运行经过批准的应用程序,有效阻止恶意软件执行。
- 定期安全扫描:使用 CIS-CAT 或 Microsoft 的安全基线分析工具定期扫描服务器配置,发现偏离安全基线的配置项并及时修复。
总结
Windows 服务器安全加固是一个需要持续维护的过程。通过合理配置组策略、精简服务、加固 RDP 和防火墙,可以显著提升服务器的安全性。同时,配合补丁管理和安全监控,形成完整的防护体系。建议使用自动化工具进行加固配置的部署和合规检查,确保安全标准的一致性和持续性。