チェックポイント
Build GCP networking footprint
/ 15
Create Cloud Firewall Rules and CloudNAT
/ 15
Create a CloudRouter and Configure a CloudNAT
/ 20
Create Virtual Machines
/ 20
Create Internal LoadBalancer
/ 20
Configure Packet Mirror Policy
/ 10
Google Cloud Packet Mirroring with OpenSource IDS
- GSP474
- 概要
- Packet Mirroring ラボの説明
- 設定と要件
- タスク 1. ネットワーキングのフットプリントを構築する
- タスク 2. ファイアウォール ルールと Cloud NAT を作成する
- タスク 3. 仮想マシンを作成する
- タスク 4. 内部ロードバランサを作成する
- タスク 5. オープンソースの IDS として Suricata をインストールする
- タスク 6. Suricata を構成して確認する
- タスク 7. Packet Mirroring ポリシーを構成する
- タスク 8. Packet Mirroring をテストする
- タスク 9. Suricata IDS の検査とアラートをテストする
- お疲れさまでした
GSP474
概要
Google Cloud ネットワーキングのトラフィック ミラーリングは、セキュリティとネットワーク分析に使用する主要な機能です。この機能は、ネットワーク タップの機能や従来のネットワーキングでのスパン セッションの機能と似ています。つまり、Packet Mirroring は、選択された「ミラーリング対象のソース」からのネットワーク トラフィック(内向きと外向き)をキャプチャしてコピーし、そのコピーをコレクタに転送します。
Packet Mirroring は各パケットのペイロード全体をキャプチャするため、帯域幅の消費量が増えることにご注意ください。Packet Mirroring はサンプリング期間に基づくものではないので、トラブルシューティングやセキュリティ ソリューション、分析に基づく上位レイヤのアプリケーションに使用するのに適しています。
Packet Mirroring は「Packet Mirroring ポリシー」に基づいて構成されます。このポリシーには、次の属性が含まれます。
- リージョン
- VPC ネットワーク
- ミラーリング対象のソース
- コレクタ(宛先)
- ミラーリング対象のトラフィック(フィルタ)
次の要点も考慮する必要があります。
- ミラーリングできるのは、TCP、UDP、ICMP トラフィックのみですが、多くのユースケースに対応できます。
- 「ミラーリング対象のソース」と「コレクタ」は同じリージョン内にある必要がありますが、ゾーンは異なっていてもかまいません。さらに、VPC が適切にピアリングされている限り、異なる VPC 内に存在するソースとコレクタを使用することもできます。
- 特にゾーン間では、帯域幅の消費量が増えるため、追加の料金がかかります。ミラーリングするトラフィックを制限するには、フィルタを使用できます。
「Packet Mirroring」の主要なユースケースの 1 つは、Intrusion Detection System(IDS)ソリューションです。クラウドベースの IDS ソリューションによっては、特殊なサービスを各ソース VM で実行する必要があったり、ネットワークの送信元と宛先の間に IDS 仮想アプライアンスをインラインで配置する必要があったりします。いずれの場合も影響は多大なものになります。たとえば、サービスをベースとしたソリューションの場合、完全分散型であってもゲスト オペレーティング システムで同じソフトウェアをサポートする必要があります。「インライン」のソリューションの場合は、すべてのトラフィックが IDS アプライアンスを経由しなければならないため、ネットワークにボトルネックが生じる可能性があります。さらに、インライン ソリューションでは、同じ VPC にある VM 内部の「East-West」トラフィックをキャプチャできません。
Google Cloud の Packet Mirroring は、追加のソフトウェアを VM にインストールしなくても使用でき、ミラーリングされた各 VM に完全に分散されます。「コレクタ」としての IDS はトラフィック フローの外部に配置され、内部ネットワーク ロードバランサ(ILB)を使用して「North-South」トラフィックと「East-West」トラフィックの両方を受信します。
Packet Mirroring ラボの説明
Packet Mirroring を IDS で使用する方法を説明するために、このラボでは Suricata というオープンソースの IDS を使用する例を見ていきます。
- 1 つの VPC を作成し、その VPC 内に 2 つのサブネット(ミラーリング対象のソース用サブネットとコレクタ用サブネット)を作成します。
- パブリック IP アドレスを持つ 2 つのウェブサーバーを作成します。
- セキュリティ上の理由によりパブリック IP を割り当てない、1 つのコレクタ サーバー(IDS)を作成します。
- 必要に応じて、インターネット アクセスに対して CloudNAT を有効にします。
- わかりやすくするため、また、費用の理由からも、すべての VM を同じリージョン内の同じゾーンに作成します。
このラボでは、Google Cloud 環境を作成し、「コレクタ」としての ILB とパケット ミラーリング ポリシーを構成します。さらに、[Suricata](https://suricata-ids.org/)を仮想インスタンスにインストールし、IDS として機能するように構成します。構成が完了したら、ネットワーク テストを行って、構成を検証するとともに、オープンソース IDS での Packet Mirroring の使用を検証します。デモを簡素化するために、かなり簡略化したルールセットと Suricata 構成を使用します。
目標:
- 上の図に示す Google Cloud ネットワーキング環境を構築する
-
gcloud
コマンドを使用して、ウェブサーバーとして機能する 2 つの仮想マシンを作成する -
gcloud
コマンドを使用して、IDS として機能する 1 つの仮想マシンを作成する - Packet Mirroring の「コレクタ」として機能する内部ロードバランサ(ILB)を作成する
- IDS VM にオープンソースの IDS(Suricata)をインストールして構成する
- 基本的な IDS アラートルールを確認する
- パケット ミラーリング ポリシーを作成する
- ネットワーク トラフィックを生成して「ミラーリング対象」のサブネットに送信し、Packet Mirroring をテストする
- IDS イベントをシミュレートするネットワーク トラフィックを生成して Suricata IDS をテストし、IDS のロギングを確認する
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. ネットワーキングのフットプリントを構築する
このセクションでは、VPC を作成し、その VPC 内に 2 つのサブネットを作成します。この作業を行うために、Google Cloud Shell 内で gcloud
CLI コマンドを使用します。
- 次のコマンドを実行して、バーチャル プライベート ネットワークを作成します。
-
内のミラーリングされたトラフィックのためにサブネットを VPC に追加します。
-
内のコレクタに使用するサブネットを VPC に追加します。
[進行状況を確認] をクリックして、目標を確認します。
タスク 2. ファイアウォール ルールと Cloud NAT を作成する
このラボを完了するには、全部で 3 つのファイアウォール ルールが必要です。
- ルール 1 ですべての送信元からのすべての VM へのトラフィックに対し、標準の HTTP ポート(TCP 80)と ICMP プロトコルを許可します。
- ルール 2 で IDS に対し、すべての送信元からの、すべてのトラフィックの受信を許可します。以降のセクションで、この IDS VM にパブリック IP を割り当てないよう注意してください。
- ルール 3 ですべての VM に対し、「Google Cloud IAP Proxy」IP 範囲を TCP ポート 22 で許可して、Cloud コンソールから SSH で VM に接続できるようにします。
次のコマンドを実行してファイアウォール ルールを作成します。
[進行状況を確認] をクリックして、目標を確認します。
Cloud Router を作成する
- Cloud NAT の前提条件として、先に Cloud Router を各リージョンで構成しておく必要があります。
Cloud NAT を構成する
- パブリック IP を持たない VM にインターネットでアクセスできるようにするには、該当するリージョンに Cloud NAT を作成する必要があります。
作成される IDS VM にはパブリック IP が割り当てられません。これは、インターネットからアクセスできないようにするためですが、更新をダウンロードするにも、Suricata パッケージをインストールするにも、インターネットでアクセスする必要があります。
[進行状況を確認] をクリックして、目標を確認します。
タスク 3. 仮想マシンを作成する
ウェブサーバーのインスタンス テンプレートを作成する
- このテンプレートは、
内に Ubuntu サーバーを準備して単純なウェブサービスをインストールするためのものです。
ウェブサーバーのマネージド インスタンス グループを作成する
- 次のコマンドで、前のステップで作成したインスタンス テンプレートを使用して 2 つのウェブサーバーを作成します。
IDS VM のインスタンス テンプレートを作成する
- このテンプレートは、
内に、パブリック IP なしで Ubuntu サーバーを準備するためのものです。
IDS VM のマネージド インスタンス グループを作成する
- 次のコマンドで、前のステップで作成したインスタンス テンプレートを使用して、IDS として構成する 1 つの VM を作成します。Suricata は、この後のセクションでインストールします。
[進行状況を確認] をクリックして、目標を確認します。
タスク 4. 内部ロードバランサを作成する
Packet Mirroring では、ミラーリングされたトラフィックをコレクタのグループに転送するために、内部ロードバランサ(ILB)を使用します。この例では、コレクタ グループに含まれる VM は 1 つだけです。
- バックエンド サービスの基本的なヘルスチェックを作成します。
- ILB として使用するバックエンド サービスのグループを作成します。
- 作成した IDS マネージド インスタンス グループを、前のステップで作成したバックエンド サービス グループに追加します。
- 収集エンドポイントとして機能するフロントエンドの転送ルールを作成します。
--is-mirroring-collector,
フラグが設定されている点にも注意してください。[進行状況を確認] をクリックして、目標を確認します。
タスク 5. オープンソースの IDS として Suricata をインストールする
注: 次の 2 つのセクションでは、IDS VM に SSH で接続し、そのシェルでコマンドを実行します。Cloud Shell でコマンドを実行しないよう注意してください。
IDS VM に SSH で接続する
-
Cloud コンソールのナビゲーション メニューから、[Compute Engine] > [VM インスタンス] に移動します。
-
IDS VM の [SSH] ボタンをクリックします。
新しいウィンドウが開きます。このウィンドウを使用して、IDS VM 内部でコマンドを実行できます。
- IDS VM を更新します。
- Suricata の依存関係をインストールします。
- Suricata をインストールします。
インストールを確認する
- 次のコマンドで、インストールを確認し、インストールされている Suricata のバージョンを調べます。
出力は次のようになります。
タスク 6. Suricata を構成して確認する
このセクションのコマンドと手順も、IDS/Suricata VM の SSH 内で行う必要があります。
- Suricata サービスを停止して、デフォルトの構成ファイルをバックアップします。
新しい Suricata 構成ファイルと簡略版のルールファイルをダウンロードして置き換える
新しい構成ファイルによりコレクタ インターフェースが更新されるだけでなく、my.rules
ファイルと suricata.yaml
ファイルで構成された、ごく一部のトラフィックに対するアラートがオンになります。デフォルトの Suricata ルールセットとアラートはかなり広範で、このラボには不要なものもあります。
- 次のコマンドを実行してファイルをコピーしてください。
Suricata サービスを起動する
サービスの再起動が必要になることがあります。その可能性を考慮して、この手順には restart
コマンドを記載しています。
テスト対象の単純な Suricata ルールを確認する
このラボ用に、Suricata のルールセットは 4 つにまでトリミングされていますが、デフォルトの Suricata インストールには膨大で広範なルールセットが含まれています。
- 1 つひとつのルールを簡単にテストできるよう、このラボの演習で使用するアラートルールは、このように簡潔で短いリストに要約しています。
出力には全部で 4 つのルールとそれぞれの説明が示されます。
/etc/suricata/rules/
または /var/lib/suricata/rules
に配置されています。このラボではステップ 2 で、ファイルの場所を再構成して変更しています。タスク 7. Packet Mirroring ポリシーを構成する
このセクションでは、再度 Cloud Shell を使用する
パケット ミラーリング ポリシーの設定は、1 つの単純なコマンドで(または GUI の「ウィザード」に従って)完了できます。このコマンドでは、Packet Mirroring の「概要」セクションに一覧されている 5 つの属性すべてを指定します。
- リージョン
- VPC ネットワーク
- ミラーリング対象のソース
- コレクタ(宛先)
- ミラーリング対象のトラフィック(フィルタ)
以下のコマンドに「ミラーリングするトラフィック」が含まれていないのは、「すべて」のトラフィックをミラーリングするようにポリシーを構成することから、フィルタは必要ないためです。このポリシーでは、上り(内向き)トラフィックと下り(外向き)トラフィックの両方をミラーリングして、コレクタ ILB の一部となっている Suricata IDS デバイスに転送します。
- Cloud Shell で以下のコマンドを実行して、Packet Mirroring ポリシーを構成します。
この時点で、Packet Mirroring と Suricata の構成が完了します。以降のセクションで、両方の構成をテストします。
[進行状況を確認] をクリックして、目標を確認します。
タスク 8. Packet Mirroring をテストする
このセクションでは、IDS VM シェルにアクセスする必要があります。シェル ウィンドウがまだ開いている場合は、それを使用してください。シェル ウィンドウを閉じた場合は、再接続します。
また、「インターネット クライアント」として機能する Cloud Shell を使用する必要もあります。
少し時間をかけて、両方の WEB VM の外部 IP を確認します。
Cloud コンソールのナビゲーション メニューから、Compute Engine > VM インスタンスの順にクリックし、両方の WEB VM の外部 IPs を書き留めます。それぞれ [PUBLIC_IP_WEB1]、[PUBLIC_IP_WEB2] と表記されています。
Cloud Shell で次の gcloud
コマンドを使用しても、同じ情報を取得できます。
IDS VM シェルに戻る
Packet Mirroring をテストする
- IDS/Suricata VM で、次のフィルタを使用してパケット キャプチャ(tcpdump)を実行します。
「ミラーリング対象」のサブネットへのトラフィックを生成する
- Cloud Shell ターミナルを使用して、WEB1 に割り当てられたパブリック アドレスに対して ping を実行します。[PUBLIC_IP_WEB1] の部分は、「WEB1」のパブリック IP アドレスで置き換えてください。パブリック IP アドレスは Cloud コンソールで確認できます。
Packet Mirroring により、トラフィックが複製されて IDS VM に転送されます。トラフィックが転送されたことは、ステップ 1 のパケット キャプチャで確認できます。IDS VM での出力は次のようになります。X.X.X.X は、ICMP リクエストの送信元 IP アドレスです。tcpdump の出力に、ウェブサーバーのプライベート IP が示されていることを確認してください。Google Cloud はネットワーク変換をエッジで行います。
WEB2 のパブリック アドレスに対して ping を実行する場合も同様です。
- WEB2 に割り当てられたパブリック IP アドレスに対して ping を実行するには、[PUBLIC_IP_WEB2] の部分を「WEB2」のパブリック IP アドレスで置き換えます。
Packet Mirroring により、トラフィックが IDS VM に転送されます。トラフィックが転送されたことは、ステップ 1 のパケット キャプチャで確認できます。IDS VM での出力は次のようになります。tcpdump の出力に、ウェブサーバーのプライベート IP が示されていることを確認してください。Google Cloud はネットワーク変換をエッジで行います。
Packet Mirroring で確認できるのはレイヤ 3 のヘッダーだけではないことを実証するために、次のテストでは一方のウェブサーバーに対して標準の HTTP GET リクエストを行い、初期の TCP 3-way handshake を含む出力を生成します。
-
ブラウザで新しいタブを開き、HTTP プロトコルで WEB1 に割り当てられたパブリック アドレスにアクセスします。Cloud Console で「curl」ユーティリティを使用することもできます。
-
[PUBLIC_IP_WEB1] の部分は、「WEB1」のパブリック IP アドレスで置き換えます。
Packet Mirroring により、トラフィックが IDS VM に転送されます。トラフィックが転送されたことは、ステップ 1 のパケット キャプチャで確認できます。
IDS VM での出力は次のようになります。
- WEB2 のパブリック アドレスにアクセスする場合も同様です。[PUBLIC_IP_WEB2] の部分は、「WEB2」のパブリック IP アドレスで置き換えます。
Packet Mirroring により、トラフィックが IDS VM に転送されます。トラフィックが転送されたことは、ステップ 1 のパケット キャプチャで確認できます。
IDS VM での出力は次のようになります。
IDS VM 内部で Ctrl+c
キーを押して tcpdump を終了します。
タスク 9. Suricata IDS の検査とアラートをテストする
このラボの最後のセクションでは、Packet Mirroring とオープンソース IDS の Suricata との統合をテストします。「Suricata を構成して確認する」セクションのステップ 4 でアラート対象として設定した、4 つの Suricata ルールを確認してください。
次の 4 つの手順に沿って、上記のルールのそれぞれをトリガーするネットワーク トラフィックを生成します。ルールごとのアラートは、Suricata イベントログ ファイルで確認できます。
テスト 1 とテスト 2 はウェブサーバーで開始して、外向きトラフィックをテストします。
テスト 3 とテスト 4 は Cloud Shell で開始して、内向きトラフィックをテストします。
テスト 1: 外向き UDP ルール / アラートをテストする
- いずれかのウェブサーバーで次のコマンドを実行して、外向き DNS トラフィックを生成します。
- IDS VM 上の Suricata イベントログ ファイルで、アラートを確認します。
IDS VM の SSH ウィンドウに切り替えます。
- IDS VM の SSH ウィンドウで次のコマンドを実行します。
次のようなログエントリが記録されていることを確認します。
テスト 2: 外向き「TCP」ルール / アラートをテストする
- いずれかのウェブサーバーから次のコマンドを実行して、外向き TCP トラフィックを生成します。[PUBLIC_IP_WEB2] は、「WEB2」のパブリック IP アドレスに置き換えてください。
-
Ctrl+C
キーを押して終了します。 -
IDS VM 上の Suricata イベントログ ファイルで、アラートを確認します。
IDS VM の SSH ウィンドウに切り替えます。
- IDS VM の SSH ウィンドウで次のコマンドを実行します。
次のようなログエントリが記録されていることを確認します。
テスト 3: 内向き「ICMP」ルール / アラートをテストする
-
Cloud Shell で次のコマンドを実行して内向き ICMP トラフィックを生成します。
-
[PUBLIC_IP_WEB1] の部分は、「WEB1」のパブリック IP アドレスで置き換えます。
- IDS VM 上の Suricata イベントログ ファイルで、アラートを確認します。
次のようなログエントリが記録されていることを確認します。
テスト 4: 内向き「HTTP」ルール / アラートをテストする
ローカル ワークステーションのウェブブラウザを使用するか、Cloud Shelll で curl
を使用して、HTTP プロトコルで WEB1 のページ「index.php」に割り当てられたパブリック アドレスにアクセスします。
- [PUBLIC_IP_WEB1] の部分は、「WEB1」のパブリック IP アドレスで置き換えます。
- IDS VM 上の Suricata イベントログ ファイルで、アラートを確認します。
次のようなログエントリが記録されていることを確認します。
お疲れさまでした
これで、ラボ「オープンソース IDS の Suricata での Google Cloud Packet Mirroring の使用」は完了です。
次のステップと詳細情報
Packet Mirroring について詳しくは、以下をご覧ください。
Suricata について詳しくは、https://suricata-ids.org/ でご確認ください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 11 月 18 日
ラボの最終テスト日: 2023 年 9 月 6 日
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。