みなさん、こんにちは。サニービュー事業部の小寺です。
最近、re:Inventのアップデートで試す機会があったGuardDutyについて全体像をお伝えします。
もう使っているよ、という方も多くいらっしゃるサービスだと思いますが、AWSはセキュリティにかなり力を入れていて、
さまざまなセキュリティ関連のサービスが提供されています。クラウドを利用される方が簡単に、安心して利用できる環境を整えています。

Amazon GuardDutyとは

Amazon GuardDutyは、AWS環境のセキュリティを継続的にチェックしてくれるサービスで、対応している各種ログを自動的に取得して、機械学習で分析して異常を通知してくれます。使用方法は有効化するだけのマネージドサービスで、誰でも簡単に使い始めることができます。

対象となるのはAWS アカウント、Amazon Elastic Compute Cloud (EC2) ワークロード、コンテナアプリケーション、Amazon Relational Database Service Aurora databases (2022年12月時点プレビュー版)、Amazon Simple Storage Service (S3) に保存されたデータです。悪意のあるアクティビティや不正な行動を継続的にモニタリングする脅威検出のサービスです。
また、ログについては、AWS CloudTrail イベントログ、Amazon 仮想プライベートクラウド (VPC) フローログ、Amazon Elastic Kubernetes Service (EKS) 監査ログ、DNS クエリログなど、複数の AWS データソース全体で何百億件ものイベントを分析することができます。

なぜGuardDutyは必要なの?

Well-ArchitectedフレームワークというAWSを使う上でのベストプラクティスな考え方があり、その中の「セキュリティの柱」に「発見的統制」という言葉があります。 発見的統制は、万が一セキュリティ事故が起こったとしても、通知がくるので、気づいて対応しようという考え方です。
そんな「発見的統制」として事故が起こったときに役立ってくれるのが「Amazon GuardDuty」です。セキュリティの事故が起こったら自動的に気づいて、通知をします。

また、GuardDutyが対象としているのは、AWSのサービスだけではなくAWSのアカウント自体です。つまりAWSの認証情報も対象となります。認証情報は最低限の設定にして利用しようという権限の最小化の原則はもちろんありますが、なかには複数のサービスにフルアクセスできる高い権限設定の認証情報もあるかと思います。
そんな認証情報が流出してしまい、マイニング用の高価なインスタンスを起動されてしまったという話はよく聞きます。しかも、普段は利用しないリージョンで起動されることが多いので、請求アラートの設定をしていたり、細かく請求情報をチェックしていない場合は気づかないケースが多いです。特に最近リリースされたようなハイスペックのインスタンスは利用料も高いものが多いですよね。

そんなリスクを軽減したり、防止する機能がGuardDutyにはあるため、有効化しておくことをぜひ推奨します。

Amazon GuardDutyの特徴について

・AWSアカウントレベルでの脅威が検出

上述した通り、AWSのアカウントの侵害の脅威を正確に検出することができます。通常とは異なる時間帯や地理的位置からのAWSリソースへのアクセスなど、アカウントの侵害のリクエストを検出することができます。
API認証情報を用いた場合、GuardDuty は、CloudTrail のログ記録を無効にしたり、悪意のある IP アドレスからデータベースのスナップショットを取ったりしてアカウントのアクティビティを隠すといった、
異常なアプリケーションプログラムインターフェイス (API) コールをチェックします。

・AWS アカウント全体で継続的に監視と対応ができる

追加のセキュリティソフトウェアやインフラストラクチャをデプロイして利用することなく、Organizationsの機能を使い、複数のAWS アカウントをまとめて管理することができます。
AWS Security Hub、 Amazon EventBridge、AWS Lambda、AWS Step Functions と統合することでアクションを自動化することができます。また、Amazon Detective は GuardDuty と緊密に統合されているため、より深いフォレンジックと根本原因の調査を行うことができます。

・クラウド向けに開発、最適化されたサービス

機械学習に基づく高度な検出機能と脅威インテリジェンスが統合されています。AWSのセキュリティと、セキュリティパートナーからの、悪意のあるドメインや IP アドレスのリストが含まれています。

・脅威の重要度を優先付けできる

リスクレベルを10段階で評価しています。
3 つの重大度 (低、中、高) が用意されており、AWSを利用するにあたって脅威への対応に優先順位付けがされやすくなっています。「低」の重大度は、疑わしいアクティビティや悪意のあるアクティビティのうち、リソースが侵害される前にブロックされたものです。「中」の重大度は、疑わしいアクティビティを示します。たとえば、Tor ネットワークの背後に隠れているリモートホストに返される大量のトラフィックや、通常行われると想定される動作から逸脱したアクティビティなどです。「高」の重大度は、問題になっているリソース (Amazon EC2 インスタンスや IAM ユーザー資格情報など) が侵害され、不正な目的で大量に使用されていることが示されています。

使ってみよう

使い方はとても、簡単でマネジメントコンソールにログインして、有効化するだけです。
もちろん異常検知時の通知設定は別途必要です。

マネージメントコンソール画面からは単一リージョンしか設定できず、各リージョンに切り替えして有効化ボタンを押して回らなければなりません!!
全リージョンを有効にするためには、別途CloudFormationを使って、GuardDutyの有効化、EventBridgeルールのターゲットとなる SNS トピックを作成し、EventBridgeを使って、GuardDuty から検出結果データをキャプチャするルールを作るところを自動化して対応することがおすすめです。
ここではいったん割愛します。

コスト

どのリージョンでも有効化してから、最初の30日は無料で利用ができます。
正確なコストはこちらから確認してください。

運用のポイント

運用するには、全リージョンでの有効化を推奨しますが、プロジェクトや社内のポリシーによるところだとは思います。あと、通知に誰も気づいていなかったということがないよう、運用される方みんなに通知がされるように設定を行いましょう。

あとは、GuardDutyに限らず運用するルールが必要ですよね。通知を受け取って、どのようにエスカレーション、対応するのか?ここはAWSを運用する上で、全体的に考えておかなければいけないポイントですね。

まとめ

あらためてGuardDutyとはどんなサービスかまとめてみました。
・AWS環境やAWSアカウントのセキュリティ状況をモニタリングおよび通知してくれるサービス
・複雑な設定は不要。AWS上で有効化するだけでOK
・機械学習で分析されたログから攻撃と思われる状況を検知してくれる
・安価な課金制で、気兼ねなく利用できる