linux防火墙应急响应核心是即时生效、精准阻断、可逆操作:先用--set-target=drop紧急切断未知流量,再通过rich-rule放行管理ip和ssh端口,实时封禁攻击源ip或网段,移除高危服务暴露,并联动fail2ban实现日志驱动自动封禁。

面对突发安全威胁,Linux 防火墙策略不能只靠预设规则被动防御,而需具备快速响应、精准阻断和临时加固能力。核心在于“即时生效 + 精准定位 + 可逆操作”,避免误封或服务中断。
快速启用默认拒绝并保留SSH通道
这是最紧急的第一步:立即切断未知流量,同时确保管理通道不中断。
- 运行时立即生效(不重启服务):
sudo firewall-cmd --zone=public --set-target=DROP
这条命令让 public 区域所有未显式放行的入站连接直接丢弃 - 必须紧随其后放行你的管理IP和SSH端口:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.45" port port="22" protocol="tcp" accept' --permanent
替换203.0.113.45为你实际的运维IP,避免锁死自己 - 重载使规则立刻应用:
sudo firewall-cmd --reload
按源IP或网段实时封禁攻击者
当日志(如 /var/log/secure 或 journalctl -u sshd)显示某IP高频暴力破解时,应秒级封禁。
- 用 rich rule 封禁单个IP(运行时+永久):
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.211.88" reject' --permanent - 封禁整个可疑网段(例如某代理池出口段):
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="185.120.212.0/24" drop' --permanent
注意:drop不回包,reject返回拒绝提示,前者更隐蔽 - 确认已生效:
sudo firewall-cmd --zone=public --list-rich-rules
临时关闭高危服务端口,而非仅限流
发现某服务(如 Redis、MySQL)被扫描或尝试利用漏洞时,停服务不如关端口快且安全。
- 立即移除服务暴露:
sudo firewall-cmd --zone=public --remove-service=redis --permanentsudo firewall-cmd --zone=public --remove-port=3306/tcp --permanent - 若该服务仅需内网访问,可改绑定到本地或私有接口,再用 rich rule 限制来源:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port port="3306" protocol="tcp" accept' --permanent - 切勿依赖应用层密码保护代替网络层隔离——防火墙是第一道屏障
启用并验证 fail2ban 实时联动防护
firewalld 本身不分析日志,需与 fail2ban 配合实现自动封禁。这是应对持续暴力攻击的关键闭环。
- 安装并启动 fail2ban:
sudo apt install fail2ban(Debian/Ubuntu)或sudo yum install fail2ban(RHEL/CentOS) - 配置 jail.local(示例):
[sshd]<br>enabled = true<br>filter = sshd<br>logpath = /var/log/auth.log<br>maxretry = 3<br>bantime = 1h<br>action = firewallcmd-ipset[name=sshd, port=ssh, protocol=tcp]
该配置使用 firewalld 的 ipset 后端,封禁效率更高 - 重启服务并检查状态:
sudo systemctl enable fail2ban && sudo systemctl start fail2bansudo fail2ban-client status sshd
不复杂但容易忽略:每次紧急操作后,务必执行 sudo firewall-cmd --runtime-to-permanent 保存当前运行时规则,防止重启失效;同时用 sudo firewall-cmd --list-all 核对最终生效策略。真正的应急能力,来自日常已配好模板、测试过流程,而非临场查文档。











