首页/安全/安全加固速查/login.defs 口令时效全局基线
口令与认证策略55 条

login.defs 口令时效全局基线

口令有效期/最短使用期/过期提醒的全局缺省写在 /etc/login.defs;chage 单用户覆盖它,新账号自动继承全局值。

安全加固速查安全更新于 2026-10-13

口令时效的全局缺省

/etc/login.defs 是 Linux 账号口令时效的全局缺省值来源:PASS_MAX_DAYS 定义口令最长可用天数,PASS_MIN_DAYS 定义改完之后至少隔几天才能再改(防止用户靠连续改密绕过历史记录),PASS_WARN_AGE 定义到期前几天开始提示。它只影响“之后新建账号”和“之后改密”的动作,存量账号的真实时效记录在 /etc/shadow 里,所以改完全局配置还要批量对齐老账号,否则审计现场看到的仍是不达标。

基本信息

加固项口令有效期、最短使用期与到期提醒
适用平台Linux(RHEL/CentOS、Debian/Ubuntu,login.defs + shadow)
权限要求root
常见基线PASS_MAX_DAYS 90(按等保要求可放宽到 365)、PASS_MIN_DAYS 1、PASS_WARN_AGE 7
落地位置/etc/login.defs 定缺省,chage 定单个账号

典型使用场景

  • 等保测评“口令定期更换”条款的取证与整改
  • 新装系统统一口令时效策略,避免逐台手工设置
  • 安全审计发现大量账号从未改密,需要一次性对齐
  • 特权账号与普通账号采用不同时效时做差异化配置
  • 离职账号回收前确认其口令有效期状态

全局配置

全局配置
grep -E '^PASS_' /etc/login.defs                     # 先看现状
sed -i 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS   90/' /etc/login.defs
sed -i 's/^PASS_MIN_DAYS.*/PASS_MIN_DAYS   1/' /etc/login.defs
sed -i 's/^PASS_WARN_AGE.*/PASS_WARN_AGE   7/' /etc/login.defs
grep -E '^PASS_' /etc/login.defs                     # 复核

存量账号对齐与抽查

存量账号对齐与抽查
chage -l someuser    # 单账号视角:有效期、最短使用期、提醒、是否过期
chage -M 90 -m 1 -W 7 someuser                      # 对齐单个账号
awk -F: '{print $1, $4, $5, $6}' /etc/shadow | head  # 第 4/5/6 列分别是 min/max/warn
awk -F: '($5 > 90 || $5 == "") {print $1, $5}' /etc/shadow   # 快速找出超期或未设有效期的账号

配置项与 shadow 列对应

配置项shadow 列含义
PASS_MAX_DAYS第 5 列口令最长可用天数,空值表示永不过期
PASS_MIN_DAYS第 4 列两次改密之间的最小间隔天数
PASS_WARN_AGE第 6 列到期前开始提醒的天数
(无全局项)第 7 列闲置天数,超过后账号自动失效,需单独设置
login.defs 只改缺省值,不会回写已有账号:登录现场做审计时读的是 /etc/shadow 的实际字段。稳妥做法是先改全局,再用 chage 批量覆盖存量账号,最后用 awk 统计一遍还有多少账号超期。
把 PASS_MAX_DAYS 设成 -1 或 99999 等于取消有效期,是审计中最常见的扣分项;反过来把 PASS_MIN_DAYS 设得过大(如 30)会让用户在被钓鱼后无法立即改回口令,也会影响应急轮换。两个值都要结合运营节奏定,不要照抄模板。

易错点

  • 改完 login.defs 就认为合规:存量账号的 shadow 字段没有任何变化,必须逐账号用 chage 对齐
  • 误读 shadow 列号:第 4 列是最短使用期、第 5 列才是最长有效期,写错列会让整改报告失真
  • 把 PASS_MAX_DAYS 设为永不过期以平息用户抱怨,等于放弃口令泄露后的时间窗口控制
  • PASS_MIN_DAYS 过大导致被泄露的旧口令在窗口期内无法轮换,安全事件处置被拖延

数据来源与参考

  • man 5 login.defs
  • 等保 2.0:口令定期更换要求
  • CIS Benchmark:Password Aging 条目

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌