All-in-OneインストーラーまたはDockerイメージを使用したNative Nodeの設定¶
self-hosted Wallarm Native Node をAll-in-OneインストーラーまたはDockerイメージを使用してデプロイする際、.yaml
設定ファイルを作成します.このファイルにおいて、ノードの設定および本ドキュメントに記載されたすべてのパラメータを指定できます.
All-in-Oneインストーラーを使用してノードが稼働中である場合、設定を変更するには以下を実行します:
-
/opt/wallarm/etc/wallarm/go-node.yaml
ファイルを更新します.インストール時に初期設定ファイルがこのパスへコピーされます. -
Wallarmサービスを再起動し、変更を適用します:
Dockerイメージを使用してノードがデプロイされている場合、ホストマシン上の設定ファイルを更新し、更新したファイルでDockerコンテナを再起動することを推奨します.
mode (必須)¶
Wallarmノードの動作モードを指定します.以下のいずれかになります:
-
connector-server
は MuleSoft、Cloudflare、Amazon CloudFront、Broadcom Layer7 API Gateway、Fastly コネクタ用です. -
tcp-capture
は TCP traffic mirror analysis 用です.
Native NodeをWallarmコネクタ用にインストールした場合、基本的な設定は以下の通りです:
version: 2
mode: connector-server
connector:
address: ":5050"
tls_cert: path/to/tls-cert.crt
tls_key: path/to/tls-key.key
blocking: true
allowed_networks:
- 0.0.0.0/0
allowed_hosts:
- w.com
- "*.test.com"
mesh:
discovery: dns
name: native-node-mesh-discovery
port: 9093
url_normalize: true
route_config:
wallarm_application: 10
wallarm_mode: monitoring
routes:
- route: /example/api/v1
wallarm_mode: off
- route: /example/extra_api
wallarm_application: 2
- route: /example/testing
wallarm_mode: off
log:
pretty: true
level: debug
log_file: stderr
access_log:
enabled: true
verbose: true
log_file: stderr
TCP traffic mirror analysis用にNative Nodeをインストールした場合、基本的な設定は以下の通りです:
version: 3
mode: tcp-capture
goreplay:
filter: <your network interface and port, e.g. 'lo:' or 'enp7s0:'>
extra_args:
- -input-raw-engine
- vxlan
path: /opt/wallarm/usr/bin/gor
parse_responses: true
response_timeout: 5s
url_normalize: true
http_inspector:
real_ip_header: "X-Real-IP"
route_config:
wallarm_application: 10
wallarm_mode: monitoring
routes:
- route: /example/api/v1
wallarm_mode: off
- route: /example/extra_api
wallarm_application: 2
- route: /example/testing
wallarm_mode: off
log:
pretty: true
level: debug
log_file: stderr
access_log:
enabled: true
verbose: true
log_file: stderr
コネクタ固有の設定¶
connector.address (必須)¶
コロン(:
)で区切られたリスニングIPアドレスとポートを指定します.
ポートが80
、8080
、9000
、または3313
にならないようにしてください.これらは他のWallarmプロセスで使用されています.
connector.tls_cert (必須)¶
ノードが稼働しているドメインに対して発行されたTLS/SSL証明書へのパスを指定します(通常は.crt
や.pem
ファイル).
安全な通信を確保するために、証明書は信頼された認証局(CA)から提供される必要があります.
Dockerイメージを使用してノードがデプロイされている場合、SSL復号はトラフィックがコンテナ化されたノードに到達する前にロードバランサーで実施されるため、このパラメータは必要ありません.
connector.tls_key (必須)¶
TLS/SSL証明書に対応する秘密鍵へのパスを指定します(通常は.key
ファイル).
Dockerイメージを使用してノードがデプロイされている場合、SSL復号はトラフィックがコンテナ化されたノードに到達する前にロードバランサーで実施されるため、このパラメータは必要ありません.
connector.blocking¶
通常、このパラメータを変更する必要はありません.悪意のあるリクエストに対する特定のブロッキング動作は、wallarm_mode
パラメータで制御されます.
このパラメータは、悪意のあるリクエスト、denylisted IPからのリクエスト、またはその他ブロックが必要な条件の場合に、Native Nodeが着信リクエストをブロックする一般的な機能を有効にします.
初期値: true
.
connector.allowed_networks¶
接続を許可するIPネットワークのリストを指定します.
初期値: 0.0.0.0/0
(すべてのIPネットワークを許可).
connector.allowed_hosts¶
許可するホスト名のリストを指定します.
初期値: すべてのホストが許可されます.
このパラメータはワイルドカードによる一致をサポートします:
-
*
はセパレーター以外の任意の文字列に一致します -
?
はセパレーター以外の任意の単一文字に一致します -
'[' [ '^' ] { character-range } ']'
ワイルドカード一致の構文詳細
// パターンの構文は以下の通りです:
//
// pattern:
// { term }
// term:
// '*' セパレーター以外の任意の文字列に一致します
// '?' セパレーター以外の任意の単一文字に一致します
// '[' [ '^' ] { character-range } ']'
// 文字クラス(空であってはなりません)
// c 文字 c に一致します (c != '*', '?', '\\', '[')
// '\\' c 文字 c に一致します
//
// character-range:
// c 文字 c に一致します (c != '\\', '-', ']')
// '\\' c 文字 c に一致します
// lo '-' hi lo <= c <= hi に一致する文字 c に一致します
//
// マッチにはパターンがname全体に一致する必要があり、部分文字列のみではありません.
例えば:
connector.mesh¶
connector-server
モードにおけるWallarmノードで、多数のノードレプリカが展開されている場合、一貫したトラフィック処理を確実にするためにmesh機能を使用します.これにより、最初は異なるレプリカで処理されたリクエストとその応答が同じノードにルーティングされます.自動スケーリングやECSでの複数レプリカ展開時に重要です.
Kubernetes環境
Kubernetesの場合、Helm chartによるnative Wallarm nodeのデプロイを使用します.自動スケーリングや複数レプリカが検出された場合、meshは自動的に設定されるため、追加のセットアップは不要です.
ECSでmeshを設定するには:
-
サービスディスカバリ(例: AWS Cloud Map、Google Cloud DNS、または類似のサービス)を設定し、mesh内のノードが動的に相互を検出し通信できるようにします.
サービスディスカバリがない場合、ノードは互いに位置を特定できず、トラフィックのルーティングに問題が発生するため、meshは正しく機能しません.
-
以下のように設定ファイル内で
connector.mesh
パラメータを指定し、Wallarmノードにmeshを使用するよう構成します:
discovery¶
mesh内でノード同士がどのように検出されるかを定義します.現在、dns
の値のみが許可されています.
ノードはDNSを使用して互いを検出します.DNSレコードはmeshに参加しているすべてのノードのIPアドレスに解決する必要があります.
name¶
mesh内の他のノードのIPアドレスを解決するために使用されるDNSドメイン名を指定します.通常、これはECSサービス内のすべてのノードインスタンスに解決される値に設定します.
port¶
mesh内のノード間通信に使用される内部ポートを指定します.このポートは外部には公開されず、ECSクラスター内でのノード間トラフィックに予約されています.
connector.url_normalize¶
ルート構成の選択やlibprotonによるデータ解析前にURLの正規化を有効にします.
初期値: true
.
TCP mirror固有の設定¶
goreplay.filter¶
トラフィックをキャプチャするネットワークインターフェースを指定します.値が指定されない場合、インスタンス上のすべてのネットワークインターフェースからトラフィックをキャプチャします.
値はコロン(:
)で区切られたネットワークインターフェースとポート(例: 'eth0:80')である必要があります.
ホスト上で利用可能なネットワークインターフェースを確認するには、以下を実行してください:
goreplay.extra_args¶
このパラメータは、GoReplayに渡す追加の引数を指定するためのものです.
-
一般的には、VLAN、VXLANなどの解析対象となるミラーリングされたトラフィックの種類を定義するために使用します.例えば:
ミラーリングされたトラフィックがVLANやVXLANなどの追加プロトコルでラップされていない場合、
extra_args
の設定は省略できます.ラップされていないトラフィックはデフォルトで解析されます. -
filter
にextra_args
を組み合わせることで、追加のインターフェースやポートからのキャプチャが可能です:version: 3 goreplay: filter: 'eth0:80' extra_args: - "-input-raw" - "eth0:8080" - "-input-raw" - "eth0:8081" - "-input-raw" - "eth1:80"
filter
は-input-raw
引数付きでGoReplayを設定し、extra_args
は追加の-input-raw
入力を指定できます.
goreplay.path¶
GoReplayバイナリファイルへのパスを指定します.通常、このパラメータを変更する必要はありません.
初期値: /opt/wallarm/usr/bin/gor
.
goreplay.parse_responses¶
ミラーリングされた応答を解析するかどうかを制御します.これにより、脆弱性検出やAPIディスカバリーなどのWallarm機能が有効になります.
初期値: true
.
応答のミラーリングがWallarmノードに到達する対象インスタンスで構成されていることを確認してください.
Nodeバージョン0.10.1以前では、このパラメータはmiddleware.parse_responses
として設定されます.
goreplay.response_timeout¶
応答を待つ最大時間を指定します.この時間内に応答が得られない場合、Wallarmプロセスは対応する応答の待機を中止します.
初期値: 5s
.
Nodeバージョン0.10.1以前では、このパラメータはmiddleware.response_timeout
として設定されます.
goreplay.url_normalize¶
ルート構成の選択およびlibprotonによるデータ解析前にURLの正規化を有効にします.
初期値: true
.
Nodeバージョン0.10.1以前では、このパラメータはmiddleware.url_normalize
として設定されます.
http_inspector.real_ip_header¶
通常、WallarmはネットワークパケットのIPヘッダーから送信元IPアドレスを読み取ります.しかし、プロキシやロードバランサーはこれを自身のIPに変更する場合があります.
実際のクライアントIPを保持するため、これらの中継機器はしばしばHTTPヘッダー(例: X-Real-IP
、X-Forwarded-For
)を追加します.real_ip_header
パラメータは、元のクライアントIPを抽出するために使用するヘッダーをWallarmに指示します.
基本設定¶
route_config¶
特定のルートに対する設定を指定するセクションです.
route_config.wallarm_application¶
WallarmアプリケーションIDを指定します.この値は特定のルートで上書き可能です.
初期値: -1
.
route_config.wallarm_mode¶
一般的なトラフィックのフィルトレーションモード:block
、safe_blocking
、monitoring
またはoff
を指定します.OOBモードではトラフィックブロックはサポートされません.
モードは特定のルートで上書き可能です.
初期値: monitoring
.
route_config.routes¶
ルート固有のWallarm設定を定義します.WallarmモードやアプリケーションIDが含まれます.例:
host¶
ルートのホストを指定します.
このパラメータはconnector.allowed_hosts
と同様のワイルドカード一致をサポートします.
例えば:
routes.routeまたはroute¶
特定のルートを定義します.ルートはNGINXライクなプレフィックスで設定できます:
- route: [ = | ~ | ~* | ^~ | ]/location
# | | | | ^ 正確な一致(正規表現より低い優先順位)
# | | | ^ プレフィックス(一致、正規表現より高い優先順位)
# | | ^ 大文字小文字を区別しない正規表現
# | ^ 大文字小文字を区別する正規表現
# ^ 完全一致
例えば、正確なルートのみをマッチさせるには:
正規表現でルートに一致させるには:
wallarm_application¶
特定のエンドポイントでroute_config.wallarm_application
を上書きするWallarmアプリケーションIDを設定します.
wallarm_mode¶
ホスト固有のトラフィックフィルトレーションモード:block
、safe_blocking
、monitoring
またはoff
を指定します.OOBモードではトラフィックブロックはサポートされません.
初期値: monitoring
.
log.pretty¶
エラーおよびアクセスログのフォーマットを制御します.人間が読みやすいログにする場合はtrue
、JSONログにする場合はfalse
に設定します.
初期値: true
.
log.level¶
ログレベルを設定します.debug
、info
、warn
、error
、fatal
が使用可能です.
初期値: info
.
log.log_file¶
エラーログの出力先を指定します.stdout
、stderr
、またはログファイルへのパスが使用可能です.
初期値: stderr
.ただし、ノードはstderr
を/opt/wallarm/var/log/wallarm/go-node.log
へリダイレクトします.
log.access_log.enabled¶
アクセスログの収集を制御します.
初期値: true
.
log.access_log.verbose¶
アクセスログ出力において、各リクエストの詳細情報を含めるかどうかを制御します.
初期値: true
.
log.access_log.log_file¶
アクセスログ出力の宛先を指定します.stdout
、stderr
、またはログファイルへのパスが使用可能です.
初期値: stderr
.ただし、ノードはstderr
を/opt/wallarm/var/log/wallarm/go-node.log
へリダイレクトします.
未設定の場合、log.log_file
の設定が使用されます.
高度な設定¶
version: 2
http_inspector:
workers: auto
libdetection_enabled: true
api_firewall_enabled: true
api_firewall_database: /opt/wallarm/var/lib/wallarm-api/2/wallarm_api.db
wallarm_dir: /opt/wallarm/etc/wallarm
shm_dir: /tmp
wallarm_process_time_limit: 1s
tarantool_exporter:
address: 127.0.0.1:3313
enabled: true
log:
proton_log_mask: info@*
metrics:
enabled: true
listen_address: :9000
legacy_status:
enabled: true
listen_address: 127.0.0.1:10246
health_check:
enabled: true
listen_address: :8080
version: 3
http_inspector:
workers: auto
libdetection_enabled: true
api_firewall_enabled: true
api_firewall_database: /opt/wallarm/var/lib/wallarm-api/2/wallarm_api.db
wallarm_dir: /opt/wallarm/etc/wallarm
shm_dir: /tmp
wallarm_process_time_limit: 1s
tarantool_exporter:
address: 127.0.0.1:3313
enabled: true
log:
proton_log_mask: info@*
metrics:
enabled: true
listen_address: :9000
legacy_status:
enabled: true
listen_address: 127.0.0.1:10246
health_check:
enabled: true
listen_address: :8080
http_inspector.workers¶
Wallarmワーカーの数を指定します.
初期値: auto
(CPUコア数に基づいてワーカー数が設定されます).
http_inspector.libdetection_enabled¶
SQL Injection攻撃をlibdetectionライブラリを使用して追加で検証するかどうかを指定します.
初期値: true
.
http_inspector.api_firewall_enabled¶
API Specification Enforcementを有効にするかどうかを制御します.この機能を有効にしても、Wallarm Console UI上での必要なサブスクリプションおよび設定の代わりにはなりません.
初期値: true
.
http_inspector.api_firewall_database¶
API Specification EnforcementのためにアップロードしたAPI仕様を保持するデータベースへのパスを指定します.このデータベースはWallarm Cloudと同期されます.
通常、このパラメータを変更する必要はありません.
初期値: /opt/wallarm/var/lib/wallarm-api/2/wallarm_api.db
.
http_inspector.wallarm_dir¶
ノード設定ファイルの格納ディレクトリのパスを指定します.通常、このパラメータを変更する必要はありません.支援が必要な場合はWallarm support teamにお問い合わせください.
初期値: /opt/wallarm/etc/wallarm
.
http_inspector.shm_dir¶
HTTPアナライザーの共有ディレクトリを指定します.通常、このパラメータを変更する必要はありません.
初期値: /tmp
.
http_inspector.wallarm_process_time_limit¶
Wallarm Native Nodeによる単一HTTPリクエストの処理に対する最大時間を定義します.
この制限を超えた場合、リクエストはoverlimit_res
攻撃としてマークされ、ブロックされます.
このパラメータまたはWallarm Console経由で制限を設定できます.Wallarm Consoleの設定はローカル設定より優先されます.
tarantool_exporter.address¶
Wallarmのリクエスト処理における統計解析を行うpostanalyticsサービスのアドレスを設定します.通常、このパラメータを変更する必要はありません.
初期値: 127.0.0.1:3313
.
tarantool_exporter.enabled¶
postanalyticsサービスが有効かどうかを制御します.Wallarmノードはpostanalyticsサービスなしでは機能しないため、このパラメータはtrue
に設定する必要があります.
初期値: true
.
log.proton_log_mask¶
内部トラフィックのログ記録用マスクを設定します.通常、このパラメータを変更する必要はありません.
初期値: info@*
.
metrics.enabled¶
Prometheus metricsが有効かどうかを制御します.Wallarmノードはこれが有効でないと正しく動作しないため、このパラメータはtrue
に設定する必要があります.
初期値: true
.
metrics.listen_address¶
Prometheus metricsが公開されるアドレスおよびポートを設定します.これらのmetricsにアクセスするには、/metrics
エンドポイントを使用します.
初期値: :9000
(ポート9000上のすべてのネットワークインターフェース).
metrics.legacy_status.enabled¶
/wallarm-status
metricsサービスが有効かどうかを制御します.Wallarmノードはこれが有効でないと正しく動作しないため、このパラメータはtrue
に設定する必要があります.
初期値: true
.
metrics.legacy_status.listen_address¶
JSON形式で/wallarm-status
metricsが公開されるアドレスおよびポートを設定します.これらのmetricsにアクセスするには、/wallarm-status
エンドポイントを使用します.
初期値: 127.0.0.1:10246
.
health_check.enabled¶
ヘルスチェックエンドポイントを有効にするかどうかを制御します.
初期値: true
.
health_check.listen_address¶
/live
および/ready
ヘルスチェックエンドポイントのアドレスおよびポートを設定します.
初期値: :8080
(ポート8080上のすべてのネットワークインターフェース).