AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 51258
In Process
womble
womble
Asked: 2009-08-07 16:12:33 +0800 CST2009-08-07 16:12:33 +0800 CST 2009-08-07 16:12:33 +0800 CST

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

  • 772

我正在运行的环境是一个大规模的网络托管业务(管理着数百台服务器,几乎所有公共地址等——所以任何关于管理 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 的奇怪功能,而且“正常工作”的功能越多,对每个人都越好。
firewall linux iptables
  • 5 5 个回答
  • 7861 Views

5 个回答

  • Voted
  1. Jonathan Matthews
    2009-08-07T20:27:06+08:002009-08-07T20:27:06+08:00

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

    优点:

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

    缺点:

    • 这是一个图形用户界面
    • 移动现有的规则集不太可能一帆风顺
    • 在 GPL 和 Debian 中,Windows+OSX 客户端是 30 天评估的,因为还没有人为这些操作系统交叉编译免费版本;因此,开发者的商业部门垄断了这些二进制文件
    • 文件格式在技术上是 XML;注意不要让这让你失望:看看他们提供的工具(例如,你可以使用 gui 二进制文件通过 CLI 操作它),已经存在的 CLI XML 工具,并记住 - 在你的规模 - 一些元数据 + 结构的表象不是 /bad/ 的事情!它在编辑中的差异非常好,IIRC。

    链接:http ://www.fwbuilder.org

    • 4
  2. pQd
    2009-08-07T23:20:57+08:002009-08-07T23:20:57+08:00

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

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

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

    • 3
  3. Greeblesnort
    2009-08-07T19:08:05+08:002009-08-07T19:08:05+08:00

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

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

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

    在旁注中,如何添加评论而不是添加“答案”?

    • 2
  4. The Unix Janitor
    2010-03-21T12:17:03+08:002010-03-21T12:17:03+08:00

    12000条规则?你疯了?您不会因为进行如此多的过滤而遇到性能问题吗?我不明白你为什么需要 12,000 条规则?您如何验证您的规则集实际上正在执行该策略?

    政策是什么?

    你如何测试你的政策?

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

    • 0
  5. Paul Ma
    2016-06-12T12:38:20+08:002016-06-12T12:38:20+08:00

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

    • -2

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve