Linux无内置“高强度防火墙模式”,但可通过Fail2ban联动firewalld实现动态策略升级:检测暴力破解后自动切换至仅允白名单IP访问SSH、关闭非必要端口并启用速率限制,超时或心跳检查失败时自动恢复常规策略。

Linux系统本身没有“高强度防火墙模式”这个内置切换机制,但可以通过Fail2ban联动firewalld或iptables,实现检测到暴力破解后自动收紧防护策略——比如从“允许SSH访问”切换为“仅限白名单IP访问”,或启用更严格的连接频率限制。这本质上是动态策略升级,不是切换预设模式。
核心思路:用Fail2ban触发自定义防火墙动作
Fail2ban默认通过修改iptables规则来封禁IP,但它也支持调用外部脚本。我们可以利用这一能力,在检测到攻击时,让系统临时启用一组更严苛的firewalld规则(例如关闭所有非白名单端口、限制SSH仅允特定IP段、启用连接速率限制等)。
- 确保Fail2ban已安装并运行(
systemctl status fail2ban确认状态) - 创建一个自定义action:在
/etc/fail2ban/action.d/下新建harden-firewall.conf - 该action定义两个关键命令:
•actionstart:执行“高强度模式”规则(如切换到blockzone、封禁非信任网段、限制每分钟SSH连接数)
•actionstop:恢复常规策略(如切回publiczone、清理临时规则) - 在
jail.local中为[sshd]引用该action,并设置触发条件(如maxretry = 3,findtime = 300)
具体操作:启用“临时硬隔离”策略
以firewalld为例,所谓“高强度模式”可定义为:只允许指定管理IP访问SSH,其他所有入站端口全部拒绝,且对剩余允许连接启用速率限制。
- 先创建专用zone(如
secure-mgmt),配置如下:firewall-cmd --permanent --new-zone=secure-mgmtfirewall-cmd --permanent --zone=secure-mgmt --add-source=192.168.1.100/32(替换成你的运维IP)firewall-cmd --permanent --zone=secure-mgmt --add-port=22/tcpfirewall-cmd --permanent --zone=secure-mgmt --add-rich-rule='rule service name="ssh" limit value="3/m" accept' - 在Fail2ban的
actionstart中执行:firewall-cmd --set-default-zone=secure-mgmt --permanent && firewall-cmd --reload - 对应地,
actionstop应还原为默认publiczone并重载
补充建议:避免误伤与快速恢复
全自动切换存在风险,建议加入安全兜底措施:
- 设置
bantime为有限值(如3600秒),超时后自动退出高强度模式 - 添加“心跳检查”脚本:每5分钟检测是否仍有活跃SSH会话,若无则自动降级
- 保留本地console或串口访问通道,确保网络策略异常时仍可物理登录
- 所有firewalld变更必须加
--permanent并--reload,否则重启即失效
这种配置不依赖第三方模块,全部使用系统原生工具组合实现,兼顾有效性与可维护性。


















