0aa8fe6
这次没有正文改动。
这是 security/口令策略(Linux + Windows).md 的改动记录。后台每次保存都会留一份快照,
这里显示的是快照之间的差异,不会混入其他文章的改动。
还没有后台修改记录。
下面是 Git 里的提交,可能包含其他文章的改动(因为一次提交会带上工作区所有变化)。
0aa8fe6
这次没有正文改动。
69302a9
@@ -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`)。 +- 复杂度要求太高,用户会把密码写在便签上,反而更不安全。 +- 改有效期后,快过期的老账号会被强制改密,提前通知。