前回までで,ファイアウォールが社内LANへの侵入を試みるパケットを破棄するための機器であることがわかったと思う。ここでは,どのようなしくみでパケットの侵入を防ぐのだろうか。今回は,ファイアウォールがパケットの侵入を防ぐ方法を見てみよう。

守り方の基本は3種類

 ファイアウォールが社内LANへのアクセスを防ぐしくみは大きく三つある。(1)パケットの中を調べて中継の可否を判断する「パケット・フィルタリング」,(2)一度パケットを受け取り,その要求内容をルールに照らしてアクセスの正当性を調べる「アプリケーション・ゲートウエイ」,そして(3)公開サーバー専用のネットである「非武装セグメント」(DMZ)を設ける方法だ。実際は,これらの方法を組み合わせて守ることになる。

 それぞれしくみは違うが,パケットを通すか通さないかをルールに照らして判断し,外部のユーザーが社内LANのマシンに簡単にアクセスできないようにするという目的は同じである。

 個々のしくみと特徴を見ていこう。

パケットの中身を見て判断

 第一のパケット・フィルタリングは,IPパケットの中にある特定のアドレス情報を見て,そのパケットを通すか通さないかを判断するやり方だ。

 判断のために使うのは,マシンを特定する情報とアプリケーションを示す情報。前者はIPアドレスで,後者はポート番号と呼ばれるものである。この二つの情報を組み合わせ,どのマシンのどんなアプリケーションへのアクセスなのかをチェックするのである。

図4 パケット・フィルタリングはIPアドレスとポート番号でチェック
パケットの中に書かれてあるアドレス情報を見て,そのパケットを通すか通さないかを判断する。
 それぞれについて見ていこう。まずはIPアドレスから。IPアドレスは,コンピュータごとに設定されているアドレス情報。IPパケットのヘッダー部分には必ずあて先マシンのIPアドレスと送信元マシンのIPアドレスが記述されている。つまりこの二つのIPアドレスを見れば,誰がアクセスしてきたのか,また,誰あての通信なのかがわかる(図4[拡大表示])。

ポート番号を見ればアプリがわかる

 次はポート番号だ。ポート番号は,マシン内のTCP/IPソフトがアプリケーションを識別するためのアドレスである。TCP(あるいはUDP)で通信するすべてのアプリケーションには,必ずポート番号が割り当てられている。

 ポート番号はファイアウォールを設定するときにひんぱんに出てくる言葉なので,もう少し詳しく説明しよう。

 ポート番号は,IPパケットのデータ部分に格納されるTCPヘッダー,あるいはUDPヘッダーの中にある。これも,あて先ポート番号と送信元ポート番号が書き込まれている。

 ポート番号に使われる値はアプリケーションがサーバー用かクライアント用かで大きく分かれる。サーバー・ソフトは不特定多数の人にサービスを提供するものなので,あらかじめポート番号が決まっている。例えば,Webサーバーへのアクセスなら80番,メール・サーバーへのアクセスなら25番になる。

 一方,クライアント・ソフトは,そのソフトが起動した段階で,任意の番号が自動的に割り当てられるようになっている(注釈の「ポート番号が決まっている」を参照)。

しくみは簡単だがルールは限られる

 パケット・フィルタリング型のファイアウォールを使うときは,IPアドレスとポート番号を組み合わせてパケット通過可否のルールを作る。例えば,「AというサーバーのWebサーバー・ソフトあてのパケットは通過させる」といったルールを作り,それをファイアウォールに指定するのである。このときファイアウォールは,そのパケットが接続を要求したものなのか,それとも接続要求に対する返答なのかも識別する。この識別機能があるので,アクセス要求のパケットは通過させないが,応答パケットは通過させるという指定ができる。

 パケット・フィルタリング型ファイアウォールの特徴は,比較的高速に中継処理を実行できること。パケット内の一部の情報だけを読み取って通過の可否を判断しているからである。ただし,しくみが単純なので,細かな条件を加えることは難しい。また,社外ユーザーからのアクセスを許可したサーバー(公開サーバー)については,そのマシンのIPアドレスがインターネット上のすべてのユーザーに知られることになる。この点は,クラッカの攻撃対象になりやすいという懸念がある。