株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

【AWS】GuardDutyとは Part2~EC2マルウェアスキャン、通知、停止方法について~

皆様こんにちは!

ネットワールドでAWSやMicrosoftのクラウド製品を担当しているSEの碇です。

 

本日は、以前ご説明したGuardDutyというサービスについて、EC2マルウェアスキャンと通知方法、無効化方法をご説明します。

前回のブログはこちら:

blogs.networld.co.jp

 

 

GuardDutyでのEC2マルウェアスキャン

GuardDutyでは簡単にEC2のマルウェアスキャンが行えます。
ここではEC2のマルウェアスキャン方法をご説明します。

GuardDuty>EC2マルウェアスキャン>新しいオンデマンドスキャンを開始をクリックします。

新しいオンデマンドスキャンの開始

 

オンデマンドのマルウェアスキャンを開始画面で、EC2インスタンスのARNを記入します。

EC2インスタンスのARNの確認方法はこの後説明します。

オンデマンドのマルウェアスキャンを開始画面

 

EC2インスタンスのARNは、EC2サービスの画面で確認することができます。

EC2>インスタンス>対象のインスタンスをクリック>インスタンスARNをクリックすると、コピーすることができます。

インスタンスARN

 

先ほどのGuardDutyのオンデマンドのマルウェアスキャンを開始画面に戻り、コピーしたEC2インスタンスARNペーストし、確認をクリックします。

EC2インスタンスのARNをペーストして、確認をクリック

 

スキャンステータスがRunningとなっていることが確認できます。

スキャンステータス:Running

 

なお、スキャンが開始されたログはCloudWatchで確認することができます。
確認方法は、後述の「CloudWatchでのログの確認方法」で説明します。

 

ログを確認しても、”EC2_SCAN_STARTED”が確認できました。

スキャン開始ログ(CloudWatch)

 

今回は、マルウェアスキャン用に立てた何も触っていないEC2をスキャンしたため、10分ほどでスキャンが完了しました。

スキャンステータス:Completed

 

ログを確認しても、”EC2_SCAN_COMPLETED”が確認できました。

スキャン完了ログ(CloudWatch)

 

再度スキャンを実行したい場合は・・・

一度CompletedとなったEC2を再度スキャンしたい場合は、スキャンしたいEC2を選択し、

新しいオンデマンドスキャンを開始>選択したEC2インスタンスを再スキャン

をクリックすることで再度スキャンすることができます。

選択したEC2インスタンスを再スキャン

 

CloudWatchでのログの確認方法

CloudWatchでのログの確認方法についても下記の通りご説明します。

CloudWatch>ロググループをクリックし、検索バーに/aws/guardduty/malware-scan-eventsを入力して検索します。

ロググループの検索

 

/aws/guardduty/malware-scan-eventsをクリックします。

/aws/guardduty/malware-scan-eventsをクリック

 

ログストリームをクリックします。

ログストリームをクリック

 

下記の通り、ログが出力されています。

ログ一覧

 

例えば、一番最新のログを開きたい場合は一番下のログをクリックし、表示させることができます。

最新のログ

上記のログについては、特に設定をしなくとも発行されます。

 

ちなみに・・・・(スキャンがSkippedになってしまった)

前日のブログ作成が終了したので、一旦GuardDutyを停止にして、次の日に再度有効にして上記のEC2マルウェアスキャンをかけたところ、Skippedになってしまいました。
CloudWatchに出力されているログを確認してみたところ、まだGuardDutyが有効になっていないというログでした。

CloudWatchログ

 

ログの詳細

CloudWatch Logs を監査する方法と、Malware Protection for EC2 スキャン中にリソースがスキップされる理由について - Amazon GuardDuty

 

“GuardDuty を有効にする AWS リージョン と、同期に最大 20 分かかる場合があります。”
AWSドキュメントにも記載がある通り、GuardDutyの有効化には最大20分かかる場合があり、これが原因でSkippedになったようでした。
Guarddutyの有効化には最大20分かかる場合がありますのでご注意ください。

 

GuardDutyでイベントを検知した際にメール通知する

GuardDutyで重大なイベントが検知された際などに、メールに通知することができます。
ここでは、SNSとEventBridgeを利用してGuardDutyの結果を通知する方法をご説明します。

 

AWSドキュメント:

Amazon EventBridge を使用した GuardDuty の検出結果の処理 - Amazon GuardDuty

 

SNSトピックの作成

まずは、SNSトピックを作成します。

SNS(Simple Nortification Service)>トピック>トピックを作成をクリックします。

SNSトピックの作成

 

トピックの作成画面が表示されます。
タイプはスタンダードを選択し、名前を入力します。

トピックの作成

 

その他はデフォルトでトピックを作成をクリックします。

トピックの作成をクリック

 

トピックが正常に作成されました。と表示されました。

続いて、通知を受け取るメールアドレスを登録します。
作成したトピック>サブスクリプション>サブスクリプションの作成をクリックします。

サブスクリプションの作成

 

サブスクリプションの作成画面が表示されます。
プロトコルにEメールを選択し、エンドポイントにメールアドレスを入力し、
サブスクリプションの作成をクリックします。

サブスクリプションの作成をクリック

 

サブスクリプションが正しく登録されると、登録したメールアドレス宛に下記のメールが届きます。
Confirm subscriptionをクリックします。

Confirm subscriptionをクリック

 

自動的にブラウザに遷移し、下記の画面が出力されます。

Subscription Confirmed!

ここで、click here to unsubscribeをクリックすると、作成したサブスクリプションが削除されてしまうのでご注意ください。

 

SNSトピック>サブスクリプションを確認すると、先ほど登録したメールアドレスが表示され、ステータスが確認済みとなりました。

サブスクリプションのステータス:確認済み


これでSNSの準備は完了です。

 

EventBridgeの設定

続いてEventBridgeの設定を行います。

EventBridge>ルール>ルールを作成をクリックします。

EventBridgeルールの作成

 

ルールの詳細を定義画面で、名前を入力します。
選択したイベントパスでルールを有効にするを有効にし、ルールタイプはイベントパターンを持つルールを選択して、次へをクリックします。

ルールの詳細を定義

 

イベントパターンを構築画面に遷移します。

イベントパターンを構築

 

イベントパターンでは、すべてのGuardDutyのイベントを通知させる場合は以下の通り設定します。
作成のメソッド:パターンフォームを使用する
イベントソース:AWSのサービス
AWSのサービス:GuardDuty
イベントタイプ:GuardDuty Finding

パターンフォームを使用する

 

中、高、重要な検出結果のアラートのみを通知させる場合は以下の通り設定します。
作成のメソッド:カスタムパターン
イベントパターン:

Amazon EventBridge を使用した GuardDuty の検出結果の処理 - Amazon GuardDuty

>オプション2-JSONでのカスタムイベントパターンの使用
を確認し、記載してください。

 

カスタムパターン

 

入力ができたら、次へをクリックします。

ターゲットを選択画面でターゲットタイプをAWSのサービスを選択します。
ターゲットを選択にSNSトピック、トピックには先ほど作成したSNSトピックを選択し、次へをクリックします。

ターゲットを選択

 

タグを設定では、必要に応じてタグを設定し、次へをクリックします。

タグを設定

 

レビューと作成画面で、設定内容に問題がないことを確認して、ルールを作成をクリックします。

 

検出結果サンプルの生成

前回のブログを参考に、検出結果サンプルを生成します。 

https://blogs.networld.co.jp/entry/2025/08/25/110249#検出結果サンプルの作成

 

メールの見方

検出結果サンプルを生成すると、メールが通知されました。
今回は中、高、重要な検出結果のアラートのみを通知させるように設定しましたが、サンプルの場合は300件以上のメールが通知されました。
※大変多いのでEventBridgeの設定で重大のみに設定するなど工夫が必要です。

下記のようにJSON形式でメールが通知されます。

メール通知

 

また、メール通知の内容については、下記のAWSドキュメントで詳細を確認することができます。

GuardDuty 検出結果タイプ - Amazon GuardDuty

上記のメールは、"Behavior:EC2/NetworkPortUnusual"と記載があり、EC2インスタンスが通常と異なるサーバーポートでリモートホストと通信している際のサンプルになります。


なお、メール下部に記載がある

If you wish to stop receiving notifications from this topic, please click or visit the link below to unsubscribe:

を押すとサブスクリプションが削除されてしまうため、クリックしないよう注意してください。

 

GuardDutyの停止または無効化

Guarddutyは停止または無効化することができます。
ここでは、停止と無効化の違いと、それぞれの設定方法をご説明します。

停止、無効化どちらも簡単に設定することができます。
停止の場合は、AWS 環境のセキュリティをモニタリングしたり、新しい検出結果を生成したりできなくなりますが、再度有効化することができます。停止している場合は課金は発生しません。


一方無効にした場合、既存の検出結果と GuardDuty の設定は失われ、復旧できなくなります。既存の検出結果を保存したい場合は、それをエクスポートしてから GuardDuty を無効にする必要があります。

再度有効化する場合はS3バケットやKMSキーも再設定が必要になります。

詳細はAWSドキュメントをご確認ください。

GuardDuty の停止または無効化 - Amazon GuardDuty

 

停止、無効化それぞれ操作してみました。


GuardDutyの停止

GuardDuty>設定>GuardDutyを一時停止>停止をクリックします。

GuardDutyの停止

 

再度有効化したい場合は、下記の通り有効化します。
GuardDuty>設定>GuardDutyを再度有効にするをクリックします。

GuardDutyを再度有効にする

 

GuardDutyの無効化

先ほどもご説明しましたが、無効にした場合、既存の検出結果と GuardDuty の設定は失われ、復旧できなくなるため、注意が必要です。

 

GuardDuty>設定>GuardDutyを無効にする>無効をクリックします。

GuardDutyを無効にする

 

無効にするをクリックします。

GuardDutyを無効にする

無効化されました。

Amazon GuardDuty

 

再度有効化する場合は、前回のブログでご紹介した通り有効化してください。

無効化前に作成して設定していたS3バケットやKMSキーのバケットポリシー、キーポリシーについても、GuardDutyを再有効化した後に編集する必要があります。

 

まとめ

Part1、Part2とGuardDutyの概要から設定方法についてご説明してきました。

この記事が参考になれば幸いです。