動的フィルタ
動的フィルタ
- 処理内容にパスを指定したフィルタルールでのみ動作します。
- 同じIDを持つ、INとOUTの二つのパスルール(フィルタステート)を生成します。
設定変更時の注意
"filter modify" および "filter6 modify" コマンドによる設定変更は、生成済みのフィルタステートには反映されません。 必要に応じてステートをクリアしてください。
- clear filter state(IPv4の場合)
- clear filter6 state(IPv6の場合)
- 動的フィルタステートの上限(IPv4,IPv6それぞれ)
-
機種 上限 SEIL/B1 16384 SEIL/X1 16384 SEIL/X2 32768 SEIL/x86 Fuji 65536 SEIL BPV4 65536
- 動的フィルタステートは、動的フィルタ機能および、アプリケーションゲートウェイ機能が生成します。
- filterおよびfilter6コマンドの設定行数はフィルタステートの数に含みません。
生成条件
次の条件を満たす場合にフィルタステートを生成します。
- 生成済みの動的フィルタステートの数が上限に達していないこと
- "state enable" であるIPパケットフィルタ設定行の、以下の条件全てにパケットが適合すること
- interface
- direction
- protocol
- icmp-type(ICMP あるいは ICMPv6 の場合のみ)
- src
- srcport(TCP あるいは UDP の場合のみ)
- dst
- dstport(TCP あるいは UDP の場合のみ)
- ipopts(IPv4の場合のみ)
- exthdr(IPv6の場合のみ)
生成されたフィルタステートのprotocolパラメータについて
生成元となるフィルタ設定のprotocolパラメータがanyやtcpudpであっても、ルールに一致したパケットがTCPであるならば、 生成されたフィルタステートのprotocolパラメータはTCPとなります。
例外対応
- TCPおよびUDPに一致するフィルタステートは、当該ステートに関係する次のパケットをパスします。
- ICMP エラーパケット(IPv4の場合)
- ICMPv6 エラーパケット(IPv4の場合)
- TCP 21番ポート(FTP 制御ポート)を含むフィルタルールにFTPパケットが一致すると、FTPのモードによってデータポート(20番ポートまたは任意ポート)に対応するステートも生成します。
フィルタステートの削除条件
- フィルタステートは生成時に設定されたTTL(有効時間)値が0になると削除されます。
- "clear filter state"(IPv4)または"clear filter6 state"(IPv6)コマンドが実行されると、該当プロトコルの全てのフィルタステートが削除されます。
フィルタステートのTTL
- フィルタステートのTTLは、ステート生成時に初期値となり、ステートが存在する間は1秒経過ごとに1づつ減算されます。
- 当該フィルタステートに一致するパケットをパスすると、TTLは初期値に戻されます。
- 不要となったフィルタステートの削除を早めるため、条件によってTTL値を小さな値に変更します。
- TCPの場合において、当該セッションに関係するTCP FINまたはTCP RSTをパスしたならば、当該TTLの初期値を5秒に変更します。
- IPv4の場合において、当該セッションに関係するICMPエラーパケットをパスしたならば、当該TTLの初期値を5秒に変更します。
- IPv6の場合において、当該セッションに関係するICMPv6エラーパケットをパスしたならば、当該TTLの初期値を5秒に変更します。
TTLの初期値は、フィルタステート生成のトリガーとなったパットの種類によって既定値が異なります。
パケットの種類 | "state-ttl normal" の場合 | state-ttl に数値を指定した場合 |
---|---|---|
ICMP の Echo Request | 10秒 | 指定した秒数 |
ICMPv6 の Echo Request | 10秒 | 同上 |
ICMPv6 の Neighbor Solicitation | 10秒 | 同上 |
ICMPv6 の Router Solicitation | 10秒 | 同上 |
UDP 53 番ポート(domain) | 15秒 | 同上 |
UDP 123 番ポート(ntp) | 15秒 | 同上 |
上記以外のUDP | 180秒 | 同上 |
TCP | 180秒 | 同上 |
上記以外 | 180秒 | 同上 |
フィルタルールの評価順序について
動的に生成されたパスルールを先に評価し、その次にパケットフィルタ設定のルールを順番に評価します。
フィルタステートの参照
IPパケットフィルタの設定と、それに対応して生成されるフィルタステートは次のようになります。
フィルタステートはIDで管理します
IDは、"show status filter" コマンドの表示上では、生成元となったIPパケットフィルタ設定名と、 ステート生成ごとに割当られた16 進数8 桁の数字列がハイフン("-")で繋げられており、 対となるINとOUTのステートでは同じ値になります。 また、TCP 21番ポートのステートに対応して生成されたTCP 20番ポートのステートには "ftpdata" という文字列が付加されます。
フィルタステートと通信セッション
- TCP あるいは UDP の場合
-
- src,srcport,dst,dstportが一致するパケットを生存中の同じセッションからさがします。一致した場合同じセッションに関係すると判断します。
- directionが逆向きの場合 src,srcport と dst,dstport を逆にして同じセッションに関係するかを判断します。
- IPv4 の場合 ICMP エラーメッセージを IPv6 の場合 ICMPv6 エラーメッセージを監視しています(icmp port unreach errorなど)
- ICMP あるいは ICMPv6 の場合
-
- src,dst,icmp-type が一致するならば同じセッションに関係すると判断します。
- direction が逆向きの場合、src,dstのアドレスを逆にして一致して、対応する icmp-type であるならば、同じセッションに関係すると判断します。
- Echo Request と Echo Reply
- Neigbor Solicitation と Neighbor Advertisement
- Router Solicitation と Router Advertisement
- 上記以外の場合
-
- src,dst が一致するパケットを同じセッションに関係すると判断します。
- direction が逆向きの場合 src,dst のアドレスを逆にして同じセッションに関係するか判断します。
- 補足
-
動的に生成されたTCPのフィルタステートのTTLと、TCPセッションの寿命は異なります。 例えばTCPセッションを開始し、フィルタステートが生成されたとします。生成後すぐに "show status filter" コマンドを実行すると、 SYNフラグが立ったパケットをいくつパスしたかを示す計数値(S=)が正の数になっていることがわかります。 その後TTLの残時間、当該フィルタステートに一致するTCPの通信が無かった場合、TCPセッションの状態によらずフィルタステートは削除され "show status filter" の結果にも表示されなくなります。
注: このとき、フィルタステートは削除されますが、TCPセッションを切断させる動作を行うわけではありません。続いて、既にセッションが確立しているTCPについて、生成元のパケットフィルタのルールに一致する方向で通信を再開すると、 フィルタステートを改めて生成します。先のステートと同様のパスルールとなりますが、管理上のIDは新規の割り当てとなり、統計情報も初期値となります。