AWS WAFの検知メトリクスをメールやSNSに通知する方法

この記事を書いたチーム:chocochip
AWS WAFの検知メトリクスをメールやSNSに通知する方法 Smallit 技術ブログ

別記事『AWS WAFで悪質なスクレイピングを防ごう』では、AWS WAFを使ってスクレイピングを防ぐ方法を紹介しました。しかしながら、WAFが攻撃を防いでも、コンソールを24時間監視でもしない限り、いつ、どこから攻撃がきたのかを知る由がありません。もしWAFが誤って検索エンジンのIPアドレスをブロックしたら、SEOに影響を及ぼす可能性もあります。そのため、今回はWAFが攻撃を検知したら自動的にメールやSNSに通知する方法について紹介します。

SNSの作成 

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

まずは通知先を指定するため、AWS SNSを作成します。トピックは「スタンダード」に設定し、名前を入力したらそのまま作成します。他の設定は全部デフォルトで大丈夫です。 

トピックを作成し終えたら、そのトピックのサブスクリプションを作成します。今回はメールで設定しましたが、SMSやチャットアプリのエンドポイントでも設定可能です。メールで設定した場合、該当メールアドレスにAmazonから承認メールが来るので、承認したら利用可能になります。下記スクショのように、「ステータス」が「確認済み」になったら、SNSの準備は完了です。 

 CloudWatchアラームの作成 

次にCloudWatchアラームを作成します。メトリクスは「AWS/WAFV2」の中から通知させたいWAFルールのメトリクスを選択します。「統計」については「合計」をおすすめします。今回作成したアラームは、1分間にIPブロックが50件以上検知したら発報するように設定しています。メトリクスと閾値が設定できたら、アクションを先ほど作成したSNSトピックに設定して、そのままアラームを作成します。 

*CloudWatchアラーム作成時に設定するメトリクスのルール名は下記スクショのようにWAFの「Logging and metrics」から確認できます。 

 動作確認 

 では、わざとWAFに検知されてみて、動作確認してみましょう。WAFを検知させる方法は下記の記事を参照してください。 

AWS WAFで悪質なスクレイピングを防ごう 

WAFに検知されたら、スクショのように先ほど作成したアラームが「アラーム状態」になりました。その後、SNSに設定したメールアドレスにメールが届きました。また、CloudWatchアラームのコンソール画面から検知件数が確認できます。 

 まとめ 

このように、CloudWatchとSNSを利用すれば、WAFが攻撃を検知したらすぐにメールやメッセージを受け取ることができます。誤ってブロックしたIPアドレスをホワイトリストに入れたり、攻撃の多いIPアドレスをブラックリストに入れたりするなど、サービスの向上に役立つではないでしょうか。 

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス