适用于大规模环境的 iptables 管理工具

适用于大规模环境的 iptables 管理工具

我所处的环境是一个大型网络托管业务(管理数百台服务器,几乎全部采用公共寻址等 - 因此任何涉及管理 ADSL 链路的东西都不太可能很好地发挥作用),我们正在寻找一种既能轻松管理核心规则集(目前 iptables 中大约有 12,000 个条目)又能管理我们为客户管理的基于主机的规则集的东西。我们的核心路由器规则集每天更改几次,而基于主机的规则集每月可能更改 50 次(在所有服务器上,因此可能每五台服务器每月更改一次)。

我们目前正在使用 filtergen(一般来说是球,在我们的操作规模下是超级球),过去我在其他工作中使用过 shorewall(这比 filtergen 更好,但我想一定有比它更好的东西)。

对于任何替代系统,我们认为“必须”具备以下条件:

  • 必须相当快地生成规则集(在我们的规则集上运行过滤器需要 15-20 分钟;这太疯狂了)——这与下一点相关:
  • 必须生成一个 iptables-restore 样式的文件并一次性加载,而不是每次插入规则时都调用 iptables
  • 在规则集重新加载时,不得长时间关闭防火墙(这也是上述观点的结果)
  • 必须支持 IPv6(我们不会部署任何不兼容 IPv6 的新产品)
  • 必须不含 DFSG
  • 必须使用纯文本配置文件(因为我们通过修订控制运行所有内容,并且使用标准 Unix 文本操作工具是我们的 SOP)
  • 必须同时支持 RedHat 和 Debian(最好是打包的,但至少不能明显违反任何一个发行版的标准)
  • 必须支持运行任意 iptables 命令的能力,以支持不属于系统“本机语言”的功能

任何不符合上述所有条件的申请都不会被考虑。以下是我们的“好申请条件”:

  • 应该支持配置文件“片段”(也就是说,您可以将一堆文件放在一个目录中,然后对防火墙说“将此目录中的所有内容都包含在规则集中”;我们广泛使用配置管理,并希望使用此功能自动提供特定于服务的规则)
  • 应该支持原始表
  • 应该允许您在传入数据包和 REJECT 规则中指定特定的 ICMP
  • 应该很好地支持解析为多个 IP 地址的主机名(我们在使用 filtergen 时曾多次遇到过这种情况;这真是件非常麻烦的事)
  • 该工具支持的可选/奇怪的 iptables 功能越多(无论是原生的还是通过现有的或易于编写的插件)越好。我们时不时会使用 iptables 的奇怪功能,而“正常工作”的功能越多,对每个人来说就越好。

答案1

如果您可能想要从规则驱动的方法转向“描述所需的最终状态”的方式,请查看 fwbuilder。

优点:

  • 支持多个防火墙 - 你的核心 + 基于主机的规则 - 来自 1 组对象
  • SQL 式的“告诉我你想要什么”而不是“告诉我怎么做”的方法(注意:我不是说里面有什么 SQL!只是说它是描述性的,而不是程序性的 :-)
  • 它是一个 GUI,有点像商业硬件 f/w 供应商的界面,因此可以将一些任务推到员工/技能堆栈下
  • 支持我尝试过的大多数“奇怪”用法
  • 可以为各种 f/w 实现生成规则 - BSD/cicso/iptables/etc
  • 将前端与规则编译器分开,这让我相信速度是作者关心的问题。注意:我没有接近你所暗示的规模
  • 文件格式不是二进制
  • IPv6 是否
  • 创建一个 iptables-save 样式配置,用于原子和快速加载

缺点:

  • 它是一个 GUI
  • 迁移现有规则集并非易事
  • 虽然 GPL 和 Debian、Windows+OSX 客户端有 30 天的评估期,但还没有人为这些操作系统交叉编译免费版本;因此,开发人员的商业部门垄断了这些二进制文件
  • 文件格式在技术上是 XML;NB 不要让这一点让你失望:看看他们提供的工具(例如,你可以使用 gui 二进制文件通过 CLI 对其进行操作),已经存在的 CLI XML 工具,并记住 - 在你的规模上 - 一些元数据 + 结构的相似之处并不是一件/坏/事!据我所知,它在编辑之间有很好的差异。

关联 :http://www.fwbuilder.org

答案2

写你自己的。认真地讲 - 在这个规模上这是合理的。

使用ipset和/或大量的 iptable 表/子表。尽可能只重新加载一些子表/一些 ipset 集 - 这将加快重新配置的速度。

可能您已经这样做了,但仍然值得一提 - 使用嵌套表来减少路由器上的负载和建立新连接的数据包所需的平均查找次数。显然 -A FORWARD -m state --state ESTABLISHED,RELATED 是您最重要的规则。

答案3

圣球(让主题保持活力!)伙计……12,000 条核心规则?

我假设你已经考虑过所有简单的选项,比如简单地将集合放入 CVS、Puppet 还是 CFengine?

老实说,从您给出的总体概述来看,我强烈建议您重新评估您的网络设计。我可能有点过于简单,但我就是无法理解需要 12k 条 iptables 规则的设计。这听起来确实更像是从 SLB 类型的解决方案中获益的东西,而不是管理防火墙规则的更好方法。

顺便问一下,如何添加评论而不是添加“答案”?

答案4

你也可以尝试 SAAS 解决方案来管理 iptables ->https://www.efw.io/Forum它还可以进行 AWS 云集成。

相关内容