fail2ban是基于日志分析的开源入侵防御工具,通过实时监控系统日志检测暴力破解等异常行为,自动调用防火墙规则封禁攻击ip,支持ssh、ftp等多种服务,具备自动解封与自定义规则能力。

直接看日志、快速定位攻击源、立即封禁,是阻断后台暴力破解最有效的三步动作。关键不是等工具自动反应,而是第一时间掌握主动权。
查日志:先确认有没有被爆破
暴力破解一定会在系统日志里留下痕迹,重点查 SSH 和 Web 登录类服务的日志:
- SSH 失败记录(Debian/Ubuntu):
sudo grep "Failed password" /var/log/auth.log | tail -20 - SSH 失败记录(CentOS/RHEL):
sudo grep "Failed" /var/log/secure | tail -20 - Web 后台(如 Nginx/Apache)失败登录:查 access.log 或 error.log 中高频 401/403 状态码,配合 IP 统计
- 如果没输出,说明日志没开或路径不对——得先检查
/etc/rsyslog.conf是否启用 authpriv 日志,再重启rsyslog和sshd
抓源头:统计并识别高频攻击IP
单靠肉眼翻日志效率低,用命令快速揪出真凶:
- SSH 攻击IP排序:
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -10 - Web 攻击IP排序(以 Nginx 为例):
sudo awk '$9 ~ /^40[13]$/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10 - 输出类似
248624 158.178.141.69,数字越大越可疑;同时用grep "Accepted" /var/log/auth.log | grep 158.178.141.69验证是否已成功登录
马上封:不依赖Fail2ban也能快速止血
别等配置完 Fail2ban 再动手——应急时手动封禁更快更可靠:
- iptables 封单IP:
sudo iptables -I INPUT -s 158.178.141.69 -j DROP - 封整个网段(谨慎使用):
sudo iptables -I INPUT -s 158.178.0.0/16 -j DROP - 保存规则(CentOS):
sudo service iptables save;(Ubuntu):sudo iptables-save > /etc/iptables/rules.v4 - 云服务器注意:安全组才是第一道防线,务必同步在控制台添加入站拒绝规则,本地 iptables 可能不生效
加固后台:减少被盯上的可能
封IP只是治标,改配置才能治本:
- 禁用密码登录,强制密钥认证:
PermitRootLogin no、PasswordAuthentication no,改完sudo systemctl restart sshd - Web 后台加基础防护:Nginx 用
limit_req限速,或加简单 IP 白名单;后台路径避免用/admin、/login这类通用名 - 修改默认端口(如 SSH 改为 2222),并在云平台安全组中只放行该端口
- 启用 Fail2ban 是长期方案,但必须验证三件事:日志路径对、
banaction命令存在、执行过fail2ban-client reload











