场景引入:为何需要追查密码变更时间
在运维过程中,你可能会遇到这样的场景:突然无法使用原有密码登录,或怀疑有人未经授权修改了账号密码。当密码管理混乱时,业务可用性和安全性都会受到严重影响。通过追查密码变更时间,你可以快速锁定可疑操作,及时采取补救措施。
日志文件与命令概览
在CentOS7中,/var/log/secure是记录用户认证、密码变更等安全相关事件的核心日志文件。日志文件轮转(logrotate)会将旧日志按日期归档,常见文件包括 /var/log/secure-YYYYMMDD 。
下面表格列出了关键日志文件及其作用,帮助你快速定位分析对象:
日志文件 | 作用 |
---|---|
/var/log/secure | 当前认证与密码操作实时记录 |
/var/log/secure-YYYYMMDD | 轮转归档后的历史安全日志 |
常用命令一览:
命令 | 功能 |
---|---|
grep passwd /var/log/secure | 查找密码变更记录 |
grep chpasswd /var/log/secure | 查找脚本或批量修改密码操作 |
ls -l /var/log/secure* | 查看轮转日志文件列表 |
步骤详解
我们可以按以下步骤来追查密码变更时间:
1.确认当前日志中最近的修改记录
grep passwd /var/log/secure
2.如果没在当前日志中找到,可以检查归档日志:
ls -l /var/log/secure-* grep passwd /var/log/secure-YYYYMMDD
这样就能覆盖到日志轮转后的历史记录。
3.分析更改来源
- 如果密码通过命令行修改(passwd),日志会显示“pam_unix(passwd:chauthtok)”。
- 如果脚本或工具批量修改(chpasswd),可用
grep chpasswd
查找。
4.对比不同时间点的日志条目
通过上下文信息(IP地址、用户名、进程号等),判断是否为合法运维操作或可疑入侵。
案例演示
假设你发现生产环境无法用原密码登录,通过以下命令定位:
[root@server ~]# grep passwd /var/log/secure Jun 16 01:13:13 server passwd: pam_unix(passwd:chauthtok): password changed for root
说明root密码在6月16日01:13:13被修改。继续在归档日志中排查更早记录,确认是否存在其他异常修改,最终锁定是某次批量更新脚本误操作导致。
安全风险与防范
追查密码变更时间只是第一步,还需要做好以下防护:
- 定期审计:将
grep passwd
等命令纳入巡检脚本,自动提醒异常。 - 最小权限:避免使用root账号做常规运维,将关键账号密码变更权限限制在安全组内。
- 双因素认证:结合Google Authenticator或SSH密钥,降低单一密码泄露风险。
- 日志集中管理:将/var/log/secure等关键日志推送到集中日志系统,便于跨主机关联分析。
常见问题(FAQ)
Q:我在/var/log/secure里没找到任何“password changed”记录,可能是什么原因?
A:可能是日志轮转后该条目已归档到 secure-YYYYMMDD 文件,建议用 ls /var/log/secure-*
列出归档日志并继续 grep 查找。
Q:脚本批量修改密码后日志记录格式与 passwd 命令不一样吗?
A:是的,批量修改通常会调用 chpasswd
,日志中不会出现“pam_unix(passwd:chauthtok)”字样,需要用 grep chpasswd /var/log/secure*
来定位。
Q:日志文件过大时如何快速定位目标时间段?
A:可以借助 journalctl --since "2025-06-15 00:00:00" --until "2025-06-16 00:00:00" -u sshd
或者先按日期分割归档后的 secure-YYYYMMDD,再分别 grep。
Q:忘记执行 logrotate,导致日志一直在 /var/log/secure,如何处理?
A:可手动执行 logrotate -f /etc/logrotate.d/secure
来强制轮转,并确认 /etc/logrotate.d/secure 配置正确。
通过以上方法,你可以在CentOS7环境下高效追查用户密码变更时间,并结合案例与防范建议,保障系统安全与运维效率。