質問: ### 前提・実現したいこと タイトルにf5アタックとしたのは今回想定しているのは いわゆるプログラムなどの攻撃ではなく通常の閲覧や サイト更新者の操作で問題が発生している可能性が高いためです。 AWSでサイトを表示させるところまではできたのですが f5キーを連打するとロードバランサの状態がOut Of Serviceになり サイト自体も応答しませんとなります。 EC2のインスタンスの状態、ステータスチェックはOK(緑のチェック)です。 そこで以下のような構成の場合どのように、どの部分で対策を取るのがお勧めでしょうか。 ### 環境、アプリケーション route53→ELB→EC2→nginx→phpfpm→RDSの構成でwordpressを動かしています。 centosは7です。 EC2、RDS共にインスタンスタイプ(CPUスペック)は一番低いものに設定しております。 DNSでのキャッシュ、wordpressプラグインを用いたサーバ側でのキャッシュも まだ設定していない状態です。(将来的にはcloudfront,s3も絡めたキャッシュを予定しています) ### 試したこと 【1】nginxのconfファイルでDDos対策として紹介されていた以下の設定をしてみました。 リロードを連打するときちんと503を返してくれるものの ページ読み込み速度が10倍近く遅くなりました。 (複数読み込んでいる画像のロード時間が顕著に遅くなっていました。) ``` http { limit_req_zone $binary_remote_addr zone=limit_req_by_ip:10m rate=1r/s; limit_req_log_level error; limit_req_status 503; } server { location / { limit_req zone=limit_req_by_ip burst=10; ... } } ``` 【2】linuxの/etc/sysctl.confファイルに以下を設定しましたがこちらも効果はありませんでした。 ``` net.ipv4.tcp_fin_timeout=15 追記後以下実行 sysctl -p ``` 【3】route53のRouting Policyのgeolocationでjapanの設定をしてみましたがgoogleのボットがはじかれてしまいやめました。 ### 疑問点 ・現在cloudfrontの導入も検討しており調査しておりますが情報が見つけられませんでした。 こちらで上記nginxのような設定が可能なのでしょうか。またroute53等でも可能なものなのでしょうか。 ・上記nginxでも実現はできたのでページが遅くならない方法がありましたらご教授願います。 ・nginxで設定した場合、もし仮にDDOSを大量に浴びてしまった場合通信量(パケット料金)は比例して増えてしまうのでしょうか。
回答: > > 通常の閲覧やサイト更新者の操作で問題が発生している可能性が高い > > > ユーザビリティを考えると、アプリケーションで対応するのが良いのではないでしょうか? 連続アクセスをアプリケーションでカウントして、一定時間内のアクセスが想定するものより多すぎる場合、警告ページに飛ばすことで対応できるかと思います。 故意の攻撃を防ぎたいのであれば、別の対策が必要かと思いますが。 どちらの対応が必要なのか整理して下さい。