対象試験と出題頻度

ステートフルパケットインスペクションは、主に応用情報技術者試験で出題される用語です。頻出度はCランク(余裕があれば覚える)ですが、ファイアウォールの仕組みを深く理解するには欠かせない概念です。

基本情報技術者試験では「動的パケットフィルタリング」として出題されることが多く、両者の違いを理解しておくと上位試験で役立ちます。

詳細をクリックして確認
対象試験:
応用情報技術者
出題頻度:
★★☆☆☆
ランクC(余裕があれば覚える)

用語の定義

ステートフルパケットインスペクション(Stateful Packet Inspection:SPI)とは、一言で言うと「通信の状態(ステート)を記憶し、パケットの文脈(コンテキスト)まで考慮して通過可否を動的に判断する、パケットフィルタリング型ファイアウォールの高度な機能」のことです。

イメージとしては、「会話の流れを記憶する審査官」のようなものです。普通の審査官(静的フィルタリング)は目の前の人だけを見て判断しますが、ステートフルな審査官は「この人は先ほど内部から出て行った人への返事を持ってきた」という文脈まで把握して判断します。正しい手順を踏んでいない通信は、たとえヘッダ情報が正しくても不正とみなして遮断します。

動的(ダイナミック)パケットフィルタリングとほぼ同じ概念ですが、厳密にはステートフルパケットインスペクションの方がより詳細に通信の「文脈」を検査します。

📊 パケットフィルタリングの3つの方式

方式 特徴 検査範囲
静的フィルタリング 固定ルールでパケットを個別に判断。状態を記憶しない ヘッダ情報のみ
動的フィルタリング 通信状態を記憶し、戻り通信を自動許可 ヘッダ情報+通信プロトコル
ステートフルインスペクション 通信の文脈(コンテキスト)まで詳細に検査 ヘッダ情報+通信プロトコル+アプリケーション層の情報

解説

応用情報技術者試験を勉強していると、「動的パケットフィルタリングとステートフルインスペクションって何が違うの?」と疑問に思うことがあります。

結論から言うと、基本的な仕組みは同じで、検査する情報の範囲が違うだけです。実務では両者を同じ意味で使うことも多いので、試験対策としては「ほぼ同じもの」と理解しておいても大きな問題はありません。

ステートフルインスペクションの仕組み

ステートフルインスペクションの基本的な動作は、動的パケットフィルタリングと同様です。

1. 内部から外部への通信を記録:LAN側からインターネット(WAN)側への通信が発生すると、ファイアウォールはその情報を「セッションテーブル(コネクションテーブル)」に記録します。記録される情報には、送信元/宛先IPアドレス、ポート番号、プロトコル種別などが含まれます。

2. 外部からの応答を照合:インターネット側からパケットが届くと、セッションテーブルと照合します。テーブルに該当するセッション情報があれば「内部から要求した通信への応答」と判断して通過を許可します。

3. 該当しない通信は遮断:セッションテーブルに該当しない通信は、不正な侵入の可能性があるとして遮断します。これにより、外部からの一方的な攻撃を防ぐことができます。

動的フィルタリングとの違い:「文脈」の検査深度

では、動的フィルタリングとステートフルインスペクションは何が違うのでしょうか。

動的パケットフィルタリングは、主にヘッダ情報(IPアドレス、ポート番号)と通信プロトコル(TCP/UDP)の情報を参照して判断します。「内部から出て行った通信への応答かどうか」という基本的な文脈は把握できます。

ステートフルパケットインスペクションは、それに加えてアプリケーション層の情報まで参照します。例えば、TCPの3ウェイハンドシェイク(SYN→SYN+ACK→ACK)の手順が正しく行われているか、シーケンス番号が連続しているかなど、より詳細な「文脈」をチェックします。

💡 TCPの3ウェイハンドシェイクとSPI

ステートフルインスペクションは、TCPコネクション確立の手順を監視します。正常な通信は「SYN→SYN+ACK→ACK」の順序で行われますが、いきなりACKパケットだけが送られてきたり、シーケンス番号がおかしい場合は、攻撃の可能性があると判断して遮断します。

このように、通信の「お作法」を理解して判断するのがステートフルインスペクションの特徴です。

ステートフルインスペクションのメリット

セキュリティの向上:通信の前後関係(文脈)を把握するため、送信元を偽装した不正なパケットを検出しやすくなります。静的フィルタリングでは見抜けない攻撃を防ぐことができます。

設定の簡素化:戻りの通信を自動的に許可するため、管理者が戻り通信用のルールを個別に設定する必要がありません。これにより、ACLの設定ミスによるセキュリティホールを減らせます。

検査精度の向上:アプリケーション層の情報まで参照することで、より精度の高い検査が可能になります。

ステートフルインスペクションの注意点

処理負荷の増加:通信状態を記憶し、詳細な検査を行うため、静的フィルタリングに比べて処理負荷が高くなります。大量のトラフィックを処理する環境では、ファイアウォールの性能に注意が必要です。

アプリケーション層の攻撃には限界:ステートフルインスペクションはパケットフィルタリング型の一種であり、通信内容を詳細に検査するわけではありません。SQLインジェクションやクロスサイトスクリプティングなど、アプリケーション層の攻撃を防ぐには、WAF(Web Application Firewall)など別の対策が必要です。

⚠️ 試験ではここまででOK

応用情報技術者試験では、「ステートフルインスペクション=通信の状態を監視して動的に判断するファイアウォールの機能」という基本を押さえておけば十分です。

動的フィルタリングとの細かい違いよりも、静的フィルタリングとの違い(状態を記憶するかどうか)が問われることが多いです。


試験ではこう出る!

ステートフルパケットインスペクションは応用情報技術者試験で出題されることがあります。以下のキーワードを押さえておきましょう。

【重要キーワード】

  • ステートフルパケットインスペクション(SPI):通信の状態を記憶し、文脈まで考慮して判断
  • セッションテーブル(コネクションテーブル):通信状態を記録するテーブル
  • 動的フィルタリングとの違い:アプリケーション層の情報まで参照
  • 静的フィルタリングとの違い:状態を記憶するかどうか
  • TCPの3ウェイハンドシェイク:SYN→SYN+ACK→ACKの手順を監視
  • 戻り通信の自動許可:内部から開始した通信への応答のみ許可

試験問題で「通信の状態を監視し、過去のやり取りを踏まえてパケットの通過可否を動的に判断するファイアウォールの機能」と問われたら「ステートフルパケットインスペクション」または「動的パケットフィルタリング」と答えましょう。

📊 静的・動的・ステートフルの比較

比較項目 静的 動的 ステートフル
状態の記憶 しない する する
戻り通信 手動設定 自動許可 自動許可
検査範囲 ヘッダのみ ヘッダ+プロトコル ヘッダ+プロトコル+アプリ層
セキュリティ 低い 中程度 高い

📝 IPA試験での出題ポイント

ステートフルパケットインスペクションの問題は、「静的フィルタリングとの違い」「通信状態を監視する仕組み」「戻り通信の自動許可」の3点が中心です。

なお、実務では「動的フィルタリング」と「ステートフルインスペクション」を厳密に区別しないことも多いため、試験でも両者を同等に扱う問題が出ることがあります。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。

Q. ステートフルパケットインスペクションに関する説明として、最も適切なものはどれでしょうか?

  • A. 通信の状態を記憶し、過去の通信との整合性を確認して通過可否を動的に判断するファイアウォールの機能であり、TCPの3ウェイハンドシェイクの手順なども監視対象とする
  • B. パケットのヘッダ情報のみを参照し、あらかじめ設定された固定のルールに従って各パケットを個別に判断するフィルタリング方式
  • C. HTTPやSMTPなどのアプリケーションプロトコルの内容を詳細に検査し、SQLインジェクションなどの攻撃を防ぐファイアウォール

正解と解説を見る

正解:A

解説:
ステートフルパケットインスペクション(SPI)は、通信の状態(ステート)を「セッションテーブル」に記憶し、過去の通信との整合性を確認して通過可否を動的に判断するファイアウォールの機能です。内部から外部への通信情報を記録し、外部から戻ってくるパケットがその通信への正当な応答かどうかを判断します。また、TCPの3ウェイハンドシェイク(SYN→SYN+ACK→ACK)の手順が正しく行われているかなど、通信の「文脈(コンテキスト)」まで検査します。
選択肢Bは「静的(スタティック)パケットフィルタリング」の説明です。静的フィルタリングは通信の状態を記憶せず、各パケットを固定のルールで個別に判断します。選択肢Cは「WAF(Web Application Firewall)」や「アプリケーションゲートウェイ型ファイアウォール」の説明です。ステートフルインスペクションはパケットフィルタリング型の一種であり、SQLインジェクションなどアプリケーション層の攻撃を防ぐ機能は持っていません。