はじめに
- Solution Architect の勉強で出てきた問題に WAF サンドイッチのアーキテクチャができてたのでその理解のため
- 参考にした資料 (AWS初心者向けWebinar AWS上でのDDoS対策) が 2015 年のものなので、現在ではベストプラクティスではないかもしれないので注意
- ELB を利用している点や、AWS WAF が ALB に適用できるようになっている点などから
DDoS とは
- Distributed Denial of Service Attack のこと
-
ウェブサイトやアプリケーションをエンドユーザーが利用できないようにすることを目的とした攻撃
- 攻撃者は、これを行うために、ネットワークやその他のリソースを消費するさまざまな手法を用いて、正規のエンドユーザーのアクセスを中断させる
- DoS とは異なり、攻撃者は複数のシステムを使用して標的に対する攻撃を指揮する
WAF (ウェブアプリケーションファイアウォール) とは
- ウェブトラフィックにルールセットを適用するフィルター
- 通常、これらのルールはクロスサイトスクリプト (XSS) や SQL インジェクション(SQLi) といった弱点に対応
-
HTTP GET または POST フラッドを軽減して、DDoS に対する弾力性を構築するためにも役立つ
- HTTP レート制限で、特定の期間にわたりエンドユーザーごとにサポートされる HTTP リクエストのしきい値を決めることが可能
- そのしきい値を超えると、WAF は新しいリクエストをブロックまたはバッファリングし、他のエンドユーザーがアプリケーションにアクセスできるようにできる
- HTTP リクエストを検査し、通常のパターンに準拠しないものを識別
- 文字制限を超えているログインを防止したり、全件検索を防止するなど
- HTTP レート制限で、特定の期間にわたりエンドユーザーごとにサポートされる HTTP リクエストのしきい値を決めることが可能
- AWS WAF は、CloudFront、Application Load Balancer (ALB)、API Gateway にデプロイできる
- AWS WAF とは別に AWS Market Place にて EC2 にデプロイするための WAF アプリケーションが販売されている
WAF サンドイッチを利用する目的
- アプリケーションレイヤーで発生する DDoS 攻撃を防ぐため
- インフラストラクチャ攻撃と比較して、トラフィックのボリュームが低いウェブアプリケーションがよく標的になる
- 攻撃を軽減するには、インフラストラクチャの一部に WAF を含める
- ここで利用する WAF は AWS WAF ではなく、EC2 にデプロイした WAF アプリケーション
WAF サンドイッチのアーキテクチャ
-
2つの ELB の間に WAF アプリケーションを乗せた EC2 インスタンスを Auto Scaling グループで実行
- すべての HTTP リクエストを検査するため、トラフィックスパイクに対応する必要があり、Auto Scaling グループが必要
- トラフィックが検査およびフィルタリングされると、WAF EC2 インスタンスは内部のバックエンドロードバランサーにトラフィックを転送し、このロードバランサーがトラフィックをアプリケーションの EC2 インスタンス間に分散