ファイアウォール技術の中で最も基本かつ重要なのがステートフルインスペクション(Stateful Inspection)です。 この記事では、ステートレスフィルタとの違いや動作原理、実際の設定・トラブル例までを体系的に解説します。
ステートフルインスペクションとは?
ステートフルインスペクションとは、通信セッション(状態)を監視してパケットを制御する技術です。 従来のACLのようにパケット単位で許可/拒否を判断するのではなく、「どの通信が確立済みか」を判断して、自動的に応答パケットを通すことができます。
この仕組みにより、外部からの不正なアクセスを遮断しつつ、内部からの通信はスムーズに返答を受け取ることが可能になります。
ステートレスフィルタとの違い
| 項目 | ステートレス(例:ACL) | ステートフル(例:Firewall) |
|---|---|---|
| 制御単位 | パケット単位 | セッション(通信状態)単位 |
| 応答パケット処理 | 手動でルールを追加する必要あり | 自動で通過(セッション情報に基づく) |
| 管理の手間 | ルールが多くなりがち | シンプルで運用しやすい |
| 代表例 | ルータACL、IPフィルタ | ファイアウォール、UTM、NGFW |
たとえば、ステートレスACLでは「内部→外部への通信を許可」するだけでは、外部からの応答パケットも遮断されてしまいます。 一方、ステートフルファイアウォールは通信セッションを記録しており、応答パケットを自動的に通過させます。
ステートフルインスペクションの動作原理
① 通信開始(セッション確立)
クライアント(内部)からサーバ(外部)へ通信要求を送信すると、ファイアウォールはこの接続情報を「ステートテーブル」に記録します。
内部PC(192.168.1.10) → 外部Web(203.0.113.5:80)
# ステートテーブル登録例
Source IP: 192.168.1.10
Source Port: 54321
Destination IP: 203.0.113.5
Destination Port: 80
State: ESTABLISHED
② 応答通信の通過
外部サーバからの応答パケットは、ステートテーブルを参照して「既存セッションの通信」と判断され、自動的に通過します。 このため、応答方向のルールを追加する必要がありません。
③ セッション終了
一定時間通信が行われない場合や、TCPのFIN/RSTでセッションが終了すると、テーブルからエントリが削除されます。
ステートテーブル(State Table)の仕組み
ファイアウォールは通信ごとに「ステートテーブル(状態テーブル)」を持ち、そこにセッション情報を保存します。 代表的な保存情報は以下の通りです。
| 項目 | 内容 |
|---|---|
| 送信元IP/ポート | 通信元ホストの情報 |
| 宛先IP/ポート | 通信先ホストの情報 |
| プロトコル | TCP, UDP など |
| 通信状態 | ESTABLISHED, FIN_WAIT, TIME_WAITなど |
| タイムアウト値 | セッションが維持される時間 |
このテーブルはリアルタイムで更新され、ファイアウォールはここを参照して通信の許可/拒否を判断します。
ステートフルインスペクションの利点
- ① 応答通信を自動で通過できる
内部→外部通信の返答を自動で許可するため、ルールがシンプル。 - ② 通信セッションを追跡できる
TCPハンドシェイクやセッション状態を理解して不正通信を検出可能。 - ③ 攻撃検知・防止が可能
SYN floodやポートスキャンのような不正通信を検知して遮断。 - ④ ログ・監査に強い
通信単位でのトラッキングが可能で、監査・分析が容易。
ステートフルインスペクションの限界
万能ではなく、以下のような課題も存在します。
- アプリケーション層(HTTP, FTPなど)の詳細は解析できない
- 暗号化通信(HTTPSなど)の内容までは判断できない
- ステートテーブルが大量になると、メモリ負荷が高くなる
これらの課題を補うために、次世代ファイアウォール(NGFW)では「アプリケーション層の可視化」や「ディープパケットインスペクション(DPI)」などの機能が追加されています。
設定例(Cisco ASA の例)
# ステートフルインスペクションを有効にする基本設定例
! インターフェースのセキュリティレベル定義
interface inside
security-level 100
interface outside
security-level 0
! ステートフルポリシー適用(内部→外部の通信は自動で戻りを許可)
access-list OUTBOUND permit tcp any any eq 80
access-group OUTBOUND in interface inside
この設定では、内部から外部へのHTTP通信を許可し、応答通信(外部→内部)はステートテーブルを利用して自動的に許可されます。
トラブル事例と確認ポイント
| 症状 | 原因 | 対処方法 |
|---|---|---|
| 外部サイトに接続できない | ステートテーブルがいっぱい、または古いセッションが残っている | ステートテーブルのクリア、またはタイムアウト値の調整 |
| 応答パケットが通らない | ステートフル機能が無効、または方向設定ミス | ファイアウォールポリシーの適用方向を確認(in/out) |
| セッションが頻繁に切断される | タイムアウト値が短すぎる | TCPセッションのタイムアウトを延長 |
まとめ
- ステートフルインスペクションは、通信の状態を監視して安全にパケットを制御する仕組み。
- ACLのようなステートレス制御と異なり、応答通信を自動で許可できる。
- セッション情報はステートテーブルで管理され、リアルタイムに更新される。
- 次世代ファイアウォール(NGFW)は、さらにアプリ層の可視化・制御を強化している。
ステートフルインスペクションは、ファイアウォール技術の基本であり、CCNA・CCNP試験にも頻出の重要テーマです。 原理をしっかり理解することで、セキュアなネットワーク設計とトラブルシューティング力を磨くことができます。
