静的フィルタリングと動的フィルタリングの違い
ここでは、静的フィルタリングと動的フィルタリングの違いについて説明して行きます。
例えば、LAN側のPCとWebサーバとの間にフィルタリングを行うファイアウォールを置く場合のフィルタリングテーブルの内容を静的フィルタリングと動的フィルタリングの場合、どのように定義されるのかを見ていきます。
ファイアウォールの内側をPCが存在するセグメントし、外側をWebサーバが存在するセグメントとし、「内側」と「外側」という言葉を使って説明していきます。
静的フィルタリングの場合
Webサーバにアクセスするパケットだけ通すようにパケットの行きと戻りの条件をフィルタリングテーブルに登録します。

フィルタリングテーブルの内容は、次の通りです。
●フィルタリングテーブル
番号 | 向き | プロトコル | 送信元 IPアドレス | 宛先 IPアドレス | 送信元 ポート番号 | 宛先 ポート番号 | 処理 |
① | →(内→外) | TCP | 192.168.1.* | *.*.*.* | * | 80 | 通過 |
② | ←(外→内) | TCP | * | 192.168.1.* | 80 | * | 通過 |
③ | * | * | * | * | * | * | 遮断 |
どの内部のPCが、どの外部のWebサーバと接続するのかは、事前に分かりません。
そのため、条件②では、どの内部PCが、どの外部のWebサーバと通信するのか分からないため、送信元のWebサーバのIPアドレスを「*.*.*.*」とし、宛先IPアドレスを「192.168.1.*」とし、内部のPC全てを宛先として指定することとなります。
また、宛先ポート番号も内部PCがどのポート番号を使って通信するのかが、予測できないため、全てのポートポート番号(1024以上のポート番号)を指定しておく必要があります。
このように、静的フィルタリングでは、かなり広い範囲を指定して、ファイアウォールに穴を開けておかなければならないので、想定外のパケットを通過させてしまうリスクが高くなってしまいます。
動的フィルタリングの場合
動的フィルタリングは、基本的な仕組みは、静的フィルタリングと同じです。フィルタリングテーブルに定義された条件に従って、パケットを通過させるのか、遮断させるのかを判断しています。
それでは、どこが静的フィルタリングと違うのかですが、動的フィルタリングの場合は、フィルタリングの条件が動的に変化してゆくところが違います。
動的フィルタリングでは、必要に応じて、フィルタリングテーブルにパケットを通過させるための条件が追加されたり、必要でなくなれば削除されます。
それでは、フィルタリングテーブルが、どのように変化してゆくのかを見ていきます。
1.通信開始前のフィルタリングテーブル
通信を開始する前には、事前に、内部からのWebアクセスだけを通過させる条件をフィルタリングテーブルに定義しておきます。

●フィルタリングテーブル
番号 | 向き | プロトコル | 送信元 IPアドレス | 宛先 IPアドレス | 送信元 ポート番号 | 宛先 ポート番号 | 処理 |
① | →(内→外) | TCP | 192.168.1.* | *.*.*.* | * | 80 | 通過 |
② | * | * | * | * | * | * | 遮断 |
この時、外側から内側への穴は、まだなく、まだ閉じた状態です。
2.通信開始時のフィルタリングテーブル
内部のPCがWebサーバへの通信を開始すると、ファイアウォールが、Webサーバへのアクセスを検知します。これは、事前に定義しておいた内部のPCからWebサーバへの通信を通過させる条件に一致するためです。この条件が、トリガとなり、戻りのパケットのために条件がフィルタリングテーブルに追加されます。

●フィルタリングテーブル
番号 | 向き | プロトコル | 送信元 IPアドレス |
宛先 IPアドレス |
送信元 ポート番号 |
宛先 ポート番号 |
処理 |
① | →(内→外) | TCP | 192.168.1.* | *.*.*.* | * | 80 | 通過 |
追加⇒② | ←(外→内) | TCP | 10.0.0.1 | 192.168.1.1 | 80 | 1024 | 通過 |
③ | * | * | * | * | * | * | 遮断 |
この時、注目して欲しいのは、追加される条件です。動的フィルタリングによって作られる条件の方が、静的フィルタリングで定義する条件よりも厳密な条件が設定されると言うことです。
送信元のIPアドレスが、「10.0.0.1」、宛先IPアドレスが、「192.168.1.1」、宛先ポート番号が「1024」となっており、静的フィルタリングの条件よりも厳密な条件になっています。
このように、動的フィルタリングでは、条件を動的に作成するため、ファイアウォールに開ける穴がピンポイントで小さくなるので、想定外のパケットを通過させてしまうリスクが低くなります。
3.通信時のフィルタリングテーブル
Webサーバからの通信は、追加された条件②に一致するため、ファイアウォールを通過します。

●フィルタリングテーブル
番号 | 向き | プロトコル | 送信元 IPアドレス |
宛先 IPアドレス |
送信元 ポート番号 |
宛先 ポート番号 |
処理 |
① | →(内→外) | TCP | 192.168.1.* | *.*.*.* | * | 80 | 通過 |
② | ←(外→内) | TCP | 10.0.0.1 | 192.168.1.1 | 80 | 1024 | 通過 |
③ | * | * | * | * | * | * | 遮断 |
4.通信終了時
Webサーバからの通信がなくなると条件②を削除して、外側のWebサーバから内側のPCへ穴を閉じます。

●フィルタリングテーブル
番号 | 向き | プロトコル | 送信元 IPアドレス |
宛先 IPアドレス |
送信元 ポート番号 |
宛先 ポート番号 |
処理 |
① | →(内→外) | TCP | 192.168.1.* | *.*.*.* | * | 80 | 通過 |
削除 |
|||||||
③ | * | * | * | * | * | * | 遮断 |
このように、動的フィルタリングでは、ファイアウォールに開ける穴がピンポイントで小さくて済み、、必要に応じで穴を開けたり閉じたりするので、想定外のパケットを通過させてしまうリスクが低くなります。
ここまでで、動的フィルタリングのメリットを挙げて説明してきましたが、デメリットもあります。
ピンポイントでパケットを通す穴を動的に開けてゆくため、通信の種類や内部の端末が多くなると動的に追加される条件が多くなりフィルタリングテーブルが大きくなってしまいます。そのため、フィルタリングテーブルの管理や条件のチェックに負荷がかかります。