chage -d 0 可强制用户首次登录修改密码,需在账号创建后、交付前执行;passwd -l安全禁用账号但不删数据;/etc/login.defs仅影响新建用户;SSH需配置PAM支持shadow验证。

如何用 chage 强制用户首次登录修改密码
新创建的账号默认不强制改密,攻击者若截获初始密码即可长期使用。chage 是最直接的控制手段,但关键不在执行命令,而在时机和参数组合。
必须在用户创建后、交付前执行,否则无效:
-
chage -d 0:将密码最后修改日期设为 0(即 Unix epoch),系统检测到“已过期”会强制下次登录时重设 - 不能只设
-M 90(最大有效期)或-W 7(警告天数),这些不触发首次强制改密 - 若用户已登录过一次,
-d 0仍有效,但需确保其 shell 未被禁用且/etc/shadow中密码字段非*或!
为什么 passwd -l 比直接删用户更安全
临时禁用账号时,删用户会丢失主目录、邮件队列、cron 任务等上下文;而 passwd -l 只锁密码字段,保留全部归属关系。
它本质是往 /etc/shadow 密码字段前加 ! 前缀,使哈希失效。但要注意:
- 锁定后,该用户仍可通过 SSH key 登录(如果配置了
PubkeyAuthentication yes且 key 未被移除) - 若同时使用
usermod -s /sbin/nologin,可双重阻断密码+shell,但需确认服务账户是否依赖此 shell - 解锁必须用
passwd -u,而非简单编辑/etc/shadow——手动删!容易留空格或换行符,导致解析失败
/etc/login.defs 中哪些参数实际生效
这个文件常被误认为“全局开关”,其实多数参数仅对 useradd 新建用户起作用,已有用户不受影响。
真正需要检查并同步应用的只有:
功能完善、展示信息丰富的电子商店销售平台;针对企业与个人的网上销售系统;开放式远程商店管理;完善的订单管理、销售统计、结算系统;强力搜索引擎支持;提供网上多种在线支付方式解决方案;强大的技术应用能力和网络安全系统,完美的傻瓜开店功能,自主经营,管理后台登陆账号:admin 密码:admin 登陆地址/admin/login.asp商家测试帐号:admin 密码:admin 登陆地址/user/ad
-
PASS_MAX_DAYS 90:影响新建用户,老用户需配合chage -M 90单独设置 -
ENCRYPT_METHOD SHA512:决定新密码哈希算法,但不会自动重算旧密码,旧密码仍保持原算法(如 MD5)直到用户改密 -
FAIL_DELAY 4和FAILLOG_ENAB yes:控制暴力尝试响应延迟和日志记录,重启auth.log即生效,无需用户级操作
注意:UID_MIN/GID_MIN 等数值范围参数,若与现有用户冲突,useradd 会报错而非跳过,必须提前清理 ID 重叠。
SSH 登录绕过密码策略的常见漏洞点
即使 chage 和 passwd -l 配置无误,SSH 仍可能成为旁路。根本问题在于认证链分层,每层策略要独立验证。
必须检查三项:
- 确认
/etc/ssh/sshd_config中PasswordAuthentication no已启用(禁用密码),且PubkeyAuthentication yes同时存在——否则密钥登录也会被拒 - 用户
~/.ssh/authorized_keys文件权限必须是600,目录700,否则 OpenSSH 直接忽略该密钥 - 若启用
AllowGroups或DenyUsers,需确认目标用户未被意外排除,这类配置优先级高于 PAM 密码策略
最易忽略的是:sshd 默认不读取 /etc/shadow 过期状态,必须在 /etc/pam.d/sshd 中明确包含 pam_faildelay.so 和 pam_unix.so 的 shadow 选项,否则 chage 设置对 SSH 无效。









