こんにちは。ソリューションアーキテクトの李です。

セキュリティは、クラウドを利用する上で検討すべき重要事項の一つです。

しかし、現実的には予算上の問題や、セキュリティツールを導入したいが検証やライセンスの契約に時間がかかるなどで、セキュリティツールの速やかな導入が困難な場合も少なくありません。これらの問題の解決手段の一つとして、オープンソースで10分もあれば導入できるAWSセキュリティ評価ツール「Prowler」をご紹介したいと思います。

Prowlerとは

Prowlerは、AWSのセキュリティベストプラクティスの評価、監査、インシデント対応、継続的な監視、ハードニング、フォレンジックの準備を行うためのセキュリティツールです。CIS、ISO27001、GDPR、HIPAA、SOC2、ENS等のセキュリティフレームワークを含み、200以上の項目を評価できます。

Prowlerの具体的な評価項目は、文末のProwlerリポジトリのリンクに記載されています。現場でよく挙げられる評価項目として、以下のものがあります。

  • AWSマネジメントコンソールログインユーザは、MFAが必須になっていること
  • AWSマネジメントコンソールログインユーザのパスワードポリシー
  • AWSアカウントのrootユーザに、アクセスキーが作成されていないこと
  • Security Groupにて、SSH、RDPのポートを0.0.0.0/0 に公開許可していないこと
  • CloudTrailが有効になっていること
    etc.

また、例としてGDPRに遵守する要件がある場合、下記の内容も評価できます。

  • S3サーバアクセスログの有効化
  • S3オブジェクトレベルログの有効化
  • PublicになっているSNSトピックがないこと
    etc.

Prowlerについてのおおまかな紹介は以上となります。続いて、ローカルマシンに実際にProwlerをセットアップして、動かしてみたいと思います!

導入手順

実行環境
  • MacOS Monterey 12.0.1
  • Python 3.8.9
  • aws-cli 1.22.20
前提条件
  • awscliがインストールされていること
  • jqがインストールされていること
実行手順
  • AWSコンソールからIAMユーザを作成します。このユーザのアクセスキーを発行し、ReadOnlyAccessを付与します。
  • aws configureを実行し、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYを設定します。
  • 以下のコマンドを実行し、prowlerを取得します。

      $ git clone https://github.com/toniblyx/prowler
      $ cd prowler

  • 引数なしで[ ./prowler ]を実行すると全項目チェックになります。チェック完了までの所要時間は実行環境にも依存しますが、私のローカルマシンで実行したところチェックが1時間で完了しませんでした。今回は、クイックに動作を確認しhtml形式の評価結果を出力するため、IAM関連の評価項目(group1)のみを対象にし、[./prowler -M html -g group1]を実行してみます。
  • 数分後、Prowlerが実行完了になり、結果がoutputという名前のフォルダに保存されます。
  • outputフォルダにあるhtmlファイルを開くと以下の評価結果が表示されます。さらに、ResultFAIL且つSeverityCriticalでフィルタすると、2件の結果が表示されました。これらの検出結果について、優先的に解決したほうがよさそうと判断できます。

ローカルマシンからProwlerを実行する手順は以上となります。導入から最初のセキュリティレポートを入手するまで10分もかからないので、興味のある方はぜひ試してみてください。

Prowlerの魅力と運用上の注意点

Prowlerを動かしてみて初めて気づいたProwlerの魅力と注意点を共有します。

魅力
  • 迅速にセットアップできること
  • 評価項目を自分で変更する必要なく、リポジトリにあるものがそのまま使用できること
  • オープンソースのため、実際のプロジェクト要件に応じて評価項目を追加するといったカスタマイズが可能なこと
  • AWS Security Hubと統合できること
運用上の注意点
  • ProwlerはAWSアカウントのセキュリティコンプライアンスを「評価すること」にフォーカスしたツールであるため、攻撃自体を防ぐことができません。つまり、ProwlerはAWSサービスや他のセキュリティソフトウェアと組み合わせてセキュリティを改善・強化するためのツールと考えるべきです。
  • チェック項目は、準拠したいセキュリティ基準等に応じ、取捨選択してください。
  • 今回は動作検証のため手動でProwlerを実行しましたが、実際に運用する際はcronジョブやSystems Manager等を利用することで、定期実行するのが望ましいです。また、ローカルマシンとアクセスキーの組み合わせではなく、EC2とIAM Roleの組み合わせが望ましいです。なお、AWS Fargate(コンテナ)で実行し、評価結果をAWS Security Hubに連携したい場合、ぜひ文末のAWS本家のブログを参照してください。

参考

いよいよ年末が近づいてきました。クラウドだけでなく、日常生活でも安全に過ごせるようお祈り申し上げます。少し早いですが、良いお年を!

李 自如

テクノロジー コンサルティング 本部 インテリジェント クラウド イネーブラー グループ コンサルタント

ニュースレター
Subscribe to アクセンチュア・テクノロジー・ダイアリーズ Blog Subscribe to アクセンチュア・テクノロジー・ダイアリーズ Blog