DockerでCloudGoat環境を構築し秒速でAWSセキュリティに入門する

Rhino Security Labs社が開発したセキュリティ学習用のAWS環境構築ツール CloudGoat の環境をDockerで構築してみました。
2020.02.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSを愛する皆さま、こんにちは。コンサルティング部の西野(@xiyegen)です。

CloudGoatを使用するためにはTerraformやAWS CLIの実行環境が必要なので、
「AWSセキュリティに今すぐ入門したい!」
とお考えの皆さまは環境構築を手間に感じるかもしれません。
そんな皆さまの願望を満たすよくばりセットDockerイメージが公式から提供されています。

こちらを使用し、秒速でCloudGoat環境を構築しましょう。

目次

おさらい CloudGoatとは

https://github.com/RhinoSecurityLabs/cloudgoat

CloudGoatはRhino Security Labs社によって開発されたAWSセキュリティ学習環境構築ツールです。
概要を下記のブログで紹介しておりますのでこちらもご参照ください。

ゆるふわIAM userのadmin権限を奪ってみた(AWSセキュリティ学習環境構築ツールCloudGoatのご紹介)

環境構築

IAM user作成

CloudGoatからAWSリソースを作成するためのIAM userを作成します。

今回はcloudgoatという名称のIAM userを作成し、AdministratorAccess(AWS管理ポリシー)権限を付与します。

コンテナを動かす

公式が提供しているDockerイメージからコンテナを起動します。

$ docker run -it rhinosecuritylabs/cloudgoat:latest


ディレクトリ・ファイルの構成を見てみます。

bash-5.0# pwd
/usr/src/cloudgoat
bash-5.0# ls -la
total 84
drwxr-xr-x    1 root     root          4096 Feb 18 07:46 .
drwxr-xr-x    1 root     root          4096 Jul 30  2019 ..
drwxr-xr-x    8 root     root          4096 Nov 18 16:18 .git
-rw-r--r--    1 root     root           205 Nov 18 16:18 .gitignore
-rw-r--r--    1 root     root           690 Nov 18 16:18 Dockerfile
-rw-r--r--    1 root     root          1519 Nov 18 16:18 LICENSE
-rw-r--r--    1 root     root         19607 Nov 18 16:18 README.md
-rw-r--r--    1 root     root          3552 Nov 18 16:18 cloudgoat.py
-rw-r--r--    1 root     root            29 Feb 18 07:00 config.yml
drwxr-xr-x    1 root     root          4096 Nov 18 16:18 core
-rw-r--r--    1 root     root           170 Nov 18 16:18 docker_stack.yml
drwxr-xr-x    8 root     root          4096 Nov 18 16:18 scenarios
drwxr-xr-x    3 root     root          4096 Feb 18 07:46 trash
-rw-r--r--    1 root     root            14 Feb 18 07:01 whitelist.txt


Python・AWS CLI・Terraformがインストール済みです。

bash-5.0# python --version
Python 3.8.0b2
bash-5.0# aws --version
aws-cli/1.16.208 Python/3.8.0b2 Linux/4.19.76-linuxkit botocore/1.12.198
bash-5.0# terraform --version
Terraform v0.12.3

CloudGoat初期設定(コンテナ内)

CloudGoat用にAWS CLIの名前付きプロファイルを設定します。

bash-5.0# aws configure --profile cloudgoat
AWS Access Key ID [None]: <Your Access Key ID>
AWS Secret Access Key [None]: <Your Secret Access Key ID>
Default region name [None]:
Default output format [None]:


cloudgoat.pyへ実行権限を付与します。

bash-5.0# chmod +x cloudgoat.py


cloudgoat.pyを実行し、profileを設定します。

bash-5.0# ./cloudgoat.py config profile
No configuration file was found at /Users/nishino.wataru/CloudGoat/config.yml
Would you like to create this file with a default profile name now? [y/n]: y ★yと入力
Enter the name of your default AWS profile: cloudgoat ★先に設定したAWS CLIのプロファイルと同じものを入力
A default profile name of "cloudgoat" has been saved.


cloudgoat.pyを実行し、IPアドレスのホワイトリストを設定します。

bash-5.0# ./cloudgoat.py config whitelist --auto
No whitelist.txt file was found at /Users/nishino.wataru/CloudGoat/whitelist.txt
CloudGoat can automatically make a network request, using curl, to ifconfig.co to find your IP address, and then create the whitelist file with the result.
Would you like to continue? [y/n]: y ★yと入力

whitelist.txt created with IP address XXX.XXX.XXX.XXX/32

これでCloudGoatの初期設定が完了しました。
この先の流れについては冒頭でご紹介した私のブログの一節(シナリオ iam_privesc_by_rollbackをやってみた)をご参照ください。

終わりに

このブログがほんの少しでも世界を良くできれば嬉しいです。
いままで羊(?)だと思い込みたべていた羊肉串が実は山羊(?)だったかもしれないと知り、少し動揺したコンサルティング部の西野(@xiyegen)がお送りしました。