ipv4およびipv6 iptablesの並列ルールを管理していますか?


10

私たちは最近IPv6の実験を開始しました。私たちが対処しなければならない最初の問題の1つは、2つのプロトコルスタックのファイアウォール(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ベースのソリューションに特に興味があります。

回答:


5

Firewall Builderには、まさに必要なものが揃っています。1つのルールセットを作成し、「combined ipv4 + ipv6」としてマークを付け、同じルールに同じセグメント(「データベースネットワーク」etCなど)に割り当てられたipv4およびipv6ネットワークを配置できます。次に、プログラムは2つの個別のiptables構成を生成します。1つはipv4用で、もう1つはipv6用です。これはユーザーガイドのこの章で説明されていますが、例としてCiscoルータのアクセスリストを使用しています。iptablesでもまったく同じように動作します。

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


4

最近、IPv4とIPv6の両方のiptables-rulesの作成にも直面しました。いくつかの検索の後、Phil WhinerayによるIPv6 FireHOLブランチを使用することになりました

FireHOLは、任意の数のネットワークインターフェイス、任意の数のルート、任意の数のサービスを提供するLinuxホストおよびルーターで、ステートフルiptablesパケットフィルタリングファイアウォールを生成する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

このファイアホール支店は、次の場所でチェックアウトできます。

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

追加のドキュメントは、公式のFireHOLドキュメントまたはIPv6に関する追加のReadmeにあります

個人的には、100%信頼できるファイアウォールを使用することが重要な本番環境のマシンで使用する場合は注意が必要です。しかし、それでも一見の価値があります。


3

原因の継続的な伝道のために、人形を活用してあなたの持ち上げを行うことをお勧めします。現在、iptables 4と6のルールを処理するための適切なスクリプトはありませんが、言語に慣れれば、それを書くこともそれほど難しくありません。

Mediawikiの公開gitリポジトリは構成パターンの素晴らしい鉱山であり、iptablesクラスが含まれています、開始するための適切なベースを提供するがています。これを編集して、デフォルトで両方のスタックにルールを一度に適用し、IPv4またはIPv6ルールに基づいている場合は異なるルールのフラグを設定できます。

この最後の究極のボーナスは、サービスのファイアウォールルールをサービス定義に書き込んで、サービスのデプロイまたは削除時に自動的にデプロイおよび削除できることです。


見てみます。これまでのところ、iptablesを管理するための典型的なPuppetベースのソリューションには、一般に感銘を受けていません。特に、これらはすべて、Puppetの依存関係解決メカニズムを使用するのではなく、フラグメントファイルのファイル名またはPuppetルールで提供される明示的なインデックスを介して、順序付けを明示的に実装しているようです。ここにリンクされている解決策がこれらの問題を回避する場合、私はそれですべてです。
larsk、

@larsks私も同意し、同様に優れた汎用ソリューションがリリースされていないことに不満を感じています... Puppetではbefore => Resource['declared_name']、任意の定義でを使用できるため、フラグメントを使用して物事を順序付けしようとしない実装を使用してそれらを順序付けできます。構造にAugueasを適切に使用すると、この問題も防止されます。必要に応じて、トップツリーにコメントを付け、その下に順序を付けます。
ジェフファーランド2012年

これを解決するための私自身の試みは、それほど遠くまで届きませんでした。私が今やったことは、(a)フラグメントをサブディレクトリにインストールし、次に(b)rcorderを使用してそれらを依存関係の順序に配置することです。動作しますが、フラグメントファイルの管理のみに基づいているため、ipv4 / ipv6の混合環境には適していません。Augeasを使用して問題を解決する方法については、あまり詳しく調べていません。そこにプロトタイプコードがあれば、私は興味があります。
larsk、2012年

2

ここで自分の質問に答えますが、この情報は一般的に興味があると思いました:

この質問を検討しているときに、Ubuntuの人々からufw(Uncomplicated FireWall)に出会いました。ufw設定でIPV6を有効にすると、ufwはiptablesとip6tablesルールを並行して管理します。つまり、次のようなことができます。

# ufw allow ssh/tcp

そして次のようになります:

# ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere (v6)

その結果、iptables / ip6tablesルールは次のようになります。

# iptables-save | grep 'dport 22'
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
# ip6tables-save | grep 'dport 22'
-A ufw6-user-input -p tcp -m tcp --dport 22 -j ACCEPT

Ufwは、名前付きのポートグループを作成できるアプリケーションプロファイルもサポートしています。あなたはこれを行うことができます:

# ufw allow 'WWW Full'

そして、両方のポート80と443を開くことになります(IPv4とIPv6の両方)。

私はそれを見始めたばかりですが、かなりうまくまとめられているようです。


0

まだリストにないため:Shorewallは広く採用され、定期的に更新される機能豊富なパケットフィルター構成ツールです。しばらくの間IPv6をサポートしていました。


1
私の理解では、「shorewall」はipv4のみであり、「shorewall6」はipv6のみであり、両方のプロトコルをカバーするために両方を使用する必要があります。共通の構成を共有できますか?
larsk、2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.