Linux /var/log/auth.log日志分析实例

Linux /var/log/auth.log日志分析实例
最新回答
口拙嘴笨

2023-08-08 10:59:36

Linux /var/log/auth.log 日志分析实例

/var/log/auth.log 是 Linux 系统(如 Debian、Ubuntu 等)中记录身份验证相关事件的核心日志文件,涵盖用户登录、sudo 命令使用、SSH 访问尝试、PAM 认证过程等关键行为。通过分析该日志,可快速发现异常登录、暴力破解、权限提升等安全问题。

一、常见日志条目类型及含义

  • SSH 登录成功或失败

    Accepted password for user from 192.168.1.100 port 54322 ssh2:表示用户通过密码认证成功登录,需确认来源 IP 是否可信。

    Failed password for root from 10.0.0.5 port 22 ssh2:root 账户登录失败,可能是暴力破解的迹象。

    Invalid user admin from 198.51.100.1:尝试以不存在的用户名登录,属于典型扫描行为。

  • sudo 命令使用记录

    user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/systemctl restart nginx:user1 通过 sudo 执行了重启服务操作,可用于审计特权命令。

  • PAM 认证失败

    pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=203.0.113.10:底层认证模块记录失败,结合 rhost 可定位攻击源。

二、快速排查可疑行为的方法

利用常用命令组合可快速提取关键信息:

  • 查看最近的 SSH 失败登录
grep "Failed password" /var/log/auth.log | tail -20
  • 统计失败登录来源 IP
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
  • 检查 root 账户的登录尝试(包括成功和失败)
grep "root" /var/log/auth.log | grep -E "(Failed|Accepted)"
  • 监控 sudo 使用情况
grep "sudo:" /var/log/auth.log
  • 查找所有无效用户名尝试
grep "Invalid user" /var/log/auth.log

三、实际分析案例

假设服务器响应变慢,怀疑有异常登录,可按以下步骤分析:

  1. 查看 SSH 成功登录记录
grep "Accepted" /var/log/auth.log | grep sshd

输出显示多个来自不同 IP 的 Accepted password for user1,但你并未在此时段进行操作。

  1. 进一步查看这些 IP
grep "Accepted.*user1" /var/log/auth.log | awk '{print $11}' | sort | uniq -c

发现某 IP(如 198.51.100.10)频繁出现。

  1. 封禁可疑 IP结合 fail2ban 或防火墙,将该 IP 加入黑名单:
iptables -A INPUT -s 198.51.100.10 -j DROP
  1. 检查用户异常进程和登录历史同时检查该用户是否有异常进程:
ps aux | grep user1

查看用户登录历史:

lastlog | grep user1

四、安全加固建议

基于日志分析结果,可采取以下措施提升安全性:

  • 禁用 root 远程 SSH 登录在 /etc/ssh/sshd_config 中设置 PermitRootLogin no。
  • 使用密钥认证替代密码登录减少暴力破解风险。
  • 安装 fail2ban自动封禁多次失败尝试的 IP。
  • 定期轮换密码,限制 sudo 权限最小化确保只有必要用户拥有 sudo 权限。
  • 启用日志轮转并保留足够周期便于事后追溯。

日常关注 /var/log/auth.log 的关键事件,结合自动化工具,能有效提升 Linux 系统的安全防护能力。