はじめに
昨年リリースされたMalware Protectionを利用する機会があったので、挙動をまとめておきます。
Malware Protectionとは
GuardDuty Malware Protection は Amazon GuardDuty の拡張機能です。GuardDuty は、マルウェアによって既に侵害されたリソース、または危険にさらされているリソースを特定します。Malware Protection は GuardDuty のサポート機能として、この侵害の原因として疑われるマルウェアを検出します。
公式では上記の通り説明があります。完結にいうとGuardDutyでマルウェアを検知(削除とかは実施できない)可能という内容です。名前の通りの機能ですね。
仕組み
簡単にまとめると上記の絵の通りです。
まず、スキャンの前提として、GuardDutyの検知が条件となります。
GuardDuty側でマルウェアの挙動を示すような疑わしきイベントが発生すると、対象のEBS、ECS(Fargateは未サポート)で利用しているEBSに対してスナップショットの作成を実施します。作成されたスナップショットから、レプリカボリュームをサービスアカウントに作成し、対象ボリュームのスキャンを開始します。この際、対象のEBSはKMSで暗号化されていても問題ありませんが、IAMロールとキーポリシーの設定が必要です。なお、スキャンは24時間に1回となるため、24時間以内に複数のイベントを検知しても、1度しかスキャンされません。スキャンの結果マルウェアが検知されなかった場合、スナップショット、レプリカボリュームは削除されます。検知した場合、設定でスナップショットを残しておくことも可能です。24時間に1回の実施、スキャンの前提には要注意ですね。
有効化する上での留意事項はあるか
上記で説明したとおり、スキャンはレプリカボリュームに対して行われるため、性能面での影響はほぼないと考えて良いでしょう。有効化における障害は特にないですが、検知後のアクションは考えておいたほうがよいですね。
本機能はあくまで、検知のみですので、マルウェアの挙動を止めることはできません。
検知後のアクションとして考えられる対応
上記で説明したとおり、検知までがGuardDutyで実施される対応です。その後の対応は、自身で実施する必要があります。検知内容をメールやSlack等で通知するのはもちろんですが、検知した場合のフローを事前に決めておくことが必要です。可能であれば自動化することが望ましいでしょう。以下は対応の例となります。
EventBridgeからLambdaを呼び出し、対象のEC2の隔離と分析のためのスナップショット作成までを自動化する構成です。もちろん、検知した場合の対応は運用の中で定めておく前提となります。
AWS上でのインシデントレスポンスの方法論については、以下のURLも参考にしてみてください。
EC2へのウイルス対策製品が不要となるのか?
結論不要とはならないと考えます。GuardDutyはあくまでマルウェアの検知までで、マルウェアの動作を停止したり、削除する機能は持ち合わせていません。また、スキャンについても、GuardDutyで疑わしいイベントが発生した場合に限られるため、定期的なスキャンや、GuardDutyで検知されない状態でのリアルタイムのスキャンはおこなわれません。そのため、EC2の中でのマルウェア対策は別途必要となります。あくまで多層的な防御として有効化することが望ましいです。以下にGuardDutyとTrendMicroの製品の比較が詳細に記載されていたので、参考に貼っておきます。
まとめ
GuardDutyでのマルウェア検知は非常に有効な機能だと思います。
設定の有効化はすぐにでもできるレベルですし、多機能にも影響を及ぼすものではないので、基本的に使わない理由がありません。
ただし、有効化するのはよいですが、検知した場合にどのような対応をとるのか、対応の自動化は可能なのかを必ず事前に検討するようにしましょう。