ステートフルインスペクションは、直前のデータパケットのコンテキストに基づいてデータパケットをフィルタリングするファイアウォール機能です。この重要な機能は、確立済みの通信接続からヘッダー情報を取得し、全体的なセキュリティを向上させます。ステートフルインスペクションの仕組みや主なメリットとデメリット、ユースケースを理解することで、セキュリティスタックでステートフルインスペクションを有効に活用する方法を把握できます。
ステートフルインスペクションの仕組みとは?
ステートフルインスペクションは、確立済みの通信プロトコルからヘッダー情報を読み取り、保存します。保存された情報は、任意の時点における通信の状態や状況を示します。通信履歴と保存された状態情報に基づくパケットのコンテキストによって、より複雑なファイアウォールのフィルタリングルールを適用し、正当なパケットを検証するとともに、プロトコルを破壊しようとする攻撃をブロックするための条件が整います。
パケットの状態
パケットの状態は、通信接続の現在の状況を示します。2台のコンピューターが通信を開始するたびに、接続を確立するための情報を交換します。その後、各データパケットのヘッダーには、特定の接続に関する情報が含まれます。
ステートフルインスペクションは主に、ファイル転送プロトコル(FTP)やセキュアなWebブラウジング(HTTPS)など、重要かつ基本的なプロトコルで使用されるトランスポート制御プロトコル(TCP)を対象に動作します。TCPの状態は、下表に示すように、通信を開始するデバイスと通信を受信する2台目のデバイスの間で、同期(SYN)、確認応答(ACK)、終了(FIN)、データパケットを使用して、通信の各段階で変化します。
| 開始デバイスの状態 | 2台目のデバイスの状態 | パケット | 目的と効果 |
|---|---|---|---|
| Closed | Listen | <no packet> | 初期状態 |
| Syn_Sent | Listen | SYN | 開始デバイスが通信を開始するためSYN要求を送信 |
| Syn_Sent | Syn_Recd | SYN+ACK | 2台目のデバイスが通信を確立するためSYNとACKの応答を送信 |
| Established | Syn_Recd | ACK | 開始デバイスが通信を確認するためACK応答を送信 |
| Established | Established | <no packet> | 2台目のデバイスが初回のACKを受信 |
| Established | Established | <data packet with first sequence number> | 開始デバイスが最初のデータを送信 |
| Established | Established | ACK(最初のシーケンス番号付き) | 2台目のデバイスが最初のデータパケットの受信を確認するACKを送信 |
| Established | Established | <data packets increment sequence number as needed> & ACK responses | これで両方のデバイスが、シーケンス番号を順次増加させながらデータを送信でき、それぞれのデータがACK応答で確認される |
| FinWait_1 | Established | FIN | 開始デバイスがFINパケットで通信の終了を試みる |
| FinWait_1 | CloseWait | ACK | 2台目のデバイスがFIN要求を確認応答 |
| FinWait_2 | Last_ACK | FIN | 2台目のデバイスもFIN要求を送信して通信を終了 |
| TimeWait または Closed | Last_ACK | ACK | 開始デバイスが最後のFIN要求に対する確認応答を送信 |
| TimeWait または Closed | Closed または Listen | <no packet> | 両方のデバイスが通信を終了 |
パケットのコンテキスト
パケットのコンテキストでは、各データパケットのヘッダー情報を、IPアドレス、シーケンスコード、ポート番号要求、プロトコルに基づく通信状態と比較します。ステートフルインスペクションによって、予期されたパケットは許可され、通信状態と矛盾する予期しないパケットはブロックされます。
例えば、ステートフルインスペクションを実行するファイアウォールは、FTPサーバーとのアクティブなFTP転送を追跡しながら、ネットワーク上のノートパソコンがListenまたはClosed状態であることを示す場合があります。ファイアウォールは、アクティブなFTP接続に送信されたACKまたはFINパケット(正しい送信元・送信先IP、プロトコル、ポート、シーケンス番号を持つもの)を許可しますが、ノートパソコンに送信されたACKまたはFINパケットは予期されていないため、破棄します。
ステートレスプロトコル(UDP、HTTPなど)はシーケンスや確認応答を使用しません。しかし、ステートフルインスペクションを実行するファイアウォールやその他のデバイスは、ポート、デバイスプロファイル、送信元または送信先のIPアドレスに関する情報を保存できます。この擬似ステートフルな状態は、同等の詳細なセキュリティ情報を欠くものの、一部の攻撃に対して効果的な防御を提供します。
ステートフルインスペクションが防御する脅威
ステートフルインスペクションは、データパケットの命令を受信した際にコンテキストを確認しないTCPやドメインネームサービス(DNS)などのプロセスを破壊または悪用しようとする攻撃から、ネットワーク資産を保護します。ステートフルインスペクションを実行するファイアウォールやその他のデバイスが保存した状態とコンテキストの情報を利用して、DNSスプーフィングや分散型サービス妨害(DDoS)攻撃をブロックします。
例えば、DNSはeSecurityPlanet.comなどのURLに関連付けられたIPアドレスを保存します。しかし攻撃者は、多くのDNS実装が正当な要求の確認に失敗することを把握しています。攻撃者は、eSecurityPlanet.comではなくURHacked.ruのIPアドレスを含む不正な応答など、求められていない回答(DNSスプーフィング)を誤った情報とともに送信します。ステートフルインスペクションは、開かれているDNS問い合わせと一致しない、こうした要求外の試みをブロックします。

ステートフルインスペクションのユースケース
Check Point Technologiesは、ネットワークファイアウォールを発展させ、一般的な攻撃に対してより高度な防御を提供するためにステートフルインスペクションを開発しました。ただし、一部のホストベースのファイアウォール、ゲートウェイ、専用機器にも、価値の高い資産を隠したりDDoS攻撃をブロックしたりする特定のセキュリティ用途向けに、ステートフルインスペクションが組み込まれています。
ネットワークセキュリティ
ステートフルインスペクションは、この機能によって検査されるすべての資産について、一般的なネットワークとクラウドセキュリティを向上させます。従来のルールでは、各パケットを個別に確認し、静的なルールを適用することしかできませんでした。各通信チャネルに状態とコンテキストを追加することで、要求外の通信や異常な通信、一部の悪意ある通信を検出してブロックする動的なルールを適用できるようになります。
探索の防止
ファイアウォールは、許可リスト(allowlistまたはwhitelist)に登録されたデバイスからの通信でない限り、ネットワークセグメントやクラウド環境の外部から発信された通信をすべてブロックするルールを設定できます。ステートフルインスペクションは、pingやNmapなどの一般的なネットワーク探索ツールを使って、データベースサーバーなど価値の高い資産に関する情報を得ようとする攻撃者の試みを破棄します。
サーバーのDDoS対策
一般的なDDoS攻撃では、偽装したTCPパケットを使ってサーバーを圧倒します。TCPにはステートフルな確認機能がないため、DDoS攻撃者は大量の要求外のSYN-ACK応答を送信する可能性があり、サーバーはパケットと開かれた通信を照合しようとしてリソースを拘束されます。ステートフルパケットインスペクションは、開かれた通信を追跡し、この攻撃やその他の類似した攻撃によるパケットを速やかに破棄します。
ステートフルインスペクションの5つのメリット
ステートフルインスペクションは、通信履歴のコンテキストに基づいて、すべての種類のファイアウォールに5つの明確なセキュリティ改善をもたらします。
- 高度なルール:通信データパケットを許可または拒否する際に、ID、接続状態、アプリケーションを考慮した、より詳細なルールを利用できます。
- 動的な検査:過去のパケット分析とIPアドレスに関する記録済みの情報に基づき、各通信セッションのコンテキストに合わせてポリシーを適応させます。
- 保護の強化:より多くのDDoS攻撃、ドメインネームサービス(DNS)スプーフィング、および脆弱なプロセスを欺こうとする同様の攻撃を検出します。
- 柔軟性の向上:高度なルールと動的な検査を適用して堅牢な意思決定プロセスを実現し、脅威と判断したものをブロックするよう迅速に調整できます。
- 堅牢なログ:生成されるログ記録に、より詳細なコンテキストとパケット情報を記録し、インシデント対応、脅威分析、フォレンジック調査を改善します。
ステートフルインスペクションの5つのデメリット
ステートフルインスペクションには多くのメリットがありますが、次のような弱点があるため、完全に確実なセキュリティを提供することはできません。
- 通信の中断:異なる経路を使用する非対称ルーティングや低速接続など、特定の種類の通信でエラーが発生します。
- 複雑性の増大:複数の条件や組み合わせに柔軟に対応するには、より複雑なルールが必要となり、セキュリティ上の抜け穴やルールの競合を招く可能性があります。
- リソース消費:過去および継続中の通信接続の状態を保存し、分析とルール適用を継続して実行するため、より多くのリソースが必要になります。
- セキュリティ上の脆弱性:さまざまなスプーフィング攻撃に対して脆弱なままであり、アプリケーション攻撃を認識できず、潜在的なマルウェアがないかパケットの内容を検査することもできません。
- 通信速度の低下:ステートレスパケットインスペクションの単純なルール処理と比較して、状態情報の保存とパケットフィルタリングに時間がかかります。
ステートフルインスペクションとその他のファイアウォール機能の比較
ステートフルインスペクションは、ほとんどのファイアウォールに実装されている強力な機能ですが、セキュリティと運用の両方のメリットを最大化するため、多くの管理者はステートフルインスペクションを他のファイアウォール機能と組み合わせて使用します。ここでは、異なる機能を提供する他のファイアウォール機能との簡単な比較を示します。
ステートフルインスペクションとステートレスインスペクションの比較
すべてのパケットインスペクションは、ステートフルインスペクションまたはステートレスインスペクションのいずれかに分類されます。ステートフルパケットインスペクションは、確立された接続に関する情報を保持することでセキュリティを大幅に向上させますが、より多くのリソースと処理能力も必要とします。ステートレスパケットフィルタリング機能やファイアウォールを使用すれば、単純なルールに基づいてパケットを迅速に破棄し、より複雑なステートフル分析の対象となる通信量を削減できます。
ステートフルインスペクションとディープパケットインスペクションの比較
ステートフルインスペクションは、データヘッダーに含まれる通信情報を調べて、容易に検出できる悪意あるパケットを速やかに破棄します。残りのパケットのデータ内容を調べるため、次世代ファイアウォールにディープパケットインスペクション機能を追加し、確立されたHTTPS接続内でのマルウェア配信をブロックするなど、さらなる保護を提供します。
ステートフルインスペクションとプロキシフィルタリングの比較
ステートフルインスペクションは、2台のデバイス間の通信接続を調べますが変更はしないため、外部の攻撃者がネットワークを探索できます。サーキットレベルゲートウェイやアプリケーション層ゲートウェイで使用される追加のプロキシ機能を導入し、ファイアウォールと各デバイスの間に個別の接続を確立します。この追加のフィルタリングによって資産の探索をブロックし、低速なディープパケットインスペクションを使わずに悪意ある意図を検出する機会を増やせます。
結論:ステートフルインスペクションは通信保護プロセスの起点
ステートフルインスペクションはネットワーク通信のセキュリティ保護を大幅に向上させますが、すべての攻撃に対する保護を提供できるわけではありません。パケットフィルタリングやディープパケットインスペクションなどの強力な機能と組み合わせた場合でも、ファイアウォールが提供するのは初期防御層にすぎず、攻撃リスクを十分に低減するには他の防御層も必要です。
セキュリティを強化するには、侵入検知・防御システム(IDPS)など、ネットワーク通信トラフィック内の潜在的な攻撃を監視・検出する他のネットワークセキュリティソリューションについても学びましょう。





