コンテンツにスキップ

TCPトラフィックミラー解析用ノードのデプロイ

Wallarmは、TCPトラフィックのミラー解析に特化したフィルタリングノードのデプロイ用アーティファクトを提供します。本ガイドでは、このフォームファクターでWallarmフィルタリングノードをデプロイおよび構成する方法を説明します。

ユースケース

サポートされているアウトオブバンドのデプロイオプションの中で、本ソリューションは以下のシナリオに推奨されます。

  • ネットワーク層でミラーされたTCPトラフィックを取得し、その特定のトラフィックを分析するセキュリティソリューションが必要な場合。

  • NGINXベースのデプロイアーティファクトが利用できない、遅い、またはリソース消費が多い場合。この場合、HTTPトラフィックのミラー解析はリソース負荷が高くなり得ます。TCPトラフィックのミラー解析はWebサーバーから独立して動作するため、これらの問題を回避します。

  • レスポンスの解析も行い、レスポンスデータに依存する脆弱性検出APIディスカバリーなどの機能を有効化したい場合。

仕組み

このソリューションはアウトオブバンド(OOB)モードで動作し、NGINXのようなWebサーバーとは独立してネットワークインターフェースから直接ミラーされたTCPトラフィックを取得します。取得したトラフィックは解析・再構成され、脅威の有無を分析します。

ミラーのターゲットとして機能し、複数のトラフィックソース間をシームレスに切り替えます。VLAN(802.1q)、VXLAN、またはSPANでタグ付けされたトラフィックをサポートします。

さらに、レスポンスミラーの解析を有効にし、レスポンスデータに依存するWallarmの機能を提供します。これには脆弱性検出APIディスカバリーなどが含まれます。

!TCPトラフィックミラーの模式図

前提条件

  • 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仕様の更新をダウンロードし、また許可リスト、拒否リスト、グレーリストに登録した国、地域、またはデータセンターの正確なIPを取得するために、以下のIPアドレスへの外向き接続が許可されていること

      node-data0.us1.wallarm.com - 34.96.64.17
      node-data1.us1.wallarm.com - 34.110.183.149
      us1.api.wallarm.com - 35.235.66.155
      34.102.90.100
      34.94.156.115
      35.235.115.105
      
      node-data1.eu1.wallarm.com - 34.160.38.183
      node-data0.eu1.wallarm.com - 34.144.227.90
      api.wallarm.com - 34.90.110.226
      
  • トラフィックとレスポンスのミラーリングが、送信元とターゲットの双方で構成され、用意したインスタンスがミラーターゲットとして選択されている必要があります。トラフィックミラーリングの構成では、特定のプロトコルを許可するなど、環境固有の要件を満たす必要があります。

  • ミラーリングされたトラフィックにはVLAN(802.1q)、VXLAN、またはSPANのタグが付与されている必要があります。

手順1: Wallarmトークンの準備

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

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

  2. 使用タイプがNode deployment/DeploymentのAPIトークンを探すか作成します。

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

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

Wallarmは以下のプロセッサ向けのインストールを提供します。

  • x86_64

  • ARM64

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

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

手順3: 設定ファイルの準備

インスタンス上にwallarm-node-conf.yamlファイルを作成します。本ソリューションでは、ネットワークインターフェースおよびトラフィック形式(例: VLAN、VXLAN)を特定できるよう適切に構成する必要があります。ファイル内容の例:

version: 4

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: 4
    
    mode: tcp-capture
    
    goreplay:
      filter: 'eth0:'
    

VLANのキャプチャ

ミラーリングされたトラフィックがVLANでラップされている場合は、追加の引数を指定します。

version: 4

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: 4

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とHostヘッダーの特定

トラフィックがプロキシやロードバランサーを通過する際、これらが元のクライアントIPアドレスやHostヘッダーを自分自身の値に置き換えることがよくあります。元の情報を保持するため、これらの中間機器は通常、X-Forwarded-ForX-Real-IPX-Forwarded-HostのようなHTTPヘッダーを追加します。

Native Nodeが元のクライアントおよび対象ホストを正しく特定できるようにするには、proxy_headers設定ブロックを使用します。例:

version: 4

mode: tcp-capture

proxy_headers:
  # ルール1: 社内プロキシ
  - trusted_networks:
      - 10.0.0.0/8
      - 192.168.0.0/16
    original_host:
      - X-Forwarded-Host
    real_ip:
      - X-Forwarded-For

  # ルール2: 外部エッジプロキシ(例: CDN、リバースプロキシ)
  - trusted_networks:
      - 203.0.113.0/24
    original_host:
      - X-Real-Host
    real_ip:
      - X-Real-IP

手順4: Wallarmインストーラーの実行

TCPトラフィックミラー解析用のWallarmノードをインストールするには、次のコマンドを実行します。

# US Cloud
sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.17.1.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.17.1.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.17.1.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.17.1.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>は、使用タイプNode deployment/Deploymentで生成したAPIトークンを指定します。

  • <PATH_TO_CONFIG>は、事前に用意した設定ファイルへのパスを指定します。

指定した設定ファイルは/opt/wallarm/etc/wallarm/go-node.yamlにコピーされます。

必要に応じて、インストール完了後にコピーされたファイルを変更できます。変更を反映するには、sudo systemctl restart wallarmでWallarmサービスを再起動する必要があります。

手順5: ソリューションのテスト

<MIRROR_SOURCE_ADDRESS>をインスタンスの実IPアドレスまたはDNS名に置き換えて、ミラーの送信元アドレスへテスト用のパストラバーサル攻撃を送信します。

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

TCPトラフィックミラー解析用のWallarmソリューションはアウトオブバンドで動作するため、攻撃をブロックせず、記録のみを行います。

攻撃が記録されたことを確認するには、Wallarm Console → Eventsに進みます。

!インターフェースでの攻撃

ノードの動作確認

  • キャプチャ対象のネットワークインターフェースにトラフィックがあるか確認するには、マシン上で次のコマンドを実行します。

    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.17.1.x86_64.sh -- --help
    
    sudo ./aio-native-0.17.1.aarch64.sh -- --help
    
  • 対話モードでインストーラーを実行し、最初のステップでtcp-captureモードを選択することもできます。

    sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.17.1.x86_64.sh
    
    sudo env WALLARM_LABELS='group=<GROUP>' ./aio-native-0.17.1.aarch64.sh
    
  • ノードをAPIディスカバリー専用モード(バージョン0.12.1以降で利用可能)で使用できます。このモードでは、ノードの組み込みメカニズムで検出された攻撃や、追加の設定を要する攻撃(例: 資格情報詰め込み、API仕様違反の試行、ブルートフォース)を含む攻撃は検出され、ローカルにログ記録されますが、Wallarm Cloudにはエクスポートされません。Wallarm Cloudに攻撃データがないため、脅威リプレイテストは動作しません。

    一方で、APIディスカバリーAPIセッション追跡、および脆弱性検出は引き続き完全に機能し、該当するセキュリティエンティティを検出して可視化のためにWallarm Cloudへアップロードします。

    このモードは、まずAPI資産を見直して機密データを特定し、その上で攻撃データのエクスポートを計画的に行いたい方に適しています。ただし、攻撃データのエクスポートを無効にするケースはまれです。Wallarmは攻撃データを安全に処理し、必要に応じて機密攻撃データのマスキングを提供します。

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

    1. /etc/wallarm-override/env.listファイルを作成するか変更します。

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

      次の変数を追加します。

      WALLARM_APID_ONLY=true
      
    2. 手順1のノードインストール手順に従います。

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

  • ノードをアップグレードするには、手順に従います。

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

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

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

制限事項

  • 実際のフローとは独立してトラフィックを分析するアウトオブバンド(OOB)動作のため、いくつかの制約があります。

  • 本ソリューションは生のTCP上の平文HTTPトラフィックのみを分析し、暗号化されたHTTPSトラフィックは対象外です。

  • 現時点ではHTTP keep-alive接続上のレスポンス解析をサポートしていません。