操作系统基线(Windows):账户策略、密码策略、审计策略、用户权限分配
Windows 系统的安全基线配置,说白了就是给操作系统上一把锁。很多企业买完服务器,系统装好就扔在那跑,结果被入侵了才发现连最基本的密码策略都没开。我这些年做安全审计,见过太多这样的案例了。
这一章我们重点聊四个核心模块:账户策略、密码策略、审计策略和用户权限分配。这四个东西搞定了,Windows 系统的合规底线基本就守住了。
核心观点:基线配置不是越严越好,而是要在安全性和可用性之间找到平衡点。太松了等于没设,太紧了业务跑不动,运维人员也会想办法绕过。
3.1 账户策略:把暴力破解挡在门外
账户策略主要管三件事:账户锁定阈值、锁定时间和重置计数器时间。我见过最离谱的配置是一台域控服务器,账户锁定阈值设成了 0——也就是永远不锁定。攻击者可以无限次尝试密码,直到猜对为止。
注意:账户锁定阈值不要设成 0。0 表示「不锁定」,这是安全审计的红线。
我个人习惯的推荐配置是这样的:
| 策略项 | 推荐值 | 说明 |
|---|---|---|
| 账户锁定阈值 | 5 次无效登录 | 超过 5 次即锁定,防止暴力破解 |
| 账户锁定时间 | 15 分钟 | 锁定后自动解锁,避免管理员手动操作 |
| 重置账户锁定计数器 | 15 分钟 | 与锁定时间保持一致,防止累积计数 |
这里有个坑。我曾经遇到一个客户,把锁定时间设成了 30 分钟,但重置计数器设成了 1 小时。结果呢?用户输错 5 次密码后被锁 30 分钟,解锁后只要再输错 1 次,因为计数器还没重置,直接又被锁了。用户气得差点砸键盘。
小技巧:锁定时间和重置计数器时间建议设成一致。这样逻辑清晰,用户也容易理解。
3.2 密码策略:别让员工用 123456
密码策略是安全基线里最基础也最容易被人忽视的一块。很多公司觉得「密码复杂了员工记不住」,结果就是全员用 Password123。你想想看,这和没设密码有什么区别?
Windows 的密码策略包含以下几个关键项:
- 密码必须符合复杂性要求:启用。要求包含大写、小写、数字、特殊字符中的至少三种。
- 密码长度最小值:8 个字符。我个人建议至少 10 位,关键系统可以到 14 位。
- 密码最长使用期限:90 天。太短了员工记不住,太长了风险高。
- 密码最短使用期限:1 天。防止用户频繁改回旧密码。
- 强制密码历史:记住 5 个旧密码。避免重复使用。
我记得有一次做等保测评,客户说他们密码策略都开了。我登上去一看,密码长度最小值设的是 6,复杂性也没开。我问运维为什么,他说「怕员工记不住」。嗯,后来我给他们看了几个真实攻击案例,他们才改了。
合规要求:等保三级要求密码长度不少于 8 位,启用复杂性,90 天内更换。这是底线,不是推荐。
3.3 审计策略:出了事得有据可查
审计策略很多人不重视,觉得「开了审计会拖慢系统」。说实话,确实会有一点性能开销,但跟出事之后找不到日志相比,这点开销完全可以接受。
Windows 的审计策略在本地安全策略里配置,路径是:安全设置 → 本地策略 → 审核策略。我建议至少开启以下几项:
| 审计策略项 | 推荐设置 | 审计内容 |
|---|---|---|
| 审核登录事件 | 成功 + 失败 | 记录所有登录尝试,包括远程桌面 |
| 审核账户登录事件 | 成功 + 失败 | 记录域账户或本地账户的登录验证 |
| 审核对象访问 | 失败 | 记录对敏感文件/文件夹的非法访问 |
| 审核特权使用 | 成功 + 失败 | 记录谁使用了管理员权限 |
| 审核账户管理 | 成功 | 记录账户创建、删除、密码重置等操作 |
为什么登录事件要同时记录成功和失败?因为成功的登录可以追溯谁在什么时间登录了系统,失败的登录可以帮你发现暴力破解的迹象。我曾经帮一个客户排查入侵事件,就是靠审计日志里的失败登录记录,发现某个账户在凌晨 3 点连续尝试了 2000 次登录。
注意:审计日志会占用磁盘空间。建议将安全日志大小设为至少 1GB,并配置「按需要覆盖事件」或「不覆盖事件(手动清除)」。关键系统建议将日志转发到集中日志服务器。
3.4 用户权限分配:最小权限原则
用户权限分配这块,说白了就是「谁可以干什么」。很多企业图省事,直接把所有员工都加到 Administrators 组里。你想想看,一个普通文员需要管理员权限吗?不需要。但一旦她的电脑中了毒,攻击者就能用管理员权限横向移动。
我建议重点关注以下几个权限项:
- 从网络访问此计算机:只保留 Administrators、Authenticated Users。去掉 Everyone 和 Guests。
- 拒绝本地登录:把 Guest 账户加进去,禁止来宾本地登录。
- 拒绝通过远程桌面服务登录:把 Guests 和普通用户加进去,只允许管理员远程登录。
- 作为批处理作业登录:只给需要运行计划任务的账户,不要给普通用户。
- 作为服务登录:只给需要运行 Windows 服务的账户,严格控制。
这里有个常见的坑。我曾经遇到一个客户,他们的运维人员为了方便,把 Domain Users 组加到了「允许通过远程桌面服务登录」里。结果呢?全公司 500 多号人都能远程登录服务器。虽然大部分人不知道服务器 IP,但一旦有人知道了,后果不堪设想。
最佳实践:创建一个专用的「服务器管理员」组,只把需要管理服务器的人加进去。然后在权限分配里只引用这个组,不要直接用 Domain Admins 或 Administrators。
3.5 实战:用组策略批量配置基线
单台服务器手动配还行,几十台几百台怎么办?用组策略。我习惯的做法是创建一个「安全基线 GPO」,链接到对应 OU,然后批量下发。
下面是一个通过 PowerShell 脚本快速检查本地安全策略的例子:
# 检查密码策略
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" |
Select-Object -Property @{N="MinimumPasswordLength";E={$_.MinimumPasswordLength}},
@{N="PasswordComplexity";E={$_.PasswordComplexity}},
@{N="LockoutBadCount";E={$_.LockoutBadCount}}
# 检查审计策略
auditpol /get /category:"Logon/Logoff"
auditpol /get /category:"Account Logon"
auditpol /get /category:"Account Management"
auditpol /get /category:"Privilege Use"
这个脚本我经常在合规检查时用。跑一遍就知道哪些策略没开,省得一个个点开看。
检查清单:每次做完基线配置,建议对照以下清单逐项确认:
1. 账户锁定阈值是否已设置(不为 0)
2. 密码长度是否 ≥ 8 位
3. 密码复杂性是否启用
4. 审计策略是否覆盖登录、账户管理、特权使用
5. 用户权限分配是否遵循最小权限原则
嗯,这一章的内容就到这里。Windows 基线配置看起来琐碎,但每一条都是前人踩过的坑。你按我说的配好,至少能挡住 80% 的常见攻击。剩下的 20%,我们后面几章慢慢聊。