ステートフルパケットインスペクション
ファイアウォールが、通信の状態(セッション)を記録しておき、許可した通信に対する応答のパケットを自動的に通過させる方式。応答の向きの許可ルールを個別に書かなくてよい。
イマシルちゃんの解説
ファイアウォールが、通るパケットを1つずつ見て、「通っていい?」を判断するとするね。
社内から外のサイトに行く通信を許可したら、サイトからの返事も通してあげないと、通信にならないよね。
ステートフルパケットインスペクションは、「さっき社内から出ていった通信の返事だな」って覚えておいて、
その返事だけを自動で通してくれるんだ。
関係ない外からの通信は通さないから、安全なんだよ!
より深い解説
定義
ステートフルパケットインスペクション(SPI)は、通過する通信のセッション(送信元・宛先のIPアドレスとポート番号、プロトコル、TCPの状態など)を状態表に記録し、その状態に照らして、パケットを通すかどうかを判断するファイアウォールの方式である。
静的パケットフィルタリングとの違い
| 静的パケットフィルタリング | ステートフルパケットインスペクション | |
|---|---|---|
| 判断の材料 | パケット1つ1つのヘッダー(アドレス、ポート番号) | パケットのヘッダー+通信の状態 |
| 応答の通信 | 応答の向きのルールも明示的に書く必要がある | 許可した通信の応答は、自動的に通す |
| 応答を装った攻撃 | 応答に見せかけたパケット(ACKの付いたパケットなど)を通してしまうことがある | 記録にない応答は通さない |
| ルールの数 | 多くなる | 少なくて済む |
許可ルールの読み方
ステートフルパケットインスペクションを持つファイアウォールの許可ルールは、通信を始める向き(最初のパケットを送る側から、受ける側への向き)だけを書けばよい。
| 項番 | 送信元 | 宛先 | プロトコル/宛先ポート番号 | 意味 |
|---|---|---|---|---|
| 1 | 内部セグメント | プロキシサーバ | TCP/8080 | PCからプロキシへの接続(応答は自動で通る) |
| 2 | プロキシサーバ | インターネット | TCP/80、TCP/443 | プロキシからWebサイトへの接続 |
| 3 | DMZのサーバ | syslogサーバ | UDP/514 | DMZの機器からのログの送信 |
宛先のポート番号は、通信を受ける側(サーバ)のポート番号である。送信元のポート番号は、クライアントが一時的に選ぶため、通常は指定しない。
UDPの扱い
UDPには接続の開始と終了がないが、ステートフルのファイアウォールは、送信元・宛先の組を記録し、一定時間内に返ってきた逆向きのパケットを応答として通す。DNSやNTPの問い合わせと応答などが、これに当たる。
午後での問われ方
ファイアウォールの許可ルールの表を穴埋めさせる問題がよく出る。「どの機器から、どの機器へ、どのプロトコルとポート番号で、通信を始めるか」を、本文の構成から読み取ることが鍵になる。また、機能を停止したサーバのために設定していたルールを、どれと特定して削除するか、新しいサービスを使うために、どのルールを追加するかも問われる。