ゾーンベースファイアウォール設定(IPアドレスフィルタリング)¶
動作確認バージョン: | vSRX Version22.4R1 |
---|
ここでは、IPアドレスを利用したゾーンベースファイアウォール設定を紹介します。
注釈
- 利用開始時に trust と untrust という名前のゾーンが定義されています。任意の名前で作成することも可能です。
- ファイアウォール(vSRX) で利用するインターフェイスは、管理ポート(fxp0)を除きゾーンに所属している必要があります。
- 複数のフィルタリングルールを設定した場合、コンフィグレーション上に表示された順序で適用されます。
アドレスセットを拒否する条件にしたゾーンベースファイアウォール設定¶
アドレスブックに含まれるIPアドレスからアドレスセットを設定します。アドレスセットに含まれないIPアドレスからの通信(パケット)を許可して、アドレスセットに含まれるIPアドレスを送信元とする通信(パケット)に関しては、ゾーンベースファイアウォールで遮断する設定を行います。
サンプル設定のシナリオ
- TrustゾーンからUntrustゾーンへのゾーンベースファイアウォール設定をしたい
- アドレスセットに登録されたIPアドレスからの通信はすべて遮断したい
- アドレスセットに登録されていないIPアドレスからは通信させたい
シナリオにおける設定のながれ
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アドレスからは遮断したい
シナリオにおける設定のながれ
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)通信をアプリケーション定義して通信させたい
- その他アプリケーションセットに登録されていないプロトコルやポート番号の通信を許可したい
シナリオにおける設定のながれ
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)通信をアプリケーション定義して通信を遮断したい
- その他アプリケーションセットに登録されていないプロトコルやポート番号の通信を全て遮断したい
シナリオにおける設定のながれ
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ゾーンへの通信は全部遮断したい
注釈
設定対象のインターフェイスはデフォルトの論理インターフェイスである「unit 0」を前提としているため、「ge-0/0/2.0」のような記載をしております。
シナリオにおける設定のながれ
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:~$