在firewalld中封禁恶意ip应优先使用富规则(少量ip)或ipset(批量管理),务必加--permanent并reload,结合ssh白名单与drop策略确保安全不被锁出,同时需检查云平台安全组是否绕过。

在 Firewalld 中拒绝指定恶意 IP,最直接有效的方式是使用富规则(rich rule)或结合 ipset 实现批量、可维护的封禁。关键不是“临时加一条 reject”,而是确保封禁行为持久、不干扰其他策略,并避免因误操作导致自己被锁出系统。
用富规则单条封禁(适合少量 IP)
适用于封禁 1–5 个明确的恶意 IP 或小范围网段,命令清晰、立即生效:
- 封禁单个 IP(静默丢弃,推荐):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" drop' - 封禁 IP 段(如 C 类):
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" drop' - 执行 firewall-cmd --reload 生效;--permanent 确保重启后仍有效
用 ipset 批量封禁(适合中高频封禁场景)
当需管理几十上百个恶意 IP,或需频繁增删时,ipset 是更规范、高效的做法——防火墙只加载一条规则,实际黑名单由独立集合管理:
- 创建黑名单集合:
firewall-cmd --permanent --new-ipset=blacklist --type=hash:net - 添加恶意 IP 或网段:
firewall-cmd --permanent --ipset=blacklist --add-entry=203.0.113.42
firewall-cmd --permanent --ipset=blacklist --add-entry=203.0.113.0/24 - 绑定封禁规则:
firewall-cmd --permanent --add-rich-rule='rule source ipset=blacklist drop' - 最后 firewall-cmd --reload,所有操作即刻持久化
注意事项与避坑提醒
封 IP 不是越快越好,安全性和可用性要兼顾:
- 切勿在未保留 SSH 白名单的情况下直接设 default DROP,否则可能失联;建议先加好自己的 IP 再调整策略
- drop(静默丢弃)比 reject(返回拒绝响应)更隐蔽,能减少扫描反馈,推荐用于恶意源
- 封禁后可用 firewall-cmd --list-rich-rules 或 firewall-cmd --ipset=blacklist --get-entries 核对规则是否写入
- 云服务器务必同步检查安全组规则——Firewalld 封禁无效,很可能是安全组已放行,形成策略绕过











