中・大規模向けのゲートウエイ型ファイアウォールは,SOHO向けに比べてより高速に,より細かくパケットを検査する。大企業のネットワークや,公開サーバーを多数収容するデータ・センターだけでなく,重要な情報を管理しているネットワークを厳重に守るときなどにも使われる。複雑な処理を高速にこなそうと,検査方法もハードウエアも発展を続けている。

機能と性能を両立

 中・大規模向けファイアウォールは,場合によっては10Gビット/秒の高速回線につなぐことがある(図4-1)。

図4-1●最新の中・大規模向けファイアウォールは,高度なセキュリティと高い処理性能を両立
図4-1●最新の中・大規模向けファイアウォールは,高度なセキュリティと高い処理性能を両立
シグネチャでは検出できないパケットも検出する。しかも,処理性能が高い。

 一方で,厳重にネットワークを守る必要もある。シグネチャが更新される前にやって来る攻撃や,暗号化されている不正パケットも何とか防ぎたい。このような攻撃パケットを遮断する高度な技術を中・大規模向けファイアウォールは取り込んでいる。

 ただ,パケットをより厳密に調べようとすると,ファイアウォールの処理が複雑になり,負荷が大きくなる。その結果,性能が落ちてしまう。そこで中・大規模向けファイアウォールは,このような処理を高速にこなすために,ハードウエアにもさまざまな工夫を凝らし,機能と性能の両立を図っている。

シグネチャに頼らず新攻撃を排除

 SOHO向けファイアウォールは,主に検査をシグネチャに頼っていた。これに対し中・大規模向けは,シグネチャに頼らない検査方法を併用する。

 シグネチャだけでは,すでに知られている不正パケットにしか対応できない。不正パケットが見つかってからシグネチャが配布されるまでには時間差があるため,間に合わないことがある。中・大規模向けファイアウォールは,こうした未知の攻撃パケットを遮断することも想定している。

 シグネチャに頼らない不正パケットの検出方法は大きく二つある。一つは,パケットのデータ部に含まれているプログラムを試しに実行してみる方法。もう一つは,やりとりの回数や内容が正常な通信パターンと違うものを見つけ出す方法である。 

試しにコードを実行して検証

 送受信データをファイアウォール内で試しに実行する方法は,新型のウイルスに有効だ。イスラエルのチェック・ポイント・ソフトウェア・テクノロジーズのファイアウォール・ソフトFireWall-1(ファイアウォールワン)などが備えている。

 この機能を備えるファイアウォールは,パケットのデータ部から実行コードを探し出す(図4-2)。次に探し出した実行コードを,ファイアウォール内部の仮想的なプログラム実行環境*1で動かす。そこで,割り当て範囲外のメモリーにデータを書き込もうとしたり,OSのファイルを書き換えたり,勝手に通信を始めたりといった問題行動を起こさないかを確認する。

図4-2●試しにコードを実行して検証する
図4-2●試しにコードを実行して検証する
最新のゲートウエイ型ファイアウォールの一部は,コードを実行して検証するものがある。
[画像のクリックで拡大表示]

 このような検査は,ファイアウォールにとって負担が大きい。また,クライアントの環境に合わせた実行環境を用意しなければならない。このため,守る対象や,検査できるプロトコルが限定されているのが一般的だ。FireWall-1の場合は,今のところWebサーバーに不正コードが送り込まれるのを遮断するためだけに利用している。

正常な通信パターンとのずれを見る

 正常な通信との違いを見つけて遮断する技術に話を移そう。アノーマリ検知という方法である(図4-3)。アノーマリ検知とは,やりとりされているパケットの内容を監視するプロトコル・アノーマリ検知と,特定のパケットの数やトラフィックの変化などを監視する統計的アノーマリ検知がある。

図4-3●正常な通信との違いを見つけ出して遮断する
図4-3●正常な通信との違いを見つけ出して遮断する
シグネチャを使う限り,あらかじめ登録してある攻撃しか防げない。正常な通信とのずれを検出すれば,シグネチャが用意されていない新種の攻撃も防げる。

 プロトコル・アノーマリ検知は,ほとんどの中・大規模向けファイアウォールが備えている*2。普通とはかけ離れたやりとりを遮断する(図4-3a)。

 例えばHTTPパケットで異常に長いURLが指定されている場合,Webサーバーにバッファ・オーバーフローを起こさせる攻撃パケットである可能性が高い。CodeRed(コードレッド)*3をはじめとするウイルスが使う攻撃手法だ。そこであらかじめ正常なURLの長さを200バイト以下などと決めておき,それ以上のURLが書き込まれたパケットを遮断する。

 HTTPの仕様ではURLの長さに制限はないが,ファイアウォールに設定した決まりに沿わないやりとりなので,不正パケットと見なすわけだ。プロトコル・アノーマリでは,このほかに文字コードで記述されるべきデータにバイナリ・コードが書き込まれているといったことで不正パケットを見つけたりする。

パケットの数の変化で異常を検出

 もう一つの統計的アノーマリ検知は,パケットを1個ずつ見てもわからない不正パケットを,数えてみたりすることで検出する手法だ(図4-3b)。例えば,クラッカはWebサーバーをダウンさせるために,CGI(シージーアイ)*4プログラムをたくさん実行しようとしたりする。そこでファイアウォールは,クライアントから送られてくるパケットを監視して,CGIプログラム実行要求の割合がしきい値を超えれば攻撃と判断する。