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エラーを受け取ります。 このパラメータには以下のサフィックスを使用できます:
0 の値は制限を無効にします。 | 0 |
enable_libdetection | SQL Injection攻撃に対する追加検証をlibdetectionライブラリを使用して有効/無効にします。ライブラリが悪意のあるペイロードを確認しない場合、リクエストは正当なものと見なされます。libdetectionライブラリの使用により、SQL Injection攻撃の誤検知数が減少します。 デフォルトではlibdetectionライブラリは有効になっています。最適な攻撃検出のために、ライブラリは有効のままにすることを推奨します。 libdetectionライブラリによる攻撃解析時は、NGINXおよびWallarmプロセスによるメモリ消費量が約10%増加する場合があります。 | on |
Postanalyticsモジュール設定¶
フィルタリングノードのtarantool
セクションには、Postanalyticsモジュールに関連するパラメータが含まれています:
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
定義レベル
より柔軟な保護レベルのため、以下のレベルでこのセクションを上書きできます:
パラメータ | 説明 | デフォルト値 |
---|---|---|
ruleset | rulesets セクションで定義されたパラメータグループのひとつ。 このパラメータグループは、使用されるリクエストフィルタリングルールを設定します。もしこのパラメータがフィルタリングノードの conf セクションから省略された場合、ルートまたはバーチャルホストレベルで上書きされたconf セクションに記載する必要があります。 | - |
mode | ノードモード:
フィルトレーションモードの詳細 → | block |
mode_allow_override | mode パラメータで設定されたフィルタリングノードモードをcustom rulesetで上書きできるかどうかを設定します:
mode パラメータがmonitoring に設定され、mode_allow_override パラメータがstrict に設定されている場合、一部のリクエストをブロック(block )できますが、フィルタリングノードを完全に無効(off )にすることはできません。 | off |
application | Wallarm Cloudで使用される保護対象アプリケーションの固有識別子。 値は0 以外の正の整数でなければなりません。アプリケーション設定の詳細 → | -1 |
partner_client_uuid | multi-tenant Wallarmノードのtenantの固有識別子。 値はUUID形式の文字列である必要があり、たとえば:
詳細は以下を参照してください: | - |
process_time_limit | このパラメータは非推奨です バージョン3.6からは、Limit request processing timeルール(旧「overlimit_res攻撃検知の微調整」)を使用して overlimit_res 攻撃としてマークされます。 | 1000 |
process_time_limit_block | このパラメータは非推奨です バージョン3.6からは、Limit request processing timeルール(旧「overlimit_res攻撃検知の微調整」)を使用して process_time_limit パラメータで設定された上限を超えた場合の動作:
| 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 |