TCPトラフィックミラー解析用ノードのデプロイ¶
Wallarmは、TCPトラフィックミラー解析専用に設計されたフィルタリングノードをデプロイするためのアーティファクトを提供します。本ガイドでは、このフォームファクターのWallarmフィルタリングノードをデプロイおよび設定する方法について説明します。
ユースケース¶
すべてのサポートされている out-of-band deployment options の中で、以下のシナリオに対して本ソリューションを推奨します:
-
ネットワーク層でミラーされたTCPトラフィックのキャプチャを希望し、この特定のトラフィックを解析するセキュリティソリューションを必要とする場合。
-
NGINXまたはEnvoyベースのデプロイメントアーティファクトが利用できない、遅すぎる、またはリソースを過剰に消費する場合。このとき、HTTPトラフィックミラー解析を実施することはリソースを大量に消費する可能性があります。TCPトラフィックミラー解析はウェブサーバから独立して実行されるため、これらの問題を回避できます。
-
レスポンスデータに依存する脆弱性検出やAPIディスカバリーなどの機能が有効となる、レスポンス解析も行うセキュリティソリューションを必要とする場合。
動作の仕組み¶
本ソリューションは、ウェブサーバ(NGINXなど)から独立して、ネットワークインターフェースから直接ミラーされたTCPトラフィックをキャプチャするout-of-band (OOB) モードで動作します。キャプチャしたトラフィックは解析され、再構築された後、脅威が検出されます。
ノードはミラーターゲットとして機能し、複数のトラフィックソース間でシームレスに切り替えます。このソリューションは、VLAN (802.1q)、VXLAN、またはSPANでタグ付けされたトラフィックをサポートします。
さらに、本ソリューションはレスポンスミラーパース解析を有効にし、Wallarmの機能である脆弱性検出やAPIディスカバリーなど、レスポンスデータに依存する機能を提供します。
要件¶
-
US CloudまたはEU CloudのWallarm Consoleにおいて、Administratorロールを持つアカウントへのアクセスを有すること。
-
ノードを実行する予定のマシンは、以下の要件を満たしている必要があります:
- Linux OS
- x86_64/ARM64アーキテクチャ
- すべてのコマンドをスーパーユーザー(例:
root
)として実行すること - Wallarmインストーラをダウンロードするために
https://meganode.wallarm.com
へのアウトゴーイング接続が許可されていること - US Wallarm Cloudを利用する場合は
https://us1.api.wallarm.com
、EU Wallarm Cloudを利用する場合はhttps://api.wallarm.com
へのアウトゴーイング接続が許可されていること -
攻撃検出ルールおよびAPI仕様の更新のダウンロード、ならびにallowlisted, denylisted, or graylistedな国、地域、またはデータセンターの正確なIPを取得するため、下記のIPアドレスへのアウトゴーイング接続が許可されていること
-
トラフィックおよびレスポンスミラーリングは、送信元とターゲットの両方を設定し、準備されたインスタンスをミラータゲットとして選択する必要があります。特定の環境要件(トラフィックミラーリング設定に関して特定のプロトコルを許可するなど)を満たす必要があります。
-
ミラーされたトラフィックは、VLAN (802.1q)、VXLAN、またはSPANのいずれかでタグ付けされます。
Step 1: Wallarmトークンの準備¶
ノードをインストールするには、Wallarm Cloudにノードを登録するためのトークンが必要です。トークンの準備手順は下記の通りです:
-
Wallarm Console → Settings → API tokens をUS CloudのWallarm ConsoleまたはEU CloudのWallarm Consoleで開きます。
-
Deploy
ソースロールのAPIトークンを作成または選択します。 -
このトークンをコピーします。
Step 2: Wallarmインストーラーのダウンロード¶
Wallarmは、以下のプロセッサ向けのインストールを推奨します:
-
x86_64
-
ARM64
Wallarmインストールスクリプトをダウンロードし、実行可能にするには、以下のコマンドを使用します:
Step 3: 設定ファイルの準備¶
インスタンス上にwallarm-node-conf.yaml
ファイルを作成します。本ソリューションでは、ネットワークインターフェースとトラフィックフォーマット(例:VLAN、VXLAN)を識別するための適切な設定が必要です。ファイルのサンプル内容は以下の通りです:
記事には、他のサポートされる設定パラメータの一覧が記載されています。
モードの設定(必須)¶
TCPトラフィックミラー解析のために、本ソリューションを実行するには、対応するパラメータにtcp-capture
モードを指定する必要があります。
リスニングするネットワークインターフェースの選択¶
トラフィックをキャプチャするためのネットワークインターフェースを指定するには:
-
ホスト上で利用可能なネットワークインターフェースを確認します:
-
filter
パラメータにネットワークインターフェースを指定します。値はネットワークインターフェースとポートがコロン(
:
)で区切られた形式である必要があります。フィルターの例としては、eth0:
,eth0:80
, または全インターフェース上の特定のポートを傍受するための:80
などが挙げられます。例:
VLANのキャプチャ¶
ミラーされたトラフィックがVLANでラップされている場合は、追加の引数を指定します:
version: 3
mode: tcp-capture
goreplay:
filter: <your network interface and port, e.g. 'lo:' or 'enp7s0:'>
extra_args:
- -input-raw-vlan
- -input-raw-vlan-vid
# VLANのVID、例:
# - 42
VXLANのキャプチャ¶
ミラーされたトラフィックがVXLAN(AWSで一般的)でラップされている場合は、追加の引数を指定します:
version: 3
mode: tcp-capture
goreplay:
filter: <your network interface and port, e.g. 'lo:' or 'enp7s0:'>
extra_args:
- -input-raw-engine
- vxlan
# カスタムVXLAN UDPポート、例:
# - -input-raw-vxlan-port
# - 4789
# 特定のVNI (デフォルトではすべてのVNIがキャプチャ対象)、例:
# - -input-raw-vxlan-vni
# - 1
元のクライアントIPアドレスの識別¶
デフォルトでは、WallarmはネットワークパケットのIPヘッダーから送信元IPアドレスを読み取ります。しかし、プロキシやロードバランサが自身のIPに変更する可能性があります。
実際のクライアントIPを保持するために、これらの中継機はしばしばHTTPヘッダー(例:X-Real-IP
、X-Forwarded-For
)を追加します。real_ip_header
パラメータは、元のクライアントIPを抽出するためにWallarmが使用するヘッダーを指定します。例:
Step 4: Wallarmインストーラーの実行¶
TCPトラフィックミラー解析用のWallarmノードをインストールするため、以下のコマンドを実行します:
# US Cloud
sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.11.0.x86_64.sh -- --batch --token <API_TOKEN> --mode=tcp-capture --go-node-config=<PATH_TO_CONFIG> --host us1.api.wallarm.com
# EU Cloud
sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.11.0.x86_64.sh -- --batch --token <API_TOKEN> --mode=tcp-capture --go-node-config=<PATH_TO_CONFIG> --host api.wallarm.com
# US Cloud
sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.11.0.aarch64.sh -- --batch --token <API_TOKEN> --mode=tcp-capture --go-node-config=<PATH_TO_CONFIG> --host us1.api.wallarm.com
# EU Cloud
sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.11.0.aarch64.sh -- --batch --token <API_TOKEN> --mode=tcp-capture --go-node-config=<PATH_TO_CONFIG> --host api.wallarm.com
-
変数
WALLARM_LABELS
は、ノードが追加されるグループを設定します(Wallarm Console UI上でのノードの論理的なグルーピングに使用されます)。 -
<API_TOKEN>
は、Deploy
ロール用に生成されたAPIトークンを指定します。 -
<PATH_TO_CONFIG>
は、前もって準備した設定ファイルのパスを指定します。
提供された設定ファイルは、/opt/wallarm/etc/wallarm/go-node.yaml
にコピーされます。
必要に応じて、インストール完了後にコピーされたファイルを変更できます。変更を適用するには、sudo systemctl restart wallarm
でWallarmサービスを再起動する必要があります。
Step 5: ソリューションのテスト¶
ミラーソースのアドレスに対して、Path Traversal攻撃のテストを送信します。<MIRROR_SOURCE_ADDRESS>
の部分を、実際のインスタンスのIPアドレスまたはDNS名に置き換えてください:
TCPトラフィックミラー解析用のWallarmソリューションはout-of-bandで動作するため、攻撃をブロックするのではなく、攻撃を登録するのみです。
攻撃が登録されていることを確認するには、Wallarm ConsoleのEventsに進んでください:
ノード動作の検証¶
-
キャプチャ対象のネットワークインターフェースにトラフィックがあるか確認するには、以下のコマンドを実行してください:
-
ノードがトラフィックを検出しているかを検証するには、ログを確認してください:
- Native Nodeのログはデフォルトで
/opt/wallarm/var/log/wallarm/go-node.log
に出力されます。 - Wallarm Cloudへのデータ送信、攻撃の検出など、フィルタリングノードの標準ログは
/opt/wallarm/var/log/wallarm
ディレクトリにあります。
- Native Nodeのログはデフォルトで
追加のデバッグには、log.level
パラメータをdebug
に設定してください。
インストーラー起動オプション¶
-
all-in oneスクリプトをダウンロードしたら、以下のコマンドでヘルプを表示できます:
-
interactiveモードでインストーラーを実行し、最初のステップで
tcp-capture
モードを選択することも可能です: -
ノードをAPIディスカバリー専用モードで使用することもできます(バージョン0.11.0から利用可能)。このモードでは、ノードの組み込みメカニズムや追加設定を要する認証情報の流出、API仕様違反の試み、ブルートフォースなどにより検出された攻撃は、Wallarm Cloudへはエクスポートされず、ローカルにログとして記録されます。Cloud上に攻撃データが存在しないため、Threat Replay Testingは機能しません。
一方で、APIディスカバリー、APIセッション追跡、およびセキュリティ脆弱性検出は、関連するセキュリティエンティティの検出とCloudへのアップロードにより、引き続き完全に機能します。
このモードは、まずAPIインベントリを確認し、重要なデータを特定した上で、制御された攻撃データエクスポートを計画する場合に利用されます。ただし、攻撃エクスポートを無効にするケースは稀であり、Wallarmは攻撃データを安全に処理し、必要に応じてセンシティブな攻撃データマスキングも提供します。
APIディスカバリー専用モードを有効にするには:
-
/etc/wallarm-override/env.list
ファイルを作成または変更します:以下の変数を追加します:
-
Step 1: Wallarmトークンの準備の手順に従ってノードをインストールします。
-
アップグレードと再インストール¶
-
ノードのアップグレードには、こちらの手順に従ってください。
-
アップグレードまたは再インストールプロセスに問題がある場合:
-
現在のインストールを削除します:
-
上記のインストール手順に従って、通常通りノードを再インストールします。
-
制限事項¶
-
本ソリューションは、実際のトラフィックフローとは独立してトラフィックを解析するout-of-band (OOB)動作であるため、以下のような固有の制限があります:
- 悪意あるリクエストを即座にブロックすることはできません。Wallarmは攻撃を観測し、Wallarm Consoleに詳細を提供するのみです。
- 対象サーバーへの負荷を制限することが不可能なため、レートリミッティングはサポートされません。
- IPアドレスによるフィルタリングはサポートされません。
-
本ソリューションは、暗号化されていないHTTPトラフィックのみに対して、生のTCP上で解析を行い、暗号化されたHTTPSトラフィックは解析しません。
-
現在、HTTPキープアライブ接続上のレスポンス解析はサポートされていません。