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


15

我正在使用的环境是大规模的Web托管操作(受管理的数百台服务器,几乎所有公用地址等,因此任何有关管理ADSL链接的事情都不太可能奏效),我们重新寻找可以同时管理核心规则集(目前iptables中约有12,000个条目)和我们为客户管理的基于主机的规则集。我们的核心路由器规则集每天更改几次,而基于主机的规则集每月可能更改50次(在所有服务器上,因此每月每五台服务器更改一次)。

我们目前正在使用filtergen(一般来说是球,在我们的经营规模中是超级球),过去我在其他工作中使用过Shorewall(比filtergen更好,但我认为必须会有比这更好的东西)。

我们为任何替换系统提出的“笨蛋”是:

  • 必须相当快地生成一个规则集(在我们的规则集上运行filtergen需要15-20分钟;这简直太疯狂了)-这与下一点有关:
  • 必须生成一个iptables-restore样式文件并一键加载,而不是为每个规则插入都调用iptables
  • 重新加载规则集时,切勿长时间关闭防火墙(同样,这是以上几点的结果)
  • 必须支持IPv6(我们不会部署任何不兼容IPv6的新东西)
  • 必须不含DFSG
  • 必须使用纯文本配置文件(因为我们通过版本控制来运行所有内容,而使用标准的Unix文本操作工具是我们的SOP)
  • 必须同时支持RedHat和Debian(首选打包方式,但至少不能对发行版的任何标准公然敌视)
  • 必须支持运行任意iptables命令的能力,以支持不属于系统“本地语言”的功能

不符合所有这些条件的任何事物都将不予考虑。以下是我们的“必备品”:

  • 应该支持配置文件“碎片”(也就是说,您可以将一堆文件放在目录中,并对防火墙说“将规则集中的所有内容都包含在此目录中”;我们广泛使用配置管理,并且希望使用此功能来自动提供特定于服务的规则)
  • 应该支持原始表
  • 应该允许您在传入数据包和REJECT规则中指定特定的ICMP
  • 应该优雅地支持可解析为多个IP地址的主机名(我们已经被filtergen捕获了几次;这在屁股上是一个非常皇家的痛苦)
  • 该工具支持的更多可选(可选)/怪异的iptables功能(本机或通过现有或易于写的插件)更好。我们时不时地使用iptables的奇怪功能,而“可行”的功能越多,对每个人都越好。

我要咬-在您的帖子中“球”和“超级球”是什么意思?我猜您不是在谈论弹性橡胶球,但是我无法推断上下文是“好”还是“坏”。
埃文·安德森

球==不好。超级球==特别糟糕。
womble

有那么多规则,请确保顶部有一个ACCEPT规则,以接受已建立的和相关的连接。PC没有TCAM,许多规则确实会影响性能。很多。
Thomas Thomas

@thomas:是的,规则集中有一定程度的优化。当然,无论选择哪种防火墙工具,都具有关于优化的“知识”将是一项奖励。
womble

Answers:


4

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

优点:

  • 支持多个防火墙-您的核心+基于主机的规则-来自1组对象
  • SQL风格的“告诉我想要什么”而不是“告诉我如何做”方法(注意,我并不是说那里有任何SQL!只是描述性的Vs程序性的:-)
  • 这是一个GUI,有点像商用硬件的固件/供应商界面,因此可以将一些任务推到员工/技能堆栈中
  • 支持我尝试过的大多数“怪异”用法
  • 可以为各种固件实现生成规则-BSD / cicso / iptables / etc
  • 将前端与规则编译器分开,这使我希望作者关注速度。注意:我所提到的规模没有什么可比的
  • 文件格式不是二进制
  • 没有IPv6
  • 创建一个iptables-save stylee配置以进行原子加载和快速加载

缺点:

  • 这是一个GUI
  • 移动现有规则集可能不会很轻松
  • 在GPL和Debian中,Windows + OSX客户端的评估期为30天,因为还没有人针对这些操作系统交叉编译免费版本。因此,开发人员的商业部门对这些二进制文件拥有垄断权
  • 文件格式从技术上讲是XML;注意:不要让它让您失望:看看它们提供的工具(例如,您可以使用gui二进制文件通过CLI对其进行操作),已经存在的CLI XML工具,并记住-在您规模-元数据+结构的某种相似不是坏事!IIRC在整个编辑过程中差异很大。

链接:http//www.fwbuilder.org


嗯...我来看一下 GUI的存在(更不用说XML)使我颇为恼火,但是您提出了一些有趣的想法(整个基础结构的一组规则)。OS X不会成为问题。
子宫

我同意,GUI最初确实使我成为WTF,但我也对从CLI端看到的内容感到满意。无论如何,您的设置有多动态?是一天10次更改还是一年10次更改?这可能是在此处进行详细说明的有用因素。另外,XML文件格式的一个很好的功能可能是,使用支持XML的工具,您可以使用单定义对象将整个配置放在一个文件中,但是会生成特定于节点的更改日志,以记录各个服务器的配置和更改集。只是一个想法...
乔纳森·马修斯

@乔纳森:没错,规则集的动态性很重要。我已经编辑了问题;对于核心规则集,大多数工作日中每天需要几次。
womble

3

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

使用ipset和/或大量iptable表/子表。只要有可能,就只重载一些子表/ ipset集-这样可以加快重新配置的速度。

也许您已经做到了,但仍然值得一提-使用嵌套表来减少路由器的负载以及数据包建立新连接所需的平均查找次数。显然-A FORWARD -m状态--state已建立,相关是您最重要的规则。


“写自己的东西”并没有摆在桌面上,但这是我们首先获得filtergen的原因,它是由一名现任员工撰写的。如果可能的话,我们宁愿不生产另一个防火墙管理工具。
womble

对于大型规则集,IPSET速度很快。“存储多个IP地址或端口号并一口气匹配iptables的集合;针对IP地址或端口动态更新iptables规则而不会造成性能损失;使用一个iptables规则表达复杂的基于IP地址和端口的规则集,并从速度中受益IP集“我将其与Shorewall一起使用。我不知道肖特尔将如何在您的规模上发挥作用。
artifex

2

神圣的球(保持这个主题还活着!)男人... 12,000条核心规则?

我假设您已经考虑了所有简单的选项,例如简单地将集合放入CVS?人偶还是CFengine?

老实说,从您提供的广泛概述中,我强烈建议您重新评估您的网络设计。我可能有点过于简单化,但我根本无法理解需要12k iptables规则的设计。这听起来确实像是一种从SLB类型解决方案中受益的东西,而不是一种更好的管理防火墙规则的方法。

附带说明一下,如何添加评论而不是添加“答案”?


您需要最少的声誉才能发表评论。完成后,将出现一个链接。
jay_dubya

我们的iptables规则中可能存在一定程度的冗余,但这在很大程度上是filtergen的功能,可能效率不如预期。但是,我们确实有一个/ 19的IP空间,以及每个客户的VLAN,以及一个相当严格的“默认策略”(根据客户的要求,每个IP例外都需要开放端口)。当然,我们将无法摆脱其中一些规则。哦,是的,我们已经在使用Puppet,并且我们不会开始以我们的运营规模手动编写规则集。
womble

好吧,您肯定比我拥有更大的IP空间,但是我仍然很难以某种方式证明许多规则的合理性。您是否考虑过将它们分解为树状结构,以便可以在阻塞点利用直通规则设置?即,子网X中的所有仅Web服务器,子网Y中的所有Web + smtp服务器?您实际上并不需要将其子网划分为子网,只需将它们按逻辑分组在一个分层的防火墙后面...对不起,如果我此时只是添加噪音...我可能对此并不足够复杂。我喜欢我的防火墙规则集简短而残酷=)
Greeblesnort 2009年

我们实际上无法像这样“分层”处理各种事情;我们主要是一家专用的服务器托管提供商,因此我们的客户决定每天使用其计算机的方式可能会发生变化,这比我们只是为内部服务建立专用的基础架构要多得多。
womble

0

12000条规则?你疯了?通过这种数量的过滤,您不会遇到性能问题吗?我不明白为什么您需要12,000条规则?您如何验证规则集实际上是在执行策略?

有什么政策?

您如何测试您的政策?

12,000条规则可能会破坏书中的所有安全规则。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.