管理 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 自己的依賴機制來實現規則(或規則組)的相對排序。
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
我最近還遇到了為 IPv4 和 IPv6 創建 iptables-rules 的問題。經過一番搜尋,我最終使用了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% 可靠防火牆很重要的生產機器上使用它時,我可能會謹慎。但它仍然值得一看。