linux账户认证日志集中收集与分析的核心是统一汇聚/var/log/secure或auth.log,通过rsyslog配置auth,authpriv.*的tcp转发,按ip分离存储,并用grep、awk等命令快速识别异常登录、sudo操作及root远程登录行为。

Linux账户认证日志集中收集与分析,核心在于把分散在各台服务器上的 /var/log/secure(RHEL/CentOS)或 /var/log/auth.log(Ubuntu/Debian)统一汇聚,并能快速定位异常行为。关键不在于堆砌工具,而在于配置可靠、路径清晰、权限可控、检索高效。
明确要收哪些日志内容
账户认证类日志主要来自 auth 和 authpriv 两个 syslog 设施(facility),它们分别对应:
- auth:普通认证事件,如 SSH 登录失败、PAM 模块调用;
-
authpriv:敏感操作记录,如
sudo执行、su -切换、root 登录、密钥认证过程——这部分默认仅 root 可读,必须通过 rsyslog 转发时保留权限上下文。
转发规则中应写为 auth,authpriv.*,确保所有优先级(info、warn、err 等)都不遗漏。避免只写 auth.*,否则会漏掉 sudo 日志等关键线索。
用 rsyslog 实现稳定转发与接收
rsyslog 是最轻量、兼容性最好、也最易审计的方案。它不依赖 Java 或 Docker,适合生产环境长期运行。
-
源端(业务服务器):新建
/etc/rsyslog.d/10-auth-forward.conf,写入:auth,authpriv.* @@192.168.10.100:514
注意用双@@表示 TCP 协议,保障不丢包;UDP(单 @)在高并发登录场景下极易丢失失败记录。 -
服务端(集中日志服务器):启用 TCP 输入模块,在
/etc/rsyslog.conf中取消以下两行注释:$ModLoad imtcp$InputTCPServerRun 514
再新建/etc/rsyslog.d/20-by-host.conf,按来源 IP 分离存储:if $fromhost-ip == '192.168.1.11' then /var/log/hosts/app01-auth.log & stop - 重启两端 rsyslog:
sudo systemctl restart rsyslog,并用ss -tlnp | grep :514验证监听状态。
快速识别异常登录行为
集中存储后,日志分析不再靠肉眼翻页,而是用结构化命令直击重点:
- 统计高频失败登录 IP:
grep "Failed password" /var/log/hosts/app01-auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -10 - 查某用户所有 sudo 操作(含命令):
grep "sudo:" /var/log/hosts/app01-auth.log | grep "username" - 找 root 的远程登录记录(高风险动作):
grep "Accepted.*for root from" /var/log/hosts/app01-auth.log - 配合时间范围过滤(例如最近 2 小时):
journalctl --since "2 hours ago" -u sshd | grep "Failed"(适用于本地 systemd-journald 日志)
补充建议:权限与轮转不可少
集中日志目录(如 /var/log/hosts/)必须设为 750,属主 root,属组 adm 或 syslog,防止普通用户读取他人日志;同时为每个主机日志文件配置 logrotate,避免单个文件无限增长。可在 /etc/logrotate.d/remote-auth 中添加:
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 640 root adm
}











