我需要一种健壮/可靠/优雅的方式来处理重新加载防火墙规则时的任何错误情况,一些背景:
- 我们的服务器使用白名单机制,这意味着如果某个服务器需要与许多不同的目的地通信,则应该有大量的规则。
- 我们还有另一个工具来生成防火墙规则文件,该文件将提供给 iptables/ipfilter,文件格式错误的可能性非常小。
- 由于防火墙规则数量可能非常大,iptables/ipfilter 可能会由于某些旧硬件上的资源限制而无法加载防火墙规则文件,例如,在某些情况下,重新加载超过 20k 条规则时内存可能不够。
所以我的问题是:
是否有任何现有工具可用于在实际加载防火墙规则之前检查防火墙规则的语法?
是否有任何方法可以使重新加载过程原子化,例如成功重新加载新规则或仅保留以前的健康规则集?
如何确保在当前的运行环境和规则集下,重载一定能成功?或者是否有任何工具可以让我估计重新加载可能成功/失败?
热烈欢迎任何建议。提前致谢。
这是 been said那iptables-restore是原子的。我无法证实这一点,但假设这是真的,那么这似乎是一个明智的方法。
- 在测试机器上,刷新所有规则,然后应用生成的规则来验证它们。
验证后,使用 iptables-save
转储规则集。
[root@testmachine]$ iptables-save > new_rules.iptables
使用 iptables-restore -t
仔细检查生产计算机上的规则集:
[root@production]$ iptables-restore --test < new_rules.iptables
在生产计算机上加载新规则集。
[root@production]$ iptables-restore < new_rules.iptables
我是一名优秀的程序员,十分优秀!