ネットワーク テレメトリーはネットワーク上のデバイスからネットワーク トラフィック データを収集し、データを分析できるようにするものです。ネットワーク テレメトリーを使用すると、セキュリティ オペレーション チームはネットワーク ベースの脅威を検出し、高度な攻撃者の探査ができます。これは自律的なセキュリティ オペレーションに不可欠です。ネットワーク テレメトリーを取得するには、ネットワーク データをキャプチャして保存する必要があります。このブループリントでは、Packet Mirroring と Zeek を使用して Google Cloud でネットワーク データをキャプチャする方法について説明します。
このブループリントは、ネットワーク トラフィックをミラーリングし、このデータを保存して、分析のために転送したいと考えるセキュリティ アナリストやネットワーク管理者を対象としています。このブループリントは、ネットワーキングとネットワーク モニタリングに関する実践的な知識があることを前提としています。
このブループリントは、次のもので構成されるセキュリティ ブループリントの一部です。
- 一連の Terraform の構成とスクリプトを含む GitHub リポジトリ。
- ブループリント(このドキュメント)で実施するアーキテクチャ、設計、セキュリティ管理のガイド。
このブループリントを使用すると、Packet Mirroring でネットワーク パケット(ネットワーク メタデータを含む)をキャプチャし、ネットワーク パケットを Zeek のログに変換して Cloud Logging に格納できます。このブループリントは、メタデータ(IP アドレス、ポート、プロトコル、レイヤ 7 ヘッダーとリクエストなど)を抽出します。ネットワーク メタデータを Zeek ログとして保存すると、生のパケットデータを保存するよりもデータ量が少なくなり、結果として費用対効果が上がります。
このドキュメントは、Google Cloud エンタープライズ基盤ガイドに説明されているように、基本的なセキュリティ管理の構成が完了していることを前提としています。
サポートされるユースケース
このブループリントは、次のユースケースをサポートしています。
- セキュリティ オペレーション センター(SOC)が、セキュリティ インシデントを調査できるように、一元化されたロケーションにある Google Cloud ネットワークのログデータへのアクセスを求めている。このブループリントは、ネットワーク パケットデータを、分析ツールや調査ツールに転送できるログに変換します。分析と調査用のツールには、BigQuery、Google Security Operations、Flowmon、ExtraHop、セキュリティ情報およびイベント管理(SIEM)などがあります。
- セキュリティ チームが、Google SecOps などのツールを使用して脅威の探査を行うために、Google Cloud ネットワークの可視化を求めている。このブループリントは、Google Cloud ネットワーク トラフィックのパイプラインを作成するために使用できます。
- 組織がネットワークの検出と対応に関するコンプライアンス要件を満たしていることを実証する必要がある。たとえば、組織が米国行政管理予算局(OMB)の Memorandum M-21-31 の遵守を実証する必要がある場合などです。
- ネットワーク セキュリティ アナリストには、長期的なネットワーク ログデータが必要である。このブループリントは、長期モニタリングとオンデマンド モニタリングの両方をサポートしています。
パケット キャプチャ(pcap)データも必要な場合は、ネットワーク プロトコル分析ツール(Wireshark や tcpdump など)を使用する場合があります。ネットワーク プロトコル分析ツールの使用については、このブループリントの対象外です。
このブループリントは Cloud Intrusion Detection System ではデプロイできません。このソリューションと Cloud Intrusion Detection System はどちらもパケット ミラーリング ポリシーを使用します。これらのポリシーは一度に 1 つのサービスでのみ使用できます。
費用
このブループリントは、コンピューティング リソースを追加し、Cloud Logging に大量のデータを保存するため、費用に影響を与える可能性があります。ブループリントをデプロイする場合は、次の点を考慮してください。
- Compute Engine の各コレクタ仮想マシン(VM)は、e2-medium インスタンスとして動作します。
- ストレージの費用は、次に挙げることによって制御できます。
- Packet Mirroring フィルタを使用する。
- ゾーン間の下り(外向き)料金が発生しないように、ゾーン間でのミラーリングを行わない。
- 組織で必要な期間だけに限りデータを保存する。
料金計算ツールを使用すると、コンピューティング、ロギング、ストレージの費用を見積もることができます。
アーキテクチャ
次のアーキテクチャ図では、このブループリントを使用して実装するインフラストラクチャを示します。
上図に示すアーキテクチャでは、次の Google Cloud サービスと機能を組み合わせて使用しています。
2 つの Virtual Private Cloud(VPC)ネットワーク。
- ミラーリング対象のソース用の Virtual Private Cloud ネットワーク。
- コレクタ インスタンス用の VPC ネットワーク。
これらの VPC ネットワークは、同じプロジェクト内に存在する必要があります。
ネットワーク パケットの送信元となる特定のリージョンとサブネットにある Compute Engine インスタンスや Google Kubernetes Engine(GKE)インスタンス(ミラーリング対象のソース)。ソースをミラーリングするインスタンスは、次のいずれかの方法で特定します。
- ネットワーク タグ
- Compute インスタンス名
- サブネット名
ミラーリング対象のソースと同じリージョンの内部パススルー ネットワーク ロードバランサの後ろでコレクタ インスタンスとして機能する Compute Engine インスタンス。これらのインスタンスは、Zeek-Fluentd Golden Image またはカスタム zeek-fluentd イメージを実行します。VM は e2-medium で、サポートされるスループットは 4 Gbps です。
ミラーリング対象のソースからパケットを受信し、処理のためにコレクタ インスタンスに転送する内部パススルー ネットワーク ロードバランサ。ロードバランサの転送ルールは、
--is-mirroring-collector
フラグを使用します。次のものを許可する VPC ファイアウォール ルール。
- ミラーリング対象のソースから内部パススルー ネットワーク ロードバランサへの下り(外向き)。
- コレクタ インスタンスからミラーリング インスタンスへの上り(内向き)。
リージョン、サブネット、ミラーリング対象のインスタンス、プロトコル、方向、転送ルールを定義する Packet Mirroring ポリシー。リージョンごとに独自の Packet Mirroring ポリシーが必要です。
複数のリージョンをまたぐ高可用性の Compute Engine VM 間で内部 IP アドレスを使用した接続を許可する VPC ネットワーク ピアリング。VPC ネットワーク ピアリングを使用すると、ミラーリング対象のソースが内部パススルー ネットワーク ロードバランサと通信できます。
分析ツールと調査ツールによって保存と取得のためのすべてのパケットを収集する Cloud Logging インスタンス。
必要なセキュリティ管理を把握する
このセクションでは、ネットワーク モニタリング アーキテクチャのさまざまなコンポーネントを保護するために使用できる Google Cloud 内のセキュリティ管理について説明します。
VPC ネットワークのセキュリティ管理
VPC ネットワークを、ミラーリング対象のソースとコレクタを中心に作成します。コレクタ用に VPC ネットワークを作成すると、システム生成されたデフォルト ルートが削除されます。つまり、デフォルトのインターネット ゲートウェイのルートはすべて無効になります。デフォルトのインターネット ゲートウェイを無効にすると、外部の脅威である攻撃者からのネットワーク攻撃対象が削減されます。
VPC ネットワークにサブネットを、リージョンごとに作成します。サブネットにより、Google Cloud 上のワークロード間のトラフィックの流れを制御できます。また、外部ソースからのトラフィックの流れも同様です。サブネットで限定公開の Google アクセスを有効にします。限定公開の Google アクセスも、ネットワーク攻撃対象を削減し、VM が Google API およびサービスと通信できるようにします。
VPC ネットワーク間の通信を許可するには、VPC ネットワーク ピアリングを有効にします。VPC ネットワーク ピアリングは、内部 IP アドレス接続にサブネット ルートを使用します。カスタムルートをインポートしてエクスポートすることで、ミラーリング対象のソースとコレクタを直接接続できます。コレクタの内部パススルー ネットワーク ロードバランサはグローバル ルートをサポートしていないため、すべての通信をリージョン ルートに制限する必要があります。
ファイアウォール ルール
ファイアウォール ルールを使用して、ミラーリング対象のソースとコレクタが作成できる接続を定義します。通常の稼働時間のヘルスチェックを許可する上り(内向き)ルール、ミラーリング対象のソースのすべてのプロトコルの下り(外向き)ルール、コレクタのすべてのプロトコルの上り(内向き)ルールを設定します。
コレクタ VM のセキュリティ管理
コレクタ VM はパケットデータを受信します。コレクタ VM は、マネージド インスタンス グループ(MIG)として機能する同一の VM です。応答しない VM の自動再作成を許可するには、ヘルスチェックを有効にします。また、使用要件に基づいてコレクタを自動スケーリングすることもできます。
各コレクタ VM では、zeek-fluentd Packer イメージが実行されます。このイメージはログを生成する Zeek と、Cloud Logging にログを転送する Fluentd で構成されます。Terraform モジュールをデプロイした後、VM OS パッケージと Zeek パッケージを更新して、組織に必要なセキュリティ管理を適用できます。
内部ロードバランサのセキュリティ管理
内部パススルー ネットワーク ロードバランサは、ミラーリング対象のソースからネットワーク パケットのトラフィックをコレクタ VM に転送して処理します。すべてのコレクタ VM は、内部パススルー ネットワーク ロードバランサと同じリージョンで実行する必要があります。
内部パススルー ネットワーク ロードバランサの転送ルールでは、すべてのポートからアクセスできるように定義されますが、グローバル アクセスは許可されません。また、転送ルールでは、--is-mirroring-collector
フラグを使用し、このロードバランサがミラーリング コレクタとして定義されます。
各コレクタ VM は Cloud Logging にログを直接アップロードするため、ロードバランサをストレージ用に設定する必要はありません。
Packet Mirroring
Packet Mirroring では、ミラーリングするインスタンスを指定する必要があります。ミラーリングするインスタンスは、ネットワーク タグ、インスタンス名、またはインスタンスが配置されているサブネットを使用して特定できます。さらに、次に挙げるものから 1 つ以上を使用してトラフィックをフィルタリングすることもできます。
- レイヤ 4 プロトコル(TCP、UDP、ICMP など)。
- IP ヘッダーの IPv4 CIDR 範囲(10.0.0.0/8 など)。
- ミラーリングするトラフィックの方向(上り、下り、または両方)。
サービス アカウントとアクセス制御
サービス アカウントは、Google Cloud がユーザーに代わって API リクエストを実行するために使用できる ID です。サービス アカウントにより、ユーザー ID がサービスに直接アクセスできなくなります。
Terraform コードをデプロイするには、次のロールを持つサービス アカウントの権限を借用する必要があります。
roles/compute.admin
roles/compute.networkAdmin
roles/compute.packetMirroringAdmin
roles/compute.packetMirroringUser
roles/iam.serviceAccountTokenCreator
roles/iam.serviceAccountUser
roles/logging.logWriter
roles/monitoring.metricWriter
roles/storage.admin
コレクタ VM でも、Google Cloud サービスに対する認証、ネットワーク パケットの取得、Cloud Logging への転送を行うためにこのサービス アカウントが必要です。
データの保持方法
Cloud Logging がネットワーク ログを保存する期間は、ログバケットの保持ルールを使用して指定できます。データの保存期間を決めるには、組織の規制要件を確認してください。
ロギングと監査
Cloud Monitoring を使用して、コレクタ VM のパフォーマンスを分析し、稼働時間チェックや CPU 負荷などのパフォーマンス条件に関するアラートを設定できます。
Cloud Audit Logs を使用して、管理者アクセスまたはデータと構成への変更を追跡できます。監査ロギングは Compute Engine、Cloud Load Balancing、Cloud Logging でサポートされています。
モニタリング情報をエクスポートして、次のことを行うことができます。
Google SecOps にエクスポートしてさらなる分析を行う。詳細については、Google SecOps への Google Cloud ログの取り込みをご覧ください。
Pub/Sub と Dataflow を使用してサードパーティ SIEM にエクスポートする。詳細については、Google Cloud セキュリティ データを SIEM システムにエクスポートするをご覧ください。
まとめ
このドキュメントで説明されたアーキテクチャを実装する方法は次のとおりです。
- Google Cloud エンタープライズ基盤のブループリントに説明されているように、Google Cloud に安全なベースラインをデプロイします。エンタープライズ基盤ブループリントをデプロイしない場合は、同様のセキュリティ ベースラインを環境に設定するようにしてください。
- ブループリントの README を確認し、すべての前提条件を満たしていることを確認します。
テスト環境で、ネットワーク テレメトリー構成の例の 1 つをデプロイして、動作中のブループリントを確認します。テストプロセスの一環として、次のことを行います。
- Packet Mirroring ポリシーとサブネットが作成されたことを確認します。
ログ閲覧者(
roles/logging.viewer
)ロールが付与されていることを確認し、curl コマンドを実行してログデータを表示します。次に例を示します。curl http://example.com/
ログデータが Cloud Logging に保存されていることを確認します。
Security Command Center を使用して、コンプライアンス要件を基に新しく作成したリソースをスキャンします。
システムが適切なネットワーク パケットをキャプチャして保存していることを確認し、必要に応じてパフォーマンスを微調整します。
ブループリントを本番環境にデプロイする。
Cloud Logging を SIEM または Google SecOps に接続して、SOC やネットワーク セキュリティ アナリストが新しいテレメトリーを組み込めるようにします。
次のステップ
- ブループリントに取り組む。
- セキュリティ脅威モニタリングで 5 つのテレメトリー タイプを使用するタイミングを確認する。
- Google Cloud でのネットワーク テレメトリーの活用について確認する。
- 自律型のセキュリティ運用を使用した SOC の変換について確認する。