
Amazon GuardDutyを使ってみた
AWSにおけるセキュリティ対策サービスの一つであるAmazon GuardDutyをご紹介します。
Amazon GuardDutyの初期設定方法から活用までを記載しておりますので、Amazon GuardDutyについて知りたい方だけでなく、導入予定の方にも参考となる内容となっております。
はじめに
AWS(Amazon Web Services)を利用する上で、セキュリティは最優先事項です。AWS上にシステムを簡単に構築できる反面、効果的なセキュリティ対策のために、具体的にどのサービスを活用したらよいか分からないと悩んでいる方も多くいらっしゃるのではないでしょうか。
そこで今回は、AWSセキュリティ対策サービスの中から、非常に簡単に開始でき、AWSのベストプラクティスにおいてもAWSの全アカウントでの有効化が推奨されているAmazon GuardDutyについてご紹介します!
Amazon GuardDutyとは?
Amazon GuardDutyは、いわゆるマネージド型脅威検出サービスの一種です。AWS上の様々なログを独自に取得し、脅威を検知することができます。脅威の検知には機械学習が採用されているため、すでに確認されている従来型の脅威はもちろん、未知の脅威に対しても一定の効果を発揮できるのが強みです。
早期に脅威を検知することを強みとしているため、気がついたらクラウド環境全体に被害が及んでおり、復旧が困難になるような事態を回避できます。
24時間365日、AWS上の不審なアクティビティを常にモニタリングし、セキュリティ監視体制の強化に貢献します。
詳しくは以下サイトもご覧ください。
AWSユーザーがAmazon GuardDutyを利用するべき3つの理由とは?
https://ops.jig-saw.com/tech-cate/guardduty
Amazon GuardDuty は、AWS CloudTrailイベントログ、VPC フローログ、DNS ログなどAWS上のさまざまなログを分析し、処理を行い継続的にモニタリングを行います。また、Amazon EC2インスタンスなどにアタッチされたAmazon EBSボリュームをスキャンすることで、マルウェアの潜在的な存在を検出するMalware Protectionといった機能も備えています。
さらに、Amazon GuardDutyで検出した脅威の情報を、Amazon EventBridgeでフィルタリングし、Amazon SNSでメール通知する事が可能です。
設定も非常に簡単で、すぐに開始が可能ですので、早速設定してみましょう!
参考サイト
https://aws.amazon.com/jp/guardduty/
https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/what-is-guardduty.html
https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/malware-protection.html
Amazon GuardDutyの活用メリット
GuardDutyの導入は非常に簡単です。サービスを有効化するだけですぐにモニタリングを開始でき、複雑な操作が必要ありません。
また、一度導入してしまえば複数のアカウントに対しGuardDutyを適用できる点も強みです。管理者を含めた全てのアカウントで検出を強化できるのはもちろん、過剰な検出を回避するためのセッティングも、まとめて適用できます。
Amazon GuardDutyで検出できるもの
Amazon GuardDutyで検出できる脅威については、多岐に渡ります。代表的なケースとして、
- EC2インスタンスの不正使用の検知
- 身元不明のIPアドレスやサーバーとの通信検出
- 悪意あるIPアドレスとの通信検出
- ログの記録無効化の検出
などです。
攻撃者の管理下に置かれたEC2インスタンスが、DoS攻撃に用いられるケースが相次いでいます。不正使用を事前に検知・防止し、クライアントが加害者となることを防げます。
身元不明のIPアドレスやサーバーとの通信は、GuardDutyの使用によって検出が可能です。許可していないユーザーによる、リソースの不正使用を回避するのに役立ちます。
IPアドレスの中には、攻撃者に頻繁に利用される既知のものも多数存在します。これらのIPアドレスからの通信で行われたAPI呼び出し、あるいは匿名通信を可能にする「Tor」からのアクセスを、自動で検出できるサービスです。
攻撃者の中には、攻撃の痕跡を悟られないようログの記録を無効化するものもいます。また、誤ってログの記録を無効化してしまい、インシデント発生時に記録を追いかけられないようなアクシデントもあるかもしれません。このような事態を回避する上で、GuardDutyは有効です。ログの記録が無効化されたことを検出し、ログの記録有効化を促せます。
Amazon GuardDutyの初期設定
それではここからAmazon GuardDutyの初期設定方法について説明します。
30日間の無料トライアルが利用可能ですので、試しに利用してみることもできますね。
AWSコンソールへログインし、検索窓からAmazon GuardDutyを検索し、Amazon GuardDutyの開始画面へ遷移します。
Amazon GuardDutyは、リージョナルサービスのため、リージョンごとの有効化設定が必要です。
今回は東京リージョンで設定していきます。
「今すぐ始める」をクリックします。

続いて、以下の画面が表示されます。
サービスのアクセス権限に関する注意事項が表示されますが、ログ取得のための、各サービスへのアクセス権限の付与自体はAmazon GuardDutyを有効化すると自動で行われますので、追加の設定を行う必要はありません。
「GuardDutyを有効にする」をクリックします。

次の画面で、「GuardDutyが正常に有効になりました。」の表示とともに検出結果のダッシュボードが表示されれば、有効化は完了です。
Amazon GuardDutyの開始画面からわずか2クリックで開始できます!
この時点からログの分析が開始されます。
以上でAmazon GuardDutyの初期設定は完了です。

なお、検出結果をS3バケットへエクスポートしたい場合は、「設定」 > 「検出結果のエクスポートオプション」より設定可能です。
こちらでは、検出結果の更新頻度を変更(6時間、1時間、15分が選択可能)することも可能です。

Amazon GuardDutyの活用
Amazon GuardDuty自体は、ログを分析し脅威検出を行うサービスです。そのため、検出した脅威を通知し、すぐに気づけるようにすることでセキュリティ対策に活用できます。
今回は、Amazon GuardDutyで検出した脅威の情報を、Amazon EventBridgeでフィルタリングし、Amazon SNSでメール通知する以下の構成を作成してみましょう。

事前準備として、Amazon SNSにてトピックとサブスクリプションを作成しておきます。サブスクリプションには、Amazon GuardDutyの検出結果を送付したいメールアドレスを設定します。
トピックとサブスクリプションの作成が完了したら、Amazon EventBridgeにて設定を行います。
Amazon EventBridge開始画面にて、「イベントブリッジルール」を選択し、「ルールを作成」をクリックします。

ルールの詳細を設定します。
任意の名前を入力し、今回はその他の値はデフォルトとします。「次へ」をクリックします。

イベントパターンを構築します。
イベントソースは「AWS イベントまたは EventBridge パートナーイベント」を選択します。
サンプルイベントタイプにて、「AWSイベント」を選択し、サンプルイベントで「GuardDuty Finding」を選択します。これにより、GuardDutyの脅威検知のサンプルイベントの確認が可能になります。

続いて、作成のメソッドで「パターンフォームを使用する」を選択します。
イベントソースで「AWSのサービス」、AWSのサービスで「GuardDuty」、イベントタイプに「GuardDuty Finding」をそれぞれ選択します。
選択後、イベントパターンに「GuardDuty Finding」でフィルタリングされたパターンが表示されます。
しかし、この設定ではGuardDutyで検知した脅威を全て通知してしまうため、任意の内容に編集していきます。
今回は、「severity(脅威の重要度レベル)」が高に分類される7以上の物のみを通知するよう設定します。

「パターンを編集」をクリックし、イベントパターンを以下の通りに編集します。
編集後、「次へ」をクリックします。
{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {
"severity": [{
"numeric": [">=", 7]
}]
}
}

続いて、ターゲットを選択すなわちイベントの通知先の設定をします。
ターゲットタイプは、「AWSのサービス」を選択します。
ターゲットを選択にて、「SNSトピック」を選択し、トピックには事前準備で作成したトピックを選択します。
選択後、「次へ」をクリックします。

次の画面でタグの設定画面に移動しますが、今回は設定せず、「次へ」をクリックします。
レビューと作成画面にて設定内容を確認し、問題なければ「ルールの作成」をクリックします。

以下のようにルールが作成されれば、設定完了です。お疲れさまでした~!!

なお、ここまでの設定の検証は、「Amazon GuardDuty」 > 「設定」 > 「検出結果サンプルの生成」を選択し、検出結果のサンプルを起因として、メール通知がされるかどうかを確認することで実施可能です。
但し、設定内容によっては、一度に大量のメールを受信することになるためご注意ください。

参考サイト
https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_findings_cloudwatch.html
終わりに
本記事のまとめ
今回は、AWSにおけるセキュリティ対策サービスの一つであるAmazon GuardDutyの初期設定と活用方法についてご紹介しました。GuardDutyを導入することで、強力な検出能力を得られるため、AWSのセキュリティ強化の足がかりとして有効です。
また、GuardDutyは非常に簡単に開始できるだけでなく、今回ご紹介できなかった他のAWSサービスと連携することで、より強固なセキュリティ対策が可能となります。この機会にご活用してみてはいかがでしょうか?