[レポート] Webアプリのための多層防御アプローチ – re:Invent 2019 #SEC407 #reinvent

AWS環境での多層防御の戦略についてのセッションです。AWSのマネージドサービスを駆使しつつ効率的に守っていきましょう。
2019.12.04

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

こんにちは、臼田です。

今回はre:Invent2019にて行われた下記セッションについてレポートします。

SEC407- A defense-in-depth approach to building web applications

Strong adherence to architecture best practices and proactive controls is the foundation of web application security. These techniques allow developers to build applications that are more resilient. Specifically, a defense-in-depth strategy helps developers further reinforce an application, hot-patch its zero-day vulnerabilities, and protect its availability. In this session, learn about common security issues, including those described in the OWASP Top 10. Also learn how to build a layered defense using multi-layered perimeter security and development best practices. This session proposes a reference architecture that includes Amazon CloudFront, AWS WAF, and Application Load Balancer.

[翻訳]

アーキテクチャのベストプラクティスとプロアクティブな制御を厳守することは、Webアプリケーションセキュリティの基盤です。 これらの手法により、開発者はより回復力のあるアプリケーションを構築できます。 特に、多層防御戦略は、開発者がアプリケーションをさらに強化し、ゼロデイ脆弱性をホットパッチし、可用性を保護するのに役立ちます。 このセッションでは、OWASPトップ10で説明されている問題を含む、一般的なセキュリティの問題について学びます。また、多層境界セキュリティと開発のベストプラクティスを使用して、多層防御を構築する方法も学びます。 このセッションでは、Amazon CloudFront、AWS WAF、およびApplication Load Balancerを含むリファレンスアーキテクチャを提案します。

登壇者:

Maritza Mills - Sr. Product Manager, Amazon Web Services Paul Oremland - Software Dev Manager, Amazon Web Services

レポート

  • 何を話すか
    • 定義と概要
    • アプリの中のセキュリティ
    • アプリの周辺のセキュリティ
    • 追加の緩和戦略

  • 多層防御
    • 複数の独立したレイヤーでのセキュリティ
    • 攻撃の勢いと効果を低下させる
    • 攻撃者が複数の段階で専門的な防御を破壊する必要がある
    • 攻撃を成功させるために難易度とコストがかかる

  • 多層防御の戦略
    • セキュアなプラットフォーム構築
    • アプリ内のセキュリティ
    • アプリ周辺のセキュリティ

  • それぞれのレイヤーでのセキュリティの例
    • AWSでは各種サービスで防御可能
    • 上位層はRoute53やCloudFrontなど
    • 4-3レイヤーはELBやVPC,EC2など

  • 上位層で守れる攻撃の例
    • HTTP FloodやBots、SQLiやApp exploitsなど

  • 中間層で守れるもの
    • SYN/ACK FloodやUDP Flood、Reflectionなど

  • 低レイヤーはAWSが管理

  • スタンダードな防御はAWS Shield
    • デフォルトでDDoSから保護
    • Route53, CloudFront等で動作

  • Slackの事例
    • APIエンドポイントを防御
    • Route53, CloudFront, ELB, EC2としていてそれぞれ守られている

  • 多層防御のアプリよりの話
    • アプリ内のセキュリティを強化(堅牢化)
    • ベストプラクティスに従った実装

  • アプリ内のセキュリティ
    • まず、何から守るのかを理解する
    • 脆弱性から守るための設計
    • 監視と検知のための仕組み

  • アプリのセキュリティはOWASP Top 10のattack vectorsが役に立つ
    • アプリセキュリティのスタンダード
    • いくつか抜粋して説明

  • SQLインジェクション
    • ステートメントやフレームワークなどを利用する
    • 自分でSQL文を構築しない

  • クロスサイトスクリプティング
    • cookieなどが盗まれる

  • エンコーディングやサニタイズが必要

  • アプリ周辺のセキュリティ

  • アーキテクチャ周り

  • AWSでは多層防御の選択肢がいろいろ

  • AWS Managed Rulesをリリースした
    • AWSのThreat Researchチームがメンテナンスする
    • コンソールから利用可能

ちなみにAWS Managed Rulesはこちらに詳細があります

[アップデート] AWS WAF向けAWS製のManaged Rulesが出ました

  • IPレピュテーションリストもAWSのThreat Researchチームがメンテナンス

  • AWS WAFのアップデート
    • ORロジックや複数の入れ子、詳細なCIDR対応
    • JSONのドキュメントでルールやACLを更新できるUpdateWebACLAPI
    • 10個のルール制限解除

  • 簡単に追加・変更するためのAPI詳細

  • アップデートの細かい説明

  • 新しいjsonフォーマットでXSSとSQLi防御を定義した場合のドキュメント

  • AWS Firewall ManagerでOrganizationsをまたがってWAF等の設定ができる
    • 設定をもれなく伝搬するサービス

  • AWS WAFでの多層防御
    • 複数のサービスで適用可能
    • 複数のルールで止められる

  • Pearsonの事例

  • 複数WAF戦略
    • CloudFrontやAPI Gatewayの前と、ALBの前で2つ
    • それぞれ別の役割
    • フロントはIPベースやレートベースなど
    • バックエンドはアプリよりの防御

  • AWS Managed Rulesを利用した戦略
    • フロントではCore、IP、SQLiルールを使用

  • Linux系サービスの手前ではLinux用ルールとPHPルール
    • 必要に応じてカスタム

  • Windows側はWindows用ルール

  • ログをKinesisで受け取って分析
    • CloudWatchでモニターやアラーム

  • 追加の緩和戦略

  • eVitaminsの事例
    • ハニーポットを利用してLambdaでBlacklistを自動生成

  • ハニーポットの動作イメージ
    • 悪いボットを検知してIPリスト更新

  • いいBotはrobots.txtを読む

  • そこから送信元IPを取得してリストに反映

  • ポケモン社の事例

  • IPのブラックリストに期限を設けておく

  • セキュリティの自動化は色んな方法がある

  • 疑わしいホストのブロック

  • 多層防御まとめ
    • セキュアなプラットフォーム利用
    • アプリ内のセキュリティ
    • アプリ周辺のセキュリティ

感想

多層防御について丁寧に説明されました。それぞれのレイヤーでのセキュリティについてしっかりと理解して対策していく必要があります。

AWS WAFは特に機能が強化されたので、ガッツリ使っていきたいですね!