Linux フォワーダーの一般的な問題のトラブルシューティング

以下でサポートされています。

このドキュメントでは、Google Security Operations Linux フォワーダーの使用中に発生する可能性のある一般的な問題の認識とトラブルシューティングについて説明します。

フォワーダーが起動しない

フォワーダが起動せず、ログに次のエラーが表示されて再起動ループが続く。

F0510 06:17:39.013603 202 main_linux.go:153] open /opt/chronicle/external/*.conf: no such file or directory

考えられる原因 1: 構成ファイルのマッピングが正しくない

この問題を解決するには、構成ファイルの正しいパスを渡し、外部フォルダにマッピングしていることを確認します。

考えられる原因 2: SELinux が有効になっている

  1. フォワーダを起動せずにコンテナに移動し、次のコマンドを実行して構成ファイルを確認します。

    docker run --name cfps --log-opt max-size=100m --log-opt   max-file=10 --net=host -v ~/configuration:/opt/chronicle/external --entrypoint=/bin/bash \
    -it gcr.io/chronicle-container/cf_production_
    

    このコマンドを実行すると、コンテナ内からシェルに移動します。

  2. 次のコマンドを実行します。

    ls -lrt /opt.chronicle/external/
    

    アクセス拒否エラーが発生した場合は、フォワーダーが構成ファイルを開けないため、起動できないことを示します。

この問題を解決するには、次の操作を行います。

  1. 次のコマンドを実行して、SELinux のステータスを確認します。

      sestatus
    
  2. 出力で SELinux ステータスが有効になっている場合は、次のコマンドを実行して無効にします。

      setenforce 0
    

ログが Google Security Operations テナントに届かない

考えられる原因 1: DNS の解決

次のコマンドを実行して、ホストがアドレスを解決できないか、または Google Security Operations にアクセスできないかを確認します。

  nslookup malachiteingestion-pa.googleapis.com

コマンドが失敗した場合は、ネットワーク チームに解決を依頼してください。

考えられる原因 2: ファイアウォール

次のコマンドを実行して、ローカル ファイアウォールが Google Security Operations とフォワーダー間の通信をブロックしているかを確認します。

  firewall-cmd --state

ファイアウォールが有効になっている場合は、次のコマンドを実行して無効にします。

  systemctl stop firewalld

考えられる原因 3: バッファサイズ

ログで次のエラーを探して、バッファサイズの問題かどうかを確認します。

Memory ceiling (1073741824) reached, freeing a batch from the backlog

この問題を解決するには、次の操作を行います。

  1. フォワーダー構成ファイルで圧縮を有効にします。

  2. 構成ファイルで max_memory_buffer_bytes パラメータと max_file_buffer_bytes パラメータを更新して、バッファサイズを増やします。これらのパラメータは、メモリまたはディスクに保存されるバックログ バッチのバッファを示します。

フォワーダーとホストがログを受信しない

ホストとフォワーダーがログを受信しない場合は、ポートごとに次のコマンドを実行してポートのステータスを確認します。

  netstat -a | grep PORT

PORT は、確認するポート ID に置き換えます。

コマンドから出力が表示されない場合は、ホストがそのポートでリッスンしていないことを示します。この場合は、ネットワーク管理者にお問い合わせください。

コマンドの出力で、ホストがポートでリッスンしていてもフォワーダーがログを受信していない場合は、次の操作を行います。

  1. 次のコマンドを実行して Docker を停止します。

    ​​docker stop cfps
    
    
  2. ネットワークの設定に応じて、次のいずれかのコマンドを実行します。

    TCP の場合:

    nc -l PORT
    

    UDP の場合:

    nc -l -u PORT
    

    PORT は、トラブルシューティングするポート ID に置き換えます。

  3. 外部サービスを再起動して、問題が解決したかどうかを確認します。問題が解決しない場合は、Google Security Operations サポートにお問い合わせください。

フォワーダーはログを受信していないがホストはログを受信している

ホストがログを受信していて、フォワーダーが受信していない場合は、フォワーダーが構成ファイルで指定されたポートでリッスンしていないことを示します。

この問題を解決するには、次の操作を行います。

  1. システム上で 2 つのターミナル ウィンドウを開きます。1 つはフォワーダーの構成用で、もう 1 つはホストへのテスト メッセージの送信用です。

    1. 最初のターミナル(フォワーダー)で、次のコマンドを実行して、フォワーダーを起動せずに Docker を起動します。

      docker run \
      --name cfps \
      --log-opt max-size=100m \
      --log-opt max-file=10 \
      --net=host \
      -v ~/config:/opt/chronicle/external \
      --entrypoint=/bin/bash \
      -it gcr.io/chronicle-container/cf_production_stable
      
    2. フォワーダーがリッスンするポートを指定します。

      nc -l PORT
      

      PORT は、トラブルシューティングするポート ID に置き換えます。

  2. 2 番目のターミナル(ホスト)で、次のコマンドを実行して、ポートでテスト メッセージを送信します。

    echo "test message" | nc localhost PORT
    

    PORT は、トラブルシューティングするポート ID に置き換えます。

  3. docker コマンドを再実行します。次のコマンドを実行して、フォワーダーがリッスンするポートで -p フラグを指定します。

    docker run \
    --detach \
    –name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 --net=host \
    —v /root/config:/opt/chronicle/external \
    -p 11500:11800 \
    gcr.io/chronicle-container/cf_production_stable
    

フォワーダ ログファイルの一般的なエラー

次のコマンドを実行すると、フォワーダー ログを表示することができます。

  sudo docker logs cfps

リクエストに無効な引数が含まれている

フォワーダー ログファイルに次のエラー メッセージが表示されます。

  I0912 18:04:15.187321 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
  E0912 18:04:15.410572 333 batcher.go:345] [2_syslog_CISCO_FIREWALL-tid-0] Error exporting batch: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
  I0912 18:04:15.964923 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.

解決策:

このエラーは、無効なログタイプが追加されたときに発生します。有効なログタイプのみが追加されていることを確認します。このサンプル エラー メッセージでは、CISCO\_FIREWALL が有効なログタイプではありません。有効なログタイプの一覧については、サポートされているログタイプとデフォルト パーサーをご覧ください。

サーバーが見つからない

フォワーダー ログファイルに次のエラー メッセージが表示されます。

{"log":"Failure: Unable to find the server at accounts.google.com.\n","stream":"stderr","time":"2019-06-12T18:26:53.858804303Z"}`

{"log":"+ [[ 1 -ne 0 ]]\n","stream":"stderr","time":"2019-06-12T18:26:53.919837669Z"}

{"log":"+ err 'ERROR: Problem accessing the Chronicle bundle.'\n","stream":"stderr","time":"2019-06-12T18:26:53.919877852Z"}

解決策:

ネットワークが機能していることを確認するには、ネットワーク チームにお問い合わせください。

JWT 署名が無効

フォワーダー ログファイルに次のエラー メッセージが表示されます。

    E0330 17:05:28.728021 162 stats_manager.go:85] send(): rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
    E0404 17:05:28.729012 474 memory.go:483] [1_syslog_FORTINET_FIREWAL-tid-0] Error exporting batch: rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}

解決策:

このエラーは、フォワーダー構成ファイルに間違った秘密鍵の詳細がある場合に発生することがあります。この問題の解決の支援には、Google Security Operations サポートにお問い合わせください。

トークンは有効期間が短いトークンである必要がある

フォワーダー ログファイルに次のエラー メッセージが表示されます。

      token: 400 Bad Request Response:
      {"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
      short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim."} I0412 05:14:16.539060 480
      malachite.go:212] Sent batch error: rpc error: code = Unauthenticated desc =
      transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response:
      {"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
      short-lived token (60 minutes)

解決策:

このエラーは、ホストとサーバーのシステム クロックが同期していない場合に発生します。ホストで時刻を調整するか、NTP を使用してクロックを同期してみてください。

該当するファイルまたはディレクトリがない

フォワーダー ログファイルに次のエラー メッセージが表示されます。

    ++ cat '/opt/chronicle/external/*.conf'
    cat: '/opt/chronicle/external/*.conf': No such file or directory

解決策:

このエラーは、フォワーダーが誤ったドライブ マッピングで起動したときに発生します。構成ファイルでは、ディレクトリの完全パスを使用します(パスは pwd コマンドを実行して取得できます)。

構成ファイルからお客様 ID を取得できない

フォワーダー ログファイルに次のエラー メッセージが表示されます。

    + err 'ERROR: Failed to retrieve customer ID from configuration file.'
    ++ date +%Y-%m-%dT%H:%M:%S%z
    + echo '[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.'
    [2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.
    + err '==> Please contact the Chronicle support team.'

解決策:

このエラーは、マッピングが正しくないか、ディレクトリに構成ファイルが存在しないことが原因で発生します。構成ファイルでは、ディレクトリの完全パスを使用します(パスは pwd コマンドを実行して取得できます)。正しい docker run コマンドが実行され、構成ファイルが次の場所に存在することを確認します。

    gcr.io/chronicle-container/cf_production_stable

次のコードサンプルは docker run コマンドを示しています。

    ​​docker run \
    --detach \
    --name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    gcr.io/chronicle-container/cf_production_stable

便利な Docker コマンド

  • 次のコマンドを使用して、Docker のインストールに関する追加情報を収集できます。

    docker info
    
  • Docker サービスはデフォルトで無効になっている場合があります。無効になっているかどうかを確認するには、次のコマンドを実行します。

    systemctl is-enabled docker
    
  • Docker サービスを有効にしてすぐに起動するには、次のいずれかのコマンドを実行します。

    sudo systemctl enable --now docker
    
    sudo systemctl enable /usr/lib/systemd/system/docker.service
    

    出力:

    Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
    
  • フォワーダを起動するときに、次のコマンドを実行してフォワーダを自動再起動するように設定します。

    sudo docker run --restart=always `IMAGE_NAME`
    

    IMAGE_NAME はフォワーダー イメージ名です。

  • Docker サービスのステータスと詳細を確認するには、次のコマンドを実行します。

    sudo systemctl status docker
    

    出力:

     docker.service - Docker Application Container Engine
        Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
        Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago
    TriggeredBy:  docker.socket
          Docs: https://docs.docker.com
      Main PID: 263 (dockerd)
          Tasks: 20
        Memory: 100.4M
        CGroup: /system.slice/docker.service
                └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock"
    Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
    

    Docker に問題がある場合、Google SecOps サポートチームは、このコマンドの出力をリクエストして、問題の修正とデバッグを行います。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps の専門家から回答を得る。