-1

我需要一种强大/可靠/优雅的方式来处理任何错误情况,同时重新加载防火墙规则,一些背景:

  1. 我们的服务器正在使用白名单机制,这意味着如果某个服务器需要与许多不同的目的地通信,则应该有大量的规则。
  2. 我们有另一个工具来生成防火墙规则文件,该文件将提供给 iptables/ipfilter,文件格式错误的可能性非常小。
  3. 由于防火墙规则数量可能非常大,iptables/ipfilter 可能由于我们一些旧硬件的资源限制而无法加载防火墙规则文件,例如,在某些情况下内存可能不够,同时重新加载超过 20k 条规则共。

所以我的问题是:

  1. 是否有任何现有工具可用于在实际加载防火墙规则之前检查它们的语法?

  2. 是否有任何方法可以使重新加载过程原子化,例如,它要么成功地重新加载新规则,要么只保留以前的健康规则集?

  3. 在给定当前运行环境和规则集的情况下,如何确保重新加载一定会成功?或者是否有任何工具可以让我估计重新加载可能会成功/失败?

任何建议都热烈欢迎。提前致谢。

4

1 回答 1

2

据说iptables-restore 原子。我无法证实这一点,但假设这是真的,那么这似乎是一种明智的做法。

  1. 在测试机器上,刷新所有规则,然后应用您生成的规则来验证它们。
  2. 验证后,用于iptables-save转储规则集。

    [root@testmachine]$ iptables-save > new_rules.iptables
    
  3. 使用以下命令仔细检查生产机器上的规则集iptables-restore -t

    [root@production]$ iptables-restore --test < new_rules.iptables
    
  4. 在您的生产机器上加载新的规则集。

    [root@production]$ iptables-restore < new_rules.iptables
    
于 2012-10-19T10:50:05.510 回答