AWSのセキュリティについて考えてみた!


こんにちは、基盤整備部の森です。

最近、AWSを運用していると不正アクセスされて辛いというネットニュース記事をよく見かけるようになりました。

  • セキュリティグループの操作ミスで攻撃された。
  • シークレットアクセスキーを見える場所に貼っており、第三者から大量のアクセスされた。
  • 不正アクセスされて300万請求された。
    など

AWSでサービスを運用している身としては他人ごとではないなと思い、いい機会なのでセキュリティについて考えてみました。
AWSでは様々なセキュリティ対策があると思いますが、今回は簡単かつ網羅的にセキュリティ対策が出来るAWSサービスについて紹介したいと思います。

GuardDutyについて

皆さん、GuardDutyをご存じでしょうか。
GuardDutyは、AWS環境におけるセキュリティの驚異リスクを検知するAWSのサービスになります。

公式サイトは、下記になります。
Amazon GuardDutyの公式サイト

GuardDutyで何がわかるの?

GuardDutyでは、CloudTrail、VPCフローログ、DNSログを分析対象として機械学習を行います。
なので、AWS内でいつもとおかしな動きがある場合など、検知してくれる仕組みになります。

また、会社でAWS使っている場合でもこういう場面があるかと思います。

  • ちゃんとセキュリティ設定しているつもりだったけど、見逃しがあった。
  • 新人が初めてAWSを触れていてよく分からないまま設定していた。
  • 検証環境だからと言ってあまりセキュリティの事について考えて設定していなかった。
    など

例を出せばキリがないですが、このような場面でもGuardDutyを設定していれば
何かあっても早急に検知してくれます。
すごいですね~

そんなGuardDutyの設定を設定してみたいと思います。

GuardDutyの設定方法

それでは実際にGuardDutyを設定してみたいと思います。

1.Amazon GuardDutyの画面に移動し、今すぐ始めるを押す。

2.GuardDutyの有効化を押す。

3.設定完了

下記の画面が表示されれば設定が完了です。
ここまで設定すればGuardDuty内で勝手にログを分析し始め、
何かあればこの画面に検知したものを表示してくれます。

GuardDuty自体の設定は終わりです。
簡単ですよね!
たった2回ボタンを押すだけでGuardDutyの設定ができてしまいました。

ただGuardDuty自体に通知設定はないので、もし必要な場合は別のAWSサービスを使用して設定する必要があります。
※下の方に通知設定方法を記載しております。

また、AWSアカウントを複数運用している場合でも検知状況を一元管理することができますのですべてのAWSアカウントにGuardDutyを設定した場合でもいちいち確認をしにいかなくて良いのはメリットですよね!

GuardDutyだけでも大分セキュリティを高めることが出来ますが、SecurityHubも追加すると更にセキュリティ強化されるかなと思いますので紹介したいと思います。

SecurityHubについて

SecurityHubとはAWSにあるセキュリティサービスを一括で管理することが可能なサービスになります。

公式サイトは、下記になります。
AWS Security Hubの公式サイト

SecurityHub導入すると先ほど紹介したGuardDutyもSecurityHubの画面から確認することが可能です。
また、SecurityHubで対応しているセキュリティサービスを使用する場合も同じSecurityHubの画面から確認することが可能です。

SecurityHubで一元管理が可能なAWSサービス

  • Amazon GuardDuty
  • Amazon Inspector
  • Amazon Macie、
  • AWS Identity and Access Management (IAM) Access Analyzer
  • AWS Firewall Manager

では、実際に設定してみようと思います。

SecurityHubの設定方法

1.AWS Security Hubの画面に移動し、Security Hubに移動を押す。

2.Security Hubの有効化を押す。

この時にセキュリティ基準のデフォルトの設定で下記チェックされております。

AWS 基礎セキュリティのベストプラクティス v1.0.0
CIS AWS Foundations Benchmark v1.2.0

もし必要がない方はここでチェック外しても問題ありません。
あとでも設定することは可能です。

3.設定完了

下記の画面が表示されれば設定が完了です。
あとは対応されているサービスを使用していれば勝手にSecurity Hubの画面で確認することが可能です。

GuardDutyの結果がSecurityHubに反映されるか

次に先ほど設定したGuardDutyの結果がそのままSecurityHubに反映されるか確認します。

GuardDutyを設定してもなかなか検知してくれないと思います。そんな時はGuardDutyの機能に実際に検知された時にどんな風に表示されるのかわかるサンプル機能があるのでそれを使用します。
※検知結果の通知テストをする場合にとても便利です。

GuardDuty画面の設定 → 結果サンプルの生成を押す。

すると、結果画面にサンプルの結果が沢山表示されます。

SecurityHub側で確認してみるとGuardDuty(赤枠)のところが更新されています。
結果を参照を押すとし検知結果を見ることが出来ます。

結果を参照を押した場合の画面が下記になります。

これでGuardDutyとSecurityHubを連携することが出来ました。
SecurityHubに対応しているセキュリティ関連サービスがあればSecurityHubで一元管理してしまうのがいいかと思います。
SecurityHubもGuardDutyと同様に複数アカウントがあっても検知状況を一元管理することが可能になります。

また、SecurityHubにはセキュリティ基準という設定があり、AWS内のセキュリティについて向上させることが可能なので、より一層セキュリティを強化する場合は設定するのがおすすめです。ただし、AWS Configを有効にしていないと使用できないので注意が必要です。
※何もしなければデフォルトで設定されてしまいます。

公式サイトは、下記になります。
セキュリティ基準とコントロール

ちなみにセキュリティ基準の画面はこんな感じ。


結果の通知方法

GuardDutyもSecurityHubも簡単かつ万能なセキュリティサービスですが、
通知設定がないので今回AWS Chatbotを使用してSlackに通知してみました。

仕組み的にはこんな感じ。

各サービスの設定方法は下記になります。

1.SNSの設定

名前だけ入れてそのまま作成する。

2.Amazon EventBridgeの設定

下記のように設定する。
イベントパターンはSecurityHubから来るものを全部受け取る設定にしている。

3.AWS Chatbotの設定

下記のように設定をする。

実際にSlackに通知されるか確認。

GuardDutyのサンプルを出したらきちんと通知された。

補足

GuardDutyとSecurityHubもリージョン別サービスになるので全リージョンに設定する場合は、リージョン毎に設定する必要があります。
その場合は、AWS CloudFormationを利用すると簡単に適用することが出来ますのでおすすめです。

最後に

いかがだったでしょうか。
GuardDutyもSecurityHubも数回ボタンを押すだけで設定できてしまうので、AWSのセキュリティをどうしたらいいかわからない人は、とりあえずGuardDutyを設定してみるのがいいかなと思います。

最後に弊社では本ブログのようなAWSのセキュリティを一緒に考えてくれるエンジニアを募集しております。
弊社にご興味ある方は応募をお待ちしております!

それでは。