AWS WAFを利用して、毎日来るDDos攻撃を防ぐ環境をサクッと実装してみました。今回は簡単に設定方法をブログします。


■Protect Web Sites & Services Using Rate-Based Rules for AWS WAF

https://aws.amazon.com/jp/blogs/aws/protect-web-sites-services-using-rate-based-rules-for-aws-waf/

レートベースのルールを適用すると、同一IPアドレスからの大量リクエストをブロックできます。DDoS攻撃やブルートフォースアタックといった攻撃からの防御が簡単にできるわけです。

・5分間に同じIPから指定回数を超えるトリガー
・条件(Condition)との組み合わせが可能
・条件を指定しない場合には全てのリクエストが対象


■AWS WAF & Shield >Create rule

とりあえずruleを作成しましょう。Rate limitは2000がデフォルトなので、5分間にリクエストが来た場合に自動的にブロックしてくれます。上記のように設定してみてください。

※ちなみにRate limitは1分間で1000などのカスタマイズはできないので注意!


■Web ACLs > Create web ACL

 

ここでは先程作ったruleにWebACLを紐付けます。今回はconditionsの設定はデフォルトで、対処のサーバのELBを指定してるだけです。ちなみにActionCountにすると、BlockせずにアタックしてきたIPを確認することができます。テストしてみましょう。


■Go Attack!!!

・Now status

まずは200が返ってきています。

・AB Test!

ApacheBench3000リクエストを投げて403が返ってくればOK。ちなみにインスタンスタイプはスケールアップしました(負荷で503になってしまうため)

・curlでステータスコードを確認

403になりました。

Web ACLの管理画面からBlockされてますね。数分後に自動で解除されました。


■CloudWatch x Slack

http://blog.serverworks.co.jp/tech/2016/02/16/lambda-cloudwatch-alarm-to-slack/

DDosが来ていることをCloudWatchやLambdaを利用してSlack通知すると計測ができますね。

https://github.com/RVIRUS0817/waf_block-ip

・Lambda
・IAM
・SNS
・CloudWatch
・Python 3.6.2


■まとめ

もっと細かく設定するにはconditionsで可能なので、あとで試してみたいと思います。あとはTerraform化かな。(以下書いた)

※追記

https://aws.amazon.com/jp/about-aws/whats-new/2019/08/lower-threshold-for-aws-waf-rate-based-rules/

Rate-based ルールが100リクエストから指定可能になったので良き!それとV2に推奨されてるのでみんな移行しよう!

参考:
https://techblog.recochoku.jp/4070

[Terraform]AWS WAF V2のRate-based rule化


カテゴリー: AWSDDoSTerraform

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください