目次

目次

AWS WAFを使って簡単にDoS攻撃を防いでみよう【セキュリティ対策】

アバター画像
野村昌男
アバター画像
野村昌男
最終更新日2017/12/04 投稿日2017/12/04

AWS WAFで簡単にDoS攻撃を防いでみよう

DoS攻撃流行ってますね。もぐら叩きになりがちなDoS攻撃対応ですが、IPアドレスでのブロックだけなら、AWS WAFに実装された [rate-based limit] を使って割とお手軽に対応が出来そうです。

という事で、ちょっと試してみました。

今回の環境

こんな感じで簡単に構築。

AWS WAF環境例

EC2はそれぞれBaseAMIから作成。 攻撃は単純にApacheBenchで代用してみます。 ですので、攻撃元・攻撃先それぞれにapacheを入れておきます。

攻撃先には上流にALBを設定しておきます。 ALBでないとAWS WAFを活用出来ないので、ここは必須です。 CloudFrontを被せる手もありますが、今回はお手軽にこっち。

AWS WAF を設定する

  • まずruleを作ります  AWS WAF & Shield のダッシュボードから、[Rules] > [Create rule]  
    AWS WAF ルール作成

できました。

AWS WAF ルール作成完了

閾値(Rate limit)は、一旦最低値の2,000にしておきます。 この値は、5min間にこの値のリクエストが来た場合、自動でブロックしてくれます。 ※逆に言うとこの閾値以下は全部許可

  • 次にweb ACLを作ります  AWS WAF & Shield のダッシュボードから、[Web ACLs] > [Create web ACL]
AWS WAF ACL設定

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

AWS WAF ACL設定完了

できました。

  • 作成したweb ACLに、作成したruleを紐づけます  作成した web ACL を指定して Edit
AWS WAF ルール紐づけ

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

AWS WAF 紐づけ完了

できました。

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

AWS WAF Cloudwatchルール
同じく web ACL に紐づけますが、今度は Action を Count として、Blockより上位のOrderに設定します。
AWS WAF Cloudwatchルール設定
AWS WAF Cloudwatch設定完了
できました。 これをベースに、CloudWatchアラームを設定します。 今回は一回でも引っかかったらアラートメールが飛ぶようにしておきます。
AWS WAF アラーム設定
できました。 ちなみに、欠落データの処理方法は、初期値の[見つかりません(missing)]のままだと、攻撃を検知していない間ずっと「データ不足」になってしまって気持ち悪いので、[適正(good)]にしておきます。

アバター画像

野村昌男

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

目次