従来方式(インタフェースベースポリシー)の問題点
ファイアウォールというNW機器が出来たばかりの頃、ACLポリシーは『どの送信元インタフェースからどの宛先インタフェースへ抜ける通信に関するポリシーか』というセクション単位で設定するのが一般的でした。今では『インタフェースベースポリシー』モデルと呼ばれています。
この書き方は単に送信元/宛先IPのみで決めるより柔軟な設定が可能でしたが、インタフェースの数が増えるとポリシー設定もどんどん増えていく、という性質がありました。
実装され始めた当初は好評でしたが、時代が移り、セキュリティの需要増やトラフィックパターン増に伴い、ポリシーが複雑になる中で、このインタフェースべースの考え方では耐え切れなくなってきました。
例えばインターネットの出口が複数ある場合、従来の書き方だとそれぞれに同じ設定を同じ数だけ書く必要がありました。
そこで登場したのが『ゾーンベースポリシー』モデルです。この考え方を導入した機器では、複雑なポリシーをシンプルに統合できるようになりました。
ゾーンベースポリシーとは
ゾーンベースポリシーモデルでは、まず各インタフェースをどのゾーンに属させるかを設定します。ゾーンはそのインタフェースの性質でグループ化し、名前は任意に付けることが可能です(大抵は事前定義のものもあります)。
例えば、インターネット向かいのインタフェース WAN1 と WAN2 は共に『External』というゾーンに設定、Web サーバ系 DMZ サーバ向かいのインタフェース DMZ1 と DMZ2 は『DMZ_Web』というゾーンに設定、一般 PC が収容されるコアスイッチ向かいのインタフェース LAN1 と LAN2 は『LAN_Gen』というゾーンに設定します。
すると LAN_Gen から External に抜ける通信については、わざわざ "LAN1 から WAN1"、"LAN1 から WAN2"、"LAN2 から WAN1"、"LAN2 から WAN2" と 4 つのセクション毎にポリシーを書かなくても、"LAN_GenからExternal" と 1 つのセクションだけに統合して書くことができます。
つまり、ゾーンとは、その性質 (インターネットに抜けるインタフェースなのか、重要機器に繋がるインタフェースなのか、特殊な制御が必要な機器に繋がるインタフェースなのか、等) に応じて付けるラベルのことです。
なのでゾーンベースポリシーモデルとは、インタフェース単位では無く、性質単位で制御するアクセス制御方式のことを言います。
このゾーンベースの考え方は FortiGate や PaloAlto 等、主流 FW/UTM 装置であればたいてい実装されています。
Linux firewalld の zone
Linux では最近は TCP/IP レベルでのアクセス制御は iptables に代わり、firewalld が実装されています。
この firewalld も ゾーン (zone) の概念を持っています。事前定義の zone があるのでこれらを使うのが一般的ですが、以下コマンドで新たに作成することもできます。
# firewall-cmd --new-zone OriginalZ --permanent
この firewalld の zone も、扱いとしてはNW機器のゾーンと一緒で、インタフェースの性質毎(サービス用インタフェース、管理用インタフェース、等)にzone を分け、性質単位でアクセス制御することができます。
詳細は以下ページをご参照下さい。
コメント