コンテンツにスキップ

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ディスカバリーなど、レスポンスデータに依存する機能を提供します。

!TCP traffic mirror scheme

要件

  • 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アドレスへのアウトゴーイング接続が許可されていること

      34.96.64.17
      34.110.183.149
      35.235.66.155
      34.102.90.100
      34.94.156.115
      35.235.115.105
      
      34.160.38.183
      34.144.227.90
      34.90.110.226
      
  • トラフィックおよびレスポンスミラーリングは、送信元とターゲットの両方を設定し、準備されたインスタンスをミラータゲットとして選択する必要があります。特定の環境要件(トラフィックミラーリング設定に関して特定のプロトコルを許可するなど)を満たす必要があります。

  • ミラーされたトラフィックは、VLAN (802.1q)、VXLAN、またはSPANのいずれかでタグ付けされます。

Step 1: Wallarmトークンの準備

ノードをインストールするには、Wallarm Cloudにノードを登録するためのトークンが必要です。トークンの準備手順は下記の通りです:

  1. Wallarm Console → SettingsAPI tokens をUS CloudのWallarm ConsoleまたはEU CloudのWallarm Consoleで開きます。

  2. DeployソースロールのAPIトークンを作成または選択します。

  3. このトークンをコピーします。

Step 2: Wallarmインストーラーのダウンロード

Wallarmは、以下のプロセッサ向けのインストールを推奨します:

  • x86_64

  • ARM64

Wallarmインストールスクリプトをダウンロードし、実行可能にするには、以下のコマンドを使用します:

curl -O https://meganode.wallarm.com/native/aio-native-0.11.0.x86_64.sh
chmod +x aio-native-0.11.0.x86_64.sh
curl -O https://meganode.wallarm.com/native/aio-native-0.11.0.aarch64.sh
chmod +x aio-native-0.11.0.aarch64.sh

Step 3: 設定ファイルの準備

インスタンス上にwallarm-node-conf.yamlファイルを作成します。本ソリューションでは、ネットワークインターフェースとトラフィックフォーマット(例:VLAN、VXLAN)を識別するための適切な設定が必要です。ファイルのサンプル内容は以下の通りです:

version: 3

mode: tcp-capture

goreplay:
  filter: 'enp7s0:'
  extra_args:
      - -input-raw-engine
      - vxlan

記事には、他のサポートされる設定パラメータの一覧が記載されています。

モードの設定(必須)

TCPトラフィックミラー解析のために、本ソリューションを実行するには、対応するパラメータにtcp-captureモードを指定する必要があります。

リスニングするネットワークインターフェースの選択

トラフィックをキャプチャするためのネットワークインターフェースを指定するには:

  1. ホスト上で利用可能なネットワークインターフェースを確認します:

    ip addr show
    
  2. filterパラメータにネットワークインターフェースを指定します。

    値はネットワークインターフェースとポートがコロン(:)で区切られた形式である必要があります。フィルターの例としては、eth0:, eth0:80, または全インターフェース上の特定のポートを傍受するための:80などが挙げられます。例:

    version: 3
    
    mode: tcp-capture
    
    goreplay:
      filter: 'eth0:'
    

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-IPX-Forwarded-For)を追加します。real_ip_headerパラメータは、元のクライアントIPを抽出するためにWallarmが使用するヘッダーを指定します。例:

version: 3

mode: tcp-capture

http_inspector:
  real_ip_header: "X-Real-IP"

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名に置き換えてください:

curl http://<MIRROR_SOURCE_ADDRESS>/etc/passwd

TCPトラフィックミラー解析用のWallarmソリューションはout-of-bandで動作するため、攻撃をブロックするのではなく、攻撃を登録するのみです。

攻撃が登録されていることを確認するには、Wallarm ConsoleのEventsに進んでください:

!Attacks in the interface

ノード動作の検証

  • キャプチャ対象のネットワークインターフェースにトラフィックがあるか確認するには、以下のコマンドを実行してください:

    sudo tcpdump -i <INTERFACE_NAME>
    
  • ノードがトラフィックを検出しているかを検証するには、ログを確認してください:

    • Native Nodeのログはデフォルトで/opt/wallarm/var/log/wallarm/go-node.logに出力されます。
    • Wallarm Cloudへのデータ送信、攻撃の検出など、フィルタリングノードの標準ログ/opt/wallarm/var/log/wallarmディレクトリにあります。

追加のデバッグには、log.levelパラメータをdebugに設定してください。

インストーラー起動オプション

  • all-in oneスクリプトをダウンロードしたら、以下のコマンドでヘルプを表示できます:

    sudo ./aio-native-0.11.0.x86_64.sh -- --help
    
    sudo ./aio-native-0.11.0.aarch64.sh -- --help
    
  • interactiveモードでインストーラーを実行し、最初のステップでtcp-captureモードを選択することも可能です:

    sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.11.0.x86_64.sh
    
    sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.11.0.aarch64.sh
    
  • ノードをAPIディスカバリー専用モードで使用することもできます(バージョン0.11.0から利用可能)。このモードでは、ノードの組み込みメカニズムや追加設定を要する認証情報の流出、API仕様違反の試み、ブルートフォースなどにより検出された攻撃は、Wallarm Cloudへはエクスポートされず、ローカルにログとして記録されます。Cloud上に攻撃データが存在しないため、Threat Replay Testingは機能しません。

    一方で、APIディスカバリーAPIセッション追跡、およびセキュリティ脆弱性検出は、関連するセキュリティエンティティの検出とCloudへのアップロードにより、引き続き完全に機能します。

    このモードは、まずAPIインベントリを確認し、重要なデータを特定した上で、制御された攻撃データエクスポートを計画する場合に利用されます。ただし、攻撃エクスポートを無効にするケースは稀であり、Wallarmは攻撃データを安全に処理し、必要に応じてセンシティブな攻撃データマスキングも提供します。

    APIディスカバリー専用モードを有効にするには:

    1. /etc/wallarm-override/env.listファイルを作成または変更します:

      sudo mkdir /etc/wallarm-override
      sudo vim env.list
      

      以下の変数を追加します:

      WALLARM_APID_ONLY=true
      
    2. Step 1: Wallarmトークンの準備の手順に従ってノードをインストールします。

アップグレードと再インストール

  • ノードのアップグレードには、こちらの手順に従ってください。

  • アップグレードまたは再インストールプロセスに問題がある場合:

    1. 現在のインストールを削除します:

      sudo systemctl stop wallarm && sudo rm -rf /opt/wallarm
      
    2. 上記のインストール手順に従って、通常通りノードを再インストールします。

制限事項

  • 本ソリューションは、実際のトラフィックフローとは独立してトラフィックを解析するout-of-band (OOB)動作であるため、以下のような固有の制限があります:

  • 本ソリューションは、暗号化されていないHTTPトラフィックのみに対して、生のTCP上で解析を行い、暗号化されたHTTPSトラフィックは解析しません。

  • 現在、HTTPキープアライブ接続上のレスポンス解析はサポートされていません。