fail2ban自动拉黑暴力扫描恶意IP地址:入门的配置教程

网站或服务器日志里总出现大量失败的SSH登录尝试、重复的恶意扫描,手动封IP根本封不过来。
这时可以用 fail2ban 自动拉黑暴力扫描你服务器的恶意 IP 地址。
fail2ban 通过分析服务日志,发现连续失败的请求后,临时封禁来源 IP,大幅降低被暴力破解的风险。
本文以 CentOS 7 / Ubuntu 20.04 为例,带零基础用户一步步完成安装、配置和验证。

安装 fail2ban

大部分 Linux 发行版的软件源直接包含 fail2ban,不需要额外添加第三方源。
Debian / Ubuntu 用 apt:
sudo apt update
sudo apt install fail2ban -y

CentOS / RHEL 用 yum:
sudo yum install epel-release -y # 先安装EPEL源
sudo yum install fail2ban -y

安装完成后,先不急着启动,先创建本地配置文件,避免被更新覆盖。

配置 SSH 防护规则

fail2ban 默认的配置文件在 /etc/fail2ban/jail.conf,但我们不直接改它,而是新建一个 jail.local 文件,把要启用的规则写进去。
这样软件升级时默认配置不会被覆盖。

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # 复制一份作为基础

然后用编辑器打开 jail.local(这里用 nano 示例):
sudo nano /etc/fail2ban/jail.local

找到 [sshd] 部分,按以下内容调整:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log # Ubuntu路径;CentOS是 /var/log/secure
maxretry = 5
bantime = 3600
findtime = 600

  • maxretry:5分钟内允许失败次数,超过后封禁。
  • bantime:封禁秒数,3600秒=1小时。根据自己需求可改为86400(24小时)或更久。
  • findtime:统计失败次数的窗口时间(秒)。
  • logpath:SSH登录日志路径,不同系统有差异,记得改成正确的。

如果还想保护Nginx、Apache、Postfix等,可以在文件里找到对应小节,把 enabled 改成 true。

启动并设置开机自启

配置保存后,执行以下命令:
sudo systemctl enable fail2ban # 开机自启
sudo systemctl start fail2ban # 立即启动
sudo systemctl status fail2ban # 查看状态,绿色active即可

如果启动失败,先检查 logpath 是否正确,或者查看 systemctl 报错信息。

验证 fail2ban 是否正常拉黑 IP

方法一:模拟一次攻击(在自己的另一台机器上测试,别自己封自己)。
从其他机器用错误的密码连续SSH登录几次,超过 maxretry 后,fail2ban 会封禁该 IP。查看当前封禁列表:
sudo fail2ban-client status sshd

输出会显示“Currently banned: 1”和具体 IP。

方法二:直接查看 iptables 规则:
sudo iptables -L -n | grep f2b-sshd
如果看到一条规则,说明 IP 已被拦截。

避坑指南

  1. 不要禁用 root 的 SSH 登录? 如果不打算禁用 root,也要确保 fail2ban 的 maxretry 设置合理(5-10次),避免正常输错密码时被误封。
  2. 注意 ssh 端口:如果你改了 SSH 默认端口,port = ssh 需要改为具体端口号,例如 port = 2222。
  3. 白名单 IP:如果你使用 VPN 或有固定管理 IP,建议加入白名单,防止自己管理时被封。编辑 /etc/fail2ban/jail.local 的 [DEFAULT] 部分添加 ignoreip = 127.0.0.1/8 你的公网IP
  4. 日志路径错误:启动失败最常见原因就是 logpath 不匹配。Ubuntu 用 /var/log/auth.log,CentOS 用 /var/log/secure。

常见问题

Q:fail2ban 封禁后怎么手动解封?
用以下命令:
sudo fail2ban-client set sshd unbanip 被封的IP

Q:怎么调整封禁时间?
修改 jail.local 里的 bantime,然后重启服务:sudo systemctl restart fail2ban。

Q:封禁后对方还能访问其他端口吗?
fail2ban 默认规则是封禁整个 IP 的所有端口(通过 iptables),不是只封 SSH 端口。如果想只封指定端口,需要使用 iptables 级别的自定义 action。新手建议保持默认。

Q:我怎么查看 fail2ban 的日志?
默认日志在 /var/log/fail2ban.log,用 tail 命令实时查看:sudo tail -f /var/log/fail2ban.log。

完成了以上步骤,你的服务器已经具备了自动拉黑暴力扫描IP的能力。
建议定期检查 fail2ban 状态(可搭配监控告警),确保规则持续生效。
如果遇到其他服务的恶意扫描,可以在 jail.local 里添加对应小节,方法类似。

分享到:
上一篇
日志切割自动归档节省服务器磁盘空间:日志切割自动归档实战
下一篇
多站点容器隔离防跨站入侵漏洞:新手也能上手的实战配置
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意