AWS Shield Advanced から ALB の保護設定と AWS WAF のルール追加をやってみた

AWS Shield Advanced から ALB の保護設定と AWS WAF のルール追加をやってみた

Clock Icon2025.01.28

はじめに

AWS Shield Advanced(ASA)は、DDoS 攻撃から AWS リソースを守るためのサービスです。今まで試せる機会がなかったのですが今回少し触る機会がありました。備忘録として ALB に対しての ASA の保護設定をキャプチャを多めに設定画面を紹介します。

以下のドキュメントを文字だけ見てもいまいちよくわからないという方には参考になるかと思います。

検証環境の構成

EC2 の前に ALB があり、ALB は AWS WAF で保護しています。

ASA(2)-1.png

リソースの保護設定

まず、ALB に対して保護設定を ASA 側から行います。AWS WAF の WebACL に対してではなく、ALB や CloudFront、EIP に対してこちらの保護設定を入れます。

ASA.png

AWS Shield コンソールから「Protected resources」を選択します。
「Add protected resources」をクリックします。

Protected_resources___WAF___Shield___Global.png

リソースタイプから「Application Load Balancer」を選択します。

Add_protected_resource___WAF___Shield___Global.png

保護対象の ALB を選択し、設定を完了します。

ASA1.png

設定はこれだけでした。

Web ACL の設定

ASA から ALB を保護している WebACL に設定を追加します。

ASA(1).png

保護リソースの設定

今しがた作成した保護リソースの詳細画面から「Edit」をクリックします。

Protected_resource_detail___WAF___Shield___Global.png

既存の Web ACL を選択します。既存のレートリミットルールがなければ、「Add rate limit rule」からレートリミットルールを作成します。今回はないので新規に作成します。

Configure_protection_-_Step_1_Configure_layer_7_DDoS_mitigation___WAF___Shield___Global-3.png

こちらが ASA から作成するレートリミットルール作成画面です。テスト用にアクションを最初から Block に設定します。

Configure_protection_-_Step_1_Configure_layer_7_DDoS_mitigation___WAF___Shield___Global.png

次に ASA 専用の機能として Layer 7 DDoS mitigation を有効にします。こちらは初回利用のため、アクションは Count に設定します。

Configure_protection_-_Step_1_Configure_layer_7_DDoS_mitigation___WAF___Shield___Global-4.png

ヘルスチェックベースの DDoS 検出を設定します。

Configure_protection_-_Step_2_Configure_health_check_based_DDoS_detection___WAF___Shield___Global.png

アラームと通知の設定が可能です。

Configure_protection_-_Step_3_Create_alarms_and_notifications___WAF___Shield___Global.png

設定内容を確認します。

Configure_protection_-_Step_4_Review_and_configure_DDoS_mitigation_and_visibility___WAF___Shield___Global.png

設定完了しました。カウントモードで有効時は赤字で表示されました。

Protected_resource_detail___WAF___Shield___Global-3.png

Web ACL の確認

ASA から設定を追加した Web ACL の設定を確認します。Layer 7 DDoS mitigation ルールの優先度は 10000000 で追加されます。この優先度は通常のルール設定では使用しない低い値です。また、レートリミットのルールも追加されていました。

WAF___Shield___WAF___Shield___Global-2.png

ちなみにこちらのルールは一切変更できませんでした。

WAF___Shield___WAF___Shield___Global-3.png

Layer 7 DDoS mitigation の設定をブロックに変更

保護リソースの詳細画面から「Edit」をクリックします。

Protected_resource_detail___WAF___Shield___Global.png

アクションを Block に変更します。

Configure_protection_-_Step_1_Configure_layer_7_DDoS_mitigation___WAF___Shield___Global-5.png

ブロックモードでは表示が緑色になります。

Protected_resource_detail___WAF___Shield___Global-4.png

実際に運用するときはカウントでテストしてからブロックにすれば良さそうです。

トラブルシューティング

Layer 7 DDoS mitigation ルールの優先度は 10000000 で固定です。既存のルールと優先度が競合した場合どうなるのでしょうか?同じ優先度のルールを事前に作成しました。

WAF___Shield___WAF___Shield___Global.png

ASA の設定から Layer 7 DDoS mitigation ルール追加時にエラーになりました。

Protected_resource_detail___WAF___Shield___Global-2.png

この場合は既存のルールの優先度を事前に変更する必要があります。変更方法は以下の記事を参照ください。

https://dev.classmethod.jp/articles/how-to-change-only-the-priority-of-aws-waf/

まとめ

ASA による ALB の保護設定について必要な設定項目を確認しました。

  1. ALB や CloudFront などの保護対象リソースの登録
  2. Web ACL にルール追加

おわりに

ASA の設定を一度やってみたかったのですが、この度やっと試せる機会に恵まれました。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.