UFW 与 Fail2Ban 配合实现精细化防火墙管理

2025.11.10 杂七杂八 883
33BLOG智能摘要
你的服务器是不是总被恶意IP频繁试探攻击?明明设置了防火墙,却依然疲于应对各种暴力破解?其实问题不在于防火墙不够强大,而在于缺少一个会主动反击的“智能守卫”。 本文将手把手教你如何将UFW基础防火墙与Fail2Ban动态防御系统完美结合,打造一个会自动识别威胁、实时封禁恶意IP的智能防护体系。你将学会配置SSH登录失败自动封禁规则,掌握Nginx敏感路径访问防护的高级技巧,还能避开博主亲身经历的把自已锁在服务器外的致命陷阱。 从基础规则配置到自定义过滤器的实战演示,只需15分钟就能让你的服务器安全等级提升一个维度。告别被动防御,立即开启智能防护新时代!
— 此摘要由33BLOG基于AI分析文章内容生成,仅供参考。

UFW 与 Fail2Ban 配合实现精细化防火墙管理

UFW 与 Fail2Ban 配合实现精细化防火墙管理

大家好,我是 33blog 的博主。今天想和大家分享一个我在服务器安全防护方面的实战经验——如何将 UFW(Uncomplicated Firewall)和 Fail2Ban 结合起来,实现精细化的防火墙管理。在实际运维中,单纯依靠 UFW 的基础规则往往不够灵活,而 Fail2Ban 的动态封禁机制正好弥补了这一不足。下面我就带大家一步步配置,并分享一些我在部署过程中踩过的坑。

1. 环境准备与软件安装

首先,确保你的系统是 Ubuntu 或 Debian(其他发行版请适当调整命令)。UFW 通常已预装,如果没有,可以通过以下命令安装:

sudo apt update
sudo apt install ufw fail2ban

安装完成后,先别急着启动服务。我习惯先检查 UFW 状态,确认初始规则是“inactive”,避免误操作导致自己被锁在外面。

2. 配置 UFW 基础规则

UFW 的默认策略是拒绝所有入站、允许所有出站。我一般会先放行 SSH 端口(假设是 22),否则一旦启用 UFW,你可能就无法远程连接了:

sudo ufw allow 22/tcp
sudo ufw enable

踩坑提示:如果你改了 SSH 端口,比如 2222,一定要用 sudo ufw allow 2222/tcp。我有一次忘了改,结果把自己关在门外,只能通过控制台重置……

3. 配置 Fail2Ban 监控与封禁

Fail2Ban 的核心是监控日志文件,当检测到恶意行为(如多次 SSH 密码错误)时,自动调用 UFW 添加封禁规则。我们先创建一个自定义配置文件,避免直接修改默认配置:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

然后编辑 jail.local,找到 [sshd] 部分,修改如下:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

这里的意思是:如果在 10 分钟(600 秒)内 SSH 登录失败 3 次,就封禁 IP 1 小时(3600 秒)。你可以根据实际需求调整这些参数。

4. 测试与验证规则生效

配置完成后,重启 Fail2Ban 服务:

sudo systemctl restart fail2ban

接着,检查 Fail2Ban 状态和 UFW 规则:

sudo fail2ban-client status sshd
sudo ufw status numbered

如果看到 Fail2Ban 显示 sshd jail 是 active,并且 UFW 规则中有 Fail2Ban 自动添加的条目,说明配置成功。

5. 高级用法:自定义过滤规则

除了 SSH,你还可以用 Fail2Ban 保护其他服务,比如 Nginx。假设你想封禁频繁访问敏感路径的 IP,可以创建一个自定义过滤器:

sudo nano /etc/fail2ban/filter.d/nginx-badrequest.conf

文件内容如下:

[Definition]
failregex = ^<HOST> -.*"(GET|POST).*/admin.*"
ignoreregex =

然后在 jail.local 中添加:

[nginx-badrequest]
enabled = true
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 7200

这样,任何 IP 在短时间内多次访问 /admin 路径就会被封禁 2 小时。

6. 总结与注意事项

通过 UFW 和 Fail2Ban 的配合,我们实现了从“静态放行”到“动态封禁”的升级。不过有几点需要注意:

  • 定期检查 sudo fail2ban-client status,确认各 jail 运行正常。
  • 如果封禁了自己,可以通过控制台登录,用 sudo fail2ban-client set sshd unbanip <你的IP> 解封。
  • 对于高并发业务,适当调整 maxretry 和 findtime,避免误伤正常用户。

希望这篇教程能帮你提升服务器安全性。如果你有更好的配置技巧,欢迎在评论区分享!

评论