はじめに
CloudFrontのアクセスログを使って特定IPからの不正リクエストをAWS WAFでブロックする - 初期設定編を設定しました。
ですが、「違うログバケットのログをチェックしたい」「チェックするエラーコードを変更したい」といったことがあると思います。
その変更方法についていくつかまとめてみました。
変更リスト
・参照するログバケットの変更
・チェックするリクエスト回数の変更
・IPをブロックしている期間の変更
・チェックするエラーコードの変更
参照するログバケットの変更
CloudFrontを導入済みの場合、すでにログ出力を行なっているバケットを利用できた方が便利かと思います。
参照するログバケットの変更は、S3イベントで行います。
S3イベントの設定
変更先S3バケットのプロパティからS3イベントを選択し、「通知の追加」をクリックして設定を行います。
- 名前: イベント名を入力します。入力しない場合はランダム文字列が付与されます。
- イベント: 「すべてのオブジェクト作成イベント」にチェックをします。
- プレフィックス: 複数のログを1つのバケットに集約している場合は、出力される場所を記載します。
- サフィックス: CloudFrontのログが出力されるファイル形式「gz」を入力します。
- 送信先: 「Lambda関数」を選択します。
- Lambda: CloudFormationで作成されたLambdaを選択します。
ブロックリストの変更
WAFでブロックされるIPリストはデフォルトではスタック作成時に入力する変数(CloudFrontAccessLogBucket)のバケットに current_outstanding_requesters.json というファイル名で出力されます。
参照ログバケットを変更した際は、ここも変更した方が良いです。
OUTPUT_BUCKET = None
OUTPUT_FILE_NAME = 'current_outstanding_requesters.json'
OUTPUT_BUCKET = <ログバケット名>
OUTPUT_FILE_NAME = '<CloudFront名>_current_outstanding_requesters.json'
チェックするリクエスト回数の変更
デフォルトの設定は1分間に50回です。
回数の変更を行うには、CloudFrontのスタックの更新で RequestThreshold
のパラメータを変更します。
または、Lambda関数内の変数を修正することでも変更ができます。
以下は回数を「50(デフォルト)→100」へ変更した例です。
REQUEST_PER_MINUTE_LIMIT = 100
IPをブロックしている期間の変更
デフォルトの設定は14400sec(4時間)です。
これもリクエスト回数と同様、CloudFormationのスタック更新で変更できます。
スタックの更新からWAFBlockPeriod
のパラメータを変更してあげます。
または、Lambda関数内の変数を修正することでも変更ができます。
以下は期間を「4時間(デフォルト)→1時間」へ変更した例です。
BLACKLIST_BLOCK_PERIOD = 3600
チェックするエラーコードの変更
検知対象とするエラーコードの変更も行えます。
デフォルトでは「400, 403, 404, 405」の4つが設定されていますが、ここでの例では「401」だけチェックするように変更します。
BLOCK_ERROR_CODES = ['401']
おわりに
ドキュメントには設定変更については記載がなかったので色々見てみました。
他にも変更できる部分はありますが、とりあえずここら辺が変更できればとても使いやすくなるかなと思います。