
直接看 /var/log/auth.log(debian/ubuntu)或 /var/log/secure(centos/RHEL),重点抓“Failed password”和“Accepted password”这两类记录——它们是异常登录最直观的线索。
快速定位失败登录尝试
暴力破解几乎都留下“Failed password”痕迹。用大小写不敏感方式搜索:
- grep -i “failed password” /var/log/auth.log | wc -l —— 统计总数,单小时超10次需警惕
- grep -i “permission denied (publickey)” /var/log/auth.log —— 密钥登录失败同样危险,不能漏掉
- lastb | awk ‘{print $3}’ | sort | uniq -c | sort -nr | head -10 —— 比 grep 更准,直接从二进制 /var/log/btmp 提取攻击IP并排序
筛查成功登录里的异常模式
登录成功≠安全。攻击者常复用合法账号,关键看“谁、何时、从哪来”:
- grep “Accepted password” /var/log/auth.log | awk ‘{print $11, $9}’ | sort | uniq -c | sort -nr —— 列出高频登录IP+用户名组合
- awk ‘$3 ~ /2[2-3]|[0-4]:[0-5][0-9]/ {print}’ /var/log/auth.log | grep “Accepted” —— 粗筛深夜(22:00–04:59)登录行为
- awk -F: ‘$3 == 0 {print $1}’ /etc/passwd —— 找出所有UID为0的账户(如root、sync、shutdown),再反查这些账户是否被远程登录过
辅助验证与长期防控
手动排查是应急手段,系统性防护才管用:
- last -a | head -20 —— 查最近20次登录详情,核对终端(pts/0)、源IP、时间是否合理
- fail2ban 必须启用:配置 maxretry=3、findtime=600,自动封禁短时高频失败IP
- 定期导出基线:比如用 sudo sha256sum /etc/passwd /etc/shadow > /root/login_baseline_$(date +%F).txt,便于后续比对账户变动