クラウドセキュリティ対策の第一歩!OSSのマルチクラウド対応セキュリティ監査ツール「Scout Suite」導入のすすめ

OGP

こんにちは。SRE部BtoBチームの竹田です。本記事では、クラウドインフラ環境のセキュリティ対策を講じようと思いつつも何から着手すれば良いのか分からないという方向けに、マルチクラウドに対応したオープンソースのセキュリティ監査ツールであるScout Suiteを紹介します。

Scout Suiteとは

Scout Suiteはマルチクラウドに対応したオープンソースのセキュリティ監査ツールです。各クラウドプロバイダーから公開されているAPIを利用してクラウドの設定情報を収集し、リスクとなる項目をHTML形式のレポートファイルで出力してくれます。マルチクラウドとあるように2020/08/07時点では以下のクラウドサービスに対応しています。

  • Amazon Web Services
  • Microsoft Azure
  • Google Cloud Platform
  • Alibaba Cloud (alpha)
  • Oracle Cloud Infrastructure (alpha)

参考:nccgroup/ScoutSuite: Multi-Cloud Security Auditing Tool

AWSに対しての実行

今回はCentOS 7.8環境にScout Suiteの実行環境を整えます。まずはAWSに対してScout Suiteを実行してみます。Scout Suiteの実行までにはいくつか準備が必要となるため、順を追って説明します。

必要なパッケージのインストール

Scout SuiteはPythonで記述されており、Pythonとpipが必要になります。Pythonのバージョンは3.5以上をサポートしています。

$ yum install python3 python3-devel python3-pip

Scout Suiteのインストール

GitHubからScout Suiteの本体をダウンロードします。2020/08/07時点の最新バージョンは5.9.1でした。

$ git clone https://github.com/nccgroup/ScoutSuite.git

ScoutSuiteディレクトリに移動して、必要なパッケージをインストールします。

$ cd ScoutSuite
$ pip3 install -r requirements.txt

AWS CLIのインストール

AWS CLIをダウンロードします。

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

zipを解凍してインストールします。

$ unzip awscliv2.zip
$ sudo ./aws/install

AWS CLIの初期設定をします。

$ aws configure
AWS Access Key ID [None]:{アクセスキーID}
AWS Secret Access Key [None]:{シークレットアクセスキー}
Default region name [None]:ap-northeast-1
Default output format [None]:json

以下のポリシーはScout Suiteの実行に必要な権限を保有しているため、このポリシーを関連付けたIAMユーザーのアクセスキーIDおよびシークレットアクセスキーを設定します。

  • ReadOnlyAccess
  • SecurityAudit

最低限必要な権限に絞ったカスタムポリシーもあるようです。

AWS Minimal Privileges Policy

Scout Suiteの実行

ScoutSuiteディレクトリ内に移動してscout.pyを実行します。

$ python3 scout.py aws

以下のように監査が進行していくので、監査が完了するまでしばらく待機します。

2020-07-21 08:40:46 hostname scout[19403] INFO Launching Scout
2020-07-21 08:40:46 hostname scout[19403] INFO Authenticating to cloud provider
2020-07-21 08:40:51 hostname scout[19403] INFO Gathering data from APIs
2020-07-21 08:40:51 hostname scout[19403] INFO Fetching resources for the ACM service
2020-07-21 08:40:51 hostname scout[19403] INFO Fetching resources for the Lambda service
2020-07-21 08:40:52 hostname scout[19403] INFO Fetching resources for the CloudFormation service
2020-07-21 08:40:53 hostname scout[19403] INFO Fetching resources for the CloudTrail service
2020-07-21 08:40:54 hostname scout[19403] INFO Fetching resources for the CloudWatch service
2020-07-21 08:40:55 hostname scout[19403] INFO Fetching resources for the Config service
2020-07-21 08:40:55 hostname scout[19403] INFO Fetching resources for the Direct Connect service
2020-07-21 08:40:56 hostname scout[19403] INFO Fetching resources for the EC2 servicea
.
.
.

監査が完了すると、ScoutSuiteディレクトリの下にscoutsuite-reportディレクトリが生成されます。このディレクトリの中身がレポートファイル一式になっています。

レポート結果の確認

scoutsuite-reportディレクトリの中のHTMLファイルをブラウザで開くと以下のようなレポート結果が確認できます。

レポート結果

サービス毎に監査項目の数や発見された問題の数がリストされています。一番左側のアイコンが緑色の場合は問題無し、アイコンが黄色や赤色の場合は問題ありです。EC2の項目が赤くなっているので確認してみます。

EC2

EC2の設定に対する問題点がリストされています。各項目の右側にあるプラス記号をクリックすると、項目毎の詳細を確認できます。Security Group Opens SSH Port to Allの項目のプラス記号をクリックしてみます。

Security Group Opens SSH Port to All

SSH(22)という攻撃の格好の餌食となるポートがフルオープンになっていると書いてあります。また、22番ポートのオープンが必要な場合はIP制限すると攻撃を受ける可能性が減少するといったアドバイスもあります。プラス記号ではなく項目名自体をクリックすると、問題が見つかったセキュリティグループの設定情報を確認できます。

Security Group Setting

アウトバウンドルールやインバウンドルールの設定内容に加え、対象のセキュリティグループの利用状況も確認できます。問題となる設定は赤くハイライトされており、確かに22番ポートがフルオープンになってしまっているようです。アドバイスに従ってIP制限を施したり、22番ポートを利用していなければルールごと削除するのも手です。そもそもセキュリティグループが利用されていないようであればセキュリティグループごと削除してしまうと良いでしょう。

GCPに対しての実行

マルチクラウドに対応しているということで、GCPに対してもScout Suiteを実行してみます。必要なパッケージとScout Suite本体の準備は整っているものとして、GCP独自で必要な準備について説明します。

サービスアカウントの作成と鍵ファイルの取得

サービスアカウントを作成してJSON形式の鍵ファイルを取得しておきます。サービスアカウントに付与するIAMロールは以下のものです。

  • 閲覧者(Viewer)
  • セキュリティ審査担当者(Security Reviewer)
  • Stackdriverアカウント閲覧者(Stackdriver Account Viewer)

Cloud Resource Manager APIの有効化

監査するプロジェクトのCloud Resource Manager APIを有効にしておく必要があります。Cloud Resource Manager APIが無効の場合、一見問題なく監査が進みますが、監査対象が0という悲しいレポート結果が出力されてしまいます。

Scout Suiteの実行

ScoutSuiteディレクトリ内に移動してscout.pyを実行します。--service-accountには先ほど取得しておいた鍵ファイルを指定します。

$ python3 scout.py gcp --service-account {/path/to/key.json}

AWSとGCPのレポート結果の違い

監査対象となるサービス数や監査項目の数はAWSの方が多く、また以下のような点からもAWSの方が良くメンテナンスされているのかなという印象を受けました。

  • AWSだとSSHやRDPなどポート毎に項目分けされていたものが、GCPだとウェルノウンポートでまとめられている
  • GCPのファイアウォールの設定で22番ポートがフルオープンでも黄色(Warning)判定される

GCPのレポート結果

Firewall INGRESS Rule Allows Public Access (0.0.0.0/0) to a Sensitive Port

まとめ

AWSにはTrusted AdvisorやConfig、GCPにはRecommenderといった同様機能を持つサービスがあります。しかし、Scout Suiteは異なるクラウド環境を横断して、統一したオペレーションでレポートを出力できるメリットがあります。そのため、特に複数のクラウド環境を運用している方にとっては、Scout Suiteの利用が運用の省コスト化につながるのではないでしょうか。また、機能開発も頻繁に行われており、監査対象となるサービスや監査項目の充実も予定されているようです。執筆時点においてSRE部BtoBチームではまだ本格導入には至っていないですが、引き続き評価しつつ今後のバージョンアップに期待しています。

さいごに

今回紹介したScout Suiteの監査項目はごく一部であり、他にも多数の監査項目があります。オープンソースのScout Suiteを利用すれば、クラウド環境のセキュリティ監査を無料で実施できるので、まずは一度ご自身のクラウド環境の監査を実施してみてはいかがでしょうか。

ZOZOテクノロジーズでは、一緒にサービスを作り上げてくれる方を募集中です。ご興味のある方は、以下のリンクからぜひご応募ください!

tech.zozo.com

カテゴリー