パケットフィルタリングルール全体でステートフル機能を有効化している場合の設定変更

動作確認バージョン:Brocade 5600vRouter Version4.2R1S1

ここでは、Version3.5R6S3 、および Version4.2R1S1 ですでにglobal-state-policyオプションを利用してパケットフィルタリングルール全体でステートフル機能を有効にしている場合に、 Version5.2R4 に移行するための設定例について紹介します。

対象オプション

set security firewall global-state-policy 'tcp'
set security firewall global-state-policy 'udp'
set security firewall global-state-policy 'icmp'

注釈

  • ファイアウォールのパケットフィルタリング機能をステートフルに動作させるための設定をファイアウォール全体で有効にするオプション(global-state-policy)に関する変更内容については Brocade Technical Bulletin をご参照ください。

Version4.2R1S1 以前の動作概要

ここでは、 Version3.5R6S3 、および Version4.2R1S1 でパケットフィルタリングルール全体でステートフル機能を有効にした場合の動作概要を紹介します。

動作概要

  • すべてのパケットフィルタリングルールにステートフル機能を有効にする。
  • インタフェース(dp0s5)にインプットするトラフィックに対して特定のパケットのみ通過するフィルタルールを作成し、適用する。
  • インタフェース(dp0s4)にインプットするすべてのトラフィックを拒否するフィルタルールを作成し、適用する。
  • インタフェース(dp0s5)のインプットフィルタルールで許可され、インタフェース(dp0s4)を通過したパケットの戻りパケットは、インタフェース(dp0s4)のインプットルールによらず動的に許可される。これは通過したインターフェイス毎にsession-tableへ情報が登録され、さらに暗黙の許可フィルタがが存在するためである。

構成図

Fig1

Version5.2R4 の動作概要

ここでは、 Version5.2R4 でパケットフィルタリングルール全体でステートフル機能を有効にした場合の動作概要を紹介します。

動作概要

  • すべてのパケットフィルタリングルールにステートフル機能を有効にする。
  • インタフェース(dp0s5)へインプットするトラフィックに対して特定のパケットのみ通過するフィルタルールを作成し、適用する。
  • インタフェース(dp0s4)からアウトプットするトラフィックを許可するフィルタルールを作成し、適用する。
  • インタフェース(dp0s4)にインプットするすべてのトラフィックを拒否するフィルタルールを作成し、適用する。
  • インタフェース(dp0s5)のインプットルール、およびインタフェース(dp0s4)のアウトプットルールで許可されファイアウォールを通過したパケットの戻りパケットは、インタフェース(dp0s4)のインプットルールによらず動的に許可される。これは通過したインターフェイス毎にsession-tableへ情報が登録されているためである。

構成図

Fig2

設定変更例

ここでは、 Version5.2R4 に移行するための設定変更例を紹介します。

サンプル設定のシナリオ

  • 宛先192.168.3.3あてのFTP通信について許可して転送したい
  • インタフェース(dp0s5)にインプットするトラフィックに対して有効化したい
  • それ以外にインタフェース(dp0s5)にインプットする通信については遮断したい
  • インタフェース(dp0s6)にインプットする通信については遮断したい
  • すべてのパケットフィルタリングルールにステートフル機能を有効にしたい

構成図

Fig3

設定変更前のCLIにて入力するコンフィグ

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'

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

  1. すべての通信を許可する設定の名前 all_accept
  2. すべてのパケットを許可するルールを10として設定
  3. ルール10には個別にステートフルファイアウォール機能を有効化
  4. インタフェース(dp0s6)にてアウトプット方向へ適用

注釈

設定変更時の制限事項

  • NAT利用時は、ルールにNAT変換の対象となるアドレスが指定されていないか注意して下さい。設定されている場合、OUT側では変換後のアドレスに修正する必要があります。そのため、OUT側用のルールを別途作成し、NAT変換後のルールでOUT側へ適用する必要があります。
  • プロトコルを指定していないルールが存在する場合は、global-state-policyで設定したプロトコルを該当ルール上で指定するか、state enableを設定する必要があります。設定をしていないルールがある場合は、そのルールに該当する通信はacceptで設定されていても通信できません。
  • OUT側ルールを全て許可するルールを作成する場合はdefault-actionでacceptのみで設定せず、個別ルールでglobal-state-policyで指定したprotocol(icmp,tcp,udp)を設定する、もしくはstate enableで許可ルールを作成する必要があります。下記に設定例を記載します。
  • 全て許可するルールをOUT側に適用した場合、本来不要な通信(VRRPのアドバタイズ等)がsession-tableおよびsession-logにのることがあります

CLIにて入力するコマンド

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'

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

interfaces {
       dataplane dp0s4 {
               address 192.168.1.11/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
               }
       }
       dataplane dp0s7
       loopback lo
}
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

ubuntu@ubuntu2:~$ 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 5039ms


#192.168.3.3あてのFTP -> OK

ubuntu@ubuntu2:~$ ftp 192.168.3.3
Connected to 192.168.3.3.
220 ProFTPD 1.3.5rc3 Server (Debian) [::ffff:192.168.3.3]
Name (192.168.3.3:ubuntu):
331 Password required for ubuntu
Password:
230 User ubuntu logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,3,3,174,193).
150 Opening ASCII mode data connection for file list
-rw-rw-r--   1 ubuntu   ubuntu         13 May  9 06:10 index.html
drwxrwxr-x   2 ubuntu   ubuntu       4096 May  9 06:09 tool
226 Transfer complete
ftp> bin
200 Type set to I
ftp> get index.html
local: index.html remote: index.html
200 PORT command successful
150 Opening BINARY mode data connection for index.html (13 bytes)
226 Transfer complete
13 bytes received in 0.00 secs (38.2 kB/s)
ftp>
ftp> passive
Passive mode on.
ftp>
ftp>
ftp> get index.html
local: index.html remote: index.html
227 Entering Passive Mode (192,168,3,3,143,136).
150 Opening BINARY mode data connection for index.html (13 bytes)
226 Transfer complete
13 bytes received in 0.00 secs (81.9 kB/s)