2、操作系统安全基线(Windows):账户策略、审计策略、安全选项配置、服务与端口最小化
说实话,Windows 安全基线配置,是我在每次项目交付时都会反复检查的一环。很多团队觉得装个杀毒软件就万事大吉了,但真正出问题的地方,往往就是这些「不起眼」的默认设置。我见过太多因为 Guest 账户没禁用、审计日志没开,导致被入侵后连攻击路径都查不出来的案例。
今天咱们就掰开揉碎了,把 Windows 安全基线的四个核心模块讲透。你跟着我的思路走一遍,基本上就能应付绝大多数等保测评和实战需求了。
2.1 账户策略:把好第一道门
账户策略说白了,就是管好「谁可以进来」以及「怎么进来」。我个人习惯,拿到一台 Windows 服务器,第一件事就是改密码策略。
2.1.1 密码策略
默认的 Windows 密码策略其实挺弱的。我记得有一次做渗透测试,对方域管理员密码居然是 Password123,我用了不到十分钟就破解了。所以,咱们必须手动强化。
| 策略项 | 推荐值 | 说明 |
|---|---|---|
| 密码必须符合复杂性要求 | 已启用 | 必须包含大写、小写、数字、特殊字符中的三种 |
| 密码长度最小值 | 12 个字符 | 别再用 8 位了,12 位是底线 |
| 密码最长使用期限 | 90 天 | 到期强制更换 |
| 强制密码历史 | 5 个 | 防止循环使用旧密码 |
2.1.2 账户锁定策略
这个策略是用来防暴力破解的。你想想看,如果攻击者可以无限次尝试密码,那再强的密码也扛不住字典攻击。
# 推荐配置(通过 secpol.msc 或组策略设置)
账户锁定阈值:5 次无效登录
账户锁定时间:30 分钟
重置账户锁定计数器:30 分钟之后
2.2 审计策略:让每一次操作都留下痕迹
审计策略是我个人非常看重的一块。没有审计,安全就是空谈。你被入侵了,连谁干的、怎么干的都不知道,那还谈什么溯源?
Windows 的审计策略分为「基本审计策略」和「高级审计策略」。我建议直接使用高级审计策略,粒度更细。
2.2.1 必须开启的审计项
- 审计账户登录事件:记录谁登录了系统,成功和失败都要记
- 审计账户管理:创建、删除、修改用户或组时记录
- 审计登录事件:记录本地或远程登录尝试
- 审计对象访问:关键文件或注册表被访问时记录
- 审计策略更改:有人改了安全策略,必须记下来
- 审计特权使用:谁用了管理员权限,一清二楚
实战经验: 我在一次应急响应中,发现攻击者删除了系统日志。但幸好我们开启了高级审计策略,日志被实时转发到了 SIEM 平台。最终通过分析转发前的日志片段,锁定了攻击者的 IP 和手法。如果没有审计,那次就真的成了无头案。
2.2.2 审计日志的保存与保护
光开启审计还不够,日志得保存好。默认情况下,日志大小只有 20MB,满了就会覆盖。这显然不行。
# 通过事件查看器或组策略配置
- 应用程序日志最大大小:1GB
- 安全日志最大大小:2GB
- 系统日志最大大小:1GB
- 日志保留方法:按需要覆盖事件(或手动归档)
2.3 安全选项配置:把系统「拧紧」
安全选项配置,说白了就是调整 Windows 的各种「拧巴」设置。很多默认选项其实是为了方便,而不是为了安全。咱们得一个个改过来。
2.3.1 交互式登录相关
- 不显示上次登录的用户名:启用。防止攻击者知道系统上有哪些账户
- 无需按 Ctrl+Alt+Del:禁用。这个组合键能防止某些键盘记录攻击
- 用户登录时显示消息标题和文本:设置法律警告。比如「未经授权禁止访问」
2.3.2 网络访问相关
- 网络访问:不允许 SAM 账户的匿名枚举:启用
- 网络访问:不允许存储网络身份验证的密码和凭据:启用
- Microsoft 网络服务器:对通信进行数字签名(始终):启用
2.3.3 关机与设备相关
- 关机:允许系统在未登录的情况下关闭:禁用。防止有人直接按电源键关机
- 设备:允许不登录就弹出可移动媒体:禁用。防止 U 盘被随意拔出
2.4 服务与端口最小化:能关的就别开着
服务与端口最小化,是安全基线里最「硬核」的部分。你想想看,每多开一个服务,就多一个攻击面。我的原则是:默认全关,按需开启。
2.4.1 必须禁用的高危服务
| 服务名称 | 风险说明 | 操作建议 |
|---|---|---|
| Remote Registry | 允许远程修改注册表 | 禁用 |
| Print Spooler | PrintNightmare 漏洞的重灾区 | 如无打印机,禁用 |
| Server | 提供文件共享,容易被利用 | 非文件服务器则禁用 |
| Telnet | 明文传输,密码直接暴露 | 禁用,改用 SSH |
| Windows Update | 可能被用于下发恶意更新 | 禁用自动更新,改为手动或 WSUS |
2.4.2 端口最小化原则
端口方面,我习惯用 netstat -ano 命令先扫一遍,看看哪些端口在监听。然后对照业务需求,把不需要的端口全部封掉。
# 查看当前监听端口
netstat -ano | findstr LISTENING
# 通过 Windows 防火墙关闭端口(示例:关闭 445 端口)
netsh advfirewall firewall add rule name="Block SMB" dir=in action=block protocol=TCP localport=445
一般来说,Windows 服务器只需要开放以下端口:
- 3389:远程桌面(建议更改默认端口,并限制来源 IP)
- 443/80:Web 服务(如果有 IIS)
- 1433:SQL Server(如果有数据库)
- 其他业务端口:按需开放
知识体系总览
下面这张图,是我梳理的 Windows 安全基线核心逻辑。你可以把它当作一个检查清单,每次配置完对着过一遍。
好了,Windows 安全基线的四个核心模块就讲完了。你按照这个思路去配置,基本上能挡住 90% 的常见攻击。记住,安全不是一锤子买卖,基线配置只是第一步,后续的持续监控和定期审计同样重要。