Windows服务器被入侵,十有八九不是黑客有多高明,而是漏洞摆在那里没人管。端口裸奔、补丁滞后、弱口令、服务权限过大,这些基础问题构成了绝大多数攻击的入口。要谈安全防护,先得把“堵漏洞”这件事落到实处,而不是装个杀毒软件就以为万事大吉。

第一步:关闭所有不必要的端口和服务

服务器上线后,第一件事就是做端口收敛。很多管理员习惯把防火墙一关,图省事,结果3389、445、135、139这些高危端口全部暴露在公网。攻击者用扫描器批量扫网段,扫到开放端口就尝试爆破或利用已知漏洞。正确做法是:只开放业务必须的端口,比如80、443,以及你需要远程管理的端口,但远程管理端口不要用默认值。Windows防火墙本身就够用,入站规则里把“允许连接”的列表收紧到最小范围。对于135、139、445这类NetBIOS和SMB相关端口,如果不需要文件共享,直接在网卡属性里卸载“Microsoft网络的文件和打印机共享”和“链路层拓扑发现响应程序”,比单纯防火墙封端口更彻底。

第二步:补丁管理要形成强制流程

MS17-010(永恒之蓝)爆发的时候,很多中招的服务器其实早在几个月前就有了补丁,但没人打。Windows Server的补丁不能靠“有空再更”,必须纳入运维制度。生产环境可以设置维护窗口,用WSUS或者直接在组策略里配置自动下载、手动安装,确保每月的安全更新在固定时间完成。对于无法立即重启的服务器,至少要评估漏洞风险等级,高危远程代码执行漏洞必须优先处理。另外,不要忽略第三方组件,比如IIS模块、数据库、FTP服务软件、Java运行时,这些组件的漏洞同样会被利用。

第三步:账户和口令策略要硬性收紧

弱口令是暴力破解成功的第一原因。Administrator账户必须改名,Guest账户禁用,新建一个低权限账户用于日常管理,需要提权时再使用管理员权限。密码策略在组策略里强制开启:长度至少12位,包含大小写字母、数字和特殊字符,最长使用期限不超过90天,账户锁定阈值设为5次失败尝试,锁定时间30分钟以上。对于远程桌面登录,如果条件允许,不要直接暴露3389,先通过堡垒机或VPN(此处指企业内网接入方式)跳转。如果必须直接暴露,至少修改默认端口,并在防火墙层面限制来源IP,只允许特定办公网段访问。

第四步:远程桌面安全加固

远程桌面是Windows服务器最常用的管理入口,也是最容易被攻击的目标。除了改端口和限制来源IP,还要开启网络级别身份验证(NLA),这会强制用户在建立完整RDP会话前先完成身份验证,能有效缓解部分漏洞利用。在组策略中设置“要求使用网络级别身份验证对远程连接进行用户身份验证”为已启用。另外,关闭“允许使用保存的凭据进行登录”选项,防止凭据被提取。对于Server 2016及以上版本,可以考虑启用Windows Defender Credential Guard,防止哈希传递攻击。

第五步:文件系统和注册表权限最小化

很多攻击者拿到WebShell后,能进一步提权的原因在于服务账户权限过大。比如IIS的应用程序池账户默认是ApplicationPoolIdentity,这个账户本身权限很低,但很多管理员为了方便,直接改成LocalSystem或管理员账户,导致WebShell一拿到就能读写系统目录。正确做法是:应用程序池使用默认的低权限账户,只给网站目录授予必要的读写权限,系统盘根目录、Windows目录、Program Files目录禁止Web账户访问。对于数据库服务,同样不要用sa账户作为应用程序连接账户,按库按需授权。

第六步:开启并正确配置审计日志

没有日志,被入侵了都不知道发生了什么。在组策略中开启审核策略:审核登录事件、审核账户管理、审核策略更改、审核进程跟踪。日志大小要设置合理,建议安全日志最大大小至少1GB,覆盖方式选择“按需要覆盖事件”。同时,把日志转发到集中的日志服务器或SIEM系统,防止攻击者入侵后清理本地日志。重点监控事件ID 4625(登录失败)、4624(登录成功)、4672(特殊权限登录)、4740(账户锁定)等。如果发现大量4625来自同一IP,立即在防火墙层面封禁。

第七步:PowerShell和脚本执行限制

PowerShell是攻击者在内网横向移动和提权时最常用的工具。默认情况下,PowerShell的执行策略是Restricted,但很多管理员为了方便会改成Unrestricted。建议设置为RemoteSigned,这样本地脚本可以运行,但从网络下载的脚本必须有签名。更进一步,可以启用PowerShell的模块日志和脚本块日志,在组策略中开启“打开PowerShell脚本块日志记录”和“打开PowerShell模块日志记录”,这样即使攻击者使用无文件攻击,也能在日志中留下痕迹。对于不需要PowerShell的服务器,可以考虑通过AppLocker或WDAC限制powershell.exe的执行。

第八步:启用Windows Defender和高级威胁防护

Windows Server自带的Defender已经不是当年的鸡肋。在Server 2016及以上版本中,Defender的实时保护、云交付保护、受控文件夹访问都是有效的防护手段。通过组策略或PowerShell开启云保护级别为“高”,开启样本提交,开启PUA保护。受控文件夹访问可以防止勒索软件对指定目录的加密操作,建议把网站目录、数据库目录、备份目录加入保护列表。对于Defender的排除项,要谨慎添加,攻击者经常利用排除目录来放置恶意文件。

第九步:网络层面的隔离和分段

服务器不应该和办公网在同一个广播域。通过VLAN或子网划分,把服务器区、办公区、开发区分开,服务器区之间再根据业务做微隔离。Windows防火墙可以基于IP地址和端口做精细控制,比如Web服务器只允许来自负载均衡器的80端口流量,数据库服务器只允许来自Web服务器的1433端口流量。这样即使一台服务器被拿下,攻击者也无法直接横向移动到其他服务器。对于跨网段的访问,使用跳板机或管理网段,避免服务器直接暴露在办公网中。

第十步:备份和应急响应准备

安全防护的最后一道防线是备份。但备份本身也需要防护,很多勒索软件会先删除或加密备份文件。备份策略要遵循3-2-1原则:至少3份数据,2种不同介质,1份离线存储。Windows Server Backup可以做到定时备份到网络位置,但网络位置本身如果被攻破,备份也会被加密。建议定期将备份复制到离线介质,比如磁带或物理隔离的存储设备。同时,制定应急响应流程,明确发现入侵后第一步是断网隔离,而不是立即关机,因为关机可能丢失内存中的关键证据。

Windows服务器安全防护的核心逻辑是:减少暴露面、降低权限、加快补丁响应、保留审计痕迹。这四件事做到位,绝大多数自动化攻击和机会型攻击都会被挡在门外。安全不是一次性的配置,而是持续的过程,每新增一个服务、每修改一次配置,都要重新评估风险。漏洞永远存在,关键是你是否在攻击者发现之前堵住了它。