アプリケーション ルールに定義済みのオブジェクトのタイプが用意されていないトラフィックを制御する場合は、パケットの任意の部分に一致する個別一致オブジェクトを作成できます。これにより、任意のネットワーク プロトコルに対して個別のシグネチャを作成できます。
例えば、HTTP GET 要求のパケットに一致する個別のシグネチャを作成できます。ローカル エリア ネットワークからのウェブ閲覧を防ぐためにこれを使用することもあります。
HTTP GET パケットの一意な識別子を調べるには、Wireshark ネットワーク プロトコル アナライザを使用してパケット ヘッダーをチェックします。Wireshark の使用法の詳細については、「Wireshark」を参照してください。Wireshark では、関心のあるトラフィックが含まれているパケットのいくつかをキャプチャします。ここでは、HTTP GET 要求パケットをキャプチャしたい場合を考えます。任意のウェブ ブラウザを使用して HTTP GET 要求を生成できます。「 」 に、Wireshark で HTTP GET 要求パケットを表示した画面を示します。
Wireshark に表示された HTTP GET 要求パケット
ネットワーク プロトコルに対して個別のシグネチャを作成するには、以下の手順に従います。
HTTP GET
パケットを探します。その行を選択します。
下部の 2 つのペインに対象のパケットが表示されます。中央ペインには SYN パケットのパケット ヘッダーが人間が読み取れる形式で表示されます。 実際のヘッダー バイトは、16 進形式で最下部のペインに表示されます。
中央ペインで、「Hypertext Transfer Protocol」セクションを展開してパケット ペイロードを表示します。
アプリケーション ルールで参照する識別子を見つけます。この例では、目的の識別子は最初の 3 バイトに含まれる GET
コマンドです。
この識別子を選択して、下部ペイン内の対応するバイトを強調表示します。
下部ペイン内で強調表示されたバイトのオフセットと深度を調べることができます。
オフセットを使用することで、非常に限定的な照合を行い、誤検出を最小限にすることができます。オフセットと深度の計算には、16 進数ではなく 10 進数を使用します。
オフセットと深度を計算するときは、パケット内の最初のバイトが (0 ではなく) 1 としてカウントされます。
個別一致オブジェクトに関連付けられるオフセットと深度は、パケット ペイロード (TCP または UDP ペイロードの開始位置) を起点として計算されます。この例では、オフセットが 1 (10 進)、深度が 3 です。
この情報を使用する個別一致オブジェクトを作成します。
「一致オブジェクトの設定」ダイアログで、オブジェクトに対するわかりやすい名前を「オブジェクト名」フィールドに入力します。
「一致オブジェクト種別」ドロップダウン メニューから「個別オブジェクト」を選択します。
「設定を有効にする」チェックボックスをオンにします。
「オフセット」フィールドに、「1」 (識別子の開始バイト) と入力します。
「深度」テキスト ボックスに、「3」(識別子の終了バイト) と入力します。
「ペイロード サイズ」は既定値のままにしておきます。「ペイロード サイズ」はパケット内のデータの量を示すために使用しますが、ここではパケット ヘッダーだけに注目します。
「入力形式」で、「16 進数」をクリックします。
「内容」テキスト ボックスに、Wireshark に表示されたバイト数 「474554」を入力します。16 進コンテンツ内ではスペースを使用しないでください。
この一致オブジェクトはアプリケーション ルール ポリシーで使用します。
「アプリケーション制御ポリシーの設定」ダイアログで、わかりやすいポリシー名を入力します。
ポリシー種別で「HTTP クライアント要求」を選択します。
「一致オブジェクト」ドロップダウン メニューで、定義した一致オブジェクトを選択します。
個別動作または「リセット/破棄」などの既定動作を選択します。
「接続側」で、「クライアント側」を選択します。
他の設定についても変更できます。ポリシーの作成の詳細については、「アプリケーション ルール ポリシーの設定」を参照してください。