不正なパケットを見極める!ステートファイアウォールとは

不正なパケットを見極める!ステートファイアウォールとは

パケットフィルタリング型は3種類のタイプがあり、 前回はその中でも 「スタティックパケットフィルタリング」と「ダイナミックパケットフィルタリング」を詳しく見てきましたが、 今回は3つ目の「ステートフルパケットインスペクション」を詳しく解説いたします。

IT業界まるわかりガイドは、日本初Web専門スクールのインターネット・アカデミーが運営する業界情報メディアです。最新の業界情報を、初心者にも分かりやすくご紹介しています。

目次

ステートフルパケットインスペクションとは

「ステートフルパケットインスペクション」は「ステートファイアウォール」とも呼ばれています。

このファイアウォールは、 内部ネットワーク側から送信したデータをセッションログとして一時的に保存しておきます。 そして、インターネット側から到着したパケットがセッションログと整合性が合うか確認します。

具体的には、パケットの時間的な前後関係を追跡します。 小説の流れを辿るように、一連の流れ(コンテキスト)として読み取るのです。

これにより、パケットがTCP・UDPセッションに基づく正当な手順を踏んだものか、 それとも偽装の不正パケットなのかを見極め、不正パケットの受信を拒否します。

具体的な仕組み

TCPはTransmission Control Protocol(トランスミッション コントロール プロトコル)の略で インターネット・プロトコル・スイートの中核に存在するプロトコル(規約)です。

TCPでは、クライアントがサーバーとインターネット上でやりとりする際 スリーウェイ・ハンドシェイク(three-way handshaking)という手順を定めています。 この手順の流れは以下の通りとなります。

(1)

接続を求めているクライアントは、サーバーに対して、SYNパケットを送信します。 SYNパケットとは接続要求パケットのことです。このパケットの内容は以下が含まれています。

  • クライアント側が決めた数値である「SEQ番号」
  • TCP接続において最初に送られるパケットに立つフラグである「SYNフラグ」

これを送信した後、クライアントの状態は「SYN-SENT」(SYNパケットを送信した状態)になります。

(2)

サーバー側でSYNパケットを受け取ると、 「SYN-RECEIVED」、つまりSYNパケットを受信した状態となります。 サーバーがそのクライアントとの接続を認めた場合、SYN/ACKパケットをクライアントに送信します。 SYN/ACKパケットとは、最初の応答確認パケットのことです。そのパケットには以下が含まれます。

  • サーバー側が決めた数値である「SEQ番号」
  • クライアントから送られてきたSEQ番号に1を足した「ACK番号」
  • 応答する場合に立つフラグである「ACKフラグ」
  • 最初にクライアントに送るパケットなので「SYNフラグ」

(3)

SYN/ACKパケットを受けとったクライアントは、 「ESTABLISHED」つまり「接続完了」状態となります。 そして、サーバーにACKパケットを送信します。ACKパケットとは確認応答パケットのことです。 その内容は以下になります。

  • クライアント側が決めた数値に1を足した「SEQ番号」
  • SYN/ACKパケットのSEQ番号に1を加えた「ACK番号」
  • 応答する場合に立つフラグである「ACKフラグ」

(4)

クライアントからACKパケットを受け取ったサーバーは、 「ESTABLISHED」つまり「接続完了」状態となります。

こうした手続を経てサーバーとの接続が確立されます。 従って、はじめて通信を行うクライアントのはずなのに、 SYNパケットを送ってこなかったとしたら、それは不正なパケットであると言うことができるでしょう。

スタティックパケットフィルタリング型ファイアウォールでは、 一つ一つのパケットしか検査しないので、このような不審な状況があっても通過してしまいます。 したがって、不正アクセスの危険性が高いパケットを通過させるおそれがあるのです。

スタティックは「静的」という意味で、パケットを遮断するかどうかの基準が常に一定です。 これに対して、ステートフルパケットインスペクションでは、セッションログを記録・追跡し、 送られてくる順番や内容をチェックします。

パケット一つ一つではなく、一連のパケットの流れとして捉え、現在の通信状態と矛盾するパケットを見極めます。 そして不正なパケットが見つかったら、そのパケットを破棄して受信を制限します。

ステートフルパケットインスペクションの長所

スタティックパケットフィルタは、高速で低コストな分、安全性が低いという欠点がありました。

また、初期状態ではルールが設定されていないため、 ユーザーが自分で環境に応じた細かいルールを設定する必要があり、手間がかかりました。 よって自分でルールを設定できない初心者にとっては、うまく使いこなせないファイアウォールでした。

これに対し、ステートフルパケットインスペクションでは、 細かなルールを用意しなくても、通信の状態を読み取って不正なパケットを遮断してくれます。

ユーザーは、具体的な設定ができなければデフォルトのまま機能を有効にすれば良いわけで、非常に便利です。

ステートフルパケットインスペクションの短所

便利なファイアウォールであるステートフルパケットインスペクションですが、 不正なパケットの侵入を防いでくれる機能であるため、 ユーザーが開放しているポートへの正常な手続を踏んだパケットは問題なく通過してしまいます。

ステートフルパケットインスペクションは、 例えばブロードバンドルータに搭載されている場合もありますが そのようなルーターにはマルウエアに感染したメールを遮断する機能はありません。

不正な攻撃への対策として完全なものではないことを踏まえた上で、 いくつかの防御手段の一つとして捉え、設置することをお勧めします。