Windows服务器默认安装后的安全状态,与其说是“一台服务器”,不如说是一扇半掩的门。默认的Administrator账户、开放的135/139/445端口、宽松的用户权限策略、未强制审计的登录事件,任何一项都足以让一台刚上线的机器在几小时内被自动扫描程序标记。精细化配置不是“装个杀毒软件再开防火墙”这种层面的事,它要求你逐项定义谁能登录、从哪登录、能碰什么、做了什么会被记录、异常行为如何自动响应。下面直接进入可落地的配置项。

一、账户与凭证策略:先把“万能钥匙”废掉

内置Administrator账户是攻击者最想拿到的身份。第一步不是给它改个复杂密码,而是直接禁用或重命名。在“本地安全策略”中,将账户重命名为一个无规律的名称,并创建新的低权限管理账户用于日常维护。同时启用“账户锁定阈值”,建议设置为5次无效登录后锁定30分钟,锁定计数器在15分钟后重置。这个配置能直接阻断在线暴力破解,但对离线哈希破解无效,所以密码策略同样关键。

密码策略建议设置为:最小长度14位,启用复杂性要求,强制密码历史记录记住5个以上,最长使用期限90天。很多人认为“密码不过期”更安全,实际上对于服务器而言,定期轮换配合审计能降低凭证泄露后的暴露窗口。不要使用“密码永不过期”策略,除非你有严格的密钥或证书登录体系替代。

还有一个经常被忽略的点:禁用所有不必要的本地账户。IIS、SQL Server、FTP等服务安装时可能创建辅助账户,这些账户往往具有登录权限但密码强度未知。逐一检查“本地用户和组”,将不用的账户禁用,将服务账户的“允许登录”权限从“本地登录”中移除。

二、登录与访问控制:限制“谁能从哪进来”

远程桌面(RDP)是Windows服务器最常用的管理入口,也是被扫描最多的服务。不要只改端口,端口修改只能降低噪音,不能阻止定向攻击。更有效的做法是配置“允许通过远程桌面服务登录”的用户权限,只授予特定的管理组或专用跳板账户。在“本地安全策略”的“用户权限分配”中,将“拒绝通过远程桌面服务登录”加入Administrators以外的所有账户,包括Guest、IUSR、SQL服务账户等。

如果条件允许,应当配置IPsec连接安全规则或Windows防火墙的“远程桌面”入站规则,将可访问RDP的源IP限制为运维人员的固定出口IP或内网堡垒机地址。这一步在云服务器上尤其重要,因为公网网卡的RDP端口暴露面极大。

对于本地登录,同样需要收紧。在“用户权限分配”中,将“允许本地登录”仅保留给Administrators组和特定的维护账户。将“拒绝本地登录”策略应用到所有服务账户、Guest账户以及任何不需要交互式登录的身份。

三、文件系统与注册表权限:默认权限太“大方”

Windows默认的NTFS权限对系统目录的保护并不如想象中严格。以C:\Windows\Temp为例,默认情况下Users组可能拥有写入权限,这为DLL劫持和提权提供了便利。建议将Temp目录的权限收紧为:SYSTEM和Administrators完全控制,Users组仅“读取和执行”,并删除“写入”权限。同样需要检查的目录包括C:\ProgramData、C:\inetpub、C:\Users\Public。

对于Web服务器,网站根目录的权限配置要遵循“最小权限”原则。运行应用程序池的账户只应拥有网站目录的“读取和执行”权限,仅对需要写入的子目录(如上传目录、日志目录)授予“写入”权限,且必须禁止“执行”权限。上传目录单独设置“写入”但无“执行”,这是防止WebShell落地的关键一步。

注册表权限同样需要审查。HKLM\SYSTEM\CurrentControlSet\Services下的服务注册表项,默认权限可能允许Users组读取,但某些敏感服务(如远程桌面服务、防火墙服务)的配置信息不应暴露。建议对HKLM\SYSTEM\CurrentControlSet\Control\Lsa、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon等关键路径设置仅SYSTEM和管理员可读。

四、服务与组件精简:减少攻击面

每一台Windows服务器都默认启用了一些不必要的服务。Print Spooler是近年来高危漏洞的重灾区,如果服务器不承担打印服务角色,应当立即禁用。Server服务(LanmanServer)如果不需要作为文件服务器,也应禁用,这能直接关闭445端口的监听。Remote Registry服务必须禁用,它允许远程修改注册表,是横向移动的常用工具。

在“服务”管理单元中,建议将以下服务设置为“禁用”或“手动”:Print Spooler、Remote Registry、Windows Error Reporting Service、Secondary Logon、Net.Tcp Port Sharing Service。对于IIS服务器,还应禁用不使用的协议模块,如WebDAV、目录浏览等。

组件层面的精简同样重要。通过“服务器管理器”中的“删除角色和功能”,卸载不必要的Windows功能,例如SMB 1.0/CIFS文件共享支持、PowerShell 2.0引擎、Windows Media Services等。SMB 1.0是WannaCry等勒索软件传播的核心通道,没有理由保留。

五、防火墙与网络层策略:出站规则同样重要

大多数管理员只关注入站规则,但出站流量的控制往往被忽略。一台被攻陷的服务器,攻击者下一步通常是下载工具或回连C2。如果出站规则默认允许所有流量,攻击者几乎可以畅通无阻。建议将出站默认策略设置为“阻止”,然后按需放行:DNS(UDP 53)、HTTP/HTTPS(TCP 80/443)、NTP(UDP 123)、以及必要的更新服务地址。

入站规则方面,除了RDP限制源IP外,还应关闭所有不必要的端口。使用以下PowerShell命令可以快速查看当前监听的端口和对应进程:

Get-NetTCPConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess | Sort-Object LocalPort | Format-Table -AutoSize

根据输出结果,逐一确认每个监听端口是否有业务需求。对于IIS服务器,只保留80和443;对于数据库服务器,如果数据库仅被本机应用调用,应将SQL Server的网络协议配置为“仅共享内存”,而不是监听TCP 1433。

六、审计与日志策略:没有记录等于没有发生

精细化安全配置的最后一环是审计。默认的审核策略往往只记录成功事件,而失败事件才是发现攻击的关键。在“本地安全策略”的“高级审核策略配置”中,建议启用以下审计项:

登录/注销:审核成功和失败。账户管理:审核成功和失败。对象访问:对敏感文件目录启用审核。策略更改:审核成功和失败。特权使用:审核失败。进程跟踪:至少审核失败。

日志大小和保留策略也需要调整。默认的应用程序、安全、系统日志大小通常只有20MB,在高事件量下很快被覆盖。建议将安全日志大小设置为至少1GB,并配置“按需覆盖事件”或“达到最大大小时存档”。同时,将日志转发到集中的日志服务器或SIEM系统,避免攻击者入侵后清理本地日志。

还有一个实用的配置:启用“审核进程创建”。这会在安全日志中记录每个新进程的启动,包括命令行参数。对于发现WebShell执行、PowerShell下载执行等行为非常有价值。配置方法是在高级审核策略中启用“详细跟踪”下的“审核进程创建”,然后确保系统版本支持命令行参数记录(Windows Server 2016及以上默认支持)。

七、自动化加固与持续验证

手动配置以上所有项目耗时且容易遗漏。建议使用PowerShell Desired State Configuration(DSC)或组策略对象(GPO)来固化配置。对于单台服务器,可以使用安全基线工具如Microsoft Security Compliance Toolkit中的基线策略,直接导入本地安全策略。对于多台服务器,应通过域组策略统一推送。

配置完成后,使用微软官方的安全配置评估工具(如Microsoft Defender for Endpoint中的安全评分,或开源工具如CIS-CAT)进行验证。定期复查安全策略是否被意外更改,尤其是在安装新软件或系统更新后。安全配置不是一次性的工作,而是一个持续的过程。