Fail2ban封禁恶意IP,抵御SSH暴力破解

服务器暴露在公网,SSH端口每天都会收到大量暴力破解尝试。
Fail2ban 是一款日志分析工具,能自动扫描日志,发现多次登录失败的 IP 后,临时封禁该 IP,从而抵御 SSH 暴力破解。
本文面向零基础用户,从安装到验证,带你完成整个配置过程,最终实现自动封禁恶意 IP,提升服务器安全性。

安装前的环境确认

Fail2ban 基于 Python 开发,大多数 Linux 发行版都能安装。
首先通过 SSH 登录服务器,确认系统版本和 Python 环境。

cat /etc/os-release
python3 --version

确保系统已连接互联网,并拥有 sudo 权限。
如果使用 firewalld 或 iptables,Fail2ban 可以自动调用它们;
如果使用 UFW,也支持。

安装 Fail2ban

不同发行版的安装命令略有差异,以下列举常见系统。

  • Debian/Ubuntu
sudo apt update
sudo apt install fail2ban -y
  • CentOS/RHEL(需先启用 EPEL):
sudo yum install epel-release -y
sudo yum install fail2ban -y
  • Fedora
sudo dnf install fail2ban -y

安装完成后,启动服务并设置开机自启:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

检查服务状态,确保活跃(active):

sudo systemctl status fail2ban

配置 SSH 防护规则

Fail2ban 的配置文件位于 /etc/fail2ban/,主配置文件是 jail.conf,但官方建议不要直接修改它,而是创建 jail.local 来覆盖默认设置。

创建并编辑 /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

写入以下内容(根据实际情况调整):

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

参数解释:

  • bantime:封禁时长(秒),3600 即 1 小时。
  • findtime:统计时间窗口(秒),600 即 10 分钟。
  • maxretry:最大失败次数,5 次后触发封禁。
  • port:SSH 端口,默认 ssh(22),如果修改过端口,写实际端口号。
  • logpath:SSH 日志路径,通常由系统自动识别。

保存退出后,重启 Fail2ban 使配置生效:

sudo systemctl restart fail2ban

验证封禁效果与排查

查看当前封禁状态:

sudo fail2ban-client status sshd

输出会显示已封禁的 IP 列表和失败次数。
如果列表为空,可以模拟多次错误密码登录,观察是否触发封禁。

查看 Fail2ban 日志,确认运行正常:

tail -f /var/log/fail2ban.log

若出现错误,常见原因包括:日志路径不正确、防火墙未安装、SELinux 阻止等。
检查 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(CentOS)是否存在,并确保 Fail2ban 有权限读取。

避坑指南:确保防护生效

配置过程中容易忽略以下几点,导致防护失效:

  • 防火墙兼容性:Fail2ban 依赖防火墙执行封禁,如果系统未安装 iptables 或 firewalld,需要先安装并启用。
  • 日志路径差异:不同发行版的 SSH 日志位置不同,务必在 jail.local 中正确指定 logpath,或使用默认变量。
  • 时间同步:服务器时间不准确可能导致统计异常,建议启用 NTP 同步。
  • 端口修改:如果 SSH 不是默认 22 端口,必须修改 port 参数,否则监控无效。
  • 测试勿锁自己:在测试时,避免因多次输错密码导致自己的 IP 被封,可临时将 maxretry 调大或先添加白名单。

添加白名单方法:在 jail.local[DEFAULT] 段加入 ignoreip = 127.0.0.1/8 你的IP

长期维护与调整建议

Fail2ban 默认规则已能抵御多数暴力破解,但可根据服务器负载调整参数。
如果攻击频繁,可缩短 findtime 或增加 bantime
定期检查日志,确认封禁记录。
若服务器更换 SSH 端口,记得同步更新配置。

完成以上步骤后,你的服务器便具备自动封禁恶意 IP 的能力,SSH 暴力破解风险将显著降低。
遇到异常时,优先检查日志和防火墙状态,再调整参数。

分享到:
上一篇
服务器nmap端口扫描,自查对外开放端口
下一篇
UFW防火墙基础命令,Ubuntu服务器防护
1
系统公告

机房迁移升级通知

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