NGINXベースのWallarmノードの設定オプション¶
セルフホスト型のWallarm NGINXノードで利用できる詳細な調整オプションについて説明します。これらを活用してWallarmソリューションを最大限に活用できます。
NGINX公式ドキュメント
Wallarmの設定はNGINXの設定と非常に似ています。公式のNGINXドキュメントをご参照ください。Wallarm固有の設定オプションに加えて、NGINXの設定機能をフルに利用できます。
Wallarmディレクティブ¶
disable_acl¶
リクエストの送信元解析を無効化できます。on
に設定すると、フィルタリングノードはWallarm CloudからIPリストをダウンロードせず、リクエスト送信元IPの解析をスキップします。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値はoff
です。
wallarm_acl_access_phase¶
このディレクティブは、NGINXのaccessフェーズでdenylistにあるIPからのリクエストをブロックするようNGINXベースのWallarmノードに指示します。つまり:
-
wallarm_acl_access_phase on
の場合、Wallarmノードは任意のフィルタリングモード(off
を除く)でdenylistのIPからのあらゆるリクエストを即座にブロックし、denylistのIPからのリクエストに対して攻撃兆候の検索を行いません。これはデフォルトかつ推奨の値です。denylistが標準どおりに動作し、ノードのCPU負荷を大幅に低減できます。
-
wallarm_acl_access_phase off
の場合、Wallarmノードはまず攻撃兆候の解析を行い、その後にblock
またはsafe_blocking
モードで動作している場合にdenylistのIPからのリクエストをブロックします。monitoring
フィルタリングモードでは、ノードはすべてのリクエストで攻撃兆候を検索しますが、送信元IPがdenylistでもブロックしません。wallarm_acl_access_phase off
の挙動は、ノードのCPU負荷を大幅に増加させます。
デフォルト値と他ディレクティブとの相互作用
デフォルト値: on
(Wallarmノード4.2以降)
このディレクティブはNGINX設定ファイルのhttpブロック内でのみ設定できます。
- wallarmモードが
off
またはdisable_acl on
の場合、IPリストは処理されず、wallarm_acl_access_phase
を有効化しても意味がありません。 wallarm_acl_access_phase
ディレクティブはwallarm_mode
より優先されるため、フィルタリングノードのモードがmonitoring
でも(wallarm_acl_access_phase on
のとき)denylistのIPからのリクエストはブロックされます。
wallarm_acl_export_enable¶
このディレクティブは、denylistのIPからのリクエストに関する統計をノードからWallarm Cloudへ送信するかどうかをon
/off
で切り替えます。
-
wallarm_acl_export_enable on
の場合、denylistのIPからのリクエストに関する統計がAttacksセクションに表示されます。 -
wallarm_acl_export_enable off
の場合、denylistのIPからのリクエストに関する統計は表示されません。
Info
このパラメータはhttpブロック内で設定します。
デフォルト値: on
wallarm_api_conf¶
Wallarm APIへのアクセス要件を含むnode.yaml
ファイルへのパスです。
デフォルト:
フィルタリングノードからのシリアライズ済みリクエストをpostanalyticsモジュール(wstore)へアップロードする代わりに、直接Wallarm API(Cloud)へアップロードするために使用します。攻撃を含むリクエストのみがAPIへ送信されます。攻撃を含まないリクエストは保存されません。
node.yamlの内容例:
wallarm_application¶
Wallarm Cloudで使用する保護対象アプリケーションの一意識別子です。値は0
を除く正の整数にできます。
一意識別子はアプリケーションのドメインにもドメインパスにも設定できます。例:
ドメインexample.comの設定ファイル:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
listen 443 ssl;
...
wallarm_mode monitoring;
wallarm_application 1;
location / {
proxy_pass http://example.com;
include proxy_params;
}
}
ドメインtest.comの設定ファイル:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
listen 443 ssl;
...
wallarm_mode monitoring;
location /login {
proxy_pass http://example.com/login;
include proxy_params;
wallarm_application 3;
}
location /users {
proxy_pass http://example.com/users;
include proxy_params;
wallarm_application 4;
}
}
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: -1
。
wallarm_block_page¶
ブロックされたリクエストへの応答内容を設定できます。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
wallarm_block_page_add_dynamic_path¶
このディレクティブは、コード内にNGINX変数を含むブロックページを初期化し、そのブロックページへのパスも変数で設定する場合に使用します。それ以外の場合は使用しません。
Info
このディレクティブはNGINX設定ファイルのhttp
ブロック内で設定できます。
wallarm_cache_path¶
サーバー起動時に、proton.dbおよびcustom rulesetファイルのコピーを保存するバックアップカタログが作成されるディレクトリです。このディレクトリはNGINXを実行するクライアントから書き込み可能である必要があります。
Info
このパラメータはhttpブロック内でのみ設定します。
wallarm_custom_ruleset_path¶
保護対象アプリケーションやフィルタリングノードの設定情報を含むcustom rulesetファイルへのパスです。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値:
- DockerのNGINXベースイメージ、クラウドイメージ、NGINX Nodeのall-in-oneインストーラーおよびNative Nodeインストール:
/opt/wallarm/etc/wallarm/custom_ruleset
- その他のインストール成果物:
/etc/wallarm/custom_ruleset
wallarm_enable_apifw¶
このディレクティブは、リリース4.10以降で利用可能なAPI Specification Enforcementをon
で有効化、off
で無効化します。この機能を有効化しても、必要なサブスクリプションの契約およびWallarm Console UIでの設定に代わるものではない点にご注意ください。
Info
このパラメータはserver
ブロック内で設定できます。
デフォルト値: on
。
wallarm_enable_libdetection¶
その他のデプロイオプション
このセクションは、NGINXのall-in-oneインストーラーおよびDockerインストールでの設定方法を説明します。他のデプロイオプションについては次をご参照ください:
- NGINX Ingress controller
- Sidecar(
wallarm-enable-libdetection
Podアノテーション) - AWS Terraform(
libdetection
変数)
libdetectionライブラリによるSQLインジェクション攻撃の追加検証を有効/無効にします。libdetectionを使用すると二重検知が行われ、誤検知を減らせます。
libdetectionライブラリでのリクエスト解析は、すべてのデプロイオプションでデフォルト有効です。誤検知を減らすため、有効のままにすることを推奨します。
追加検証を確認するには、保護対象リソースへ次のリクエストを送信します:
-
基本の検知セット(ライブラリlibproton)は
UNION SELECT
をSQLインジェクション攻撃の兆候として検知します。UNION SELECT
単体はSQLインジェクション攻撃の兆候ではないため、libprotonは誤検知を起こします。 -
libdetectionライブラリでの解析が有効な場合、リクエスト内のSQLインジェクション攻撃の兆候は確認されません。リクエストは正当と見なされ、攻撃はWallarm Cloudへアップロードされず、(フィルタリングノードが
block
モードで動作していても)ブロックされません。
メモリ消費量の増加
libdetectionライブラリを使って攻撃を解析すると、NGINXおよびWallarmプロセスが消費するメモリ量が約10%増加する場合があります。
wallarm_fallback¶
値をon
に設定すると、NGINXは緊急モードに入ることができます。proton.dbまたはcustom rulesetをダウンロードできない場合、この設定はデータのダウンロードに失敗したhttp、server、locationブロックについてWallarmモジュールを無効化します。NGINXは動作を継続します。
Info
デフォルト値はon
です。
このパラメータはhttp、server、location各ブロック内で設定できます。
wallarm_file_check_interval¶
proton.dbおよびcustom rulesetファイルに新しいデータがあるかをチェックする間隔を定義します。単位は接尾辞で指定します:
-
接尾辞なし: 分
-
s
: 秒 -
ms
: ミリ秒
Info
このパラメータはhttpブロック内でのみ設定します。
デフォルト値: 1
(1分)
wallarm_general_ruleset_memory_limit¶
proton.dbおよびcustom rulesetの1インスタンスが使用できる最大メモリ量の上限を設定します。
処理中にこのメモリ上限を超えると、ユーザーには500エラーが返されます。
このパラメータでは次の接尾辞を使用できます:
-
k
またはK
: キロバイト -
m
またはM
: メガバイト -
g
またはG
: ギガバイト
値が0の場合、上限を無効化します。
Info
このパラメータはhttp、server、locationの各ブロック内で設定できます。
デフォルト値: 1
GB
wallarm_global_trainingset_path¶
このディレクティブは非推奨です
Wallarmノード3.6以降では、代わりにwallarm_protondb_path
ディレクティブを使用してください。ディレクティブ名を変更するだけで、動作ロジックは変わりません。
wallarm_http_v2_stream_max_len¶
HTTP/2ストリームの最大許容長をバイト単位で設定します。指定値の半分に達すると、ストリームを穏やかに終了させるためにクライアントへHTTP/2のGOAWAY
フレームを送信します。ストリームが閉じられず最大長に達した場合、NGINXは接続を強制終了します。
このオプションを設定しない場合、ストリーム長は無制限のままで、特に長時間接続のgRPC環境ではNGINXプロセスが無制限にメモリ消費する可能性があります。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
ディレクティブのデフォルト値はありません。デフォルトではHTTP/2ストリームの長さに制限はありません。
wallarm_instance¶
このディレクティブは非推奨です
- このディレクティブを保護対象アプリケーションの一意識別子の設定に使用していた場合は、
wallarm_application
へ名称変更してください。 - マルチテナントノードのテナントの一意識別子を設定する場合は、
wallarm_instance
の代わりにwallarm_partner_client_uuid
ディレクティブを使用してください。
バージョン4.0より前のフィルタリングノードで使用していた設定を更新する場合:
- マルチテナンシー機能なしのフィルタリングノードへアップグレードし、保護対象アプリケーションの一意識別子に
wallarm_instance
を使用している場合は、wallarm_application
へ名称変更してください。 - マルチテナンシー機能ありのフィルタリングノードへアップグレードする場合、すべての
wallarm_instance
はwallarm_application
と見なされます。その上でマルチテナンシー再設定手順に従って設定を書き換えてください。
wallarm_key_path¶
proton.dbおよびcustom rulesetファイルの暗号化/復号に使用するWallarmの秘密鍵へのパスです。
Info
デフォルト値:
- DockerのNGINXベースイメージ、クラウドイメージ、NGINX Nodeのall-in-oneインストーラーおよびNative Nodeインストール:
/opt/wallarm/etc/wallarm/private.key
- その他のインストール成果物:
/etc/wallarm/private.key
wallarm_local_trainingset_path¶
このディレクティブは非推奨です
Wallarmノード3.6以降では、代わりにwallarm_custom_ruleset_path
ディレクティブを使用してください。ディレクティブ名を変更するだけで、動作ロジックは変わりません。
wallarm_max_request_body_size¶
公開用途では非公開です。
Nodeが解析するHTTPリクエストボディの最大サイズ(バイト)を定義します。リクエストボディが指定上限を超えた場合、超過部分はスキップされ、脅威の検査は行われません。
このディレクティブはリリース6.2.0以降で利用可能です。
Info
このパラメータはhttp、server、locationブロック内で設定します。
デフォルト値: 無制限。
wallarm_max_request_stream_message_size¶
Nodeが解析するgRPCまたはWebSocketストリーム内の単一メッセージペイロードの最大サイズ(バイト)を定義します。メッセージが指定上限を超えた場合、超過データはスキップされ、脅威の検査は行われません。
gRPCメッセージヘッダーはサイズ計算に含まれません。
このディレクティブはリリース6.2.0以降で利用可能です。
Info
このパラメータはhttp、server、locationブロック内で設定します。
デフォルト値: 1Mb
- 5 MBのファイルを1つのgRPCメッセージとして送信した場合、最初の1 MBのみが解析されます。
- ファイルを1 MB以下の複数のgRPCメッセージに分割した場合、すべての断片が解析されます。
wallarm_max_request_stream_size¶
Nodeが解析するgRPCまたはWebSocketリクエストストリームボディの合計最大サイズ(バイト)を定義します。ストリームボディが指定上限を超えた場合、超過データはスキップされ、脅威の検査は行われません。
-
HTTPヘッダーは計算に含まれません
-
gRPCメッセージヘッダー(通常はメッセージ毎に5バイト)は含まれます
例えば、1000バイトのgRPCメッセージを2つ送信すると、合計ストリームサイズは(1000 + 5) × 2 = 2010 bytes
になります(5バイトは各gRPCメッセージのヘッダー長)。
このディレクティブはリリース6.2.0以降で利用可能です。
Info
このパラメータはhttp、server、locationブロック内で設定します。
デフォルト値: 無制限。
wallarm_memlimit_debug¶
このディレクティブは、メモリ上限超過時にリクエスト詳細を含む/tmp/proton_last_memlimit.req
ファイルをWallarm NGINXモジュールが生成するかどうかを制御します。これはリクエストのメモリ上限処理に関する問題のデバッグに非常に役立ちます。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: on
。
wallarm_mode¶
トラフィック処理モード:
-
off
-
monitoring
-
safe_blocking
-
block
Wallarm node behavior | off | monitoring | safe_blocking | block |
---|---|---|---|---|
Analyzes incoming requests for input validation, virtual patch, and regex-based malicious payloads | - | + | + | + |
Uploads malicious requests to the Wallarm Cloud so that they are displayed in the event list | - | + | + | + |
Blocks malicious requests | - | - | Only those originated from graylisted IPs | + |
Blocks requests originated from denylisted IPssee exception (IPs added manually and automatically by multi-attack protection and behavioral protection: API abuse prevention, manual BOLA, brute force and forced browsing) | - | + | + | + |
Blocks requests originated from graylisted IPs (IPs added manually and automatically by the same protection measures as for denylist) | - | - | Only those containing malicious payloads | - |
Allows requests originated from allowlisted IPs | - | + | + | + |
Exception for denylist
If wallarm_acl_access_phase off
, the Wallarm node does not block requests from denylisted IPs in the monitoring
mode.
wallarm_mode
の適用はwallarm_mode_allow_override
ディレクティブで制限できます。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値はフィルタリングノードのデプロイ方法に依存します(off
またはmonitoring
)。
wallarm_mode_allow_override¶
Wallarm Cloud(custom ruleset)からダウンロードされるフィルタリングルールによるwallarm_mode
の上書き可否を制御します。
off
- customルールを無視します。strict
- customルールは動作モードを強化する場合にのみ適用できます。on
- 動作モードの強化と緩和の両方が可能です。
例えば、wallarm_mode monitoring
かつwallarm_mode_allow_override strict
の場合、Wallarm Consoleから一部リクエストのブロックを有効化できますが、攻撃解析を完全に無効化することはできません。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: on
wallarm_parse_response¶
アプリケーションのレスポンスを解析するかどうかを制御します。レスポンス解析は、パッシブ検知および脅威リプレイテストでの脆弱性検知に必要です。
値はon
(レスポンス解析を有効化)またはoff
(無効化)です。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: on
パフォーマンスの改善
パフォーマンスを向上させるため、location
で静的ファイルの処理を無効化することを推奨します。
wallarm_parse_websocket
¶
WallarmはAPI Securityサブスクリプションプランの下でWebSocketを完全にサポートします。デフォルトでは、WebSocketのメッセージは攻撃解析が行われません。
この機能を有効化するには、API Securityサブスクリプションプランをアクティベートし、wallarm_parse_websocket
ディレクティブを使用します。
指定可能な値:
on
: メッセージ解析を有効化します。off
: メッセージ解析を無効化します。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: off
wallarm_parser_disable¶
パーサーを無効化できます。ディレクティブの値は無効化するパーサー名です:
cookie
zlib
htmljs
json
multipart
base64
percent
urlenc
xml
jwt
例
wallarm_parser_disable base64;
wallarm_parser_disable xml;
location /ab {
wallarm_parser_disable json;
wallarm_parser_disable base64;
proxy_pass http://example.com;
}
location /zy {
wallarm_parser_disable json;
proxy_pass http://example.com;
}
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
wallarm_parse_html_response¶
アプリケーションレスポンスで受信したHTMLコードにHTMLパーサーを適用するかどうかを制御します。値はon
(HTMLパーサーを適用)またはoff
(適用しない)です。
このパラメータはwallarm_parse_response on
の場合にのみ有効です。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: on
wallarm_partner_client_uuid¶
マルチテナントWallarmノードのテナントの一意識別子です。値はUUID形式の文字列である必要があります。例:
-
11111111-1111-1111-1111-111111111111
-
123e4567-e89b-12d3-a456-426614174000
設定例:
server {
server_name tenant1.com;
wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111;
...
location /login {
wallarm_application 21;
...
}
location /users {
wallarm_application 22;
...
}
server {
server_name tenant1-1.com;
wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111;
wallarm_application 23;
...
}
server {
server_name tenant2.com;
wallarm_partner_client_uuid 22222222-2222-2222-2222-222222222222;
...
}
...
}
上記の設定では:
-
Tenantはパートナーのクライアントを意味します。パートナーには2つのクライアントがあります。
-
tenant1.com
およびtenant1-1.com
向けのトラフィックは、クライアント11111111-1111-1111-1111-111111111111
に関連付けられます。 -
tenant2.com
向けのトラフィックは、クライアント22222222-2222-2222-2222-222222222222
に関連付けられます。 -
1つ目のクライアントには、
wallarm_application
ディレクティブで指定された3つのアプリケーションもあります:tenant1.com/login
–wallarm_application 21
tenant1.com/users
–wallarm_application 22
tenant1-1.com
–wallarm_application 23
これら3つのパス向けのトラフィックは対応するアプリケーションに関連付けられ、それ以外は1つ目のクライアントの汎用トラフィックになります。
wallarm_process_time_limit¶
このディレクティブは非推奨です
バージョン3.6以降では、Limit request processing timeルール(旧「Fine-tune the overlimit_res attack detection」)を使用してoverlimit_res
攻撃検知を詳細調整することを推奨します。
wallarm_process_time_limit
ディレクティブは暫定的にサポートされていますが、今後のリリースで削除される予定です。
Wallarmノードによる単一リクエスト処理の時間上限を設定します。
時間が上限を超えると、ログにエラーが記録され、そのリクエストはoverlimit_res
攻撃としてマークされます。wallarm_process_time_limit_block
の値に応じて、この攻撃はブロック、モニタリング、無視のいずれかになります。
値は単位なしのミリ秒で指定します。例:
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: 1000ms(1秒)。
wallarm_process_time_limit_block¶
このディレクティブは非推奨です
バージョン3.6以降では、Limit request processing timeルール(旧「Fine-tune the overlimit_res attack detection」)を使用してoverlimit_res
攻撃検知を詳細調整することを推奨します。
wallarm_process_time_limit_block
ディレクティブは暫定的にサポートされていますが、今後のリリースで削除される予定です。
wallarm_process_time_limit
ディレクティブで設定した時間上限を超えたリクエストのブロック動作を制御します:
on
:wallarm_mode off
でない限り常にリクエストをブロックします-
off
: リクエストを常に無視します保護回避のリスク
off
値はoverlimit_res
攻撃からの保護を無効化するため、慎重に使用する必要があります。例えば大容量ファイルのアップロードを行い、保護回避や脆弱性悪用のリスクがない厳密に特定されたlocationのみで
off
を使用することを推奨します。httpやserverブロックに対してグローバルに
wallarm_process_time_limit_block
をoff
に設定することは強く推奨しません。 -
attack
:wallarm_mode
ディレクティブで設定した攻撃ブロックモードに依存します:off
: リクエストは処理されません。monitoring
: リクエストは無視されますが、overlimit_res
攻撃の詳細はWallarm Cloudへアップロードされ、Wallarm Consoleに表示されます。safe_blocking
: graylistedIPアドレスからのリクエストのみブロックされ、すべてのoverlimit_res
攻撃の詳細はWallarm Cloudへアップロードされ、Wallarm Consoleに表示されます。block
: リクエストはブロックされます。
ディレクティブの値に関係なく、wallarm_mode off;
の場合を除き、overlimit_res
攻撃タイプのリクエストはWallarm Cloudへアップロードされます。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: wallarm_process_time_limit_block attack
wallarm_proton_log_mask_master¶
NGINXマスタープロセスのデバッグログ設定です。
ディレクティブの使用について
このディレクティブの設定は、Wallarmサポートチームのメンバーから指示があった場合にのみ必要です。使用する値はサポートから提供されます。
Info
このパラメータはmainレベルでのみ設定できます。
wallarm_proton_log_mask_worker¶
NGINXワーカープロセスのデバッグログ設定です。
ディレクティブの使用について
このディレクティブの設定は、Wallarmサポートチームのメンバーから指示があった場合にのみ必要です。使用する値はサポートから提供されます。
Info
このパラメータはmainレベルでのみ設定できます。
wallarm_protondb_path¶
リクエストフィルタリングのグローバル設定を保持するproton.dbファイルへのパスです。アプリケーション構造に依存しない設定です。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値:
- DockerのNGINXベースイメージ、クラウドイメージ、NGINX Nodeのall-in-oneインストーラーおよびNative Nodeインストール:
/opt/wallarm/etc/wallarm/proton.db
- その他のインストール成果物:
/etc/wallarm/proton.db
wallarm_rate_limit¶
次の形式でレート制限の設定を行います:
-
KEY_TO_MEASURE_LIMITS_FOR
- 制限を測定したいキーです。文字列、NGINX変数、およびその組み合わせを含められます。例:
"$remote_addr +login"
は、同一IPから/login
エンドポイントへのリクエストを制限します。 -
rate=<RATE>
(必須) - レート制限です。rate=<number>r/s
またはrate=<number>r/m
を指定します。 -
burst=<BURST>
(任意) - 指定したRPS/RPMを超過した際に一度にバッファリングする超過リクエストの最大数で、レートが正常に戻ったときに処理されます。デフォルトは0
です。 -
delay=<DELAY>
-<BURST>
が0
以外の場合、バッファリングされた超過リクエストの実行間で定義したRPS/RPMを維持するかを制御します。nodelay
はすべてのバッファ済み超過リクエストをレート制限の遅延なしに同時処理することを意味します。数値を指定すると、その数の超過リクエストを同時処理し、残りはRPS/RPMの遅延で処理します。
例:
Info
デフォルト値: なし。
このパラメータはhttp、server、locationコンテキスト内で設定できます。
レート制限ルールを設定した場合、wallarm_rate_limit
ディレクティブの優先度は低くなります。
wallarm_rate_limit_enabled¶
Wallarmのレート制限を有効/無効にします。
off
の場合、レート制限ルール(推奨)もwallarm_rate_limit
ディレクティブも動作しません。
Info
デフォルト値: on
ですが、レート制限ルール(推奨)またはwallarm_rate_limit
ディレクティブのいずれかを設定しない限り、Wallarmのレート制限は動作しません。
このパラメータはhttp、server、locationコンテキスト内で設定できます。
wallarm_rate_limit_log_level¶
レート制限により拒否されたリクエストのログレベルです。指定可能な値: info
、notice
、warn
、error
。
Info
デフォルト値: error
。
このパラメータはhttp、server、locationコンテキスト内で設定できます。
wallarm_rate_limit_status_code¶
Wallarmのレート制限モジュールによって拒否されたリクエストに対して返すコードです。
Info
デフォルト値: 503
。
このパラメータはhttp、server、locationコンテキスト内で設定できます。
wallarm_rate_limit_shm_size¶
Wallarmレート制限モジュールが消費できる共有メモリの最大量を設定します。
平均キー長が64バイト(文字)でwallarm_rate_limit_shm_size
が64MBの場合、このモジュールは約130,000個の一意キーを同時に処理できます。メモリを2倍にすると、モジュールの容量も線形に2倍になります。
キーとは、モジュールが制限を測定する際に使用するリクエストの一意値です。例えば、IPアドレスに基づいて接続を制限する場合、各一意のIPアドレスが1つのキーと見なされます。デフォルトのディレクティブ値では、約130,000個の異なるIPからのリクエストを同時に処理できます。
Info
デフォルト値: 64m
(64 MB)。
このパラメータはhttpコンテキスト内でのみ設定できます。
wallarm_request_chunk_size¶
1回のイテレーションで処理するリクエストの部分のサイズを制限します。wallarm_request_chunk_size
ディレクティブにはバイト単位の整数値を設定できます。次の接尾辞もサポートします:
-
k
またはK
: キロバイト -
m
またはM
: メガバイト -
g
またはG
: ギガバイト
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: 8k
(8キロバイト)。
wallarm_request_memory_limit¶
単一リクエストの処理に使用できる最大メモリ量の上限を設定します。
上限を超えると、リクエスト処理は中断され、ユーザーには500エラーが返されます。
このパラメータでは次の接尾辞を使用できます:
-
k
またはK
: キロバイト -
m
またはM
: メガバイト -
g
またはG
: ギガバイト
値が0
の場合、上限を無効化します。
デフォルトでは上限は無効です。
Info
このパラメータはhttp、server、locationの各ブロック内で設定できます。
wallarm_srv_include¶
API Specification Enforcement用の設定ファイルへのパスを指定します。このファイルはデフォルトで全てのデプロイメント成果物に含まれており、通常は変更不要です。
ただし、カスタムnginx.conf
を使用したNGINXベースのDockerイメージを使う場合は、このディレクティブを指定し、ファイルを指定したパスに配置する必要があります。
このディレクティブはリリース4.10.7以降で利用可能です。
Info
このパラメータはhttpブロック内でのみ設定します。
デフォルト値: /etc/nginx/wallarm-apifw-loc.conf;
。
wallarm_stalled_worker_timeout¶
NGINXワーカーが単一リクエストを処理する時間上限を秒で設定します。
時間が上限を超えると、NGINXワーカーに関するデータがstalled_workers_count
およびstalled_workers
統計パラメータに書き込まれます。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: 5
(5秒)
wallarm_status¶
Wallarm統計サービスの動作を制御します。
ディレクティブの値の形式は次のとおりです:
統計サービスの設定は専用のファイルで行い、他のNGINX設定ファイルにはwallarm_status
ディレクティブを記述しないことを強く推奨します。後者は安全でない可能性があるためです。wallarm-status
の設定ファイルは次の場所にあります:
-
all-in-oneインストーラー:
/etc/nginx/wallarm-status.conf
-
その他のインストール:
/etc/nginx/conf.d/wallarm-status.conf
また、デフォルトのwallarm-status
設定の既存行は変更しないことを強く推奨します。変更すると、Wallarm Cloudへのメトリクスデータのアップロード処理が破損する可能性があるためです。
Info
このディレクティブはNGINXのserver
およびlocation
コンテキストで設定できます。
format
パラメータのデフォルト値はjson
です。
wallarm_tarantool_upstream¶
wallarm_tarantool_upstream
をwallarm_wstore_upstream
へ名称変更
NGINX Nodeバージョン6.x以降では、このパラメータはwallarm_wstore_upstream
に名称変更され、動作ロジックの変更はありません。
後方互換性は維持されますが、非推奨の警告が出力されます。将来のリリースで旧ディレクティブが削除された際のエラーを避けるため、名称変更を推奨します。警告例:
wallarm_timeslice¶
フィルタリングノードがリクエストの1回のイテレーション処理に費やす時間上限です。上限に達すると、ノードはキュー内の次のリクエスト処理に進みます。キュー内の各リクエストに対して1回のイテレーションを行った後、最初のリクエストに対する2回目のイテレーションを実行します。
このディレクティブに異なる時間単位の値を割り当てるには、NGINXドキュメントで説明されている時間間隔の接尾辞を使用できます。
Info
このパラメータはhttp、server、location各ブロック内で設定できます。
デフォルト値: 0
(単一イテレーションの時間制限を無効化)。
Warning
NGINXサーバーの制限により、wallarm_timeslice
ディレクティブを機能させるには、NGINXのproxy_request_buffering
ディレクティブにoff
を設定してリクエストのバッファリングを無効化する必要があります。
wallarm_ts_request_memory_limit¶
このディレクティブは非推奨です
Wallarmノード4.0以降では、代わりにwallarm_general_ruleset_memory_limit
ディレクティブを使用してください。ディレクティブ名を変更するだけで、動作ロジックは変わりません。
wallarm_unpack_response¶
アプリケーションレスポンスで返される圧縮データを伸長するかどうかを制御します。値はon
(伸長を有効化)またはoff
(無効化)です。
このパラメータはwallarm_parse_response on
の場合にのみ有効です。
Info
デフォルト値: on
。
wallarm_upstream_backend¶
シリアライズ済みリクエストの送信先を指定します。リクエストはwstoreまたはAPIのいずれかへ送信できます。
ディレクティブの指定可能な値:
-
wstore
-
api
他のディレクティブの有無に応じて、デフォルト値は次のように決まります:
-
設定に
wallarm_api_conf
ディレクティブがない場合:wstore
-
wallarm_api_conf
ディレクティブがあり、wallarm_wstore_upstream
ディレクティブがない場合:api
Note
wallarm_api_conf
とwallarm_wstore_upstream
ディレクティブが同時に設定されている場合、「directive ambiguous wallarm upstream backend」という形式の設定エラーが発生します。
Info
このパラメータはhttpブロック内でのみ設定します。
wallarm_upstream_connect_attempts¶
wstoreまたはWallarm APIへの即時再接続回数を定義します。
wstoreまたはAPIへの接続が切断された場合、その接続に対する再接続は行いません。ただし、接続が1つも残っておらず、シリアライズ済みリクエストのキューが空でない場合は、この限りではありません。
Note
再接続は別のサーバーを経由して行われる場合があります。サーバーの選択は“upstream”サブシステムが担当するためです。
このパラメータはhttpブロック内でのみ設定します。
wallarm_upstream_reconnect_interval¶
wallarm_upstream_connect_attempts
の閾値を超える回数だけ接続に失敗した後、wstoreまたはWallarm APIへ再接続を試みる間隔を定義します。
Info
このパラメータはhttpブロック内でのみ設定します。
wallarm_upstream_connect_timeout¶
wstoreまたはWallarm APIへの接続タイムアウトを定義します。
Info
このパラメータはhttpブロック内でのみ設定します。
wallarm_upstream_queue_limit¶
シリアライズ済みリクエストの件数上限を定義します。
wallarm_upstream_queue_limit
を設定し、wallarm_upstream_queue_memory_limit
を未設定にした場合、後者には上限がなくなります。
Info
このパラメータはhttpブロック内でのみ設定します。
wallarm_upstream_queue_memory_limit¶
シリアライズ済みリクエストの総量上限を定義します。
wallarm_upstream_queue_memory_limit
を設定し、wallarm_upstream_queue_limit
を未設定にした場合、後者には上限がなくなります。
Info
デフォルト値: 100m
。
このパラメータはhttpブロック内でのみ設定します。
wallarm_wstore_upstream¶
NGINX-Wallarmモジュールを別サーバーのpostanalyticsモジュールへ接続する方法(postanalyticsサーバーのupstreamおよびSSL/TLS接続設定)を定義します。
構文:
-
<UPSTREAM>
- postanalyticsモジュールのアドレスを指すupstreamブロック名です。 -
ssl
(リリース6.2.0以降で利用可能) — postanalyticsモジュールへの接続のSSL/TLSを有効/無効にします。指定可能な値:on
またはoff
。デフォルトは
off
です。on
に設定する場合は、次も設定する必要があります: -
skip_host_check
(リリース6.2.0以降で利用可能、ssl=on
時のみ) - TLSハンドシェイク中のホスト名検証をスキップします。localhostやIPアドレスへ、CN(Common Name)の一致しない証明書で接続する場合に有用です。本番環境では推奨しません。
-
insecure
(リリース6.2.0以降で利用可能、ssl=on
時のみ) - 証明書の完全な検証(CAおよびホスト名チェックを含む)を無効化します。自己署名や一時的な証明書を使用する開発・テスト環境でのみ使用してください。
例:
upstream wallarm_wstore {
server 1.1.1.1:3313 max_fails=0 fail_timeout=0 max_conns=1;
keepalive 1;
}
# omitted
wallarm_wstore_upstream wallarm_wstore ssl=on;
postanalytics用のupstream設定
wallarm_wstore_upstream
ディレクティブで参照するpostanalyticsモジュール用のupstream
ブロックでは、次の標準のupstream設定を構成できます:
- postanalyticsモジュールのIPアドレスとポート
max_fails
fail_timeout
max_conns
- 不要な接続の生成を防ぐため、各upstreamのwstoreサーバーに対して指定する必要がありますkeepalive
- wstoreサーバー数未満にしてはいけません
Info
このパラメータはhttpブロック内でのみ設定します。
wallarm_wstore_ssl_cert_file¶
NGINX-WallarmモジュールがpostanalyticsモジュールへのSSL/TLS接続を確立する際に自らを認証するためのクライアント証明書のパスを指定します。
NGINX-Wallarmとpostanalyticsモジュールを別サーバーにインストールし、相互TLS(mTLS)を有効にしている場合に必要です。
このディレクティブはリリース6.2.0以降で利用可能です。
Info
このパラメータはhttpブロック内でのみ設定します。
wallarm_wstore_ssl_key_file¶
wallarm_wstore_ssl_cert_file
で指定したクライアント証明書に対応する秘密鍵のパスを指定します。
NGINX-Wallarmとpostanalyticsモジュールを別サーバーにインストールし、相互TLS(mTLS)を有効にしている場合に必要です。
このディレクティブはリリース6.2.0以降で利用可能です。
Info
このパラメータはhttpブロック内でのみ設定します。
wallarm_wstore_ssl_ca_cert_file¶
postanalyticsモジュールが提示するTLS証明書を検証するために使用する信頼された認証局(CA)証明書のパスを指定します。
カスタムCAが発行した証明書を使用するサーバーへ接続する場合に必要です。
このディレクティブはリリース6.2.0以降で利用可能です。
Info
このパラメータはhttpブロック内でのみ設定します。