Linux用户登录日志审计筛查异常爆破账号

Linux 用户登录日志审计:三步主动筛查异常爆破账号

如果你的 Linux 服务器经常遇到密码被尝试、SSH 端口被扫,或者怀疑有爆破行为,可以直接通过系统自带的登录日志来筛查出攻击源头。
本文告诉你如何通过 lastb、last、grep 和 awk 命令,从 /var/log/auth.log(或 /var/log/secure)中提取异常登录记录,找出尝试最多的 IP 和账号。

1. 先确认日志文件在哪里

大部分 Linux 发行版的登录日志路径是:

  • Ubuntu / Debian/var/log/auth.log
  • CentOS / RHEL / Rocky/var/log/secure

如果日志文件不存在,检查 rsyslog 是否运行。
可以用命令 ls -lh /var/log/auth*ls -lh /var/log/secure 确认。

2. 手动查看失败登录记录

方法一:用 lastb 查看最近的失败登录

lastb
root     ssh:notty    192.168.1.100  Fri Apr 11 12:30 - 12:30 (00:00)
admin    ssh:notty    10.0.0.50      Fri Apr 11 12:29 - 12:29 (00:00)

lastb 默认显示所有失败登录,按时间倒序。
如果提示 lastb: /var/log/btmp: No such file or directory,先用 touch /var/log/btmp 创建,再执行 lastb

方法二:直接 grep 日志文件

# Ubuntu / Debian
grep "Failed password" /var/log/auth.log

# CentOS / RHEL
grep "Failed password" /var/log/secure

输出示例:

Apr 11 12:30:01 server sshd[12345]: Failed password for root from 192.168.1.100 port 22 ssh2

3. 自动统计爆破 IP 和账号

用一个 awk 命令把攻击 IP 和对应次数统计出来:

# Ubuntugrep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -20

# CentOSgrep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -20
  • $(NF-3) 是倒数第4个字段(IP 地址),具体字段位置可能因发行版不同略有差异,先运行 grep ... | head -1 人工确认字段顺序。
  • 如果字段位置不对,可以换成 awk '{print $11}' 等方式调。

想同时统计爆破的账号名,可以这样:

grep "Failed password" /var/log/auth.log | awk '{print $9 " -> " $(NF-3)}' | sort | uniq -c | sort -nr | head -20

输出示例:

  56 root -> 192.168.1.100
  23 admin -> 10.0.0.50

行数代表该账号被该 IP 尝试的次数。次数超过 10 次就高度可疑。

4. 避坑指南

  • 日志被轮转:如果日志文件被 logrotate 切分,grep 时可能需要加后缀(如 auth.log.1)。用 ls -1 /var/log/auth* 列出所有相关文件,对每个文件单独跑命令。
  • 时间不同步:如果服务器时间不准,审计结果可能误判。先用 date 检查,并配置 NTP 同步。
  • 字段位置因系统而异:建议每次先执行 grep "Failed password" /var/log/auth.log | head -3 看看实际输出字段,再写 awk 索引。
  • lastb 数据为空:如果系统没有 btmp 文件或日志被清空,lastb 无输出。优先用 grep 方式。

5. 效果验证:确认找到的账号是否真的被爆破

你可以用以下命令查看同一 IP 在短时间内的失败次数:

grep "192.168.1.100" /var/log/auth.log | grep -c "Failed password"

如果返回数字 > 20,基本确定是爆破。
接着可以用该 IP 去威胁情报平台(如 VirusTotal)查询,或直接通过 iptables / firewalld 临时封锁。

常见问题(FAQ)

Q1:我的系统没有 auth.log 或 secure 文件怎么办?
A:检查 /var/log/messagesjournalctl -u sshd。如果都没有,可能 rsyslog 没启动,先执行 systemctl start rsyslog 并设为开机自启。

Q2:grep 返回结果太多,看不过来怎么筛选?
A:用 lessmore 分页查看,或者用 grep ... | head -100 只看前100行。也可以加上时间范围,例如 grep "Apr 10" /var/log/auth.log

Q3:是否可以直接用 fail2ban 代替手动审计?
A:fail2ban 能自动封锁,但手动审计可以帮你发现未被自动规则覆盖的手法。建议两者结合:fail2ban 做实时防御,定期手动日志审计做深度排查。

Q4:发现爆破 IP 后怎么立刻封掉?
A:临时封禁用 iptables -A INPUT -s 192.168.1.100 -j DROP(请替换实际 IP)。如果想永久封,写入 /etc/hosts.deny 或配置 firewalld(如 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop' 再 reload)。

如果你正在处理 Linux 登录日志审计与异常爆破账号筛查,建议先按本文步骤完整执行,再根据自己的环境调整 awk 字段位置;
遇到日志缺失或字段异常时,优先回看“避坑指南”部分。

分享到:
上一篇
搭建IP黑名单自动拦截恶意爬虫抓取,三套方案快速落地
下一篇
压缩脚本批量处理大模型与网站备份文件
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意