コンテンツにスキップ

Envoy‑ベースWallarmノードの設定オプション

Envoyは、Envoy設定ファイル内で定義されたプラガブルフィルターを使用して受信リクエストを処理します。これらのフィルターは、リクエストに対して実行される動作を記述します。たとえば、envoy.http_connection_managerフィルターはHTTPリクエストをプロキシするために使用されます。このフィルターにはリクエストに適用できるHTTPフィルターが設定されています。

Wallarmモジュールは、Envoy HTTPフィルターとして設計されています。モジュールの一般設定は、wallarm HTTPフィルター専用のセクションに配置されます:

listeners:
   - address:
     filter_chains:
     - filters:
       - name: envoy.http_connection_manager
         typed_config:
           http_filters:
           - name: wallarm
             typed_config:
              "@type": type.googleapis.com/wallarm.Wallarm
              <the Wallarm module configuration>
              ...  

リクエストボディ処理を有効化してください

WallarmモジュールがHTTPリクエストボディを処理できるようにするためには、Envoy HTTPフィルターチェーン内でバッファーフィルターをWallarmモジュールの前に配置する必要があります。たとえば:

http_filters:
- name: envoy.buffer
  typed_config:
    "@type": type.googleapis.com/envoy.config.filter.http.buffer.v2.Buffer
    max_request_bytes: <maximum request size (in bytes)>
- name: wallarm
  typed_config:
    "@type": type.googleapis.com/wallarm.Wallarm
    <the Wallarm module configuration>
    ...

もし受信リクエストのサイズがmax_request_bytesパラメータの値を超える場合、このリクエストは破棄され、Envoyは413レスポンスコード(「Payload Too Large」)を返します。

リクエストフィルタリング設定

ファイルのrulesetsセクションには、リクエストフィルタリング設定に関連するパラメータが含まれています:

rulesets:
- name: rs0
  pdb: /etc/wallarm/proton.db
  custom_ruleset: /etc/wallarm/custom_ruleset
  key: /etc/wallarm/private.key
  general_ruleset_memory_limit: 0
  enable_libdetection: "on"
  ...
- name: rsN:
  ...

rs0 ... rsNのエントリは1つ以上のパラメータグループです。グループは任意の名前を付けることができ(後にrulesetパラメータを介して参照されます)、フィルタリングノードの設定には少なくとも1つのグループ(たとえばrs0)が存在する必要があります。

このセクションにはデフォルト値はありません。コンフィグファイル内で明示的に値を指定する必要があります。

定義レベル

このセクションはフィルタリングノードレベルでのみ定義できます。

パラメータ 説明 デフォルト値
pdb proton.dbファイルへのパス。 このファイルには、アプリケーション構成に依存しないグローバルなリクエストフィルタリング設定が含まれています。 /etc/wallarm/proton.db
custom_ruleset 保護対象アプリケーションに関する情報とフィルタリングノード設定が記述されたcustom rulesetファイルへのパス。 /etc/wallarm/custom_ruleset
key proton.dbおよびcustom rulesetファイルの暗号化/復号に使用されるWallarm秘密鍵が含まれるファイルへのパス。 /etc/wallarm/private.key
general_ruleset_memory_limit proton.dbおよびcustom rulesetの1インスタンスで使用できる最大メモリ量の制限。リクエスト処理中にメモリ制限を超えた場合、ユーザーは500エラーを受け取ります。 このパラメータには以下のサフィックスを使用できます:
  • kまたはK(キロバイト)
  • mまたはM(メガバイト)
  • gまたはG(ギガバイト)
0の値は制限を無効にします。
0
enable_libdetection SQL Injection攻撃に対する追加検証をlibdetectionライブラリを使用して有効/無効にします。ライブラリが悪意のあるペイロードを確認しない場合、リクエストは正当なものと見なされます。libdetectionライブラリの使用により、SQL Injection攻撃の誤検知数が減少します。

デフォルトではlibdetectionライブラリは有効になっています。最適な攻撃検出のために、ライブラリは有効のままにすることを推奨します。

libdetectionライブラリによる攻撃解析時は、NGINXおよびWallarmプロセスによるメモリ消費量が約10%増加する場合があります。
on

Postanalyticsモジュール設定

フィルタリングノードのtarantoolセクションには、Postanalyticsモジュールに関連するパラメータが含まれています:

tarantool:
  server:
  - uri: localhost:3313
    max_packets: 512
    max_packets_mem: 0
    reconnect_interval: 1

serverエントリは、Tarantoolサーバーの設定を記述したパラメータグループです。

定義レベル

このセクションはフィルタリングノードレベルでのみ定義できます。

パラメータ 説明 デフォルト値
uri Tarantoolサーバーに接続するための認証情報を含む文字列。 文字列の形式はIP addressまたはdomain name:portです。 localhost:3313
max_packets Tarantoolに送信されるシリアライズされたリクエストの数の上限。制限を解除するには、パラメータ値を0に設定します。 512
max_packets_mem Tarantoolに送信されるシリアライズされたリクエストの合計容量(バイト単位)の上限。 0(容量に制限はありません)
reconnect_interval Tarantoolへの再接続試行間隔(秒単位)。 値が0の場合、サーバーが利用不可能になった場合にフィルタリングノードができるだけ速く再接続を試みます(推奨されません)。 1

基本設定

Wallarm設定のconfセクションには、フィルタリングノードの基本動作に影響を与えるパラメータが含まれます:

conf:
  ruleset: rs0
  mode: "monitoring"
  mode_allow_override: "off"
  application: 42
  process_time_limit: 1000
  process_time_limit_block: "attack"
  request_memory_limit: 104857600
  wallarm_status: "off"
  wallarm_status_format: "json"
  parse_response: true
  unpack_response: true
  parse_html_response: true

定義レベル

より柔軟な保護レベルのため、以下のレベルでこのセクションを上書きできます:

  • ルートレベルで:

    routes:
    - match:
      typed_per_filter_config:
        wallarm:
          "@type": type.googleapis.com/wallarm.WallarmConf
          <the section parameters>
    
  • バーチャルホストレベルで:

    virtual_hosts:
    - name: <the name of the virtual host>
      typed_per_filter_config:
        wallarm:
          "@type": type.googleapis.com/wallarm.WallarmConf
          <the section parameters>
    

    ルートレベルで上書きされたconfセクションのパラメータは、バーチャルホストレベルで定義されたパラメータより優先され、これらはさらにフィルタリングノードレベルで定義されたパラメータよりも上位の優先順位を持ちます。

パラメータ 説明 デフォルト値
ruleset rulesetsセクションで定義されたパラメータグループのひとつ。 このパラメータグループは、使用されるリクエストフィルタリングルールを設定します。
もしこのパラメータがフィルタリングノードのconfセクションから省略された場合、ルートまたはバーチャルホストレベルで上書きされたconfセクションに記載する必要があります。
-
mode ノードモード:
  • block - 悪意のあるリクエストをブロックします。
  • monitoring - リクエストの解析のみを行い、ブロックはしません。
  • safe_blocking - graylisted IP addressesからの悪意のあるリクエストのみをブロックします。
  • monitoring - リクエストの解析のみを行い、ブロックはしません。
  • off - トラフィックの解析および処理を無効にします。

フィルトレーションモードの詳細 →
block
mode_allow_override modeパラメータで設定されたフィルタリングノードモードをcustom rulesetで上書きできるかどうかを設定します:
  • off - custom rulesetは無視されます。
  • strict - custom rulesetは動作モードを強化することのみ可能です。
  • on - 動作モードを強化もしくは緩和することが可能です。
たとえば、modeパラメータがmonitoringに設定され、mode_allow_overrideパラメータがstrictに設定されている場合、一部のリクエストをブロック(block)できますが、フィルタリングノードを完全に無効(off)にすることはできません。
off
application Wallarm Cloudで使用される保護対象アプリケーションの固有識別子。 値は0以外の正の整数でなければなりません。

アプリケーション設定の詳細 →
-1
partner_client_uuid multi-tenant Wallarmノードのtenantの固有識別子。 値はUUID形式の文字列である必要があり、たとえば:
  • 11111111-1111-1111-1111-111111111111
  • 123e4567-e89b-12d3-a456-426614174000

詳細は以下を参照してください:

-
process_time_limit

このパラメータは非推奨です

バージョン3.6からは、Limit request processing timeルール(旧「overlimit_res攻撃検知の微調整」)を使用してoverlimit_res攻撃検知を微調整することを推奨します。
process_time_limitパラメータは一時的にサポートされていますが、将来のリリースで削除される予定です。

1つのリクエストの処理時間の上限(ミリ秒単位)。 設定された時間内にリクエストを処理できない場合、エラーメッセージがログに記録され、リクエストはoverlimit_res攻撃としてマークされます。
1000
process_time_limit_block

このパラメータは非推奨です

バージョン3.6からは、Limit request processing timeルール(旧「overlimit_res攻撃検知の微調整」)を使用してoverlimit_res攻撃検知を微調整することを推奨します。
process_time_limit_blockパラメータは一時的にサポートされていますが、将来のリリースで削除される予定です。

リクエスト処理時間がprocess_time_limitパラメータで設定された上限を超えた場合の動作:
  • off - リクエストは常に無視されます。
  • on - mode: "off"でない限り常にリクエストをブロックします。
  • attack - modeパラメータで設定された攻撃ブロックモードに依存します:
    • off - リクエストは処理されません。
    • monitoring - リクエストは無視されます。
    • block - リクエストはブロックされます。
attack
wallarm_status フィルタリングノード統計サービスの有効/無効を設定します。 false
wallarm_status_format フィルタリングノード統計のフォーマット: jsonまたはprometheus json
disable_acl リクエスト発信元の解析を無効にします。 無効(on)の場合、フィルタリングノードはWallarm CloudからIP listsをダウンロードせず、リクエスト元IPの解析をスキップします。 off
parse_response アプリケーションのレスポンス解析を行うかどうか。 レスポンス解析はpassive detectionおよびthreat replay testingによる脆弱性検出に必要です。

可能な値は true(レスポンス解析を有効)とfalse(レスポンス解析を無効)です。
true
unpack_response アプリケーションレスポンスで返される圧縮データを解凍するかどうか。可能な値は true(解凍有効)とfalse(解凍無効)です。

このパラメータはparse_response trueの場合のみ有効です。
true
parse_html_response アプリケーションレスポンスで受信したHTMLコードに対してHTMLパーサーを適用するかどうか。可能な値は true(HTMLパーサー適用)とfalse(HTMLパーサー非適用)です。

このパラメータはparse_response trueの場合のみ有効です。
true