口令策略(Linux + Windows) · 修改记录
这是 security/password-policy.md 的每次改动内容,按时间从新到旧。其他文章一起提交的部分不会出现在这里。
#1
2026-10-18
+85
−0
docs: 新增容器/安全分类,补 Windows 组策略与 Linux 内核救援,共 11 篇
69302a9
new file mode 100644
@@ -0,0 +1,85 @@
+---
+tags: [口令, 密码策略, 合规]
+order: 30
+---
+
+# 口令策略(Linux + Windows)
+
+## 场景
+
+等保或安全基线要求:口令长度、复杂度、有效期、登录失败锁定。
+
+## 前置条件
+
+- 知道现有策略(先查再改)
+- 改动会影响所有用户,先小范围试
+- 有应急账号或带外,防止全员被锁
+
+## 配置
+
+### Linux(pwquality + faillock)
+
+```bash
+cat >/etc/security/pwquality.conf <<'EOF'
+minlen = 10
+minclass = 3
+maxrepeat = 3
+dictcheck = 1
+EOF
+
+# 三次失败锁定 300 秒
+cat >>/etc/pam.d/system-auth <<'EOF'
+auth required pam_faillock.so preauth silent audit deny=3 unlock_time=300
+auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=300
+EOF
+
+# 口令有效期 90 天
+sed -i 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/' /etc/login.defs
+chage -M 90 用户名
+```
+
+### Windows(域策略)
+
+```powershell
+# 查看
+Get-ADDefaultDomainPasswordPolicy
+
+# 修改(域级别,影响所有人)
+Set-ADDefaultDomainPasswordPolicy -Identity corp.example.com `
+ -MinPasswordLength 10 -ComplexityEnabled $true `
+ -MaxPasswordAge (New-TimeSpan -Days 90) `
+ -LockoutThreshold 5 -LockoutDuration (New-TimeSpan -Minutes 30)
+```
+
+## 验证
+
+```bash
+chage -l 用户名
+faillock --user 用户名
+```
+
+```powershell
+Get-ADDefaultDomainPasswordPolicy | Format-List
+Get-ADUser 用户名 -Properties PasswordLastSet, PasswordNeverExpires
+```
+
+## 回滚
+
+```bash
+cp /etc/pam.d/system-auth.bak /etc/pam.d/system-auth
+```
+
+域策略改回去:
+
+```powershell
+Set-ADDefaultDomainPasswordPolicy -Identity corp.example.com -LockoutThreshold 0
+```
+
+## 坑
+
+- **改 PAM 前不备份**,配错后普通用户全登不上。
+- 服务账号设了「密码永不过期」,等于绕过策略,需要单独说明。
+- 锁定阈值设太小,用户输错两次就被锁,运维电话被打爆。
+- 域策略改完要等复制和客户端刷新(`gpupdate /force`)。
+- 复杂度要求太高,用户会把密码写在便签上,反而更不安全。
+- 改有效期后,快过期的老账号会被强制改密,提前通知。