私たちは最近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ベースのソリューションに特に興味があります。
ここで自分の質問に答えますが、この情報は一般的に興味深いものだと思いました:
この質問を検討しているときに、Ubuntuの人々から fw (複雑でない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の両方)。
私はそれを見始めたばかりですが、かなりうまくまとめられているようです。
Firewall Builderには、まさに必要なものが揃っています。 1つのルールセットを作成し、「結合されたipv4 + ipv6」としてマークを付け、同じルール(「データベースネットワーク」など)に割り当てられた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
最近、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%信頼できるファイアウォールを使用することが重要な本番環境のマシンで使用する場合は注意が必要です。しかし、それでも一見の価値があります。
原因の継続的な伝道のために、人形を活用してあなたの持ち上げを行うことをお勧めします。現在、iptables 4と6のルールを処理するための適切なスクリプトはありませんが、言語に慣れれば、それを書くこともそれほど難しくありません。
Mediawikiの public git repository は、構成パターンの素晴らしい鉱山であり、 iptables class が含まれています。これを編集して、デフォルトで両方のスタックにルールを一度に適用し、IPv4またはIPv6ルールに基づいている場合は異なるルールのフラグを設定できます。
この最後の究極のボーナスは、サービスのファイアウォールルールをサービス定義に書き込み、サービスがデプロイまたは削除されるときに自動的にデプロイおよび削除できることです。