我有大约 1,500 条 iptables 规则,需要在服务器受到攻击时应用。根据我的情况,稍后应该可以轻松删除/添加。有什么建议吗?例如,如果我可以在 1 行中导入这些规则,然后稍后注释/取消注释该行,那就可以了。放轻松。我其实是个程序员 :)
答案1
- 1500 条类似规则是个非常糟糕的主意,因为性能会显著下降。最好看看匹配
ipset
(它使用哈希表,所以速度非常快)。 - 不要使用
ufw
。 - 跑过
iptables-save > current-ruleset.ipv4
。 - 编辑此文件并以新名称保存(
anti-ddos-ruleset.ipv4
) - 用命令检查规则的正确性
iptables-restore -t anti-ddos-ruleset.ipv4
。如果存在错误,请修复。 - 现在您可以使用 来自动加载规则
iptables-restore anti-ddos-ruleset.ipv4
。 - 您可以使用命令确认后应用新规则
iptables-apply -t 60 anti-ddos-ruleset.ipv4
。如果您不确认新规则集,它将回滚到以前的版本。
答案2
我同意 Anton 的建议,使用 ipset。你可以像这样创建一个
ipset create foo hash:net
然后添加所有条目
ipset add foo 192.168.0.0/24
当需要时,你只需让传入的数据包与你的设置匹配并丢弃它们
iptables -A INPUT -m set --set foo src -j DROP
注意:所有常用命令ipset save
均按ipset restore
预期工作。