AWS WAFで簡単にDoS攻撃を防いでみよう
DoS攻撃流行ってますね。もぐら叩きになりがちなDoS攻撃対応ですが、IPアドレスでのブロックだけなら、AWS WAFに実装された [rate-based limit] を使って割とお手軽に対応が出来そうです。
という事で、ちょっと試してみました。
今回の環境
こんな感じで簡単に構築。

EC2はそれぞれBaseAMIから作成。 攻撃は単純にApacheBenchで代用してみます。 ですので、攻撃元・攻撃先それぞれにapacheを入れておきます。
攻撃先には上流にALBを設定しておきます。 ALBでないとAWS WAFを活用出来ないので、ここは必須です。 CloudFrontを被せる手もありますが、今回はお手軽にこっち。
AWS WAF を設定する
- まずruleを作ります
AWS WAF & Shield のダッシュボードから、[Rules] > [Create rule]

できました。

閾値(Rate limit)は、一旦最低値の2,000にしておきます。 この値は、5min間にこの値のリクエストが来た場合、自動でブロックしてくれます。 ※逆に言うとこの閾値以下は全部許可
- 次にweb ACLを作ります AWS WAF & Shield のダッシュボードから、[Web ACLs] > [Create web ACL]

画面に従ってリソース指定していきます。

できました。
- 作成したweb ACLに、作成したruleを紐づけます 作成した web ACL を指定して Edit

ルールにマッチしたときに、リクエストをブロックします。 ※何もマッチしない時は全リクエスト許可です

できました。
- 通知用CloudWatchアラームを作ります AWS WAFの設定が済むと、メトリクスが見つかるはずです。 ただこのままでは攻撃を受けている時にしか通知が来ないので、攻撃予兆を見られるように準備しておきます。 さっきまでの手順と同じように、rate-basedのruleを作っておきます。




野村昌男
インフラとセキュリティメインでやっています。
L4/L3以下が好きです。