管理 ipv4 和 ipv6 iptables 的并行规则?

管理 ipv4 和 ipv6 iptables 的并行规则?

我们最近开始尝试 IPv6,我们首先要解决的问题之一就是处理两个协议栈的完全独立的防火墙 (Linux iptables/ip6ables) 规则集。我们的防火墙逻辑主要基于多个特定用途的网络(例如,10.0.0.0/24 是员工工作站网络,10.1.0.0/24 是数据库网络,10.2.0.0/24 是 Web 服务器网络等),IPv6 和 IPv4 的逻辑大致相同,只是网络前缀不同。

人们在做什么来应对这种情况?理想情况下,我希望能够从相同的源文件生成 iptables 和 ip6table 规则集。我已经使用 bash 拼凑了一些东西,但它不一定很漂亮,我怀疑一定存在更好的解决方案。

我对基于 Puppet 的解决方案特别感兴趣,该解决方案充分利用 Puppet 自己的依赖机制来实现规则(或规则组)的相对排序。

答案1

Firewall Builder 正好有您需要的功能。您可以创建一个规则集,将其标记为“组合 ipv4+ipv6”,并将分配到同一网段的 ipv4 和 ipv6 网络(例如“数据库网络”等)放在同一规则中。然后,该程序会生成两个单独的 iptables 配置,一个用于 ipv4,另一个用于 ipv6。本章用户指南说明了这一点,尽管它使用 Cisco 路由器访问列表作为示例。它对 iptables 的工作原理完全相同。

http://www.fwbuilder.org/4.0/docs/users_guide5/combined-ipv4-ipv6-rule-set.html

答案2

我最近也遇到了为 IPv4 和 IPv6 创建 iptables 规则的问题。经过一番搜索,我最终使用了Phil Whineray 的 IPv6 FireHOL 分支

FireHOL 是一款 iptables 防火墙生成器,可在 Linux 主机和路由器上生成有状态的 iptables 数据包过滤防火墙,这些防火墙具有任意数量的网络接口、任意数量的路由、任意数量的服务、任意数量的服务变体之间的复杂度(包括正负表达式)。(来源:FireHOL 网站)

不幸的是,官方版本缺乏对 IPv6 的支持。但 Phil Whineray 在非官方分支中添加了支持。

以下是一些配置示例:

# allowing outgoing http and https requests for ipv4 and ipv6 (default setting when nothing is specified):
client "http https" accept

# allow incoming ssh only on ipv4
ipv4 server ssh accept

# allow incoming IMAP requests only for ipv6
ipv6 server imap accept

您可以在以下位置查看此 firehol 分支:

git clone git://repo.or.cz/fireholvi.git

更多文档可在 FireHOL 官方文档或其他文档中找到有关 IPv6 的自述文件

就我个人而言,在生产机器上使用它时可能会很谨慎,因为拥有 100% 可靠的防火墙很重要。但无论如何,它还是值得一看的。

答案3

为了继续宣传这一事业,我建议利用 Puppet 来完成你的工作。目前还没有一个好的脚本来处理 iptables 4 和 6 规则,但一旦你适应了语言,编写一个也不会太难。

Mediawiki 的公共 git 存储库是一个奇妙的配置模式宝库,其中包括iptables 类这将提供良好的基础。您可以对其进行编辑,以默认同时将规则应用于两个堆栈,并在基于 IPv4 或 IPv6 规则制定规则时为不同的规则设置标志。

最终的好处是,服务的防火墙规则可以写入服务定义中,并在部署或删除服务时自动部署和删除。

答案4

由于列表中仍然缺少以下内容:岸墙是一款广泛采用且定期更新的功能丰富的数据包过滤器配置工具。它IPv6 支持有一段时间了。

相关内容