ハマログ

株式会社イーツー・インフォの社員ブログ

AWS WAFの検知内容をAmazon SNSで通知する

はじめに

AWS WAFで、Amazonのマネージドルールが利用できるようになりました。
AWSManagedRulesCommonRuleSetとかかなりいいよ!

WAFを導入しただけでは、攻撃をきちんと検知しているかわからず、場合によっては正常なアクセスを誤検知によりブロックしてしまっている可能性があります。

そこで、WAFコンソール(直近3時間)もしくはCloudWatchでモニタリングする方法は用意されているのですが、いちいち情報を見に行くのがめんどくさいので、内容を通知するように設定してみました。

AWSのサービスのみで、AWS WAF, Kinesis, S3, Lambdaを利用しています。
こんな感じになります

AWS WAFの設定

ロギング設定を有効化します。

S3の設定

バケットを作ります。バケット名をaws-waf-logs-で始める必要があります。
今回は、aws-waf-logs-corporate-s3 としました(-s3は冗長だった)

Kinesisの設定

Kinesisを設定して、WAFのログがS3に格納されるようにします。Kinesisの種類を選択する必要がありますが、「Kinesis Firehose 配信ストリーム」を選択します。
宛先をS3の先ほど作成したバケットとし、容量削減のためにgzip圧縮ありを選択。直近のブロックログはAWS WAF側の設定画面で確認できるため、バッファ時間は最大の900秒としました。
ログきました

Lambdaの設定

さて、ここまででWAFのログがS3に格納されるようになったので、s3 selectもしくはAthenaを利用してログの内容は確認できるようになりました。

さらに、Lambdaでブロックログをメール送信するように設定してみます。
コードはgistに置きました
S3に格納されたAWS WAFログをSNSで通知する(Lambda, Node.js)

また、トリガーにS3のObjectCreatedByPutを指定しました。

結果

以上で、ブロックログが通知されるようになりました。

課題

・Kinesisのバッファが最大900秒なので、15分に1回通知がくる。もっと長くしたい。
・通知が多すぎて見なくなる問題。ポートスキャナーとかAWS Security Scannerとか既知のUAは通知しないようにしたほうがいいかも。
・Node.jsにバグがあったらそもそも通知がこないという不安との戦い
AWSAWS WAFnode.jsS3SNSTopicWAFトピック通知運用運用監視

kaneko tomo   kaneko tomo   2019年12月25日


関連記事

花見月 2020

天候その他諸々が落ち着かない三月も半ば。はて、植物鑑賞をどうすべきかと思案してい…

2018社員旅行(大型サロンバスで行く、河口湖温泉1泊2日)

こんにちは、イーツー・インフォです。少し時間が立ってしまいましたが、7/14~1…

言葉とか目的とか

こんにちは。初めてブログ書かせてもらうので、「何をどう書いたら言葉って伝わるのか…


← 前の投稿

次の投稿 →