[レポート] 一般的な攻撃ベクトルに対するWebアプリケーションの防御 #ARC348 #reinvent

2019.12.03

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

本記事では、セッション「ARC348 Protecting your web applications from common attack vector」をレポートします。

ワークショップ概要

ワークショップの概要は以下の通りです。 この紹介文にもある通りAWS WAF セキュリティオートメーションを扱うワークショップとなります。

A web application that is unable to fend off attacks leads to an erosion of customer trust, and in the worst case, it leads to customer privacy issues. In this workshop, you learn best practices for architecting web applications to block common attack patterns that affect application availability and security. We take a compromised web application and use tools such as the AWS WAF Security Automations solution, and we build, train, and deploy a machine learning model to identify abnormal behaviors. We also build an application that automates security assessments and operational tasks, identifies anomalies in data, and monitors your AWS environment.

スピーカー

  • Heitor Vital - Solutions Architect, Amazon Web Services
  • Lalit Grover - AWS Solutions Builder, Amazon Web Services

レポート

AWS WAF セキュリティオートメーションとは

AWS WAF セキュリティオートメーションとはAWSから提供されているAWS WAFのルールセットを自動生成するソリューションです。

ソリューションはCloudFormationテンプレートとして提供されいて、以下の一般的な攻撃に対する対策が含まれています。

  • SQLインジェクションおよびXSS
  • HTTPフラッド
  • スキャナーとプローブ
  • IP 評価リスト
  • 悪意のあるボット

公式ページよりアーキテクチャ図引用

演習の内容

環境

演習では下記のリソースを含むサンドボックス環境を利用しました。

  • Webアプリ(OWASP Juice Shop) が動作する2つのインスタンスを含むAmazon EC2 Auto Scaling Group
  • 上記のAuto Scaling GroupをターゲットとするALB
  • 下記の機能を有効化したWAF セキュリティオートメーションスタック
    • SQLインジェクションおよびXSS
    • HTTPフラッド
    • スキャナーとプローブ
    • IP 評価リスト
    • 悪意のあるボット

流れ

前述の構築済みスタックを使って下記のLab1〜Lab3の演習を行いました。

  • Lab 1, Lab 2: WAFルールの自動作成の動作確認後、生成ロジックの修正をする
  • Lab 3: Amazon SageMaker IP Insights algorithmによるフラウド検出 (これはセキュリティオートメーションのスタックではない)

Lab 1, 2: WAFルールの自動生成と生成ロジックの修正

Lab 1およびLab 2では次の攻撃に対するWAFルールの生成を試してみました。

  • HTTP フラッド(特定のIPアドレスからの大量の要求からなる攻撃からの保護)
  • スキャナーとプローブ: アクセスログを解析して異常な量のエラーなどの疑わしい動作を検索し、アクセス元IPアドレス一定期間期間ブロックする)

これらはどちらもWAFやALBのログを解析してIPアドレスのブラックリストを生成します。 演習ではダミーのログを保存用のS3バケットに保存してIPアドレスリストが生成されるのを確認したあと、リスティング条件のしきい値(一定期間でのアクセス数やエラー数)を変更して生成されるリストが異なるのを確かめました。

Lab 3: Amazon SageMaker IP Insights algorithmによるフラウド検出

定義ずみのJupyter Notebook とサンプルデータを使ってSageMaker上でWAFのアクセスログからアカウント乗っ取りの試行を検出するモデルを生成、評価します。

検出のアルゴリズムにはSageMakerが提供しているAmazon SageMaker IP Insights algorithmを使用しました。 このアルゴリズムの詳細については演習中には触れられなかったのでここでは割愛します。

演習ではハイパーパラメーターのチューニングはせず5エポック回したモデルをデプロイしてテストデータを使って評価したところ、再現率が98%、適合率が95%程度となっていました(取りこぼしなくtrue-positiveを拾えるしきい値を設定していたので再現率が高めとなったのだと思います)

まとめ

AWS WAF セキュリティオートメーションにはEventBridge、Kinesis Data FirehoseやLambda、CloudWatch Event、Athenaなどの複数のマネージドサービスが組み合わされて使われておりアクセスが多いWebサービスでもスケールして使用できそうだなという印象を受けました。 構築はクラウドフォーメーションで行えるので簡単に導入できそうですが、プロダクションで使う場合はルール生成の詳細や挙動を十分に理解して使わないと予期しない挙動をしたり、%