WafCharm 通知機能の構築とテスト方法

9月 3, 2020AWS,AWS WAF,WafCharm,セキュリティ関連

概要

  • 前回までは、AWS WAF + WafCharm をトライアルで導入する方法と、WafCharm レポート機能の構築方法を手順にまとめました。今回はWafCharm の通知機能を追加設定して、テスト用に投げたリクエストがブロックされること、正しくメール通知がされることまでを確認したいと思います。
  • 前回までの、AWS WAF + WafCharmの構築については、下記2つの記事を参照ください。

 

AWS WAF / WafCharmの構成図

  • AWS WAF および WafCharm、WafCharmレポート機能/通知機能の構成図を書いてみました。
  • 下記に簡単な処理の流れを記載します。①~③は前々回の記事で手順を説明しています。④~⑧は前回の記事で手順を説明しています。今回の記事でご紹介する範囲は、⑨となります。
    • ①AWS WAFと連携するCloudFront (あるいはALB) のアクセスログがS3 バケットに格納されます。
    • ②WafCharmはCloudFront (あるいはALB) のアクセスログを取得します。(WafCharm設定時にS3 バケットを参照するためのアクセスキーを登録する)
    • ③WafCharmはCloudFront (あるいはALB) のアクセスログを元に判定したルールをWeb ACLに配信します。(WafCharm設定時にWeb ACLを更新するためのアクセスキーを登録する)
    • ④Kinesis Data Firehoseを作成し、AWS WAFと連携、WAFのLoggingを有効にします。
    • ⑤Kinesis Data Firehoseから出力されたWAFログがS3 バケットに格納されます。
    • ⑥S3 バケットのオブジェクト作成をトリガにWafCharm連携Lambdaが起動します。
    • ⑦WafCharm連携LambdaがWAFログをWafCharm側に転送します。(Lambdaには必要なロールを付与します)
    • ⑧管理者から月次レポートが閲覧可能となります。
    • ⑨検知があった場合に、WafCharmからメール通知されます。

 

WafCharm 通知機能の構築方法

構築マニュアルについて

  • 今回の構築は、WafCharmの公式マニュアルである「レポート機能/通知機能 利用マニュアル new AWS WAF Ver 1.0」を参考にして、構築を進めます。必要に応じて、最新の公式マニュアルを参照ください。
  • 私がハマった部分として、マニュアルには新旧があるということ。新旧の相違は、マニュアルに記載のコードがWAF v1(classic)用からWAF v2(new)用に変わっていることです。

レポート機能/通知機能 利用マニュアル WAFv2用

 

前提条件

  • 前提として、前回の記事でご紹介したWafCharm レポート機能の構築までが完了している必要があります。

 

Web ACL ConfigのNotification設定

  • WafCharm管理画面より、Web ACL Configs → Web ACLを選択します。
  • Web ACL Config → Notification を選択し、Notification のEdit をクリックします。

  • 下記画面で、「WafCharm Email Notificatoin」をOFF から ON に変更します。
  • 「Managed Rule Email Notificatoin」はOFF から変更しません。マネージドルールはWAF Classic でサポートされる機能で、new WAF では利用しない設定値のようです。

  • 次に、Notification email のEdit をクリックします。初期は管理者のメールアドレスのみが入力されています。必要に応じて、2人目以降のメールアドレスを入力します。

  • これで通知機能の構築は終わりです。

 

WafCharm 通知機能のテスト方法

  • 次に、AWS WAF / WafCharm にテスト用のリクエストをブロックするルールを設定し、今回の通知機能が正しく構築されたか、実際にメールが通知されるかをテストします。

 

Blacklist のルールにテスト用のIPを追加する

  • (事前に)WafCharm のBlacklist にテスト用のIPを追加します。

 

  • 翌日、WafCharmからルールの更新が行われ、Blacklist のルールに含まれるIPが追加されたことを確認します。

 

 

URIに特定の文字列が含まれるリクエストをブロックするルールを追加する

  • 次は、AWS WAF のコンソールから、Web ACLのルール追加を行います。Web ACLを選択し、Rulesタブを開きます。[Add rules] → [Add my own rules and rule groups] を押します。

 

  • 下記の画面が表示されるため、Rule typeに「Rule builder」、RuleのNameの入力、Typeに「Regular rule」を指定します。
  • 次に、If a requestを「matches the statement」とし、StatementのInspectに「URI Path」、Match typeに「Contains words」、

 

  • また、Then のActionには、「Block」を指定しています。最後に、[Add rule]を押します。

 

  • Set rule priorityを適切に設定します。

 

  • Web ACLに、テスト用のリクエストをブロックするルールが追加されました。

 

 

ブロック or カウントされたリクエストのメール通知を確認する

  • ブラウザからパスに"test999″ の文字列を追加してアクセスを試みます。AWS WAF から403 Forbiddenのエラーが返り、リクエストがブロックされたことが分かります。

  • また、Web ACLのOverviewより、リクエストの日時, Source IP, URI およびAction(Allow or Block)などの結果が確認できます。なお、このリクエスト結果は、過去3時間まで見ることが可能です(3時間経過すると見れません)。

 

  • 最後に、ブロック or カウントされたリクエストのメール通知を確認します。下記は、Blacklist に追加したIP からのリクエストを検知してメール通知された結果です。ActionはWafCharmの設定通り、"COUNT" となっています。

 

  • 下記は、URIに特定の文字列が含まれるリクエストを検知してメール通知された結果です。Actionは"BLOCK" となっています。