パケットフィルタリング機能をステートフルに動作させる設定¶
動作確認バージョン: | Brocade 5600vRouter Version4.2R1S1 |
---|
ここでは、パケットリフィルタリング機能をステートフルに動作させた場合について紹介します。
ステートフルファイアウォール機能とは
Brocade 5600vRouter では、パケットフィルタリング機能をステートフルに利用することでステートフルファイアウォール機能として動作可能です。
ステートフル機能を有効にすることで、ファイアウォールルールが設定されたインタフェースを通過する「行き」通信の状態を把握しますので、「戻り」の通信に対してファイアウォールが自動的に判断して通過させます。
この機能によって、戻りの通信に対して許可するルール設定が不要になります。
パケットフィルタリング機能として、デフォルトはステートレスで動作します。
注釈
ステートフル機能の有効化については、個別のルールごとに有効化する方法とファイアウォール全体で有効にする方法があります。 動作確認済み設定例では、それぞれの設定事例について紹介します。
Version5.2R4 ではファイアウォールのパケットフィルタリング機能をステートフルに動作させるための設定をファイアウォール全体で有効にするオプション(global-state-policy)の動作仕様が Version3.5R6S3 、および Version4.2R1S1 から変更されています。 変更内容については Brocade Technical Bulletin(Version5.2R4) 、または 動作確認済設定例 をご参照ください。
個別のパケットフィルタリングルールに対してステートフル機能の有効化¶
ここでは、パケットフィルタリングルール毎に個別にステートフル機能を有効にするときの設定例を紹介します。
サンプル設定のシナリオ
- 宛先192.168.3.3あてのICMP通信(Ping)だけ許可して転送したい
- インタフェース(dp0s5)にインプットするトラフィックに対して有効化したい
- それ以外にインタフェース(dp0s5)にインプットする通信については遮断したい
- インタフェース(dp0s6)にインプットする通信については遮断したい
- 必要なパケットフィルタリングルールにだけステートフル機能を有効にしたい
構成図
シナリオにおける設定のながれ
- パケットフィルタリング設定の名前 test_rule
- 宛先192.168.3.3に対してICMPパケットを許可するルールを10として設定
- ルール10には個別にステートフルファイアウォール機能を有効化
- それ以外の192.168.3.3宛先とするパケットについて拒否する設定
- インタフェース(dp0s5)にてインプット方向へ適用
- すべての通信を拒否する設定の名前 all_drop
- インタフェース(dp0s6)にてインプット方向へ適用
- すべての通信を許可する設定の名前 all_accept
- すべてのパケットを許可するルールを10として設定
- ルール10には、個別のステートフルファイアウォール機能を有効化
- インタフェース(dp0s6)にてアウトプット方向へ適用
注釈
パケットフィルタリングルールにステートフル機能を個別に適用する時の注意
最初のコネクションを確立する通信が各インタフェースで、 ステートフル機能が有効になっているパケットフィルタリングルールに合致し 通過する必要があります。今回のシナリオでは、dp0s5にインプットしdp0s6から アウトプットするため、各インタフェースのパケットフィルタリングルールで ステートフル機能が有効になっています。
CLIにて入力するコマンド
set security firewall name test_rule default-action 'drop'
set security firewall name test_rule rule 10 action 'accept'
set security firewall name test_rule rule 10 destination address '192.168.3.3'
set security firewall name test_rule rule 10 protocol 'icmp'
set security firewall name test_rule rule 10 state 'enable'
set security firewall name all_drop default-action 'drop'
set security firewall name all_accept default-action 'accept'
set security firewall name all_accept rule 10 action 'accept'
set security firewall name all_accept rule 10 state 'enable'
set interface dataplane dp0s5 firewall in 'test_rule'
set interface dataplane dp0s6 firewall in 'all_drop'
set interface dataplane dp0s6 firewall out 'all_accept'
正しく設定が完了したときのコンフィグレーションは次のとおりです。
interfaces {
dataplane dp0s4 {
address 192.168.1.50/24
}
dataplane dp0s5 {
address 192.168.2.50/24
firewall {
in test_rule
}
}
dataplane dp0s6 {
address 192.168.3.5/24
firewall {
in all_drop
out all_accept
}
}
}
security {
firewall {
name all_accept {
default-action accept
rule 10 {
action accept
state enable
}
name all_drop {
default-action drop
}
name test_rule {
default-action drop
rule 10 {
action accept
destination {
address 192.168.3.3
}
protocol icmp
state enable
}
}
}
}
動作確認結果
以下の検証結果ログから、検証構成図にあるサーバ(192.168.2.6)から192.168.3.3 あてのPingが成功しました。
インタフェースdp0s6ではインプットするすべての通信を拒否していますが、Pingの「戻り」をファイアウォールが判断して通過させていますので
個別設定のステートフル機能が動作していることが確認できました。
#192.168.3.3あてのping -> OK
test@ubu01:~$ ping 192.168.3.3
PING 192.168.3.3 (192.168.3.3) 56(84) bytes of data.
64 bytes from 192.168.3.3: icmp_seq=1 ttl=63 time=3.59 ms
64 bytes from 192.168.3.3: icmp_seq=2 ttl=63 time=1.46 ms
64 bytes from 192.168.3.3: icmp_seq=3 ttl=63 time=1.45 ms
64 bytes from 192.168.3.3: icmp_seq=4 ttl=63 time=1.64 ms
64 bytes from 192.168.3.3: icmp_seq=5 ttl=63 time=1.59 ms
^C
--- 192.168.3.3 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 1.455/1.948/3.591/0.825 ms
#192.168.3.3 あての SSH通信 -> NG
test@ubu01:~$ ssh -l user01 192.168.3.3
^C
パケットフィルタリングルール全体へのステートフル機能の有効化¶
ここでは、パケットフィルタリングルール全体でステートフル機能を有効にした場合の設定例を紹介します。
サンプル設定のシナリオ
- 宛先192.168.3.3あてのFTP通信については許可して転送したい
- インタフェース(dp0s5)にインプットするトラフィックに対して有効化したい
- それ以外にインタフェース(dp0s5)にインプットする通信については遮断したい
- インタフェース(dp0s6)にインプットする通信については遮断したい
- すべてのパケットフィルタリングルールにステートフル機能を有効にしたい
構成図
シナリオにおける設定のながれ
- ステートフルファイアウォール機能をTCP通信を対象に有効化
- パケットフィルタリング設定の名前 test_rule
- 宛先IPが192.168.3.3でTCPポート番号21のパケットを許可するルールを10として設定
- 192.168.3.3ポート番号21以外を宛先とするパケットについて拒否する設定
- インタフェース(dp0s5)にてインプット方向へ適用
- すべての通信を拒否する設定の名前 all_drop
- インタフェース(dp0s6)にてインプット方向へ適用
- (Version5.2R4 のみ) すべての通信を許可する設定の名前 all_accept
- (Version5.2R4 のみ) すべてのパケットを許可するルールを10として設定
- (Version5.2R4 のみ) ルール10には個別にステートフルファイアウォール機能を有効化
- (Version5.2R4 のみ) インタフェース(dp0s6)にてアウトプット方向へ適用
CLIにて入力するコマンド
Version4.2R1S1 の場合
set security firewall global-state-policy 'tcp'
set security firewall name test_rule default-action 'drop'
set security firewall name test_rule rule 10 action 'accept'
set security firewall name test_rule rule 10 destination address '192.168.3.3'
set security firewall name test_rule rule 10 destination port '21'
set security firewall name test_rule rule 10 protocol 'tcp'
set interfaces dataplane dp0s5 firewall in 'test_rule'
set security firewall name all_drop default-action 'drop'
set interfaces dataplane dp0s6 firewall in 'all_drop'
Version5.2R4 の場合
set security firewall global-state-policy 'tcp'
set security firewall name test_rule default-action 'drop'
set security firewall name test_rule rule 10 action 'accept'
set security firewall name test_rule rule 10 destination address '192.168.3.3'
set security firewall name test_rule rule 10 destination port '21'
set security firewall name test_rule rule 10 protocol 'tcp'
set interfaces dataplane dp0s5 firewall in 'test_rule'
set security firewall name all_drop default-action 'drop'
set interfaces dataplane dp0s6 firewall in 'all_drop'
set security firewall name all_accept default-action 'accept'
set security firewall name all_accept rule 10 action 'accept'
set security firewall name all_accept rule 10 state 'enable'
set interfaces dataplane dp0s6 firewall out 'all_accept'
正しく設定が完了したときのコンフィグレーションは次のとおりです。
Version4.2R1S1 の場合
interfaces {
dataplane dp0s4 {
address 192.168.1.50/24
}
dataplane dp0s5 {
address 192.168.2.50/24
firewall {
in test_rule
}
}
dataplane dp0s6 {
address 192.168.3.5/24
firewall {
in all_drop
}
}
}
security {
firewall {
global-state-policy {
tcp
}
name all_drop {
default-action drop
}
name test_rule {
default-action drop
rule 10 {
action accept
destination {
address 192.168.3.3
port 21
}
protocol tcp
}
}
}
}
Version5.2R4 の場合
interfaces {
dataplane dp0s4 {
address 192.168.1.50/24
}
dataplane dp0s5 {
address 192.168.2.50/24
firewall {
in test_rule
}
}
dataplane dp0s6 {
address 192.168.3.5/24
firewall {
in all_drop
out all_accept |fwversion5|
}
}
}
security {
firewall {
global-state-policy {
tcp
}
name all_accept {
default-action accept
rule 10 {
action accept
state enable
}
}
name all_drop {
default-action drop
}
name test_rule {
default-action drop
rule 10 {
action accept
destination {
address 192.168.3.3
port 21
}
protocol tcp
}
}
}
}
動作確認結果
以下の検証結果ログから、検証構成図にあるサーバ(192.168.2.6)から192.168.3.3 ポート番号21あてのFTP通信が可能であることが確認できました。
インタフェースdp0s6ではインプットするすべての通信を拒否していますがFTPの認証ならびにデータ転送が成功していますので
ステートフル機能が動作していることが確認できました。
#192.168.3.3あてのping -> NG
test@ubu01:~$ ping 192.168.3.3
PING 192.168.3.3 (192.168.3.3) 56(84) bytes of data.
^C
--- 192.168.3.3 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5038ms
#192.168.3.3あてのFTP -> OK
test@ubu01:~$ ftp 192.168.3.3
Connected to 192.168.3.3.
220 (vsFTPd 3.0.3)
Name (192.168.3.3:test): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxrwxrwx 2 1000 1000 4096 Sep 10 2015 aaa
-rw-r--r-- 1 1000 1000 8980 Aug 31 2015 examples.desktop
-rw-rw-r-- 1 1000 1000 612 Dec 02 2015 index.html
-rw-rw-r-- 1 1000 1000 31272 Jun 13 10:48 ping.txt
drwxrwxr-x 2 1000 1000 4096 May 30 01:46 tmp
drwxr-x--x 8 1000 1000 4096 Jul 26 06:29 vsftpd-3.0.3
226 Directory send OK.
ftp>
ftp>
ftp> get index.html
local: index.html remote: index.html
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for index.html (612 bytes).
226 Transfer complete.
612 bytes received in 0.00 secs (4.4216 MB/s)
ftp> passive
Passive mode on.
ftp>
ftp> get index.html
local: index.html remote: index.html
227 Entering Passive Mode (192,168,3,3,104,143).
150 Opening BINARY mode data connection for index.html (612 bytes).
226 Transfer complete.
612 bytes received in 0.00 secs (6.0797 MB/s)