chikoblog

やってみたことの掃溜め

AWS ワークショップ【AWS 環境における脅威検知と対応】をやってみた モジュール1

前から気になっていたAWSセキュリティワークショップをやってみました!

awssecworkshops.jp

AWSセキュリティワークショップでなにが学べるか?

AWSで実行される環境および ワークロードの保護に適用できる様々なベストプラクティスが紹介されています。

このワークショップではクラウド内のセキュリティに重点を置いており、 用意されたシナリオを使用してAWS環境構築の一般的なユースケースと操作方法を学べます。 また、AWS Well-Architectedフレームワークのセキュリティの柱にある設計の原則をもとに作られる環境なのでセキュリティ向上に役立ちます!

wa.aws.amazon.com

AWS 環境における脅威検知と対応

では、早速やっていきたいと思います。
下記のリンクに飛ぶとこのワークショップの説明が記載されています。 scaling-threat-detection.awssecworkshops.jp

以下の概要とシナリオ、アーキテクチャはサイトに記載されている内容を引用します。

概要

Amazon GuardDuty、Amazon Macie、Amazon Inspector、AWS Security Hub などのサービスを使用して、 攻撃中および攻撃後の脅威を調査し、通知と修復パイプラインを設定し、追加的な保護策を講じて、環境のセキュリティを改善する方法を学習できます。

シナリオ

あなたの会社はクラウドに慣れておらず、最近インフラストラクチャーを試験的にリフトアンドシフトで移行しました。あなたはシステム管理者であり、AWS 環境のセキュリティ監視を任されています。その作業の一環として、その環境におけるセキュリティイベントへの対応も担当しています。

なかなか面白そうな内容ですね!

アーキテクチャ

us-west-2 リージョンで単一のインスタンスが設定されています。 これは試験的な「リフトアンドシフト」移行であり、アプリケーションは冗長化をしていなく、単一の公開ウェブサーバーとなっています。

このウェブサーバーは、Elastic Network Interface を通じてインターネットゲートウェイにアクセスできます。 顧客は、Elastic Network Interface を指す DNS エントリを通じてウェブサーバーにアクセスします。

静的コンテンツを S3 バケットに保管し、ウェブサーバーからのアクセスに VPC S3 エンドポイントゲートウェイを使用します。

以下構成図 https://scaling-threat-detection.awssecworkshops.jp/images/diagram-basic-arch.png

このワークショップはus-west-2リージョンを使用してるようです。 環境の作成を行う際は間違えないようにしましょう。

モジュール1 環境構築と設定

モジュール1では、検知と対応の統制の初期設定をします。
2つのCloudFormationテンプレートが用意されており、そのうちの1つをまずは実行して環境を作っていきます。

テンプレートは以下にあります。

github.com

CloudFormationテンプレートのデプロイ

実手順ではAWSコンソールをポチポチしていくようですが、
僕はめんどくさいのでAWS CLIで実行しちゃいます。

手順に指定されているパラメータを確認します。
Stack name : ThreatDetectionWksp-Env-Setup
Email Address : A valid email address

Stack nameEmail 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コンソールで以下の手順を実行します。

  1. CloudWatch コンソールを開きます。
  2. 左のナビゲーションペインで、イベントの下のルールをクリックします。
  3. ルールの作成をクリックします。
  4. カスタムイベントパターンを選択し以下のカスタムイベントパターンを貼り付けます。
    {
     "source": [
       "aws.guardduty"
     ],
     "detail": {
       "type": [
         "UnauthorizedAccess:EC2/MaliciousIPCaller.Custom"
       ]
     }
    }
    
  5. ターゲットの追加をクリックし、Lambda 関数を選択しthreat-detection-wksp-remediation-naclを選択します。これまでの設定が正しくできていたら下記の画像のようになっているはずです...f:id:Chiko_gorilla:20200223203707p:plain
  6. 設定の詳細をクリックします。

ルールの詳細の構成画面で、名前および説明を入力します。
名前: threat-detection-wksp-guardduty-finding-ec2-maliciousip
説明: UnauthorizedAccess:EC2/MaliciousIPCaller.Custom

ルールの作成をクリックします。 f:id:Chiko_gorilla:20200223204114p:plain

動いているLambdaの内容が知りたければ、AWSコンソールでLambdaの画面まで移動して、 threat-detection-wksp-remediation-nacl関数を見ると内容が確認できます。

GuardDuty の有効化

GuardDutyを利用することにより、悪意のある行動や不正な行動がないか環境を継続的に監視してくれます。

  1. GuardDuty コンソールに移動し、今すぐ始めるをクリックします。f:id:Chiko_gorilla:20200223205222p:plain
  2. 次の画面で、GuardDutyの有効化をクリックします。f:id:Chiko_gorilla:20200223205348p:plain

これでGuardDuty が有効になります。 CloudTrail ログやVPC フローログ、および DNS クエリログが監視され脅威がないかを確認できるようになります。 f:id:Chiko_gorilla:20200223205436p:plain

Macie の有効化

このシナリオでは機密データをS3に保管するつもりのようです。 Macieは、データアクセスアクティビティを継続的に監視して異常がないかをチェックするセキュリティサービスで、 不正アクセスやデータ漏洩のリスクを検出するとアラートを生成してくれます。

  1. Macieコンソールに移動し、Get Startedをクリックします。f:id:Chiko_gorilla:20200223210256p:plain
  2. Enable Macieをクリックします。f:id:Chiko_gorilla:20200223210339p:plain

ちなみにMacieを有効にした時に作成されるロールの権限を確認する場合、View service role permissionsをクリックすると見れます。 f:id:Chiko_gorilla:20200223210514p:plain

データの検出と分類のためのMacie設定

Macieは機密データを自動で検出および分類するためにも使用されます。 今回はS3バケットのデータを分類するための統合を設定をします。

  1. Macieコンソールで、左のナビゲーションのIntegrationsをクリックし AWS アカウント ID (1 つだけあります) を探して Selectをクリックします。f:id:Chiko_gorilla:20200223212034p:plain
  2. Addをクリックし、次の画面で-dataで終了するS3バケットをチェックし、Addをクリックします。f:id:Chiko_gorilla:20200223212159p:plainf:id:Chiko_gorilla:20200223212305p:plain
  3. 次の画面からはオプションはデフォルトのままにしてReviewStart ClassificationDoneの順番でクリックしていきます。

これで、Macieが有効になりデータの検出、分類、および保護を開始します。

Security Hub の有効化

ここまででDetective Controlの設定が完了しました。 次にAWS 環境のセキュリティおよびコンプライアンスを確認できるように Security Hubを有効にする必要があります。

  1. Security Hub コンソールに移動し、Security Hub に移動をクリックします。f:id:Chiko_gorilla:20200223213027p:plain
  2. 次の画面で、Security Hub の有効化をクリックします。f:id:Chiko_gorilla:20200223213038p:plain

これでSecurity Hub が有効になりました。 今まで有効化したセキュリティサービスからの検出結果の収集と集約が開始されます。

アーキテクチャの概要

これで環境が構成され、ワークショップの準備ができました。
Detective Control の構成は以下のようになっています。

https://scaling-threat-detection.awssecworkshops.jp/images/01-diagram-module-1.png

次のモジュール2に進めるようになりました。

まとめ

環境を作るだけで結構なボリュームになってしまいました。

次の記事から本格的な内容になっていきます。
興味ある方はAWS ワークショップやってみてください!

セキュリティ以外も色々ありますので!