AWS Shield Advanced から ALB の保護設定と AWS WAF のルール追加をやってみた
はじめに
AWS Shield Advanced(ASA)は、DDoS 攻撃から AWS リソースを守るためのサービスです。今まで試せる機会がなかったのですが今回少し触る機会がありました。備忘録として ALB に対しての ASA の保護設定をキャプチャを多めに設定画面を紹介します。
以下のドキュメントを文字だけ見てもいまいちよくわからないという方には参考になるかと思います。
- Shield Advanced を使用したリソース保護の追加と設定 - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced
- AWS WAF でアプリケーションレイヤー (レイヤー 7) DDoS 保護を設定する - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced
検証環境の構成
EC2 の前に ALB があり、ALB は AWS WAF で保護しています。
リソースの保護設定
まず、ALB に対して保護設定を ASA 側から行います。AWS WAF の WebACL に対してではなく、ALB や CloudFront、EIP に対してこちらの保護設定を入れます。
AWS Shield コンソールから「Protected resources」を選択します。
「Add protected resources」をクリックします。
リソースタイプから「Application Load Balancer」を選択します。
保護対象の ALB を選択し、設定を完了します。
設定はこれだけでした。
Web ACL の設定
ASA から ALB を保護している WebACL に設定を追加します。
保護リソースの設定
今しがた作成した保護リソースの詳細画面から「Edit」をクリックします。
既存の Web ACL を選択します。既存のレートリミットルールがなければ、「Add rate limit rule」からレートリミットルールを作成します。今回はないので新規に作成します。
こちらが ASA から作成するレートリミットルール作成画面です。テスト用にアクションを最初から Block に設定します。
次に ASA 専用の機能として Layer 7 DDoS mitigation を有効にします。こちらは初回利用のため、アクションは Count に設定します。
ヘルスチェックベースの DDoS 検出を設定します。
アラームと通知の設定が可能です。
設定内容を確認します。
設定完了しました。カウントモードで有効時は赤字で表示されました。
Web ACL の確認
ASA から設定を追加した Web ACL の設定を確認します。Layer 7 DDoS mitigation ルールの優先度は 10000000 で追加されます。この優先度は通常のルール設定では使用しない低い値です。また、レートリミットのルールも追加されていました。
ちなみにこちらのルールは一切変更できませんでした。
Layer 7 DDoS mitigation の設定をブロックに変更
保護リソースの詳細画面から「Edit」をクリックします。
アクションを Block に変更します。
ブロックモードでは表示が緑色になります。
実際に運用するときはカウントでテストしてからブロックにすれば良さそうです。
トラブルシューティング
Layer 7 DDoS mitigation ルールの優先度は 10000000 で固定です。既存のルールと優先度が競合した場合どうなるのでしょうか?同じ優先度のルールを事前に作成しました。
ASA の設定から Layer 7 DDoS mitigation ルール追加時にエラーになりました。
この場合は既存のルールの優先度を事前に変更する必要があります。変更方法は以下の記事を参照ください。
まとめ
ASA による ALB の保護設定について必要な設定項目を確認しました。
- ALB や CloudFront などの保護対象リソースの登録
- Web ACL にルール追加
おわりに
ASA の設定を一度やってみたかったのですが、この度やっと試せる機会に恵まれました。