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