AWS ワークショップ【AWS 環境における脅威検知と対応】をやってみた モジュール1
前から気になっていたAWSセキュリティワークショップをやってみました!
AWSセキュリティワークショップでなにが学べるか?
AWSで実行される環境および ワークロードの保護に適用できる様々なベストプラクティスが紹介されています。
このワークショップではクラウド内のセキュリティに重点を置いており、 用意されたシナリオを使用してAWS環境構築の一般的なユースケースと操作方法を学べます。 また、AWS Well-Architectedフレームワークのセキュリティの柱にある設計の原則をもとに作られる環境なのでセキュリティ向上に役立ちます!
AWS 環境における脅威検知と対応
では、早速やっていきたいと思います。
下記のリンクに飛ぶとこのワークショップの説明が記載されています。
scaling-threat-detection.awssecworkshops.jp
以下の概要とシナリオ、アーキテクチャはサイトに記載されている内容を引用します。
概要
Amazon GuardDuty、Amazon Macie、Amazon Inspector、AWS Security Hub などのサービスを使用して、 攻撃中および攻撃後の脅威を調査し、通知と修復パイプラインを設定し、追加的な保護策を講じて、環境のセキュリティを改善する方法を学習できます。
- レベル: 中級
- 時間: 2 ~ 3 時間
- CSF 機能: 検出、対応、復旧
- CAF 構成要素: Detective, Responsive
- 前提条件: AWS アカウント、管理者権限を持つ IAM ユーザー
シナリオ
あなたの会社はクラウドに慣れておらず、最近インフラストラクチャーを試験的にリフトアンドシフトで移行しました。あなたはシステム管理者であり、AWS 環境のセキュリティ監視を任されています。その作業の一環として、その環境におけるセキュリティイベントへの対応も担当しています。
なかなか面白そうな内容ですね!
アーキテクチャ
us-west-2 リージョンで単一のインスタンスが設定されています。 これは試験的な「リフトアンドシフト」移行であり、アプリケーションは冗長化をしていなく、単一の公開ウェブサーバーとなっています。
このウェブサーバーは、Elastic Network Interface を通じてインターネットゲートウェイにアクセスできます。 顧客は、Elastic Network Interface を指す DNS エントリを通じてウェブサーバーにアクセスします。
静的コンテンツを S3 バケットに保管し、ウェブサーバーからのアクセスに VPC S3 エンドポイントゲートウェイを使用します。
このワークショップはus-west-2リージョンを使用してるようです。 環境の作成を行う際は間違えないようにしましょう。
モジュール1 環境構築と設定
モジュール1では、検知と対応の統制の初期設定をします。
2つのCloudFormationテンプレートが用意されており、そのうちの1つをまずは実行して環境を作っていきます。
テンプレートは以下にあります。
CloudFormationテンプレートのデプロイ
実手順ではAWSコンソールをポチポチしていくようですが、
僕はめんどくさいのでAWS CLIで実行しちゃいます。
手順に指定されているパラメータを確認します。
Stack name
: ThreatDetectionWksp-Env-Setup
Email Address
: A valid email address
Stack name
とEmail Address
を踏まえた
aws cloudformation create-stack
コマンドでテンプレートのデプロイします。
$ aws cloudformation create-stack --stack-name ThreatDetectionWksp-Env-Setup \ --parameters ParameterKey=Email,ParameterValue="A valid email address" \ --template-body https://s3-us-west-2.amazonaws.com/sa-security-specialist-workshops-us-west-2/threat-detect-workshop/staging/01-environment-setup.yml \ --region us-west-2 --capabilities CAPABILITY_NAMED_IAM { "StackId": "arn:aws:cloudformation:us-west-2:xxxxxxxxxxxx:stack/ThreatDetectionWksp-Env-Setup/e89a5780-5621-11ea-ae54-0ac86d6e8b22" }
スタックのステータスがCREATE_COMPLETE
になるまで待ちます。
aws cloudformation list-stacks
コマンドで現在のステータスの確認ができます。
aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE --region us-west-2 { "StackSummaries": [ { "StackId": "arn:aws:cloudformation:us-west-2:xxxxxxxxxxxx:stack/ThreatDetectionWksp-Env-Setup/e89a5780-5621-11ea-ae54-0ac86d6e8b22", "StackName": "ThreatDetectionWksp-Env-Setup", "TemplateDescription": "This AWS CloudFormation Template configures an environment with the necessary detective controls to support the Threat Detection Workshop. DO NOT run this template in a production AWS Account.", "CreationTime": "2020-02-20T10:18:11.014Z", "StackStatus": "CREATE_COMPLETE", "DriftInformation": { "StackDriftStatus": "NOT_CHECKED" } } ] }
スタックのステータスがCREATE_COMPLETE
になるとEmail Address
に設定した、
メールアドレスに件名がAWS Notification - Subscription Confirmation
のメールが届きます。
そのメールに記載されているConfirm subscription
からサブスクリプションの有効にします。
aws sns list-subscriptions
コマンドでサブスクリプションが有効になったかを確認します。
$ aws sns list-subscriptions --region us-west-2 { "Subscriptions": [ { "SubscriptionArn": "arn:aws:sns:us-west-2:xxxxxxxxxxxx:threat-detection-wksp:f5922d74-c701-4667-b988-d6cb472df136", "Owner": "xxxxxxxxxxxx", "Protocol": "email", "Endpoint": "A valid email address", "TopicArn": "arn:aws:sns:us-west-2:xxxxxxxxxxxx:threat-detection-wksp" } ] }
CloudWatch イベントルールおよび自動応答の設定
先ほど実行したテンプレートによって、アラートおよび応答のための3つのCloudWatchイベントルールが作成されています。 以下の手順で最終的なルールを作成し、メール通知を受け取り脅威に対応するためにLambda関数をトリガーするための必要なすべてのルールが設定されます。
AWSコンソールで以下の手順を実行します。
- CloudWatch コンソールを開きます。
- 左のナビゲーションペインで、イベントの下の
ルール
をクリックします。 ルールの作成
をクリックします。カスタムイベントパターン
を選択し以下のカスタムイベントパターン
を貼り付けます。{ "source": [ "aws.guardduty" ], "detail": { "type": [ "UnauthorizedAccess:EC2/MaliciousIPCaller.Custom" ] } }
ターゲットの追加
をクリックし、Lambda 関数を選択しthreat-detection-wksp-remediation-nacl
を選択します。これまでの設定が正しくできていたら下記の画像のようになっているはずです...設定の詳細
をクリックします。
ルールの詳細の構成画面で、名前および説明を入力します。
名前: threat-detection-wksp-guardduty-finding-ec2-maliciousip
説明: UnauthorizedAccess:EC2/MaliciousIPCaller.Custom
ルールの作成
をクリックします。
動いているLambdaの内容が知りたければ、AWSコンソールでLambdaの画面まで移動して、
threat-detection-wksp-remediation-nacl
関数を見ると内容が確認できます。
GuardDuty の有効化
GuardDutyを利用することにより、悪意のある行動や不正な行動がないか環境を継続的に監視してくれます。
- GuardDuty コンソールに移動し、今すぐ始めるをクリックします。
- 次の画面で、GuardDutyの有効化をクリックします。
これでGuardDuty が有効になります。 CloudTrail ログやVPC フローログ、および DNS クエリログが監視され脅威がないかを確認できるようになります。
Macie の有効化
このシナリオでは機密データをS3に保管するつもりのようです。 Macieは、データアクセスアクティビティを継続的に監視して異常がないかをチェックするセキュリティサービスで、 不正アクセスやデータ漏洩のリスクを検出するとアラートを生成してくれます。
- Macieコンソールに移動し、
Get Started
をクリックします。 Enable Macie
をクリックします。
ちなみにMacieを有効にした時に作成されるロールの権限を確認する場合、View service role permissions
をクリックすると見れます。
データの検出と分類のためのMacie設定
Macieは機密データを自動で検出および分類するためにも使用されます。 今回はS3バケットのデータを分類するための統合を設定をします。
- Macieコンソールで、左のナビゲーションの
Integrations
をクリックし AWS アカウント ID (1 つだけあります) を探してSelect
をクリックします。 Add
をクリックし、次の画面で-data
で終了するS3バケットをチェックし、Add
をクリックします。- 次の画面からはオプションはデフォルトのままにして
Review
→Start Classification
→Done
の順番でクリックしていきます。
これで、Macieが有効になりデータの検出、分類、および保護を開始します。
Security Hub の有効化
ここまででDetective Controlの設定が完了しました。 次にAWS 環境のセキュリティおよびコンプライアンスを確認できるように Security Hubを有効にする必要があります。
- Security Hub コンソールに移動し、
Security Hub に移動
をクリックします。 - 次の画面で、
Security Hub の有効化
をクリックします。
これでSecurity Hub が有効になりました。 今まで有効化したセキュリティサービスからの検出結果の収集と集約が開始されます。
アーキテクチャの概要
これで環境が構成され、ワークショップの準備ができました。
Detective Control の構成は以下のようになっています。
次のモジュール2に進めるようになりました。
まとめ
環境を作るだけで結構なボリュームになってしまいました。
次の記事から本格的な内容になっていきます。
興味ある方はAWS ワークショップやってみてください!
セキュリティ以外も色々ありますので!