IPDS | WAF | 更新

投稿日: 25 年 2021 月 XNUMX 日

このセクションには、現在のWAFルールセットに使用可能なすべての設定が3つのタブで整理されて表示されます。 グローバル, キャンペーンのルール農場. このセクションの変更は、 お申し込み ボタン。

グローバル設定WAFルールセット

この設定は、セットに含まれているすべてのルールの動作を管理します。

idps アップデート

お名前. ルールを簡単に識別できるラベル。 ルールセットに名前を付けるために選択したラベルは変更できません。
リクエスト本文を確認してください. HTTP リクエストの本文を分析するかどうかを設定するフラグです。 このフラグが無効になっている場合、本文はスキップされ、リクエスト本文パラメータに対するルールの一致は処理されません。
リクエストボディ制限. これは、ボディ リクエストを検査するために保存されるリクエスト ボディの最大バイト数です。 このパラメーターの値が 0 の場合、WAF は content-length サイズを完全に保存します。 任意の制限値を設定することをお勧めします。
レスポンスボディを確認する. HTTP レスポンスのボディを解析する場合に設定するフラグです。 このフラグが無効になっている場合、本文はスキップされ、応答本文パラメータに対するルールの一致は処理されません。 より大きい応答 524288 (512KB) は無視されます。
デフォルトのアクション. この選択ボックスは、ルールで解像度が指定されていない場合のデフォルトの解像度として使用されます。 ルールのすべての一致が成功します。 ここでは、各アクションについて簡単に説明します。

  • 次を許可します。. HTTP トランザクションが完了するまで、現在の WAF の処理を​​有効にします。
  • 合格. WAF は、HTTP トランザクションを切断することなく、次のルールの評価を続行します。
  • 否定する. 現在の HTTP トランザクションを終了します。 これ以上のルールの評価は許可されません。 フェーズ 1 または 2 (リクエストの分析) でルールが一致した場合、リクエストはバックエンドに配信されません。 フェーズ 3 または 4 (応答の分析) でルールが一致した場合、応答はクライアントに配信されません。
  • リダイレクト。 HTTPトランザクションは停止され、HTTPリダイレクトがクライアントに送信されます。

リダイレクトURL. ルールが一致したときにクライアントに送信される URL です。 この URL にはリダイレクト解決が設定されています。
デフォルトフェーズ. この選択ボックスは、ルールでフェーズが指定されていない場合のデフォルト フェーズとして使用されます。 フェーズは、WAF ルールをフックできるようにする HTTP ステップです。 定義されたフェーズは次のとおりです。

  • リクエストヘッダを受信。 クライアントからのすべてのリクエストヘッダがロードバランサによって読み込まれると、ルールが実行されます。
  • リクエストボディを受け取る。 クライアントからの完全なリクエストボディがロードバランサにバッファリングされると、ルールが実行されます。
  • レスポンスリーダーが届く。 サーバーからのすべての応答ヘッダーがロードバランサーによって読み取られると、ルールが実行されます。
  • レスポンスボディを受け取る。 サーバーからの完全な応答本文がロードバランサによって読み取られると、ルールが実行されます。
  • ロギング前より。 WAFプロセスがロギングタスクを終了すると、ルールが実行されます。

デフォルトのログ. これはログのデフォルト アクションです。 この値は、ルール設定でログに関するアクションが指定されていない場合に使用されます。
ロギングのみ. このチェックボックスが有効になっている場合、セット内のルールの解決パラメーターは実行されません。 この作業モードは、セットが実行されている場合にのみ使用できます。

ルールを無効にする

それらのテーブルはそれらを修正することなくセットのルールを無効にすることを可能にします。

idps はルールセットを無効にします

有効なルール。 セットで現在有効になっているルールのリストです。 規則は、 ルールID とその 説明 パラメーター。
無効なルール。 セット内で現在無効になっているルールのリストです。

WAF規則のリスト

キャンペーンのルール このセクションでは、HTTP 攻撃を検出して防御する WAF ルールを作成および変更できます。

これらのルールは、順番に評価されるディレクティブです。つまり、この画面に表示されているのと同じ順序で評価されます。 ルールを並べ替える必要がある場合は、 並び替え ボタンをクリックし、要求された位置にドラッグ アンド ドロップします。

ルールに使用できるパラメータについては、以下で説明しています。

idps ルール

ID. ルールセット内のルールを識別するための識別子です。 この識別子は、セット内のルールの位置に対応しています。
ルールID. これはルールの一意の識別子です。 同じルール ID を持つ XNUMX つのルールを含む waf セットにファームをリンクすることはできません。
説明. ルールを識別するための説明メッセージです。 このメッセージは、一致が成功した場合に記録されます。
. フェーズは、ルールが実行される HTTP 要求のステップを表します。 可能なフェーズは次のとおりです。

  • リクエストヘッダを受信。 クライアントからのすべてのリクエストヘッダがロードバランサによって読み込まれると、ルールが実行されます。
  • リクエストボディを受け取る。 クライアントからの完全なリクエストボディがロードバランサにバッファリングされると、ルールが実行されます。
  • レスポンスリーダーが届く。 サーバーからのすべての応答ヘッダーがロードバランサーによって読み取られると、ルールが実行されます。
  • レスポンスボディを受け取る。 サーバーからの完全な応答本文がロードバランサによって読み取られると、ルールが実行されます。
  • ロギング前より。 WAFプロセスがロギングタスクを終了すると、ルールが実行されます。

分解能. この選択ボックスは、すべての一致条件が達成された場合に実行するために選択されたアクションです。

  • 次を許可します。。 このアクションを持つルールが一致すると、(現在のHTTPトランザクションに対して)これ以上ルールは評価されません。
  • 合格. WAF は、HTTP トランザクションを切断することなく、次のルールの評価を続行します。
  • 否定する. 現在の HTTP トランザクションを終了します。 ルールの評価はもうありません。 フェーズ 1 または 2 (リクエストの分析) でルールが一致した場合、リクエストはバックエンドに配信されません。 フェーズ 3 または 4 (応答の分析) でルールが一致した場合、応答はクライアントに配信されません。
  • リダイレクト。 HTTPトランザクションは停止され、HTTPリダイレクトがクライアントに送信されます。
  • デフォルトのアクション. 何も適用しない場合、解像度が設定されます。 通常、それは 次を許可します。 分解能

リダイレクトURL. ルールがリダイレクトを実行する場合に、クライアントがリダイレクトされる URL です。 このパラメーターは、解決フィールドでリダイレクトが選択されたときに表示されます。
スキップ. すべての一致が達成された場合、ルールはこのフィールドで指定された数のルールをスキップします。
後にスキップ. すべての一致が達成されると、ルールは別のファイアウォール位置にジャンプします。 ルールは、「マーク」または別のルール ID にジャンプできます。 ルール ID はジャンプ後に実行され、現在のルールと同じフェーズになります。
実行する. LUA スクリプトへのパスです。 スクリプトは、事前にロード バランサーにアップロードする必要があります。 最初の一致が達成されると実行されます。
ログ. このパラメーターを有効にすると、最初の一致が達成されたときにルールがログに記録されます。

rawでWAFルールを編集する

フォームが特定の WAF ルールを適切に説明しておらず、管理者がそのルールに精通していない場合 SecLang 構文を使用すると、編集オプションを使用してルールまたはルールのバッチを作成できます。 このフィールドは、すべての指示を受け入れます。 命令とパラメータがサポートされている場合 SecLang 構文では、フォームで表現されるパラメーターは表示されません。 ただし、それらは編集フォームに表示され、実行時に処理されます。

フォーム モードと raw モードの両方の例を次に示します。

フォームモード

これは、WAF ルールを編集するためのよりユーザーフレンドリーなモードです。
zevenet ipds編集ルール

Raw モード

このモードは、上級ユーザー向けです。
zevenet ipds編集ルール

WAFルールを作成する

新しいルールが追加されると、セットの他のルールに追加されます。 新しいルールを作成するには、新しいルールを作成する方法が XNUMX つあります。

zevenet ipds 作成ルール
ルールの種類:

  • アクション. フォームを使用して基本ルールを作成します。 フォームのパラメーターは、 WAF規則のリスト セクション。 ルールの実行が条件付きの場合は、 条件を追加 実行条件を設定します。

    ルールアクションを作成するzevenet ipds

  • Mark Hodder. ファイアウォールマークを設定します。 これらのマークは、一致条件が達成されると使用されます。 期待されるパラメータは、マークを識別する名前です。

    ルールマークを作成するzevenet ipds

  • カスタム. このフォームは、SecLang 構文の規則 (および規則のバッチ) を受け入れます。 詳細については、 SecLang 構文については、 libmodsecurityプロジェクトのドキュメント.

    ルールのカスタムを作成するzevenet ipds

条件リスト

下の画像の表は、HTTP 解析済みパケットが適用されるルールに一致する必要がある条件のリストを示しています。 これらの一致はすべて、ルールで定義されたフェーズで実行されます。 一致は順次チェックされ、すべてが達成された場合にルールが適用されます。

idps 条件リスト

一致を評価するために、WAF は操作を実行します (パラメーター 演算子 及び オペレーティング) 変数のリストに対して。 リスト内のいくつかの変数が操作に準拠している場合、それらは成功したと見なされます。 たとえば、次の画像では、ヘッダー IMAGES クライアントから送信された要求ヘッダーのリストで検索されます。 まず、各ヘッダーの 64 ベースごとにデコードし、ヘッダーを小文字に変換します。 変数の変換が完了すると、正規表現が適用され、文字列が検索されます 画像 変換された変数のリスト。 の マルチマッチ optionは各変換操作(基本64デコード後および小文字変換後)に対して一致を試みます。

条件を作成する

一致は、WAF ルールを実行するために達成する必要がある条件を構築します。 一致を評価するために、WAF は操作を実行します (パラメーター 演算子 及び オペレーティング) 変数のリストに対して。 演算とリストの変数が一致した場合、一致は成功したと見なされます。 たとえば、 ローカルホスト (127.0.0.1) リクエストヘッダーリストと仮想ホストのHTTPフィールドでは、次の設定で評価できます。

idps作成条件

これらは、条件を設定するための構成パラメーターです。

変数. ルールが照合しようとする HTTP トランザクションの部分を示します。 リストされた変数から選択でき、それらのいくつかが一致する場合、一致は有効と見なされます。 変数フィールドをクリックすると、ドロップダウン メニューが表示されます。 変数構成に関する情報は、 変数を作成する のセクションから無料でダウンロードできます。
変換. 変換は、変数に適用される変更のリストです。 変換は、フィールドに表示されているのと同じ順序で順次適用されます。複数一致オプションを使用して、適用された各変換に対して一致を試みることができます。 変換によって HTTP トランザクションの情報が変更されることはありません。それらは一時的なコンテキストに保存され、操作が完了すると削除されます。 ここに 変換のリストです。 このパラメーターは、回避回避テクニックを削除するか、コード化データを削除するために使用されます。
演算子. これは、ルールが一致を試みる方法です。 このパラメータは通常、 オペレーティング. ここに 演算子のリストです。
オペレーティング. これは、ルールが試合で試みるものです。 パラメータは通常、演算子と組み合わされます。 期待される値の型は、演算子と一致する必要があります。
マルチマッチ. このパラメーターは、複数の変換が構成されている場合に使用されます。 ルールは変数を一致させようとします。 演算子、 そしてその オペレーティング 変換の各値に対して。 可能な値は次のとおりです。複数一致を有効にする true、または複数一致機能を無効にする false。
Not Match. このチェックボックスが有効になっている場合、一致の結果は否定され、次のように変換されます。 true when the result is false またはに変換する false when the result is true.

変数を作成する

変数は、一致条件の必須パラメーターです。 彼らはHTTPの一部を選択します 要求/応答 情報を探します。

Variables. このパラメーターは、情報 (時間、サーバーなど) を検索するための HTTP 要求/応答のフィールドを指定します。

変数作成条件

変数の引数. 変数が選択されている場合、その変数から要素を指定する必要がある場合があります。 たとえば、次の画像は、リクエスト ヘッダーがどのように処理されるかを示しています。 host 選択がチェックされています。

idps 変数数

変数の要素を数える. このチェックボックスは、変数内の要素の数をカウントします。 この機能は、変数がリストの場合に便利です。

idps 条件は変数を無視します

一致するこの変数を無視します. このチェックボックスが有効になっている場合、変数は一致でチェックされません。 この機能は、値のリストを含む変数をチェックするときに便利ですが、そのうちの XNUMX つを除外する必要もあります。

 

変数テーブル

変数説明
ARGSリクエストの引数の値のコレクションです。
ARGS_JSONJSON リクエストの引数の値を持つコレクションです。 この変数は、WAF が JSON 引数を解析する場合に使用できます。 ルール セット REQUEST-901-INITIALIZATION を有効にする必要があります。
ARGS_COMBINED_SIZEリクエストパラメータの合計サイズ。 ファイルは除外されます。
ARGS_NAMESこれは、リクエスト内の引数の名前のコレクションです。
ファイルユーザーfilesysのファイル名が含まれています。 データがmultipart / form-dataの場合のみ
FILES_COMBINED_SIZE要求内のファイルの合計サイズです。 データがmultipart / form-dataの場合のみ
FILES_NAMESファイルをアップロードするために使用されるファイル名のリストです。 データがmultipart / form-dataの場合のみ
FILES_SIZES個々のファイルサイズのリストが含まれています。 データがmultipart / form-dataの場合のみ
REQBODY_ERROR要求本体のフォーマットがJSONまたはXMLに対して正しくない場合、この変数は1です。それ以外の場合、値は0です。
REQUEST_BODY生ボディリクエストです。 リクエストに「application/x-www-form-urlencoded」ヘッダーがない場合は、REQUEST_HEADER フェーズで「ctl:forceRequestBodyVariable」を使用する必要があります。
REQUEST_BODY_LENGTHリクエストボディのバイト数です。
REQUEST_COOKIESこれは、すべてのリクエスト Cookie 値のリストです。
REQUEST_COOKIES_NAMESこれは、すべてのリクエスト Cookie 名のリストです。
REQUEST_HEADERSこの変数はすべてのリクエストヘッダを持ちます。
REQUEST_HEADERS_NAMESこの変数には、リクエスト ヘッダー名のリストがあります。
REQUEST_METHODリクエスト方法です。
REQUEST_PROTOCOLこの変数はリクエストHTTPバージョンプロトコルを保持します。
REQUEST_URIこれはURI要求パスです。 仮想ホストは除外されます。
PATH_INFOURIパスの前の情報です。
FULL_REQUESTそれは完全な要求です。
FULL_REQUEST_LENGTHこれは、完全なリクエストが持つことができるバイト数です。
RESPONSE_BODY生の反応です。
RESPONSE_CONTENT_LENGTHレスポンスボディのバイト数です。
RESPONSE_HEADERSこの変数はすべてのレスポンスヘッダを持ちます。
RESPONSE_HEADERS_NAMESこの変数には、応答ヘッダー名のリストがあります。
RESPONSE_PROTOCOLこの変数は、応答HTTPバージョンプロトコルを保持します。
RESPONSE_STATUSレスポンスHTTPコードです。
REMOTE_ADDRクライアントのIPアドレスです。
REMOTE_PORTクライアントが接続を初期化するポートです。
REMOTE_USER認証されたユーザーの名前です。
タイムサーバーの時間です。 形式は時:分:秒です。
DURATION現在のトランザクションの開始時刻からのミリ秒数です。
MULTIPART_FILENAMEこれはマルチパートリクエストのフィールドfilenameです。
MULTIPART_NAMEこれはマルチパートリクエストのフィールド名です。
MATCHED_VARこれは最後の一致操作で一致した値です。 この値にはキャプチャオプションは必要ありませんが、一致操作ごとに置き換えられます。
MATCHED_VARS一致したすべての値のリストです。
SERVER_ADDRサーバーのIPアドレスです。
SERVER_NAMEこれは、リクエスト URI から取得する仮想ホストです。
ENVそれはWAFの環境変数です。
TXこれは、現在のトランザクションの変数のコレクションです。 これらの変数は、トランザクションが終了すると削除されます。 変数 TX:0-TX:9 は、strRegex またはフレーズ演算子でキャプチャされた値を保存します。

 

オペレータの表

演算子は異なるコンテキストを持つことができます。 このコンテキストは、整数の場合は int、IP 操作の場合は IP、文字列の場合は str、データを検証する場合は validate などの接頭辞で示されます。

変数説明
strBeginsいずれかの変数がoperatingの値で始まっていれば、規則は一致します。
strContainsいずれかの変数にoperatingの値が含まれていれば、規則は一致します。
strContainsWordいずれかの変数に単語または操作の値が含まれている場合、ルールは一致します。
ストエンドいずれかの変数がoperatingの値で終わっていれば、規則は一致します。
strWithinいずれかの変数が operating の値で始まる場合、ルールは一致します。
strMatchいずれかの変数が operating の値と一致する場合、ルールは一致します。 この操作は、文字で分割された文字列のリストにすることができます |
strEqいずれかの変数が操作の値と同一である場合、ルールは一致します。
strRegexいずれかの変数が操作で使用される正規表現と一致する場合、ルールは一致します。
strPhraseいずれかの変数が動作中のリストのいずれかの値と一致する場合、ルールは一致します。
strPhrasesFromFile演算子 strPhrases とほとんど同じですが、操作はフレーズのリストとして定義される場所です。
intEQいずれかの変数が操作に使用された数と等しい場合、規則は一致します。
intGEいずれかの変数が操作に使用された数以上の場合、ルールは一致します。
intGTいずれかの変数が操作に使用された数より大きい場合、ルールは一致します。
intLEいずれかの変数が操作に使用された数以下の場合、ルールは一致します。
intLTいずれかの変数が操作に使用された数より小さい場合、ルールは一致します。
detectSQLi変数のリストで SQL インジェクションを検出します。 このオペレーターは操作を想定していません。
detectXSSXSS インジェクションの検出を変数のリストに適用します。 このオペレーターは操作を想定していません。
ipMatch動作中の IP またはネットワーク セグメントと変数のリストの照合を試みます。
ipMatchFromFileこれはオペレーター ipMatch と同じですが、これは IP とネットワーク セグメントのリストを含むファイルに対して変数の一致を試みます。
validateByteRangeこれにより、変数のバイト数が動作値の 10 つに含まれるようになります。 操作例は「13、32、126-XNUMX」です。
validateUrlEncodingエンコードされたデータを検証します。 この演算子は、一般的にデータをエンコードしないデータ、または複数回エンコードされるデータに対してのみ使用する必要があります。
validateUtf8EncodingUTF-8 の変数を検証します。 このオペレーターは操作を想定していません。
verifyCreditCard変数がクレジット カード番号かどうかを検証します。 このパラメーターは、正規表現を操作として受け入れます。 一致する場合は、カードの検証に成功します。
verifySSN変数が米国の社会保障番号かどうかを検証します。 このパラメータは、正規表現を動作中として受け入れ、一致する場合はSSN検証を適用します。
matchAllways常に true を返し、一致を強制します。
matchNever常に false を返し、不一致を強制します。

 

変換テーブル

変換説明
base64DecodeBase64エンコード文字列をデコードします。
base64DecodeExt無効な文字を無視してBase64エンコード文字列をデコードします。
sqlHexDecodeSQL 16進データをデコードします。
base64EncodeBase64エンコーディングを使用してエンコードします。
cmdLineエスケープされたコマンド ラインに関連する問題を回避します。
compressWhitespace任意の空白文字(0x20、\ f、\ t、\ n、\ r、\ v、0xa0)をスペース(ASCII 0x20)に変換し、連続する複数のスペース文字を1つに圧縮します。
cssDecodeCSS 2.x エスケープ規則を使用してエンコードされた文字をデコードします。 この関数は、デコード プロセスで最大 XNUMX バイトしか使用しません。つまり、CSS エンコーディングを使用してエンコードされた ASCII 文字 (通常はエンコードされません) を明らかにするため、またはバックスラッシュと非スラッシュの組み合わせである回避に対抗するために使用されます。 -XNUMX 進文字 (たとえば、ja\vascript は javascript と同等)。
escapeSeqDecodeANSI Cエスケープシーケンスをデコードします:\ a、\ b、\ f、\ n、\ r、\ t、\ v、\\、\?、\ '、\”、\ xHH(0進数)、\ XNUMXOOO(XNUMX進数) 。 無効なエンコーディングが出力に残ります。
hexDecodehexEncodeで使用されているものと同じアルゴリズムを使用してエンコードされた文字列をデコードします(次のエントリを参照)。
hexEncode各入力バイトを2つの16進文字で置き換えることによって、文字列(おそらくバイナリ文字を含む)をエンコードします。 たとえば、xyzは78797aとしてエンコードされます。
htmlEntityDecodeHTMLエンティティとしてエンコードされた文字をデコードします。
jsDecodeJavaScriptのエスケープシーケンスをデコードします。
長さ入力文字列の長さをバイト単位で検索し、それを (文字列として) 出力に配置します。
小文字現在のCロケールを使用して、すべての文字を小文字に変換します。
md5データ入力から MD5 ハッシュを計算します。 計算されたハッシュは生のバイナリ形式であり、印刷 (またはログ) するテキストにエンコードする必要がある場合があります。 ハッシュ関数は、通常、hexEncode と組み合わせて使用​​されます。
なし実際の変換関数ではなく、現在のルールに関連付けられている以前の変換関数を削除する命令です。
normalizePath入力文字列から複数のスラッシュ、ディレクトリの自己参照、およびディレクトリの後方参照 (入力の先頭にある場合を除く) を削除します。
normalizePathWinnormalizePathと同じですが、最初にバックスラッシュ文字をスラッシュに変換します。
parityEven7bit7 ビット データの偶数パリティを計算し、各ターゲット バイトの 8 番目のビットを計算されたパリティ ビットに置き換えます。
parityOdd7bit7 ビット データの奇数パリティを計算し、各ターゲット バイトの 8 番目のビットを計算されたパリティ ビットに置き換えます。
parityZero7bit各ターゲット バイトの 7 番目のビットをゼロ パリティ ビットに置き換えて、8 ビット データのゼロ パリティを計算します。これにより、偶数/奇数パリティの 7 ビット データを ASCII7 データとして検査できます。
removeNulls入力からすべてのNULバイトを削除します。
removeWhitespace入力からすべての空白文字を削除します。
replaceCommentsCスタイルのコメント(/ *…* /)の各オカレンスを単一のスペースに置き換えます(連続する複数のオカレンスは圧縮されません)。 終了していないコメントもスペース(ASCII 0x20)に置き換えられます。 ただし、コメント(* /)のスタンドアロン終了は処理されません。
removeCommentsChar一般的なコメント文字(/ *、* /、-、#)を削除します。
replaceNulls入力のNULバイトをスペース文字(ASCII 0x20)に置き換えます。
urlDecodeURLエンコードされた入力文字列をデコードします。 無効なエンコーディング(つまり、16進数以外の文字を使用するもの、または文字列の末尾にあり、1または2バイトが欠けているもの)は変換されませんが、エラーは発生しません。
大文字現在のCロケールを使用して、すべての文字を大文字に変換します。
urlDecodeUniurlDecode と同様ですが、Microsoft 固有の %, u エンコーディングがサポートされています。
urlEncodeURLエンコードを使用して入力文字列をエンコードします。
utf8toUnicodeすべての UTF-8 文字シーケンスを Unicode に変換します。 これは、特に英語以外の言語の入力の正規化に役立ち、誤検知と誤検知を最小限に抑えます。
sha1入力文字列からSHA1ハッシュを計算します。 計算されたハッシュは生のバイナリ形式であり、印刷(またはログ)されるテキストにエンコードされる必要があるかもしれません。 ハッシュ関数は通常hexEncodeと組み合わせて使用​​されます。
trimLeft入力文字列の左側から空白を削除します。
trimRight入力文字列の右側から空白を削除します。
トリム入力文字列の左右両側から空白を削除します。

 

農場のWAF設定

このセクションでは、現在のWAFルールセットをHTTPファームに割り当てることができます。

zevenet ipds ルールセット ファーム

このセクションでは、(シフト キーボード ボタンを押したままにして) XNUMX つまたは複数のファームを選択し、WAF ルール セットを割り当てたり、それらを削除したりできます。 二重矢印ボタンを使用して、利用可能なすべてのファームから割り当てまたは削除することもできます。

上の共有:

GNU Free Documentation Licenseの条項に基づくドキュメンテーション。

この記事は役に立ちましたか?

関連記事