用户登录日志审计筛查异常爆破账号:服务器用户登录日志审计

检查你的服务器是否正被暴力破解

每天都有大量攻击者尝试通过猜密码的方式登录你的服务器。
如果你没有做任何登录日志审计,可能直到服务器被植入后门才意识到出了问题。
本文教你如何通过分析 Linux 用户登录日志,快速筛查出异常爆破账号并采取封锁措施。

准备条件

操作前请确认以下条件:

  • 你有一台 Linux 服务器(本文以 CentOS 7/8、Ubuntu 20.04+ 为例)。
  • 你拥有 root 或 sudo 权限。
  • 服务器上 /var/log/ 目录存在 secureauth.log 文件(大部分发行版默认开启登录日志)。
  • 如果你使用了宝塔面板或其他面板,它们通常不会关闭系统原生日志,因此本文方法依然有效。

定位异常爆破账号的实战步骤

1. 查看失败的登录尝试总览

暴力破解的特征是短时间内出现大量失败的登录尝试。
我们先统计登录失败的 IP 和账号:

CentOS/RHEL 系统(基于 /var/log/secure

sudo grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20

这条命令的作用:从日志中提取所有包含 Failed password 的行,取出 IP 地址(倒数第四个字段),统计每个 IP 出现次数并按降序排列,只显示前 20 个。

Ubuntu/Debian 系统(基于 /var/log/auth.log

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

如果看到某个 IP 失败次数达到几十上百,基本可以判定是异常爆破。

2. 找出被频繁尝试的账号

攻击者可能针对 root、admin、test 等常见账号进行爆破。
我们统计失败的登录尝试是针对哪些用户名:

sudo grep "Failed password" /var/log/secure | awk '{print $(NF-5)}' | sort | uniq -c | sort -rn | head -20

(Ubuntu 将 secure 替换为 auth.log

这条命令提取的是用户名(倒数第六个字段)。
如果某个你从未设置过的账号(比如 testuser)出现大量尝试,说明有人正在暴力破解。
如果是 root 账号,则要引起高度警惕。

3. 查看成功登录记录与可疑的 IP

光看失败记录还不够,还要排查是否有异常 IP 成功登录。
检查最近成功登录记录:

sudo last -20

输出会显示登录时间、登录时长、IP 等信息。
如果你发现从未见过的 IP 成功登录过,极可能已经被入侵。

你也可以针对性检查某个 IP 的全部登录记录:

sudo last | grep "192.168.1.100"

(将 IP 替换为你要查的 IP)

4. 自动化脚本:一键输出疑似爆破的 IP 和账号

如果你经常需要做日志审计,可以写一个简单的 Shell 脚本合并上述步骤。
这里给出一个快速参考:

#!/bin/bash
# 审计爆破账号脚本
LOGFILE="/var/log/secure"
if [ ! -f "$LOGFILE" ]; then
    LOGFILE="/var/log/auth.log"
fi
echo "=== 登录失败次数最多的 IP(前 10) ==="
sudo grep "Failed password" $LOGFILE | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10
echo ""
echo "=== 被尝试次数最多的账号(前 10) ==="
sudo grep "Failed password" $LOGFILE | awk '{print $(NF-5)}' | sort | uniq -c | sort -rn | head -10
echo ""
echo "=== 最近成功登录记录(前10条) ==="
sudo last -10

保存为 audit_brute.sh,用 chmod +x audit_brute.sh && sudo ./audit_brute.sh 执行。

避坑指南与常见问题

Q1:日志被轮转(logrotate)覆盖了怎么办?

系统默认会按周或按大小轮转日志,旧日志会被压缩成 secure-20230101.gz 这样的文件。
你可以用 zcatzgrep 读取压缩包:

sudo zgrep "Failed password" /var/log/secure-*.gz | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -10

Q2:发现爆破 IP 后如何临时封禁?

你可以使用 fail2ban 这类工具自动封禁,但临时手动封禁也很简单:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

(将 IP 替换为要封禁的 IP)

注意:封禁前请确认该 IP 不是你自己或公司出口 IP,否则你会把自己关在门外。

Q3:为什么我的日志里看不到 Failed password 记录?

检查 sshd 服务是否开启了密码登录日志。
/etc/ssh/sshd_config 中确认 LogLevel 至少为 INFO
如果设置成 QUIETSILENT,日志将不记录详细登录信息。
修改后执行 sudo systemctl restart sshd 生效。

Q4:last 命令显示的成功登录 IP 不全,怎么办?

last 读取的是 /var/log/wtmp 文件,该文件可能存在轮转。
如果需要更完整的记录,可以查看所有已轮转的 wtmp 文件:

sudo last -f /var/log/wtmp-1

(文件名可能因发行版而异,可以使用 ls /var/log/wtmp* 查看)

效果验证与后续加固

执行上述步骤后,你应该能收到一份清晰的异常列表:

  • 失败次数超过阈值(比如 50 次)的 IP 和对应攻击的账号。
  • 成功登录记录中出现的陌生 IP。

确认异常后,建议立即执行以下加固措施:

  1. 禁止 root 直接登录:修改 /etc/ssh/sshd_config,将 PermitRootLogin 改为 no,然后 sudo systemctl restart sshd
  2. 更换高强度密码或使用密钥登录
  3. 安装 fail2ban 自动封禁反复失败的 IP。
  4. 定期执行上述审计脚本,建议每周一次。

如果你正在处理用户登录日志审计筛查异常爆破账号,先按本文步骤找出主要攻击源和攻击账号,然后结合 fail2ban 和 SSH 安全配置做长效防护。
遇到日志格式不一致或命令报错时,优先回看避坑部分检查日志文件路径和轮转情况。

分享到:
上一篇
磁盘分区调整无损扩容站点存储空间:磁盘分区调整无损扩容
下一篇
压缩解压批量处理大模型与网站备份:压缩解压与批量处理
1
系统公告

机房迁移升级通知

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