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

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

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

准备条件

操作前请确认以下条件:

  • 你有一台 Linux 服务器(本文以 CentOS 7/8、Ubuntu 20.04+ 为例)。
  • 你拥有 root 或 sudo 权限。
  • 服务器上 /var/log/ 目录存在 secure 或 auth.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)

这条命令提取的是用户名(倒数第六个字段)。
如果某个你从未设置过的账号(比如 test、user)出现大量尝试,说明有人正在暴力破解。
如果是 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 这样的文件。
你可以用 zcat 或 zgrep 读取压缩包:

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。
如果设置成 QUIET 或 SILENT,日志将不记录详细登录信息。
修改后执行 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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意