同一のIPからアタックのような大量のアクセスを受けた場合に、
AWSのWAFを使ってしばらくそのIPを出禁にするようにしました
サクッと設定が可能ですので、攻撃等を防ぐ一手目として設定してみてください
設定
Web ACLs(Access Control List)は任意の名称で作成、ALBやCloudFrontなどの接続先を設定しておきます
作成したWeb ACLsに対してルールを付与します
Add rulesより、Add my own rules and rule groupsを選択
ルールタイプはRule Builderを選択します
任意の名前を入力しましたら、次はTypeをRate-based ruleというものにします
Rate limitは5分間でのアクセス数の上限を設定します
今回は10,000リクエストに到達すると出禁をさせることにしました
IPアドレスを対象に制限をかけるのでSource IP addressに
最後の項目は、一部にルールを設けたい場合のみ設定しますが、今回はサイト全体が対象です
Actionを設定していきましょう
出禁にするのでもちろんBlockを選択
Custom responseを設定したかったので、Response code 429を返すようにしました
また、レスポンスをbodyを任意のものを返したかったので、
このようなJSON形式でstatusには429, error内容としてToo Many Requestsを返すように設定しました
以上で設定は完了なので、Add ruleをクリックしましょう
これで無事、屈強な門番を構えることができました!
確認
本当にブロックされるかどうかなどはApacheBenchを使って、大量のアクセスを行なってみてください
ある一定以上になるとブロックされているのが確認できるかと思います
ブロックされている事を確認したのちに、curlコマンドやPostmanなどを使ってアクセスを試みるとカスタムされたレスポンスが返ってくることも確認できました
なお、ブロックは5分間はブロックされ、その後問題がなければ解除されるみたいですが、詳細な時間等はわかりませんでした
私は、門番の気分次第なのかなと呑気に捉えています
これにて失礼