皆様こんにちは!
ネットワールドでAWSやMicrosoftのクラウド製品を担当しているSEの碇です。
本日は、以前ご説明したGuardDutyというサービスについて、EC2マルウェアスキャンと通知方法、無効化方法をご説明します。
前回のブログはこちら:
- GuardDutyでのEC2マルウェアスキャン
- CloudWatchでのログの確認方法
- ちなみに・・・・(スキャンがSkippedになってしまった)
- GuardDutyでイベントを検知した際にメール通知する
- GuardDutyの停止または無効化
- まとめ
GuardDutyでのEC2マルウェアスキャン
GuardDutyでは簡単にEC2のマルウェアスキャンが行えます。
ここではEC2のマルウェアスキャン方法をご説明します。
GuardDuty>EC2マルウェアスキャン>新しいオンデマンドスキャンを開始をクリックします。

オンデマンドのマルウェアスキャンを開始画面で、EC2インスタンスのARNを記入します。
EC2インスタンスのARNの確認方法はこの後説明します。

EC2インスタンスのARNは、EC2サービスの画面で確認することができます。
EC2>インスタンス>対象のインスタンスをクリック>インスタンスARNをクリックすると、コピーすることができます。

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

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

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

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

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

再度スキャンを実行したい場合は・・・
一度CompletedとなったEC2を再度スキャンしたい場合は、スキャンしたいEC2を選択し、
新しいオンデマンドスキャンを開始>選択したEC2インスタンスを再スキャン
をクリックすることで再度スキャンすることができます。

CloudWatchでのログの確認方法
CloudWatchでのログの確認方法についても下記の通りご説明します。
CloudWatch>ロググループをクリックし、検索バーに/aws/guardduty/malware-scan-eventsを入力して検索します。

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

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

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

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

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


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)>トピック>トピックを作成をクリックします。

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

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

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

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

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

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

ここで、click here to unsubscribeをクリックすると、作成したサブスクリプションが削除されてしまうのでご注意ください。
SNSトピック>サブスクリプションを確認すると、先ほど登録したメールアドレスが表示され、ステータスが確認済みとなりました。

これでSNSの準備は完了です。
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を無効にする>無効をクリックします。

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

無効化されました。

再度有効化する場合は、前回のブログでご紹介した通り有効化してください。
無効化前に作成して設定していたS3バケットやKMSキーのバケットポリシー、キーポリシーについても、GuardDutyを再有効化した後に編集する必要があります。
まとめ
Part1、Part2とGuardDutyの概要から設定方法についてご説明してきました。
この記事が参考になれば幸いです。