Azure Application Gateway WAF v2 の HTTP DDoS ルールセットを設定してみた

Azure Application Gateway WAF v2 の HTTP DDoS ルールセットを設定してみた

2026.02.11

いわさです。

最近個人的な都合で Microsoft Azure の Application Gateway を使ったワークロードを構築することが多いです。
そんな中プランで WAF v2 を選択することも多いのですが、その時マネージドルールを構成すると思います。

少し前のアップデートで、HTTP DDoS ルールセットがプレビューで使えるようになっていました。

https://azure.microsoft.com/en-us/updates?id=530609

設定みましたので紹介します。

設定方法

検証環境ですが、以下の Bicep テンプレートで Application Gateway をデプロイし、SKU だけ手動で変更します。

https://github.com/Tak1wa/azure-bicep-appgw

WAF ポリシーを新規作成してポリシーのマネージドルールを変更してみましょう。
次のように割り当て画面から HTTP DDoS ルールセットが選択できます。

4DA541F0-E6D1-434B-AC1E-6FD5257F2B02.png

冒頭のアナウンスではプレビューポータル(https://preview.portal.azure.com/)経由での利用が必要と記載されていましたが、私が確認したところ標準ポータルからも利用が出来そうでした。次のように HTTP DDoS ルールセットで「Microsoft_HTTPDDoSRuleSet_1.0」が選択できますね。

66F50AB4-88C6-4452-84C6-AAFFF94988FA.png

上記を選択すると、次の2つのルールが追加されます。

3366D451-4688-4B1B-9D33-ADA8B22D19C7.png

ルールや仕組みについて以下のドキュメントに記載があります。
優先度としてカスタムルールよりも前に評価されます。対象 IP アドレスからのリクエストレートなどがしきい値を超えた場合にペナルティボックスに配置され一定期間ブロックされるようです。

https://learn.microsoft.com/en-us/azure/web-application-firewall/ag/ddos-ruleset

ルールは2つで、高レートなクライアントを検出するルール 500100 と、高レートなボットを検出するルール 501100 が用意されています。
しきい値のレベルとアクションを変更することができます。「秘密度の変更」からルールのしきい値を変更することができます。デフォルトは Medium(中)が設定されていて、高や低も選択できます。高を設定することでよりしきい値を下げることができます。

D83E42AD-46F1-4526-93AF-C838F694FF2C.png

動作確認

今回試しに Apache Bench を使って大量にリクエストを送ってみました。
が、高レートとして判断されなかったですね。残念ながら今回はうまく動作の確認が出来ませんでした。

% ab -n 5000 -c 100 -i http://20.78.76.67/
This is ApacheBench, Version 2.3 <$Revision: 1913912 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 20.78.76.67 (be patient)
Completed 500 requests
Completed 1000 requests
Completed 1500 requests
Completed 2000 requests
Completed 2500 requests
Completed 3000 requests
Completed 3500 requests
Completed 4000 requests
Completed 4500 requests
Completed 5000 requests
Finished 5000 requests


Server Software:        nginx
Server Hostname:        20.78.76.67
Server Port:            80

Document Path:          /
Document Length:        0 bytes

Concurrency Level:      100
Time taken for tests:   15.845 seconds
Complete requests:      5000
Failed requests:        0
Total transferred:      3625000 bytes
HTML transferred:       0 bytes
Requests per second:    315.56 [#/sec] (mean)
Time per request:       316.896 [ms] (mean)
Time per request:       3.169 [ms] (mean, across all concurrent requests)
Transfer rate:          223.42 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       29  258 598.7     35    4035
Processing:    33   54  20.7     46     189
Waiting:       33   53  20.7     46     189
Total:         64  311 602.4     83    4117

Percentage of the requests served within a certain time (ms)
  50%     83
  66%     95
  75%    112
  80%    133
  90%   1098
  95%   2081
  98%   2125
  99%   3084
 100%   4117 (longest request)

なお、高レートと判断された場合は 15 分間ブロックされるようです。
その間はペナルティボックスに IP アドレスなどが配置されて管理されるようです。
ペナルティボックスに格納されたかどうかは Azure モニターのメトリクスから確認が出来ます。

Application Gateway のメトリックスから次の2つのメトリックが確認できました。

3977A628-29F7-4744-A682-AD0C43EFC6D4.png

さいごに

本日は Azure Application Gateway WAF v2 の HTTP DDoS ルールセットを設定してみました。

うまく検出の確認は出来なかったのですが、一応設定出来ました。メトリクスからの確認方法もしれました。
もう少し負荷テストなどをかけて検出テストをしてみたいなと思います。

この記事をシェアする

FacebookHatena blogX

関連記事