コンテンツに移動
ネットワーキング

Google Cloud でのフォレンジックにネットワーク テレメトリーを活用する

2021年9月28日
https://storage.googleapis.com/gweb-cloudblog-publish/images/GCP-networking-01.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2021 年 9 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。

クラウド インフラストラクチャにおける脅威アクターの検出時、セキュリティ運用チームは多くの場合、ログに記録されたさまざまなデータの断片をつなぎ合わせることによって状況を説明し、攻撃者の存在を立証する必要があります。クラウドで攻撃者のパターンを特定するのに役立つ主要なデータソースには、クラウドログ、エンドポイント ログ、ネットワーク ログの 3 つがあります。ネットワーク モニタリングは、エンドポイント ログがカバーできない領域(非マネージド デバイスの監視など)でエージェントレスな脅威検出機能を提供し、攻撃者の存在を立証するためのコンテキストを提供できるという点で、重要な役割を果たします。

また、レガシー環境では、技術スタックの大部分にセンサーを設置して、暗号化された、または暗号化されていないネットワーク データをキャプチャするためには、非常に複雑な作業が必要でした。クラウドでは、Google Cloud の Packet Mirroring サービスのように強力なテクノロジーを使用することで、より簡単かつ効率的にインフラストラクチャ全体のネットワーク トラフィックをキャプチャできます。すべてのネットワーク トラフィックをキャプチャするには、依然として非常にコストがかかります。しかし、ネットワーク トラフィックのキャプチャは、多くの組織(特に厳しい規制を受ける企業)でコンプライアンス要件となっています。

多くの組織が直面している問題は、こうしたデータの収集および関連付けをどのように行うべきかについて、確信を持てないことです。一部の組織では、ネットワーク モニタリングを行うために VPC フローログを確認しています。VPC フローログは 5 タプル(プロトコル、送信元アドレス、送信元ポート、宛先アドレス、宛先ポート)などの一般的な接続の詳細を提供しますが、接続以外の追加情報や、関連する Google Cloud メタデータは提供しません。VPC フローログのみでは不十分である最大の理由は、サンプリング データ(おおよそ 10 個に 1 個のパケットのみをログに記録)しか提供されず、フォレンジックに必要な関連データが欠落している可能性があるということです。ユーザーは通常、大まかなモニタリング用に VPC フローログを、より詳細なモニタリング用に Packet Mirroring をデプロイします。Packet Mirroring ではパケットのコンテンツを含むすべての情報がキャプチャされるため、攻撃のペイロードやパターンを正確に突き止めることができます。その一方で、クラウド インフラストラクチャ全体に Packet Mirroring をデプロイすると費用が高くなる可能性があるため、ユーザーは多くの場合、VPC フローログを広範囲に使用しつつ、より機密性の高いリソースに Packet Mirroring を使用します。

ネットワーク フォレンジックとテレメトリーのブループリントにより、ネットワークの広範な可視性が提供されるため、お客様は Terraform を介して容易にデプロイするとともに、ネットワークを可視化して、Chronicle やその他の SIEM を用いたネットワーク モニタリングとフォレンジックに役立てることができます。ブループリントは Google の自律型のセキュリティ運用ソリューション内で活用されていますが、必要に応じて他のキャパシティでも使用可能です。また、ネットワークの検出をマネージドな方法で行うことを希望される組織向けに、Google は最近、Cloud IDS のリリースを発表しました。このブログでは、このブループリントが提供する内容について詳しく解説します。

ブループリントのコアコンセプト

https://storage.googleapis.com/gweb-cloudblog-publish/images/Blueprint_Core_Concepts.max-1500x1500.jpg

全体の仕組みを解説する前に、このブループリントの基本コンポーネントについて説明します。

  • VPC ピアリング - ピアリングは、お客様の VPC と、「コレクタ」VPC と呼ばれる VPC を接続するのに使用されます。「コレクタ」VPC には、ロードバランサとバックエンド コレクタ仮想マシンが含まれています。

  • Packet Mirroring - このサービスは、ネットワーク検査とトランザクション ログ用に、お客様の VPC からコレクタ VM にトラフィックをミラーリングするポリシー作成機能を提供します。

  • 内部 L4 ロードバランサ - このロードバランサは、バックエンド仮想マシンをフロントエンドに配置します。Packet Mirroring ポリシーの宛先となっており、負荷を複数のコレクタに分散できます。

  • Zeek - オープンソースのネットワーク セキュリティ センサーであり、コレクタ VM にインストールされています。ネットワーク パケットを受け取り、詳細なトランザクション ログを作成します。

  • Google-fluentd - コレクタ VM に配置されている Logging エージェントです。この Logging エージェントは、Zeek によって生成されたログを Cloud Logging に送信します。このログは Chronicle によってネイティブに取り込まれます。

コア コンポーネントの詳細については、Terraform のコアコンセプトのドキュメントをご覧ください。

ブループリントは、次の 2 つのコンポーネントを提供します。

  1. 「ゴールデン イメージ」を作成するための Packer スクリプト。

  2. ブループリントに必要なすべてのコンポーネントの作成とデプロイを自動化するための Terraform スクリプト。

ブループリントのゴールデン イメージと Packer スクリプト

ブループリントは、コレクタ VM 用の「ゴールデン イメージ」を提供します。このイメージには、Zeek と Google-fluentd の必要なソフトウェアとサービス パッケージが含まれています、ブループリントは、ゴールデン イメージの作成に使用する Packer スクリプトも提供します。Packer スクリプトは、必要に応じてカスタム イメージの作成にも使用できます。

ブループリントの Terraform スクリプト

ブループリントは、フォレンジックとテレメトリーに使用するネットワーク トランザクション ログの生成に必要な、すべてのコンポーネントの作成とデプロイを自動化するための Terraform スクリプトで構成されています。

Terraform スクリプトには、さまざまな IAM 権限を持つサービス アカウントが必要です。このサービス アカウントは、提供されたユーザー入力に基づいて次のタスクを行います。

  1. 「コレクタ」VPC を作成する。

  2. 「コレクタ」サブネットを作成する。

  3. 「コレクタ」VPC とお客様の「ミラーリング対象」VPC をピアリングする。

  4. 「コレクタ」VPC 内に、「ミラーリング対象」VPC からのトラフィックを許可するための Cloud ファイアウォール ルールを作成する。

  5. 「ゴールデン イメージ」またはカスタム イメージを使用するインスタンス テンプレートを作成する。

  6. テンプレートを参照するマネージド インスタンス グループを作成して、自動スケーリングを有効にする。

  7. 内部ロードバランサを作成して、Packet Mirroring を有効にする。

  8. Packet Mirroring ポリシーを作成する。

ご覧のように、手動ですべてのプロビジョニングを行うには手間がかかる場合があります。Google は Terraform を使用してこのプロセスを簡素化し、すべてを一度に作成、デプロイできるようにしました。また、「コレクタ」VPC に使用する VPC 名やサブネットなどのさまざまなコンポーネントを柔軟に定義できるようにしたほか、さらに重要な点として、独自の Packet Mirroring ポリシー設定を定義できるようにしました。

Terraform の例

ブループリントには、使い始める際に役立つ 4 つの例が用意されています。

  1. 基本構成 - この例では、定義されているサブネット内のすべてのコンピューティング リソースを対象として、上り(内向き)と下り(外向き)の両方のトラフィックをミラーリングする、デフォルトの Packet Mirroring ポリシーを示します。

  2. ミラーリング リソース フィルタリング - この例では、Packet Mirroring ポリシーのさまざまなフィルタリング構成を柔軟に定義する方法を示します。サブネット内のすべてのコンピューティング リソースをミラーリングする代わりに、特定のネットワーク タグが付いたコンピューティング リソースのみをミラーリングできます。または、個々のコンピューティング リソースを定義できます。

  3. Packet Mirroring トラフィック フィルタリング - この例では、ミラーリングするトラフィックの種類を柔軟に定義する方法を示します。上り(内向き)または下り(外向き)のいずれかのトラフィックのみ、または TCP などの特定のプロトコルのみをミラーリングすることもできますが、多くの場合、特定の CIDR 範囲の送信トラフィックと受信トラフィックのみをミラーリング対象とします。

  4. 複数の VPC のサポート - この例では、ブループリント向けに複数の VPC を構成する方法を示します。ブループリントは同じプロジェクトの VPC をサポートしますが、別のプロジェクトの VPC との間で接続を行うこともできます(IAM 権限が必要)。

Terraform スクリプトを環境にデプロイすると、ミラーリング対象として定義されているコンピューティング リソースのネットワーク トランザクション ログが生成されます。このログは Cloud Logging で使用できます。

ネットワーク トランザクション ログ

Cloud Logging でログ名でフィルタリングすることで、簡単にログを表示できるようになりました。表示したいログの種類を定義して、シンプルなクエリを作成できます。前述のように、Zeek 構成が Google Cloud 向けに変更され、GCP 関連の詳細情報が含まれるようになりました。コレクタはさまざまなネットワーク トランザクション ログを生成します。よく生成されるログには、次のようなものがあります。

  • Conn ログ - 接続ログは間違いなく最も重要なログの一つであり、接続の詳細(時刻、IP、ポート、プロトコル、バイト数、パケット数、接続の継続時間など)を提供します。

  • HTTP ログ - HTTP トラフィックに固有のトランザクションの詳細(接続情報、HTTP リクエスト メソッド、ホストヘッダー、URI、ユーザー エージェント、レスポンス コード、MIME タイプなど)を提供します。

  • SSL ログ - SSL トラフィックにおけるトランザクションの詳細と、SSL の詳細(暗号、SNI、証明書の詳細など)を含む接続情報を提供します。

  • SSH ログ - SSH トラフィックにおけるトランザクションの詳細と接続の詳細のほか、認証ステータスや、ラテラル ムーブメント、インバウンド / アウトバウンド ムーブメント、失敗したムーブメントの詳細を提供します。

ログファイル名でフィルタリングすることで、特定のログを簡単にフィルタリングできるようになりました。各ログタイプは、「zeek_json_streaming_xxx」という形式で生成されます。上記の 4 つのログは以下のようになります。

  • zeek_json_streaming_conn

  • zeek_json_streaming_http

  • zeek_json_streaming_ssl

  • zeek_json_streaming_ssh

クエリは次のように構成されます。

読み込んでいます...

以下は、筆者のウェブサーバーに対する curl リクエストについて、Cloud Logging から取得した JSON コンテンツの例です(接続ログと HTTP ログ)。

https://storage.googleapis.com/gweb-cloudblog-publish/images/zeek_json.max-2000x2000.jpg

ご覧のように、左側の接続ログでは、リクエストに関する追加のメタデータが提供されています。また、GCP 関連のコンポーネント(project_id や vpc_name など)が含まれるように Zeek が変更されたことで、利便性が向上しています。

右側の HTTP ログでは、リクエストに関するレイヤ 7 のメタデータが提供されています。ここでは、接続ログで提供されない HTTP の追加の詳細を確認できます。さらに、これらのリクエストが同じ uid に基づいた同じリクエストであることを確認することもできます。

次の例では、VPC フローログが提供する情報を確認し、その後でこのブループリントが提供する情報と比較します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_FXivfe2.max-2000x2000.jpg

ご覧のように、VPC フローログでは接続の詳細のみが表示されています。ブループリントの HTTP ログを見ると、追加の情報が表示されていることがわかります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3v1.max-2000x2000.jpg

このように可視性が提供されることで、Chronicle(またはお好みの SIEM)を使用して脅威の詳細を把握し、/etc/passwd に対する HTTP アクセスの試みがあった場合に通知を受けることができます。このブループリントは、脅威の検出に必要な情報を提供します。ブループリントの実装は、ほとんどのセキュリティ運用チームにとって、検出および対応プログラムでネットワーク テレメトリーを活用できるようにするための重要なステップです。

次のステップ:

  • このソリューションをご検討される場合は、gitHub にアクセスして、Terraform スクリプトとゴールデン イメージが含まれるオープンソース リポジトリをダウンロードしてください。

  • ネットワーク セキュリティのモニタリングが重要な理由について詳しくは、こちらのブログ投稿をご覧ください。

  • セキュリティ運用の変革の詳細については、Google の自律型のセキュリティ運用ソリューションをご覧ください。

-セキュリティ ソリューション マネージャー Iman Ghanizada

- カスタマー エンジニア / ネットワーク スペシャリスト David Tu

投稿先