個別のシグネチャ

アプリケーション制御に定義済みのオブジェクトのタイプが用意されていないトラフィックを制御する場合は、パケットの任意の部分に一致する個別一致オブジェクトを作成できます。これにより、任意のネットワーク プロトコルに対して個別のシグネチャを作成できます。

例えば、HTTP GET 要求のパケットに一致する個別のシグネチャを作成できます。ローカル エリア ネットワークからのウェブ閲覧を防ぐためにこれを使用することもあります。

HTTP GET パケットの一意な識別子を調べるには、Wireshark ネットワーク プロトコル アナライザを使用してパケット ヘッダーをチェックします。Wireshark の使用法の詳細については、Wireshark を参照してください。Wireshark では、関心のあるトラフィックが含まれるいくつかのパケットをキャプチャします。この例では、HTTP GET 要求パケットをキャプチャするとします。任意のウェブ ブラウザを使用して HTTP GET 要求を生成できます。次の図に、Wireshark で HTTP GET 要求パケットを表示した画面を示します。

Wireshark の上部ペインで下にスクロールしてHTTP GETパケットを見つけ、その行を選択します。下部の 2 つのペインに対象のパケットが表示されます。中央ペインには SYN パケットのパケット ヘッダーが人間が読み取れる形式で表示されます。 実際のヘッダー バイトは、16 進形式で最下部のペインに表示されます。

中央ペインで、「Hypertext Transfer Protocol」セクションを展開してパケット ペイロードを表示し、アプリケーション制御で参照する識別子を選択します。この例では、目的の識別子は最初の 3 バイトに含まれる GET コマンドです。これを選択すると、下部ペイン内の対応するバイトが強調表示されます。

下部ペイン内で強調表示されたバイトのオフセットと深度を調べることができます。オフセットと深度は、アプリケーション制御で使用される用語です。オフセットは、パケット内で照合を開始するバイトを示します。 深度は、照合を終了する最後のバイトを示します。オフセットを使用することで、非常に限定的な照合を行い、誤検出を最小限にすることができます。オフセットと深度を計算するときは、パケット内の最初のバイトは (0 ではなく) 1 と数えられることに注意してください。オフセットと深度の計算には、16 進数ではなく 10 進数を使用します。個別一致オブジェクトに関連付けられるオフセットと深度は、パケット ペイロード (TCP または UDP ペイロードの開始位置) を起点として計算されます。この例では、オフセットが 1 (10 進)、深度が 3 です。

次に、この情報を使用する個別一致オブジェクトを作成します。

「一致オブジェクトの設定」ウィンドウで、わかりやすいオブジェクト名を入力し、「一致オブジェクト種別」ドロップダウン リストから「個別オブジェクト」を選択します。「設定を有効にする」チェック ボックスをオンにします。「オフセット」テキスト ボックスに、「1」(識別子の開始バイト) と入力します。「深度」テキスト ボックスに、「3」(識別子の終了バイト) と入力します。「ペイロード サイズ」は既定値のままにしておきます。「ペイロード サイズ」はパケット内のデータの量を示すために使用しますが、ここではパケット ヘッダーだけに注目します。

「入力形式」で、「16 進数」を選択します。「内容」テキスト ボックスに、Wireshark に表示されたバイト数 (474554) を入力します。16 進コンテンツ内ではスペースを使用しないでください。

次に、この一致オブジェクトをアプリケーション ルール ポリシー内で使用します。「アプリケーション制御ポリシーの設定」ウィンドウで、わかりやすいポリシー名を入力し、ポリシー種別として「HTTP クライアント」を選択します。「一致オブジェクト」ドロップダウン リストで、定義した一致オブジェクトを選択します。個別動作または「リセット/破棄」などの既定動作を選択します。「接続側」で、「クライアント側」を選択します。他の設定についても変更できます。ポリシーの作成の詳細については、アプリケーション ルール ポリシーの設定 を参照してください。