Amazon GuardDutyを使って本気でAWSアカウントを守る

# はじめに
この記事はDevOps on AWS大全の一部です。
DevOps on AWS大全の一覧は[こちら](https://qiita.com/tech4anyone/items/b06f88035d27c6ef13b2)。

この記事ではAmazon GuardDutyに関連する内容を超詳細にまとめています。

具体的には以下流れで説明します。

- Amazon GuardDutyとは
- Amazon GuardDutyの仕組み
- Amazon GuardDutyの活用
- Amazon GuardDutyのベストプラクティス

AWSの区分でいう「Level 200：トピックの入門知識を持っていることを前提に、ベストプラクティス、サービス機能を解説するレベル」の内容です。

# この記事を読んでほしい人
- Amazon GuardDutyがどういうサービスか説明できるようになりたい人
- Amazon GuardDutyを採用するときのベストプラクティスを説明できるようになりたい人
- AWS Certified DevOps Engineer Professionalを目指している人


# Amazon GuardDutyとは
Amazon GuardDutyとは、AWSのセキュリティサービスの一つで、AWSアカウントやAWSリソースに対する潜在的な脅威や不正なアクティビティを検出するためのサービスです。

![](https://storage.googleapis.com/zenn-user-upload/81d010f16dad-20231221.png)

Amazon GuardDutyは、AWSのネットワークやVPCフローログ、CloudTrailイベントなどのデータソースを分析し、機械学習や脅威インテリジェンスを活用して、異常なパターンや既知の攻撃シグネチャを検出します。

加えて、検出した脅威や不正なアクティビティに対して、詳細な情報や推奨される対応策を提供します。

また、AWS LambdaやAmazon SNSなどの他のAWSサービスと連携して、自動化された対応アクションを実行することもできます。

# Amazon GuardDutyの仕組み
Amazon GuardDutyの仕組みは、以下のようになっています。

まず、Amazon GuardDutyは、AWSアカウントで有効化することで、AWSのデータソースからメタデータを収集します。

次に、収集したメタデータを分析し、機械学習や脅威インテリジェンスを用いて、脅威や不正なアクティビティを特定します。

最後に、特定した脅威や不正なアクティビティについて、詳細な情報や推奨される対応策を含む警告（ファインディング）を生成し、コンソールやAPIで確認できるようにします。

なお、Amazon GuardDutyには信頼されたIPリストと驚異のあるIPリストを登録することが可能です。
前者に登録されたIPアドレスのアクティビティについてはファインディング生成の対象外となり、後者に登録されたIPアドレスはファインディングの生成対象となります。

IPリストは登録なしでもファインディング生成されます。
しかし、逆に言うと安全なシステムからのアクセスでもファインディング生成されることがあります。
そのため、信頼されたIPリストを登録する実プロジェクトは多くあります。

ただし、ゼロトラストの考え方が主流になっている現在、登録したほうが良いかは検知後の運用も含めて各プロジェクトで熟慮が必要です。

# Amazon GuardDutyの活用方法
## マルチアカウントのセキュリティ管理
Amazon GuardDutyはAWS Organizationと組み合わせてマルチアカウントのセキュリティを管理することが可能です。

![](https://storage.googleapis.com/zenn-user-upload/779cd25e763e-20231221.png)

管理アカウントでAmazon GuardDutyを有効化し、メンバーアカウントを関連づけすることでAWS Organization内のアカウントのAmazon GuardDutyをすべて管理できるようになります。

これにより、全アカウントのセキュリティ対策が一貫性のあるものになり、全体としてのセキュリティレベル向上につながります。

## 驚異の検知と通知
Amazon GuardDutyはコンソールやAPIを使って、ファインディングを確認し、対応策を実施することが可能です。

![](https://storage.googleapis.com/zenn-user-upload/bf2ccea9065e-20231221.png)

ファインディングには、脅威や不正なアクティビティの種類や重要度、影響を受けたリソースやアクター、発生した時刻や場所などの情報が含まれており、Amazon SNSを使ってファインディングを通知ができます。

また、ファインディングには、対応策として参考にできるドキュメントへのリンクも提供されています。

例えば、「SSH Brute Force」のファインディングでは、「SSHポートへの不正なアクセス試行が検出されました」という情報と、「SSHポートへのアクセス制限を設定する」という対応策が示されます。

## 脅威の検知と自動対応
Amazon GuardDutyは他のAWSサービスと連携して、ファインディングに基づいて自動化された対応アクションを実行することが可能です。

![](https://storage.googleapis.com/zenn-user-upload/eb9d9e815de5-20231221.png)

例えば、AWS Lambdaを使ってファインディングに応じてリソースを隔離したりすることができます。

例えば、「Bitcoin Network Activity」のファインディングでは、「EC2インスタンスがビットコインネットワークに参加していることが検出されました」という情報と、「EC2インスタンスを停止する」という対応策が実行されます。


# Amazon GuardDutyのベストプラクティス
Amazon GuardDutyのベストプラクティスは以下の表にまとめられます。

| ベストプラクティス | 説明 |
| --- | --- |
| Amazon GuardDutyを全てのAWSアカウントで有効化する | Amazon GuardDutyはマルチアカウント環境でも利用できます。全てのAWSアカウントでAmazon GuardDutyを有効化することで、統一されたセキュリティ監視と管理が可能になります。 |
| Amazon GuardDutyのファインディングを定期的に確認する | Amazon GuardDutyのファインディングは、コンソールやAPIで確認できます。ファインディングを定期的に確認することで、脅威や不正なアクティビティの状況を把握し、必要な対応策を実施できます。 |
| Amazon GuardDutyと他のAWSサービスと連携する | Amazon GuardDutyと他のAWSサービスと連携することで、ファインディングに基づいて自動化された対応アクションを実行できます。例えば、Amazon SNSを使ってファインディングを通知したり、AWS Lambdaを使ってファインディングに応じてリソースを隔離したりすることができます。 |
| Amazon GuardDutyのカスタムルールを作成する | Amazon GuardDutyは、既定のルールセットに加えて、カスタムルールを作成することもできます。カスタムルールを作成することで、独自のビジネスやセキュリティ要件に合わせたファインディングを生成できます。 |


# まとめ
この記事ではAmazon GuardDutyに関連する内容を超詳細にまとめました。

- Amazon GuardDutyとは
- Amazon GuardDutyの仕組み
- Amazon GuardDutyの活用
- Amazon GuardDutyのベストプラクティス

次回はAmazon Detectiveについて超詳細解説します。