AWS WAF v2 検証のために EC2 + ALB を作り、Rate-based ルールを検証する

概要

やりたいこと

AWS WAF の Rate-based ルールを利用して DDoS 対策を行いたい。AWS WAFの検証 を参考にして、AWS WAF 検証用環境を作成する。

  • AWS WAF は ALB に紐付ける
  • WAF のバージョンは 2
  • HTTP接続
  • EC2 には OWASP Juice shop をホスティング

OWASP Juice shop

 OWASP Juice shop とは OWASP TOP 10 に記載されている脆弱性を含む、多数の脆弱性のある Web アプリケーション。

CTF の練習なんかに使える。

AWS WAF

AWS WAF についてはクラスメソッドのブログがとてもわかりやすくまとまっている。こちらより AWS WAF 用語を引用させていただく。

  • WebACL
    • 1つのWAFの設定の塊
    • CloudFront / ALB / API Gatewayに割り当てる単位
    • 1つのリソースに対して1つのWebACLのみ割り当て可能
    • 複数のリソースに対して同じWebACLを割り当て可能
    • 複数のルール/ルールグループを内包する
  •  ルール
    •  リクエストに対する条件のまとまり
    • 例えば指定したIPにマッチするか、特定のクエリストリングがあるか等
  •  ルールグループ
    •  ルールをまとめたもの
    • 事前に定義可能
  • アクション
    •  リクエストをルールに照らし合わせた結果をどう扱うかの設定
    • ALLOW / BLOCK / COUNTがある
    • ルール毎にアクションがあり、すべてのルールに当たらなければWebACLに設定されたDefault Actionに沿って処理される

設定

EC2作成

EC2を作成し、OWASP Juice shop を閲覧できるようにする。

  1. EC2 コンソールより
  2. EC2 インスタンスを別のアベイラビリティーゾーンで2個作成
  3. EC2 へログインし、dockerコンテナとして  OWASP Juice shop を起動

EC2 へログインしてから行うことは以下。

yum update -y
yum install -y docker
service docker start
docker pull bkimminich/juice-shop
docker run -d -p 80:3000 bkimminich/juice-shop

ブラウザよりパブリック DNS でアクセスし、 Owasp Juice shop の画面が出ればOK。

ALB作成

OWASP Juice shop を ALB 経由で閲覧できるようにする。

  1. EC2 コンソールより
  2. ターゲットグループを作成
  3. ターゲットグループにインスタンスを登録
  4. ロードバランサー (ALB) を作成し、ターゲットグループを指定

ALB のパブリック DNS で OWASP Juice shop の画面にアクセスできることを確認。

AWS WAF 作成

空の Web ACL を作成する。

  1. AWS Firewall Manager -> AWS WAF コンソールより
  2. Create web ACL
  3. Resource Type を 「Regional resources (Application Load Balancer and API Gateway)」
  4. 「Add AWS Resources」 をクリック
  5. Application Load Balancer を選択し、上記で作成した ALB にチェックし Add
  6. ルールは後で作るので全て「Next」で飛ばし、最後に「Create web ACL

Web ACLs に作成した WebACL が作成されていることを確認。

※WebACL を削除する場合、ALB と ACL を紐付けている設定(Associated AWS resources)を先に削除しておかないと、消すことができない。

AWS WAF ルール追加 (Rate-based)

今回はDDoS 対策のため、単位時間あたりのアクセス数でアクセス元 IP をブロックする Rate-based Condition の検証を行う。AWS WAF のルールを Condition と呼ぶ。

5分以内に100件以上の場合にアクセス元IPをブロックする。

  1. 作成した Web ACL を選択する
  2. Rules タグを選択
  3. Add Rules
  4. Add my own rules and rule groups
  5. Rule Builder
  6. Rate-based rule
  7. Rate limit を 100
  8. Action を「Block」
  9. Add rule
  10. Save

OWASP Juice shop に対して F5 アタックを100回繰り返すと、101回目でアクセスできないようになった。

参考

AWS WAFの検証

ステップ 3: レートベースのルールを追加する

コメント

タイトルとURLをコピーしました