7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

あなたしばらく出禁ね!【AWS WAF】

Last updated at Posted at 2022-12-23

同一のIPからアタックのような大量のアクセスを受けた場合に、
AWSのWAFを使ってしばらくそのIPを出禁にするようにしました
サクッと設定が可能ですので、攻撃等を防ぐ一手目として設定してみてください

設定

Web ACLs(Access Control List)は任意の名称で作成、ALBやCloudFrontなどの接続先を設定しておきます
作成したWeb ACLsに対してルールを付与します
スクリーンショット 2022-12-24 2.35.43.png
Add rulesより、Add my own rules and rule groupsを選択
ルールタイプはRule Builderを選択します

スクリーンショット 2022-12-24 2.38.12.png
任意の名前を入力しましたら、次はTypeをRate-based ruleというものにします

Rate limitは5分間でのアクセス数の上限を設定します
今回は10,000リクエストに到達すると出禁をさせることにしました
IPアドレスを対象に制限をかけるのでSource IP addressに
最後の項目は、一部にルールを設けたい場合のみ設定しますが、今回はサイト全体が対象です
スクリーンショット 2022-12-24 2.42.37.png

Actionを設定していきましょう
出禁にするのでもちろんBlockを選択
Custom responseを設定したかったので、Response code 429を返すようにしました
スクリーンショット 2022-12-24 2.47.48.png

また、レスポンスをbodyを任意のものを返したかったので、
このようなJSON形式でstatusには429, error内容としてToo Many Requestsを返すように設定しました
スクリーンショット 2022-12-24 2.49.03.png

以上で設定は完了なので、Add ruleをクリックしましょう
これで無事、屈強な門番を構えることができました!

確認

本当にブロックされるかどうかなどはApacheBenchを使って、大量のアクセスを行なってみてください
ある一定以上になるとブロックされているのが確認できるかと思います
ブロックされている事を確認したのちに、curlコマンドやPostmanなどを使ってアクセスを試みるとカスタムされたレスポンスが返ってくることも確認できました

なお、ブロックは5分間はブロックされ、その後問題がなければ解除されるみたいですが、詳細な時間等はわかりませんでした
私は、門番の気分次第なのかなと呑気に捉えています:relaxed:

これにて失礼

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?