はじめに
GuardDutyについて調べる機会があったので、GuardDutyの情報をまとめてみました。
調べを進めていく中で、GuardDutyはAWSを利用しているユーザーは是非とも利用すべきサービスと感じたので、出来る限り分かり易くお伝えしたいと思います。
目次
AWS GuardDuty とは
AWS アカウントとワークロードを継続的にモニタリングして悪意のあるアクティビティがないかを確認し、セキュリティの観点から、脅威を検知するAWSマネージド・サービスです。
特徴
利用は「GuardDuty を有効にする」だけで、直ちに有効にしたリージョンでセキュリティ脅威のモニタリングが開始されます。
AWS CloudTrail、VPC フローログ、および DNS ログにある AWS アカウントおよびワークロードのイベントデータを、機械学習、異常検出、脅威インテリジェンスを使用して継続的に監視および分析します。
脅威は3つの重大度で表され、効率的な優先順位付けが行えます。
- 低 リソースが侵害される前にブロックされたもの
- 中 疑わしいアクティビティ
- 高 問題になっているリソースが侵害され、不正な目的で活発に使用されている
Amazon CloudWatchイベントと SNSを組み合わせての通知や、AWS Lambdaを組み合わせて自動対応アクションも利用可能です。
GuardDuty の機能
継続的な脅威検出と優先順位付け
AWS環境の異常な行動や既知の悪意あるソースからの脅威を継続的に監視、検出し、優先順位を付けます。
機械学習を使用した異常検出
機械学習アルゴリズムを使用して、通常の行動からの逸脱を特定し、可能な脅威を検出します。
統合された脅威インテリジェンスフィード
既知の悪意あるIPアドレスやドメインなど、複数の脅威インテリジェンスフィードを統合しています。
リソースの保護
AWSアカウント、S3バケット、EC2インスタンスなど、AWSリソース全体を保護します。
グローバルな脅威検出
AWSの全リージョンで動作し、グローバルな脅威検出を提供します。
保護プラン
オプションで6つの GuardDuty 保護プラン機能が用意されています。
GuardDuty を有効にすると、ランタイムモニタリングを除く、5つの保護プランが自動的に有効になります。(ランタイムモニタリングは手動で有効にする必要があります)
保護プランは、いつでもオン/オフの切り替えが可能です。
S3 Protection
- S3のバケットとオブジェクトに対する潜在的な脅威や不正アクセスを検出するための保護機能です。この機能を利用することで、S3バケットに対する不審なアクティビティや異常なアクセスパターンを監視し、セキュリティを強化することができます。
EKS Protection
- Amazon Elastic Kubernetes Service (EKS) クラスターのセキュリティを強化するための機能です。
- EKS Protectionは、EKS クラスターの疑わしいアクティビティの可能性を検出し、EKSクラスターに特化した保護を提供します。
ランタイムモニタリング
- オペレーティングシステムレベルのイベントを監視して分析し、環境内の特定の AWS ワークロードにおける潜在的な脅威を検出する機能です。
- ファイルアクセス、プロセス実行、ネットワーク接続などのランタイム動作を可視化する GuardDuty セキュリティエージェントを使用します。
- コンテナとワークロードのランタイムイベントを分析することで、初期段階でコンテナの侵害 、AWS認証情報の侵害を特定し、権限のエスカレート、疑わしい API リクエストの作成、環境内のデータへの悪意のあるアクセスの試みを検出できます。
Malware Protection
- EC2インスタンスおよびコンテナワークロードにアタッチされた EBSボリュームをスキャンし、マルウェアの潜在的な存在を検出するための保護機能です。
RDS Protection
- RDSインスタンスに対する異常なログインアクティビティを検出するための保護機能です。
- Amazon Aurora データベース (Amazon Aurora MySQL 互換エディションおよび Aurora PostgreSQL 互換エディション)がサポートされています。
Lambda 保護
- Lambda 関数を呼び出すことによって生成されたネットワークアクティビティログをモニタリングします。
ベストプラクティス
ベストプラクティスをまとめてみました。
有効化されているすべてのリージョンでGuardDutyを有効化する
- GuardDutyはリージョンごとに動作するため、全てのリージョンで有効化します。
他のAWSサービスと連携する
- GuardDutyの役割は脅威の検出です。
- 検出結果は、コンソール・APIで確認が必要となります。
- 検出結果をCloudWatch Eventsを使用し、通知や自動化された対応アクションの実装を行います。
長期的な分析のために検知結果を保存する
- 検出結果の保存期間は 90 日間です。90 日経過した後、検出結果は破棄されてしまうので、Amazon S3バケットにエクスポートして長期保存します。
- 過去の脅威の傾向を分析したり、コンプライアンスの要件を満たすための証拠として利用します。
定期的なレビューとアップデート
- 検知結果は定期的にレビューします。
- 脅威や不正なアクティビティの状況を把握し、必要な対応策を実施、最新の脅威に対する防御を維持します。
全てのAWSアカウントで有効化する
- 統一されたセキュリティ監視と管理を行います。
AWS Organizationsと統合する
- AWS Organizationsを使用して複数のAWSアカウントで一元的に管理します。
AWS OrganizationsによるGuardDutyアカウントの管理
検知の頻度は15分ごとにする
- デフォルトは 6時間、早期に対応を行えるように15分に変更することを推奨。
(検知の頻度は、6時間、1時間、15分が選択出来る)
導入手順
GuardDuty の導入は、「GuardDuty を有効にする」だけです。
有効後、直ちに現在のリージョンでセキュリティ脅威のモニタリングが開始されます。
下記保護プランは、デフォルトで有効になります。
- S3 Protection
- EKS Protection
- Malware Protection
- RDS Protection
- Lambda Protection
GuardDutyのコンソール
検出結果 (Findings)
脅威が検出されると、重要度が付けられて表示されます。
検出結果タイプリンクをクリックすると、右側に検出結果の詳細が表示されます。
詳細情報の「情報」リンクをクリックすると、修復に関する推奨事項が表示されます。
利用費用について
比較的低コストで利用できます。
AWS CloudTrail 管理イベント分析:100 万イベントあたり 4.72USD
VPC フローログと DNS クエリログの分析:1 GB あたり 0.17USD
最新の価格については、↓で確認してください
Amazon GuardDuty の料金
30日間の無料トライアルも用意されているので、有効にしてみて、実際の利用費用を確認する時にも使えますね。
コンソールの使用状況で、使用コストの予測に役立つコスト見積もりが表示されるので、利用費用の確認もできます。
検出結果をメールで通知
GuardDuty検出結果を SNS に通知することが出来ます。
SNS の宛先にメールを設定した場合の通知をやってみました。
1.SNSトピックを作成する
プロトコル:Eメール
エンドポイント:通知先のメールアドレス
2.EventBridgeルールを作成する
イベントパターンでseverity(重要度)をフィルタリング
severityの数値と重要度
高: 7.0〜8.9 の範囲
中: 4.0〜6.9 の範囲
低: 0.1〜3.9 の範囲
設定イベントパターン
1 2 3 4 5 6 7 8 9 |
{ "source": ["aws.guardduty"], "detail-type": ["GuardDuty Finding"], "detail": { "severity": [{ "numeric": [">=", 7] }] } } |
3.ターゲットにSNSトピックを指定する
メールの本文に該当する内容を入力トランスフォーマーを用いて設定する
入力パス
1 2 3 4 5 6 7 8 9 10 |
{ "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "Finding_description": "$.detail.description", "count": "$.detail.service.count", "eventFirstSeen": "$.detail.service.eventFirstSeen", "eventLastSeen": "$.detail.service.eventLastSeen", "region": "$.region", "severity": "$.detail.severity" } |
入力テンプレート
1 2 3 4 5 |
"重要度 <severity> のGuardDuty結果が発生しました。" "検索タイプ: <Finding_Type> リージョン: <region> " "タイプの説明: <Finding_description> " "初回発生日時: <eventFirstSeen> 最新発生日時 <eventLastSeen> 発生数 <count> " "詳細はGuardDuty コンソール( https://console.aws.amazon.com/guardduty/home?region=#/findings?search=id%3D )を確認してください。" |
まとめ
Amazon GuardDutyは、AWS環境のセキュリティを強化するための強力なサービスだと分かりました。
有効にするだけではなく、検知の通知や定期的なレビューも重要であることが分かりました。
今回まとめたベストプラクティスを参考にし、AWSリソースの保護を強化して、安心してAWSクラウド環境を利用できると感じました。
投稿者プロフィール
-
2023/1にスカイアーチネットワークスにJoin
AWSを日々勉強中
最新の投稿
- AWS2024年8月20日LocalStackをつかってローカル環境でAWSサービスにアクセスしてみた
- AWS2024年4月4日AWS NeptuneにLambdaからアクセスしてみた
- セキュリティ2024年3月4日Amazon GuardDutyについてまとめてみました
- AWS2023年12月4日Amazon Redshift Streaming Ingestion をやってみた