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

動作確認バージョン:vSRX Version20.4R2, vSRX Version22.4R1

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

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

注釈

  • 利用開始時に trustuntrust という名前のゾーンが定義されています。任意の名前で作成することも可能です。
  • ファイアウォール(vSRX) で利用するインターフェイスは、管理ポート(fxp0)を除きゾーンに所属している必要があります。
  • 複数のフィルタリングルールを設定した場合、コンフィグレーション上に表示された順序で適用されます。

アドレスセットを拒否する条件にしたゾーンベースファイアウォール設定

アドレスブックに含まれるIPアドレスからアドレスセットを設定します。アドレスセットに含まれないIPアドレスからの通信(パケット)を許可して、アドレスセットに含まれるIPアドレスを送信元とする通信(パケット)に関しては、ゾーンベースファイアウォールで遮断する設定を行います。

サンプル設定のシナリオ

  • TrustゾーンからUntrustゾーンへのゾーンベースファイアウォール設定をしたい
  • アドレスセットに登録されたIPアドレスからの通信はすべて遮断したい
  • アドレスセットに登録されていないIPアドレスからは通信させたい
vsrx_address-set_fig1

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

1.アドレスブック global へサーバーインスタンスのIPアドレス(192.168.2.12)を SV02 として設定
2.アドレスブック global へ仮想ルーターのIPアドレス(192.168.2.202)を VR02 として設定
3.登録した名称をグループ化したアドレスセット SV-VR-02 の設定
4.TrustゾーンからUntrustゾーンへのポリシーにアドレスセット SV-VR-02 を送信元とするパケットを拒否する設定
5.アドレスセットに含まれない通信(パケット)は許可する設定

CLIにて入力するコマンド

user01@vSRX-02# set security address-book global address SV02 192.168.2.12/32
user01@vSRX-02# set security address-book global address VR02 192.168.2.202/32
user01@vSRX-02# set security address-book global address-set SV-VR-02 address SV02
user01@vSRX-02# set security address-book global address-set SV-VR-02 address VR02
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy DENY_GROUP match source-address SV-VR-02
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy DENY_GROUP match destination-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy DENY_GROUP match application any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy DENY_GROUP then deny
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy ALL_PERMIT match source-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy ALL_PERMIT match destination-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy ALL_PERMIT match application any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy ALL_PERMIT then permit

注釈

any 」 設定は、全てを示しています。source-address any は全ての送信元IPアドレスを示しています。

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

security {
    address-book {
        global {
            address SV02 192.168.2.12/32;
            address VR02 192.168.2.202/32;
            address-set SV-VR-02 {
                address SV02;
                address VR02;
            }
        }
    }
    policies {
        from-zone trust to-zone untrust {
            policy DENY_GROUP {
                match {
                    source-address SV-VR-02;
                    destination-address any;
                    application any;
                }
                then {
                    deny;
                }
            }
            policy ALL_PERMIT {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
    }
}

動作確認結果

以下の検証結果より、アドレスセット SV-VR-02 で設定したIPアドレス(192.168.2.12,192.168.2.202)からの通信(Ping)は失敗しておりサーバーインスタンス(192.168.2.14)から仮想ルーター(192.168.3.203)宛の通信(Ping)が成功していますので、アドレスセットを条件にしたゾーンベースファイアウォールが正しく機能していることが確認できました。

サーバーインスタンス(192.168.2.14)から仮想ルーター(192.168.3.203)への通信結果

[user01@centsv-04 ~]$ ping 192.168.3.203 -c 5
PING 192.168.3.203 (192.168.3.203) 56(84) bytes of data.
64 bytes from 192.168.3.203: icmp_seq=1 ttl=63 time=1.58 ms
64 bytes from 192.168.3.203: icmp_seq=2 ttl=63 time=0.911 ms
64 bytes from 192.168.3.203: icmp_seq=3 ttl=63 time=1.03 ms
64 bytes from 192.168.3.203: icmp_seq=4 ttl=63 time=1.03 ms
64 bytes from 192.168.3.203: icmp_seq=5 ttl=63 time=1.09 ms

--- 192.168.3.203 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 0.911/1.133/1.587/0.237 ms

アドレスセット SV-VR-02 (192.168.2.12,192.168.2.202)から仮想ルーター(192.168.3.203)への通信結果

[user01@centsv-02 ~]$ ping 192.168.3.203 -c 5
PING 192.168.3.203 (192.168.3.203) 56(84) bytes of data.


--- 192.168.3.203 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 3999ms

[user01@centsv-02 ~]$
user01@vRouter-02:~$ ping 192.168.3.203 count 5
PING 192.168.3.203 (192.168.3.203) 56(84) bytes of data.


--- 192.168.3.203 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4004ms

user01@vRouter-02:~$

設定したファイアウォールルールに該当したかはshow security policies hit-count などで確認できます。

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           DENY_GROUP     10
 3       trust            untrust           ALL_PERMIT     5

Number of policy: 3

user01@vSRX-02>

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

アドレスブックに含まれるIPアドレスからアドレスセットを設定します。アドレスセットに含まれるIPアドレスを送信元とする通信(パケット)は許可し、アドレスセットに含まれないIPアドレスからの通信(パケット)はゾーンベースファイアウォールで遮断する設定を行います。

サンプル設定のシナリオ

  • TrustゾーンからUntrustゾーンへのゾーンベースファイアウォール設定をしたい
  • アドレスセットに登録されたIPアドレスからの通信のみ許可したい
  • アドレスセットに登録されていないIPアドレスからは遮断したい
vsrx_address-set_fig2

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

1.アドレスブック global へサーバーインスタンスのIPアドレス(192.168.2.12)を SV02 として設定
2.アドレスブック global へ仮想ルーターのIPアドレス(192.168.2.202)を VR02 として設定
3.アドレスブック global へサーバーインスタンスのIPアドレス(192.168.2.14)を SV04 として設定
4.登録した名称をグループ化したアドレスセット SV-VR-02 の設定
5.TrustゾーンからUntrustゾーンへのポリシーにアドレスセット SV-VR-02 を送信元とするパケットを許可する設定
6.アドレスセットに含まれない通信(パケット)は遮断する設定

CLIにて入力するコマンド

user01@vSRX-02# set security address-book global address SV02 192.168.2.12/32
user01@vSRX-02# set security address-book global address VR02 192.168.2.202/32
user01@vSRX-02# set security address-book global address SV04 192.168.2.14/32
user01@vSRX-02# set security address-book global address-set SV-VR-02 address SV02
user01@vSRX-02# set security address-book global address-set SV-VR-02 address VR02
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy PERMIT_GROUP match source-address SV-VR-02
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy PERMIT_GROUP match destination-address any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy PERMIT_GROUP match application any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy PERMIT_GROUP then permit

注釈

any 」 設定は、全てを示しています。source-address any は全ての送信元IPアドレスを示しています。

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

security {
    address-book {
        global {
            address SV02 192.168.2.12/32;
            address VR02 192.168.2.202/32;
            address SV04 192.168.2.14/32;
            address-set SV-VR-02 {
                address SV02;
                address VR02;
            }
        }
    }
    policies {
        from-zone trust to-zone untrust {
            policy PERMIT_GROUP {
                match {
                    source-address SV-VR-02;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
    }
}

注釈

TrustゾーンからUntrustゾーンへのポリシー PERMIT_GROUP の下には、表示はされませんがポリシーの最後に全ての通信を拒否するのがvSRXデフォルト動作になっているためpermitされていない通信は遮断されます。

動作確認結果

以下の検証結果より、アドレスセット SV-VR-02 で設定したIPアドレス(192.168.2.12,192.168.2.202)からの通信(Ping)は成功しておりサーバーインスタンス(192.168.2.14)から仮想ルーター(192.168.3.203)宛の通信(Ping)が失敗していますので、アドレスセットを条件にしたゾーンベースファイアウォールが正しく機能していることが確認できました。

アドレスセット SV-VR-02 (192.168.2.12,192.168.2.202)から仮想ルーター(192.168.3.203)への通信結果

[user01@centsv-02 ~]$ ping 192.168.3.203 -c 5
PING 192.168.3.203 (192.168.3.203) 56(84) bytes of data.
64 bytes from 192.168.3.203: icmp_seq=1 ttl=63 time=2.72 ms
64 bytes from 192.168.3.203: icmp_seq=2 ttl=63 time=1.00 ms
64 bytes from 192.168.3.203: icmp_seq=3 ttl=63 time=0.983 ms
64 bytes from 192.168.3.203: icmp_seq=4 ttl=63 time=0.804 ms
64 bytes from 192.168.3.203: icmp_seq=5 ttl=63 time=0.827 ms

--- 192.168.3.203 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 0.804/1.268/2.722/0.731 ms
[user01@centsv-02 ~]$
user01@vRouter-02:~$ ping 192.168.3.203 count 5
PING 192.168.3.203 (192.168.3.203) 56(84) bytes of data.
64 bytes from 192.168.3.203: icmp_seq=1 ttl=63 time=3.32 ms
64 bytes from 192.168.3.203: icmp_seq=2 ttl=63 time=1.23 ms
64 bytes from 192.168.3.203: icmp_seq=3 ttl=63 time=1.42 ms
64 bytes from 192.168.3.203: icmp_seq=4 ttl=63 time=1.71 ms
64 bytes from 192.168.3.203: icmp_seq=5 ttl=63 time=1.78 ms

--- 192.168.3.203 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 1.233/1.895/3.320/0.740 ms
user01@vRouter-02:~$

サーバーインスタンス(192.168.2.14)から仮想ルーター(192.168.3.203)への通信結果

[user01@centsv-04 ~]$ ping -c 5 192.168.3.203
PING 192.168.3.203 (192.168.3.203) 56(84) bytes of data.

--- 192.168.3.203 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 3999ms

[user01@centsv-04 ~]$

設定したファイアウォールルールに該当したかはshow security policies hit-count などで確認できます。

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           PERMIT_GROUP   10

Number of policy: 2

user01@vSRX-02>

アプリケーションセットを条件にしたゾーンベースファイアウォール設定(TrustからUntrust方向へ遮断設定)

サンプル設定のシナリオ

  • TrustゾーンからUntrustゾーンへのゾーンベースファイアウォール設定をしたい
  • SSHやHTTP通信をアプリケーションセットに登録して通信を遮断したい
  • PING(ICMP echo request)通信をアプリケーション定義して通信させたい
  • その他アプリケーションセットに登録されていないプロトコルやポート番号の通信を許可したい
vsrx_zonebase_fig1

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

1.宛先ポート番号が22のパケットを SSH_DEF としてアプリケーション定義
2.宛先ポート番号が80のパケットを HTTP_DEF としてアプリケーション定義
3.プロトコルがICMPで「icmp echo-request」を PING_DEF としてアプリケーション定義
4.上記1,2で定義したアプリケーションをアプリケーションセット SSH_HTTP_DEF として設定
5. POL1 に4で作成した SSH_HTTP_DEF を拒否する設定
6. POL2 に3で作成した PING_DEF を許可する設定
7. POL3 に全通信が通るように許可する設定

CLIにて入力するコマンド

user01@vSRX-02# set applications application SSH_DEF protocol tcp destination-port 22
user01@vSRX-02# set applications application HTTP_DEF protocol tcp destination-port 80
user01@vSRX-02# set applications application PING_DEF protocol icmp icmp-type echo-request
user01@vSRX-02# set applications application-set SSH_HTTP_DEF application SSH_DEF
user01@vSRX-02# set applications application-set SSH_HTTP_DEF application HTTP_DEF
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy POL1 match source-address any destination-address any application SSH_HTTP_DEF
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy POL1 then deny
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy POL2 match source-address any destination-address any application PING_DEF
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy POL2 then permit
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy POL3 match source-address any destination-address any application any
user01@vSRX-02# set security policies from-zone trust to-zone untrust policy POL3 then permit

注釈

any 」 設定は、全てを示しています。source-address any は全ての送信元IPアドレスを示しています。

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

security {
    policies{
        from-zone trust to-zone untrust {
            policy POL1 {
                match {
                    source-address any;
                    destination-address any;
                    application SSH_HTTP_DEF;
                }
                then {
                    deny;
                }
            }
            policy POL2 {
                match {
                    source-address any;
                    destination-address any;
                    application PING_DEF;
                }
                then {
                    permit;
                }
            }
            policy POL3 {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    permit;
                }
            }
        }
    }
}
applications {
    application SSH_DEF {
        protocol tcp;
        destination-port 22;
    }
    application HTTP_DEF {
        protocol tcp;
        destination-port 80;
    }
    application PING_DEF {
        protocol icmp;
        icmp-type echo-request;
    }
    application-set SSH_HTTP_DEF {
        application SSH_DEF;
        application HTTP_DEF;
    }
}

動作確認結果

以下の検証結果ログから、サーバーインスタンス(192.168.2.12)側ゾーン(Trust)から仮想ルーター(192.168.3.203)側ゾーン(Untrust)へSSHは失敗しており、PINGは成功しておりますので、アプリケーションセットを条件にしたゾーンベースファイアウォールが正しく機能していることが確認できました。

[user01@centsv-02 ~]$ ping 192.168.3.203 -c 5
PING 192.168.3.203 (192.168.3.203) 56(84) bytes of data.
64 bytes from 192.168.3.203: icmp_seq=1 ttl=63 time=2.96 ms
64 bytes from 192.168.3.203: icmp_seq=2 ttl=63 time=0.989 ms
64 bytes from 192.168.3.203: icmp_seq=3 ttl=63 time=1.07 ms
64 bytes from 192.168.3.203: icmp_seq=4 ttl=63 time=1.02 ms
64 bytes from 192.168.3.203: icmp_seq=5 ttl=63 time=0.703 ms

--- 192.168.3.203 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 0.703/1.351/2.965/0.818 ms
[user01@centsv-02 ~]$

[user01@centsv-02 ~]$ ##   SSH 192.168.2.12 -> 192.168.3.203
[user01@centsv-02 ~]$ ssh user01@192.168.3.203

^C
[user01@centsv-02 ~]$

設定したファイアウォールルールに該当したかはshow security policies hit-count などで確認できます。

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           POL1           6
 3       trust            untrust           POL2           5
 4       trust            untrust           POL3           0
 5       untrust          trust             ALL_DENY       0

Number of policy: 5

user01@vSRX-02>

アプリケーションセットを条件にしたゾーンベースファイアウォール設定(UntrustからTrust方向へ許可設定)

サンプル設定のシナリオ

  • UntrustゾーンからTrustゾーンへのゾーンベースファイアウォール設定をしたい
  • SSHやHTTP通信をアプリケーションセットに登録して通信を許可したい
  • PING(ICMP echo request)通信をアプリケーション定義して通信を遮断したい
  • その他アプリケーションセットに登録されていないプロトコルやポート番号の通信を全て遮断したい
vsrx_zonebase_fig2

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

1.宛先ポート番号が22のパケットを SSH_DEF としてアプリケーション定義
2.宛先ポート番号が80のパケットを HTTP_DEF としてアプリケーション定義
3.プロトコルがICMPで「icmp echo-request」を PING_DEF としてアプリケーション定義
4.上記1,2で定義したアプリケーションをアプリケーションセット SSH_HTTP_DEF として設定
5.POL1に4で作成した SSH_HTTP_DEF を許可する設定
6.POL2に3で作成した PING_DEF を遮断する設定
7.POL3に全通信を遮断する設定

CLIにて入力するコマンド

user01@vSRX-02# set applications application SSH_DEF protocol tcp destination-port 22
user01@vSRX-02# set applications application HTTP_DEF protocol tcp destination-port 80
user01@vSRX-02# set applications application PING_DEF protocol icmp icmp-type echo-request
user01@vSRX-02# set applications application-set SSH_HTTP_DEF application SSH_DEF
user01@vSRX-02# set applications application-set SSH_HTTP_DEF application HTTP_DEF
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy POL1 match source-address any destination-address any application SSH_HTTP_DEF
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy POL1 then permit
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy POL2 match source-address any destination-address any application PING_DEF
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy POL2 then deny
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy POL3 match source-address any destination-address any application any
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy POL3 then deny

注釈

any 」 設定は、全てを示しています。source-address any は全ての送信元IPアドレスを示しています。

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

security {
    policies{
        from-zone untrust to-zone trust {
            policy POL1 {
                match {
                    source-address any;
                    destination-address any;
                    application SSH_HTTP_DEF;
                }
                then {
                    permit;
                }
            }
            policy POL2 {
                match {
                    source-address any;
                    destination-address any;
                    application PING_DEF;
                }
                then {
                    deny;
                }
            }
            policy POL3 {
                match {
                    source-address any;
                    destination-address any;
                    application any;
                }
                then {
                    deny;
                }
            }
        }
    }
}
applications {
    application SSH_DEF {
        protocol tcp;
        destination-port 22;
    }
    application HTTP_DEF {
        protocol tcp;
        destination-port 80;
    }
    application PING_DEF {
        protocol icmp;
        icmp-type echo-request;
    }
    application-set SSH_HTTP_DEF {
        application SSH_DEF;
        application HTTP_DEF;
    }
}

動作確認結果

以下の検証結果ログから、サーバーインスタンス(192.168.3.203)側ゾーン(Untrust)からサーバーインスタンス(192.168.2.12)側ゾーン(Trust)へのPINGは失敗しており、SSHは成功しておりますので、アプリケーションセットを条件にしたゾーンベースファイアウォールが正しく機能していることが確認できました。

仮想ルーター(192.168.3.203)側ゾーン(Untrust)からサーバーインスタンス(192.168.2.12)側ゾーン(Trust)へのPING結果

user01@vRouter-03:~$ ping 192.168.2.12 count 5
PING 192.168.2.12 (192.168.2.12) 56(84) bytes of data.

--- 192.168.2.12 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4002ms


 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           default-permit 0
 3       untrust          trust             POL3           0
 4       untrust          trust             POL1           0
 5       untrust          trust             POL2           5

Number of policy: 5

user01@vSRX-02>

仮想ルーター(192.168.3.203)側ゾーン(Untrust)からサーバーインスタンス(192.168.2.12)側ゾーン(Trust)へのSSH結果

user01@vRouter-03:~$ ssh user01@192.168.2.12.
user01@192.168.2.12's password:
Last login: Sun Sep 24 13:33:02 2017 from 10.0.0.254
Thanks for using Official Template (CentOS).

====================================================
* Time Zone *
    Default TimeZone is UTC.

* Stack (Application Set) *
    Default install apps is following.
      - chrony
      - acpid
      - cloud-init

    You can update those apps to latest version with
      #yum update

* To Change this message *
    please edit "/etc/motd".
====================================================
[user01@centsv-02 ~]$


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           default-permit 0
 3       untrust          trust             POL3           0
 4       untrust          trust             POL1           1
 5       untrust          trust             POL2           5

Number of policy: 5

user01@vSRX-02>

NATと併用したステートフルファイアウォール機能の設定

ゾーンベースファイアウォールとNAT機能を利用し、ステートフル機能を有効にした場合のファイアウォール動作について紹介します。

サンプル設定のシナリオ

  • TrustゾーンからUntrustゾーン向けのパケットに対してNATしたい
  • 送信元IPアドレス(192.168.2.202)はge-0/0/2.0で出力インターフェイスのIPアドレス(192.168.3.102)にNAPT変換したい
  • UntrustゾーンからTrustゾーンへの通信は全部遮断したい
vsrx_fwnat_fig1

注釈

設定対象のインターフェイスはデフォルトの論理インターフェイスである「unit 0」を前提としているため、「ge-0/0/2.0」のような記載をしております。

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

1.仮想ルーター(192.168.2.202/32)のIPアドレスをアドレスブックで VR02 として登録
2.TrustゾーンからUntrustゾーンに通信するパケットに対して送信元IPアドレスのNATを設定
3.送信元NATに利用するルールセットを RULE として設定
4.VR02が送信元IPアドレスの時に出力インターフェイスでNAPTする設定を SNAT_RULE1 として設定
5.TrustゾーンからUntrustゾーンへの通信は default-permit ルールで全て許可する設定
6.UntrustゾーンからTrustゾーンへの通信は ALL_DENY ルールで全て遮断する設定

CLIにて入力するコマンド

user01@vSRX-02# set security address-book global address VR02 192.168.2.202/32
user01@vSRX-02# set security nat source rule-set RULE from zone trust
user01@vSRX-02# set security nat source rule-set RULE to zone untrust
user01@vSRX-02# set security nat source rule-set RULE rule SNAT_RULE1 match source-address-name VR02
user01@vSRX-02# set security nat source rule-set RULE rule SNAT_RULE1 then source-nat interface
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy ALL_DENY match source-address any
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy ALL_DENY match destination-address any
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy ALL_DENY match application any
user01@vSRX-02# set security policies from-zone untrust to-zone trust policy ALL_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

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

security {
   address-book {
       global {
           address VR02 192.168.2.202/32;
       }
   }
   nat {
       source {
           rule-set RULE {
               from zone trust;
               to zone untrust;
               rule SNAT_RULE1 {
                   match {
                       source-address-name VR02;
                   }
                   then {
                       source-nat {
                           interface;
                       }
                   }
               }
           }
       }
   }
   policies {
       from-zone trust to-zone untrust {
           policy default-permit {
               match {
                   source-address any;
                   destination-address any;
                   application any;
               }
               then {
                   permit;
               }
           }
       }
       from-zone untrust to-zone trust {
           policy ALL_DENY {
               match {
                   source-address any;
                   destination-address any;
                   application any;
               }
               then {
                   deny;
               }
           }
       }
   }
}

動作確認結果

以下の確認結果ログから、NAT設定とゾーンベースファイアウォール設定を組み合わせた場合にもPINGやSSHで通信ができることを確認しました。

検証構成図のTrustゾーンの仮想ルーター(192.168.2.202)からUntrustゾーンの仮想ルーター(192.168.3.203)宛ての通信(Ping)が成功することが確認できました。

user01@vRouter-02:~$ ping 192.168.3.203 count 5
PING 192.168.3.203 (192.168.3.203) 56(84) bytes of data.
64 bytes from 192.168.3.203: icmp_seq=1 ttl=63 time=2.65 ms
64 bytes from 192.168.3.203: icmp_seq=2 ttl=63 time=1.44 ms
64 bytes from 192.168.3.203: icmp_seq=3 ttl=63 time=1.65 ms
64 bytes from 192.168.3.203: icmp_seq=4 ttl=63 time=1.40 ms
64 bytes from 192.168.3.203: icmp_seq=5 ttl=63 time=1.42 ms

--- 192.168.3.203 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 1.406/1.716/2.657/0.481 ms

Trustゾーンの仮想ルーターからUntrustゾーンの仮想ルーターにSSHを実行しました。ログイン後に接続元を確認するコマンド(show user)で接続者のIPアドレス(192.168.3.102)が表示されており、NAT変換がされていることが確認できました。

user01@vRouter-02:~$ ssh user01@192.168.3.203
Welcome to Brocade Vyatta Network OS

user01@192.168.3.203's password:
Welcome to Brocade Vyatta Network OS
Version:      5.2R4
Description:  Brocade Vyatta Network OS 5600 5.2R4 Standard
Last login: Thu Sep 28 04:10:00 2017 from 192.168.3.102
user01@vRouter-03:~$
user01@vRouter-03:~$ show user
NAME     LINE         TIME             COMMENT
user01     pts/0        2017-09-28 04:12 (192.168.3.102)
user01@vRouter-03:~$