ゾーンベースファイアウォール設定(FQDNフィルタリング)

動作確認バージョン:vSRX Version15.1X49-D105.1

ここでは、FQDNを利用したゾーンベースファイアウォール設定を紹介します。

ゾーンベースファイアウォール とは
ファイアウォールに論理的に「ゾーン」と呼ばれる領域を作成し、インターフェイスをゾーンに所属させます。受信パケットに必要なポリシーをゾーンごとに設定するため、ゾーンに属するインターフェイスに対して同一のポリシーを適用させることが可能になります。

注釈

  • ver.15.1X49D105.1をご利用いただく際に、特定のシナリオでコントロールプレーンのCPU値が高くなる傾向があることが確認されております。発生条件や留意事項詳細は、 ver.15.1X49D105.1 をご利用いただく際の留意事項 をご確認ください。
  • 複数のフィルタリングルールを設定した場合、コンフィグレーション上に表示された順序で適用されます。

FQDNを遮断する条件にしたゾーンベースファイアウォール設定

DNSで名前解決したIPアドレスへの通信をゾーンベースファイアウォールで遮断し、その他のIPアドレスを宛先とする通信に関しては転送する設定を行います。

サンプル設定のシナリオ

  • TrustゾーンからUntrustゾーンへのゾーンベースファイアウォールを設定したい
  • ドメイン名 www.ntt.com を宛先とする通信だけ遮断したい
  • その他の通信はすべて転送したい
vsrx_fqdn_fig1

注釈

  • DNSサーバのアドレスは実際に存在するIPアドレスのためマスク(X.X.X.X)しています。
  • 設定を有効にするためには、DNSサーバから名前解決ができるようネットワークの接続性が確立できている必要があります。
  • Trustゾーンの仮想サーバがインターネットへ通信するためにはUntrust側の仮想ルータを経由するネットワーク構成で確認しています。
  • vSRX はDNSサーバで名前解決したIPアドレスのTTLを確認し、失効を確認後DNSサーバに対して名前解決を実行します。

シナリオにおける設定のながれ

1. ドメイン名の名前解決のためにDNSサーバ(X.X.X.X)を設定
2. アドレスブックでドメイン名「www.ntt.com」を NTTCOM として設定
3.ポリシー名 NTTCOM_DENY に宛先が NTTCOM である通信(パケット)は遮断する設定
4.その他の全ての通信は転送する設定

CLIにて入力するコマンド

user01@vSRX-02# set system name-server X.X.X.X
user01@vSRX-02# set security address-book global address NTTCOM dns-name www.ntt.com ipv4-only
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy NTTCOM_DENY match source-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy NTTCOM_DENY match destination-address NTTCOM
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy NTTCOM_DENY match application any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy NTTCOM_DENY then deny
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy default-permit match source-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy default-permit match destination-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy default-permit match application any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy default-permit then permit

正しく設定が完了したときのコンフィグレーションは次のとおりです。

system {
    name-server {
        X.X.X.X;
    }
}
security {
    address-book {
        global {
            address NTTCOM {
                dns-name www.ntt.com {
                    ipv4-only;
                }
            }
        }
    }
    policies {
        from-zone trust to-zone untrust {
            policy NTTCOM_DENY {
                match {
                    source-address any;
                    destination-address NTTCOM;
                    application any;
                }
                then {
                    deny;
                }
            }
            policy default-permit {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
    }
}

動作確認結果

以下の検証結果ログから、仮想ルータ(192.168.2.202)から「www.ntt.com」向けの通信が「NTTCOM_DENY」のルールに該当してゾーンベースファイアウォールで遮断していることが確認できました。

user01@vSRX-02> show security policies hit-count
Logical system: root-logical-system
 Index   From zone        To zone           Name           Policy count
 1       trust            trust             default-permit 0
 2       trust            untrust           NTTCOM_DENY    5
 3       trust            untrust           default-permit 0
 4       untrust          trust             ALL_DENY       0

Number of policy: 4

user01@vSRX-02>

注釈

仮想ルータ(192.168.2.202)も同じくDNSサーバでの名前解決ができており「ping www.ntt.com count 5」コマンドを実行しています。

FQDNを許可する条件にしたゾーンベースファイアウォール設定

DNSで名前解決したIPアドレスへの通信を許可して転送し、その他のIPアドレスを宛先とする通信に関してはゾーンベースファイアウォールで遮断する設定を行います。

サンプル設定のシナリオ

  • TrustゾーンからUntrustゾーンへのゾーンベースファイアウォールを設定したい
  • ドメイン名 www.ntt.com を宛先とする通信だけ許可して転送したい
  • その他の通信はすべて遮断したい
vsrx_fqdn_fig2

注釈

DNSサーバのアドレスは実際に存在するIPアドレスのためマスク(X.X.X.X)しています。
設定を有効にするためには、DNSサーバから名前解決ができるようネットワークの接続性が確立できている必要があります。
Trustゾーンの仮想サーバがインターネットへ通信するためにはUntrust側の仮想ルータを経由するネットワーク構成で確認しています。
vSRX はDNSサーバで名前解決したIPアドレスのTTLを確認し、失効を確認後DNSサーバに対して名前解決を実行します。

シナリオにおける設定のながれ

1. ドメイン名の名前解決のためにDNSサーバ(X.X.X.X)を設定
2. アドレスブックでドメイン名「www.ntt.com」を NTTCOM として設定
3.ポリシー名 NTTCOM_PERMIT に宛先が NTTCOM である通信(パケット)は許可する設定
4.その他の全ての通信は遮断する設定

CLIにて入力するコマンド

user01@vSRX-02# set system name-server X.X.X.X
user01@vSRX-02# set security address-book global address NTTCOM dns-name www.ntt.com ipv4-only
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy NTTCOM_PERMIT match source-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy NTTCOM_PERMIT match destination-address NTTCOM
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy NTTCOM_PERMIT match application any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy NTTCOM_PERMIT then permit
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy ALL-DENY match source-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy ALL-DENY match destination-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy ALL-DENY match application any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy ALL-DENY then deny

正しく設定が完了したときのコンフィグレーションは次のとおりです。

system {
    name-server {
        X.X.X.X;
    }
}
security {
    address-book {
        global {
            address NTTCOM {
                dns-name www.ntt.com {
                    ipv4-only;
                }
            }
        }
    }
    polices {
       from-zone trust to-zone untrust {
           policy NTTCOM_PERMIT {
               match {
                   source-address any;
                   destination-address NTTCOM;
                   application any;
               }
               then {
                   permit;
               }
           }
           policy ALL-DENY {
               match {
                   source-address any;
                   destination-address any;
                   application any;
               }
               then {
                   deny;
               }
           }
    }
}

動作確認結果

以下の検証結果ログから、仮想ルータ(192.168.2.202)から「www.ntt.com」向けの通信が「NTTCOM_PERMIT」に該当しておりゾーンベースファイアウォールは許可して転送していることが確認できました。

user01@vSRX-02> show security policies hit-count
Logical system: root-logical-system
 Index   From zone        To zone           Name           Policy count
 1       trust            trust             default-permit 0
 2       trust            untrust           NTTCOM_PERMIT  5
 3       trust            untrust           ALL-DENY       0
 4       untrust          trust             ALL_DENY       0

Number of policy: 4

user01@vSRX-02>

注釈

仮想ルータ(192.168.2.202)も同じくDNSサーバでの名前解決ができており「ping www.ntt.com count 5」コマンドを実行しています。
実際のPING通信はサーバ設定により返信されませでしたが、ゾーンベースファイアウォールで遮断されず通過していることを確認しています。

FQDNフィルタリング機能は、以下のような製品仕様です。

設定時に名前解決ができないFQDNでのポリシーの扱い

  • ポリシーは無視されます。
  • なお、FQDNのポリシーを設定してcommitした際に名前解決できなかったとしても、製品としてエラーが発生することはなく設定が反映されます。
  • 名前解決ができたタイミングでポリシーは機能します。

一度名前解決できたが、その後一時的に名前解決ができなくなった場合のポリシーの動作

  • 最後に名前解決したIPアドレス情報をポリシーで利用し続けます。
  • TTLが0となっても、ポリシーはIPアドレス情報を破棄しません。
  • 上記のため、vSRXが再度名前解決可能となるまでの間にFQDNに紐づけられたIPアドレスが変更されてしまうと、クライアントが正しいIPアドレスに通信しようとしてもポリシーの条件に当てはまりません。