動的フィルタを定義するコマンド

動的フィルタは、通すべきコネクションの定義を行います。動的フィルタを定義するコマンドは、以下の通りです。

<第1書式>
# ip filter dynamic dyn_filter_num srcaddr dstaddr protocol [option ...]

<第2書式>
# ip filter dynamic dyn_filter_num srcaddr dstaddr filter filter_list [in filter_list] [out filter_list] [option...]

【設定値及び初期値】

●dyn_filter_num
設定値 : 動的フィルタ番号 (1..21474836)

●srcaddr
設定値 : 始点 IP アドレス

●dstaddr
設定値 : 終点 IP アドレス

●protocol
設定値 : プロトコルのニーモニック
tcp/udp/ftp/tftp/domain/www/smtp/pop3/telnet/netmeeting

Rev.10.01 以降ではさらに、以下が設定できます

echo/discard/daytime/chargen/ftp/ssh/telnet/smtp/time/whois/dns/domain/dhcps/
dhcpc/tftp/gopher/finger/http/www/pop3/sunrpc/ident/nntp/ntp/ms-rpc/
netbios_ns/netbios_dgm/netbios_ssn/imap/snmp/snmptrap/bgp/imap3/ldap/
https/ms-ds/ike/rlogin/rwho/rsh/syslog/printer/rip/ripng/
dhcpv6c/dhcpv6s/ms-sql/netmeeting/radius/l2tp/pptp/nfs/msblast/ipsec-nat-t/sip/
ping/ping6/tcp/udp

●filter_list
設定値 : ip filter コマンドで登録されたフィルタ番号のリスト

●option
設定値 :
 ◆syslog=switch

設定値説明
onコネクションの通信履歴をSYSLOGに残す。
offコネクションの通信履歴をSYSLOGに残さない。

初期値 : syslog=on

 ◆timeout=time

設定値説明
timeデータが流れなくなったときにコネクション情報を解放するまでの秒数

初期値 : syslog=on

【説明】
 第1書式は、事前にルーターに登録されているアプリケーション名を指定します。この指定は、複雑ではありません。

 第2書式は、ユーザがアクセス制御のルールを記述してゆきます。キーワードのfilter、in、outの後にフィルタ番号を指定します。

 filter キーワードの後に指定したフィルタ番号がトリガをを検出するフィルタになります。inキーワードは、トリガの方向に対して逆方向のアクセスを制御し、outキーワードは動的フィルタと順方向のアクセスを制御します。

 プロトコルとしてtcpやudpを指定した場合には、アプリケーションに固有な処理が行われません。固有の振る舞いを行う登録されたアプリケーションを扱う必要がある場合には、tcpやudpよりも前に記述する必要があります。

コマンドの使用例

具体的に例を挙げると次のようになります。

 動的フィルタは、通過させるコネクションを定義します。ここでは、簡単に定義できる第1書式の使用例を紹介します。

# ip filter dynamic 1 * * ftp

 これは、FTPが使用するコネクションを通過させる定義です。dynamicの後の「1」は動的フィルタを識別する番号となります。

 登録されたアプリケーションの場合、「ftp」の指定だけで、FTPが使用するデータ転送用のコネクションも自動的に通過させることができます。

送信元の端末を特定したい場合は、次のように定義します。

# ip filter dynamic 1 192.168.1.0/28 * ftp

さらに、接続先のFTPサーバを特定したい場合には、次のように指定します。

# ip filter dynamic 1 192.168.1.0/28 200.200.200.200 ftp

動的フィルタリングの適用

動的フィルタを適用するには「ip interface secure filter」コマンドで、動的フィルタ番号を指定します。

コマンドの詳細は下記の通りです。

# ip interface secure filter direction [filter_list...] [dynamic filter_list...]

【設定値及び初期値】

●interface
設定値 : LAN インタフェース名、WAN インタフェース名、LOOPBACK インタフェース名、NULL インタフェース名、ブリッジインタフェース名

●direction
設定値 :

設定値説明
in受信したパケットのフィルタリング
out送信するパケットのフィルタリング

●filter_list
設定値 : 空白で区切られたフィルタ番号の並び

●set_name
設定値 : フィルタセットの名前を表す文字列

●dynamic
設定値 : キーワード後に動的フィルタの番号を記述する。
※dyanamicキーワードに関して細かな説明がマニュアルに記述されていない。(このコンテンツを作成時点)

【説明】
 ip filterコマンドによるパケットのフィルタを組み合わせて、適用する動的フィルタ番号で指定します。指定した番号のフィルタが順番に適用され、パケットに一致するフィルタが見つかれば、そのフィルタにより通過/廃棄を決定し、それ以降のフィルタは調べられません。全てのフィルタに一致しないパケットは廃棄されます。

例えば、以下のように設定します。

# ip filter dynamic 1 * * ftp
# ip lan1 secure filter out dynamic 1

 動的フィルタをLAN1インタフェースに適用します。「out」は、ドアがインタフェースの外側に向かって開くことを指定します。ドアを内向きに開く場合には「in」を指定します。

静的フィルタと動的フィルタの両方を適用する場合は、以下のように指定します。

# ip lan1 secure filter in 1 dynamic 2

複数の静的フィルタと複数の動的フィルタを同時に適用することもできます。

静的フィルタ「1~3」と動的フィルタ「4~6」を適用するには、以下のように指定します。

# ip lan1 secure filter in 1 2 3 dynamic 4 5 6

 動的フィルタのみを指定することもできますが、注意が必要です。動的フィルタは、通過するパケットを許可するフィルタとなるため、パケットの通過を遮断する静的フィルタを定義しない場合は、パケットが全く破棄されないことになります。