
意図的に安全でないクラウドインフラを構築(そして破棄!)するためのツール
sadcloud は、Terraform を使用して安全でない AWS インフラストラクチャを立ち上げるためのツールです。
約 84 の誤設定を、22 の AWS サービスにわたってサポートしています。初期の誤設定群は、NCCGroup のマルチクラウド監査ツールである ScoutSuite から抽出されました。
sadcloud は、セキュリティ研究者がトレーニング目的で AWS を簡単に誤設定できるようにし、また AWS セキュリティツール(組み込みツールやサードパーティ製ツールを含む)を評価するために使用できるように作成されました。
このツールは、意図的に脆弱な AWS 構成リソースを立ち上げます。本番クラウドや、安全であるべき環境では実行しないでください。 このツールを実行するために新しい AWS アカウントを作成することを検討してください。このツールはクラウドリソースを立ち上げるため、AWS アカウントに費用が発生します。発生するコストを最小限に抑える努力はされていますが、NCC Group およびこのツールのメンテナは、このツールの使用によって生じる可能性のある料金やセキュリティ上の問題について責任を負いません。使用しないときは、必ずすべての Terraform リソースを破棄してください!
sadcloud の 24 時間のテスト実行で、約 10 ドルの請求が発生しました。そのコストの大半は、Redshift モジュール(25 セント/時 = 6 ドル/日)と EKS モジュール(10 セント/時 = 2.40 ドル/日)によるものです。
私たちは定期的に sadcloud を使用して、さまざまな AWS および Terraform 監査ツールをデモンストレーションしています。すべての監査は、可能な誤設定の全セットに対して実施されます。
必要なソフトウェア: Terraform
SSH キーが data/ssh_keys/terraform_rsa{,.pub} に書き込まれていることを確認してください。
ssh-keygen -t rsa -b 4096 -f data/ssh_keys/terraform_rsa
git clone https://github.com/nccgroup/sadcloud.gitcd sadcloud/sadcloudAWS プロバイダーを設定します(この手順を回避する手順については、以下の「環境変数の代わりにプロバイダーを使用する」セクションを参照してください):
export AWS_ACCESS_KEY_ID="accesskey"
export AWS_SECRET_ACCESS_KEY="secretkey"
export AWS_DEFAULT_REGION="us-east-1"
Terraform を準備します:
terraform init
必要な誤設定を指定して sadcloud を構成します:
すべての検出結果を有効にするには(...他の検出結果と競合するものを除く):
sadcloud/main.tf 内のすべてのモジュールのコメントを解除します。sadcloud/terraform.tfvars の all_findings フラグを true に編集するか、フラグ --var="all_findings=true" を指定して terraform apply を実行します。1 つ以上のサービス内のすべての検出結果を有効にするには:
sadcloud/main.tf 内の該当するサービス(複数可)のコメントを解除します。sadcloud/terraform.tfvars の該当する all_{service}_findings フラグを true に編集するか、フラグ --var="all_{service}_findings=true" を指定して terraform apply を実行します。sadcloud/terraform.tfvars の フラグを に編集するか、フラグ を指定して を実行します。
注: sadcloud のすべての誤設定はデフォルトで無効になっています。不要なリソースの立ち上げを防ぐため、すべてのサービスもデフォルトで無効になっています。誤設定の変数を true に設定すると、常に誤設定が発生します。all_findings の実行には 10〜15 分かかる場合があります。
確認:
terraform plan
デプロイ:
terraform apply
破棄:
terraform destroy
注: terraform apply は AWS にサービスを立ち上げます。これには費用がかかります。完了後は terraform destroy を忘れないでください。all_findings を実行する前に、何を実行しようとしているのかを理解するために、必ず terraform plan を実行してください。
AWS プロバイダーを設定すれば、毎回環境変数を設定する必要がなくなります。
sadcloud/providers.tf というファイルを次の内容で作成します:
provider "aws" {
access_key = "YOUR_AWS_ACCESS_KEY"
secret_key = "YOUR_AWS_SECRET_KEY"
region = "us-east-1"
}
| ツール | サンプルレポート |
|---|
all_findingstrue--var="all_findings=true"terraform applyTerraform apply を2回実行する必要があります特定の検出結果を細かく有効にするには:
sadcloud/main.tf 内の該当するサービスのコメントを解除します。sadcloud/main.tf 内の対象となる変数を直接編集し、必要な箇所を true にします。sadcloud/main.tf で needs_network を true に設定してください。