Fail2ban通过联动防火墙封禁攻击IP而非关闭端口;关键在选对防火墙后端(如firewalld或iptables)、配准banaction、确保日志路径与过滤规则匹配,三者缺一不可。

Fail2ban 本身不直接“关闭端口”,而是通过联动防火墙(如 firewalld 或 iptables),将攻击者的 IP 地址加入黑名单,阻断该 IP 对所有端口(或指定端口)的访问。所谓“关闭遭受爆破的攻击端口”,准确说是:让攻击者无法再连接到你开放的服务端口(如 SSH 的 22 端口),本质是封 IP,不是关端口。
要实现 Fail2ban 与防火墙有效联动、精准拦截爆破行为,关键在三步:选对防火墙后端、配对 banaction、确保日志路径和过滤规则匹配。
? 确认当前防火墙类型并启用联动
CentOS 7/8 默认用 firewalld;Ubuntu/Debian 常用 iptables 或 nftables。
Fail2ban 必须使用与系统一致的防火墙后端,否则封禁无效。
-
查看防火墙状态:
firewall-cmd --state # 若显示 running,则用 firewalld sudo iptables -L | head -3 # 若有输出且无报错,可能在用 iptables
-
Fail2ban 配置中必须指定对应
banaction:- firewalld →
banaction = firewallcmd-ipset - iptables →
banaction = iptables-multiport
- firewalld →
⚠️ 错误示例:firewalld 运行中却配置
banaction = iptables-multiport,会导致封禁完全不生效。
? 正确配置 jail.local 实现 IP 封禁
编辑 /etc/fail2ban/jail.local(勿改 .conf,避免升级覆盖):
[DEFAULT] ignoreip = 127.0.0.1/8 192.168.1.0/24 # 可填多个,用空格或逗号分隔 bantime = 86400 # 封 24 小时(秒) findtime = 600 # 10 分钟内累计失败 maxretry = 3 # 达 3 次即触发 # 关键:匹配你的防火墙类型 banaction = firewallcmd-ipset # CentOS 7+ firewalld # banaction = iptables-multiport # Ubuntu/Debian iptables [sshd] enabled = true filter = sshd port = 22 # 若改过 SSH 端口(如 2222),此处必须同步修改 logpath = /var/log/secure # CentOS/RHEL 日志路径 # logpath = /var/log/auth.log # Ubuntu/Debian 路径 backend = systemd # 推荐,兼容 journal 日志
保存后重启服务:
sudo systemctl restart fail2ban
✅ 验证联动是否生效
-
查看 Fail2ban 是否监控 SSH 并已封 IP:
sudo fail2ban-client status sshd
输出类似:
Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 12 | `- File list: /var/log/secure `- Actions |- Currently banned: 2 |- Total banned: 5 `- Banned IP list: 192.168.10.23 203.0.113.45
-
检查 firewalld 是否已创建 ipset 并拦截:
sudo firewall-cmd --get-ipsets | grep fail2ban sudo firewall-cmd --ipset=fail2ban-sshd --get-entries
-
若用 iptables,检查链中是否有
f2b-sshd:sudo iptables -L INPUT -n | grep f2b-
? 补充建议:提升防护有效性
修改 SSH 默认端口(非必须但显著降低扫描量)
编辑/etc/ssh/sshd_config,改Port 22为Port 2222,然后sudo systemctl restart sshd,并在jail.local中同步更新port = 2222。限制 SSH 登录方式
关闭密码登录,强制密钥认证(PasswordAuthentication no),从源头减少爆破面。不依赖单一手段
Fail2ban 是日志响应型防护,适合应对中低频爆破;高频 CC 或扫描建议配合fail2ban+firewalld rich rules(限速)或前置 WAF。
不复杂但容易忽略。

















