AppExpert

クラシックエクスプレッションを構成する

クラシックエクスプレッションは、次のエクスプレッション要素で構成され、階層順にリストされます。

  • [フロータイプ]: 接続が着信か発信かを指定します。フロータイプは、着信接続の場合は REQ、発信接続の場合は RES です。
  • プロトコル。プロトコルを指定します。選択できるプロトコルは、HTTP、SSL、TCP、および IP です。
  • 修飾子。選択したプロトコルに依存するプロトコル属性。
  • 演算子。接続データに対して実行するテストのタイプ。オペレータの選択は、テストする接続情報によって異なります。テストする接続情報がテキストの場合は、テキスト演算子を使用します。数値の場合は、標準の数値演算子を使用します。
  • Value. 接続データ要素(フロータイプ、プロトコル、修飾子によって定義される)がテストされる文字列または数値。値は、リテラルまたは式のいずれかです。リテラルまたは式は、接続データ要素のデータ型と一致する必要があります。

ポリシーでは、ブール演算子と比較演算子を使用して、従来の式を組み合わせて、より複雑な式を作成できます。

式要素は、左から右に解析されます。左端の要素はREQまたはRESのいずれかであり、それぞれ要求または応答を指定します。連続する用語は、特定の接続タイプとその接続タイプの特定の属性を定義します。各用語は、ピリオドによって先行または後続の用語から分離されます。引数は括弧内に表示され、渡された式要素の後に続きます。

次の古典的な式フラグメントは、着信接続のクライアント送信元 IP を返します。

REQ.IP.SOURCEIP

この例では、リクエスト内の IP アドレスを識別します。式要素 SOURCEIP は、送信元 IP アドレスを指定します。この式フラグメントは、それ自体では役に立たないかもしれません。追加の式要素である演算子を使用して、戻り値が特定の条件を満たしているかどうかを判断できます。次の式は、クライアント IP がサブネット 200.0.0.0/8 にあるかどうかをテストし、ブール値 TRUE または FALSE を返します。

REQ.IP.SOURCEIP == 200.0.0.0 -netmask 255.0.0.0

CLI を使用したクラシックポリシー式の作成

コマンドプロンプトで次のコマンドを入力して、パラメーターを設定し、構成を確認します。

-  set appfw policy <name> -rule <expression> -action <action>

-  show appfw policy <name>

> set appfw policy GenericApplicationSSL_ 'HTTP.REQ.METHOD.EQ("get")' APPFW_DROP
 Done
> show appfw policy GenericApplicationSSL_
        Name: GenericApplicationSSL_    Rule: HTTP.REQ.METHOD.EQ("get")
        Profile: APPFW_DROP     Hits: 0
        Undef Hits: 0
        Policy is bound to following entities
        1) REQ VSERVER app_u_GenericApplicationSSLPortalPages   PRIORITY : 100
 Done

GUI を使用してクラシックポリシーの式を追加する

この手順では、[式の追加] ダイアログボックスについて説明します。ポリシーを設定する機能によっては、このダイアログボックスに到達するルートが異なる場合があります。

  1. 「GUIを使用して従来の式を使用してポリシーを作成するには」の手順1~4を実行します。
  2. [式の追加] ダイアログボックスの [式の種類] で、作成する式の種類をクリックします。
  3. [フロータイプ] の下向き矢印をクリックし、フロータイプを選択します。

フロータイプは、通常 REQ または RES です。REQ オプションは、ポリシーをすべての着信接続または要求に適用するように指定します。RES オプションは、すべての発信接続または応答にポリシーを適用します。

アプリケーションファイアウォールポリシーの場合は、式タイプを [一般式] に設定し、フロータイプを [REQ] に設定しておきます。アプリケーションファイアウォールは、各要求と応答を 1 つのペアになったエンティティとして扱います。したがって、すべてのアプリケーションファイアウォールポリシーは REQ で始まります。

  1. [Protocol] の下向き矢印をクリックし、ポリシー式に使用するプロトコルを選択します。選択肢は次のとおりです:

    • HTTP. Web サーバーに送信される HTTP 要求を評価します。従来の式の場合、HTTP には HTTPS リクエストが含まれます。
    • SSL. 現在の接続に関連付けられている SSL データを評価します。
    • TCP. 現在の接続に関連付けられている TCP データを評価します。
    • 知的財産権です。現在の接続に関連付けられている IP アドレスを評価します。
  2. [Qualifier] で下向き矢印をクリックし、ポリシーの修飾子を選択します。 修飾子は、評価されるデータのタイプを定義します。表示される修飾子の一覧は、手順 4 で選択したプロトコルによって異なります。 HTTP プロトコルでは、次の選択肢が表示されます。

    • METHOD. 特定の HTTP メソッドを使用する HTTP リクエストをフィルタリングします。
    • [URL]をクリックします。特定の Web ページの HTTP 要求をフィルタリングします。
    • URLQUERY. 特定のクエリ文字列を含む HTTP リクエストをフィルタリングします。
    • VERSION. 指定された HTTP プロトコルのバージョンに基づいて HTTP 要求をフィルタリングします。
    • HEADER. 特定の HTTP ヘッダーに基づいてフィルタリングします。
    • URLLEN. URLの長さに基づいてフィルタリングします。
    • URLQUERY. URL のクエリ部分に基づいてフィルタリングします。
    • URLQUERYLEN. URL のクエリ部分の長さのみに基づいてフィルタリングします。
  3. [Operator] の下向き矢印をクリックし、ポリシー式の演算子を選択します。一般的な演算子は次のとおりです。

演算子 説明
== 指定された値に正確に一致するか、指定された値と完全に等しいです。
!= 指定された値と一致しません。
> 指定された値よりも大きい。
< 指定された値より小さい。
>= 指定した値以上である。
<= 指定された値以下である。
CONTAINS 指定された値を格納します。
CONTENTS 指定されたヘッダー、URL、または URL クエリの内容を返します。
EXISTS 指定されたヘッダーまたはクエリが存在します。
NOTCONTAINS 指定された値を含まない。
NOTEXISTS 指定されたヘッダーまたはクエリは存在しません。
  1. 「値」(Value) テキストボックスが表示されたら、必要に応じて文字列または数値を入力します。たとえば、フロータイプとして「REQ」、プロトコルとして「HTTP」、修飾子として「HEADER」を選択し、「値」フィールドにヘッダー文字列の値を入力し、「ヘッダー名」テキストボックスに文字列と一致するヘッダータイプを入力します。

  2. [OK] をクリックします。

  3. 複合エクスプレッションを作成するには、[追加] をクリックします。実行する複合のタイプは、[ポリシーの作成] ダイアログボックスで次の選択内容によって異なります。

    • 任意の式に一致します。式は論理 OR 関係にあります。
    • [** すべての式に一致]:** 式は論理 AND 関係にあります。
    • 表形式式。[AND]、[OR]、および [かっこ] ボタンをクリックして、評価を制御します。
    • 高度な自由形式。式コンポーネントを [式] フィールドに直接入力し、[AND]、[OR]、[かっこ] ボタンをクリックして評価を制御します。
クラシックエクスプレッションを構成する