Part3では,ここまで見てきた静的フィルタリング方式をさらに発展させたフィルタリング方式に迫る。それは,動的フィルタリングと呼ばれる方式である。Part2までで見てきた静的フィルタリングと何が違っていて,どんなメリットがあるか詳しく見ていこう。
実は,静的フィルタリングには二つの弱点がある。一つは,通信の行き帰りの関係が管理できないこと。例えば,Webアクセスを許可したとき,外向き(行き)のパケットが流れていないのに,内向き(戻り)のパケットを通過させてしまったりする(図1)。
もう一つの弱点は,パケットを通すルールを設定すると,ずっと開きっぱなしになることだ。このため,通信のたびに利用するポート番号が変わるアプリケーションを通すには,利用される可能性があるすべてのポート番号をあらかじめ開けておくようにルールを作っておかなければならない。例えば,あて先ポート番号が5000~7000番ならすべて通すといったフィルタリング・テーブルを作ることになる。
セキュリティを確保するには,通すパケットはできるだけ限定したいのに,それができなくなるのである。
大半の機器が動的に対応している
こうした弱点を解消するのが,動的フィルタリングである。静的フィルタリングのしくみに加えて,通信の状況などに応じて,フィルタリング・テーブルの内容を自動で書き換える手法だ。これにより,まったく同じパケットでも状況に応じて通したり,遮断したりできるようになる。
動的フィルタリングはかつて,企業向けのファイアウォールなど限られた装置しか対応していなかった。しかし最近では,ブロードバンド・ルーターやファイアウォールのほとんどが対応している。WindowsXPが標準で備えるパーソナル・ファイアウォール機能にも搭載されている。しかも使うのは簡単で,ユーザーはただ「Webアクセス 動的フィルタ:ON」という項目をチェックするだけだったり,何もしなくても自動的に有効になったりする(図2)。
最初は内向きすべてを遮断
動的フィルタリングもパケット・フィルタリングの発展形である以上,フィルタリングを行う基本的な枠組みは同じである。大もととなるポリシーを決め,これを基にフィルタリング・テーブルを作る。そして,このフィルタリング・テーブルを使ってパケットを一つひとつ通過させたり遮断する。
Webアクセスだけを通過させる場合なら,ポリシーは「Webアクセスだけを動的に通し,それ以外はすべて遮断」などとなる。
この“動的に”というキーワードが加わることによって,フィルタリング・テーブルを作ったりパケットを処理する部分が静的フィルタリングのときと違ってくる。
では,実際の処理の流れを4段階に分けて追っていこう(図3)。
最初のSTEP1は,通信が始まる前の段階である。静的フィルタリングなら,このときすでに完全なフィルタリング・テーブルが出来上がっていた(Part2の図1参照)。
これに対し,動的フィルタリングのフィルタリング・テーブルは,すべてのパケットを遮断するルール(1行目)と,Webサーバーへのパケットを通す外向きのルールの2行だけになる。内向きのパケットを通す設定行はない。したがって,外から内部へのパケットはすべて遮断される。
パケットをトリガーにテーブル更新
STEP2は,通信がちょうど始まるタイミングである。通信前のフィルタリング・テーブルでは,LAN側からWebサーバーへの外向きのWebアクセス・パケットだけが通る。
この状態で,実際に外向きのWebアクセスのパケットがフィルタリング装置に届くと,外部へ転送されて通信が始まる。さらに,フィルタリング装置は,これをトリガー(きっかけ)にして,フィルタリング・テーブルを書き換える。
具体的には,Webサーバーからの返信パケットを通すようにフィルタリング・テーブルに3行目のルールが追加される。返信パケットを通すためのシャッターが開くわけだ。
より細かく条件が決まる
こうして作られたフィルタリング・テーブルによって,Webアクセスの行きと戻りのパケットがどちらも通るようになった。これがSTEP3の状態である。この瞬間のテーブルは,静的フィルタリング用のテーブルと基本的に同じ役目を果たす。
しかし,動的フィルタリングによって作られたテーブルの方が,より厳密な条件が指定されている。静的フィルタリングのテーブルでは,内向きのパケットのあて先IPアドレスが「192. 168.0.*」で送信元IPアドレスが「*」となっていた。一方の動的フィルタリングのテーブルは,あて先IPアドレスが「192.168.0.1」,送信元IPアドレスが「10.0.0.1」と通すパケットを限定している。ポート番号に関しても同様で,ピンポイントに限定している。
したがって,動的フィルタリングの方が,想定外のパケットを通してしまう可能性を低くできる。