WafCharmのフリートライアルでわかるルールの自動追加機能とメール通知
WafCharm(ワフチャーム)はWebサイトに対する攻撃をAIで学習することにより最適なルールを自動運用するサービスです。WafCharmの30日間のフリートライアルを試してみました。WafCharmによって、AWS WAFのルールが自動作成される様子がわかりました。ルールで検知した攻撃はメール通知されます。
トライアル申し込み
WafCharmのページから、無料トライアルを申し込みます。登録にはメールアドレス、住所、クレジットカード情報が必要です。
検証環境の作成
ALBにAWS WAFのWeb ACLを適用した環境を用意しました。ALBにAmazon Linux 2を登録しました。 WafCharmの登録に必要なため、ALBのログ出力を有効にしておきます。
Web ACLのルールはなし。デフォルトアクションはAllowにしました。
WafCharmの設定
設定方法はブログで公開されています。WafCharmのコンソールで、Web ACL Config>Add ACLを選択します。
AWS WAFのIDと名前を入力します。
IAMユーザーを作成し、AWSWAFFullAccess
ポリシーとAmazonS3ReadOnlyAccess
ポリシーを割り当てます。アクセスキーとシークレットキーを作成し、登録します。
WafCharmが適用するルール数を指定します。執筆時点でウェブ ACL あたりのルールの数は10までという制限があります。WAFCharmが作成するルールを制限すれば、ユーザー側でその分ルールを作成できます。今回は制限一杯の10を指定しました。
東京リージョンのALBを指定します。
ホワイトリストとブラックリストを指定します。後から変更できるので、指定なしで進みました。
ルールのアクションをカウントにしました。 マネージドルールは使わないため、unusedにします。
FQDNとALBのログ出力先を入力します。s3://BucketName/AWSLogs/AWS-Account-ID/elasticloadbalancing/ap-northeast-1/
といった形で入力します。
AWS WAFのルールが自動作成される
ここまでの手順が完了すると、Web ACLにルールが10個登録されます。AWS WAFマネージドルールと比較すると、実際にどのようなルールが適用されているかわかる点が良いですね。
疑わしいアクセスのルールを見ると、URIに特定の文字列が含まれているか見ていました。
ブラックリストには、203のIPアドレスが追加されていました。
ブラックリストは、CSC社のIPレピュテーションなどから作成されます。
WafCharmが提供しているBlacklist機能とはなんですか? 主に3つのBlacklist機能があります。 ・アクセスログを数百ものシグネチャに再マッチング処理をしており、都度Blacklist登録する機能(1時間毎) ・CSC独自のIPレピュテーションによるBlacklist機能(1日毎) ・WafCharm管理画面より、お客様自身でIPアドレスを登録するBlacklist機能(設定後、5~10分程度で反映)
引用元:WAFCharm FAQ
月次レポート機能/通知機能を利用する
マニュアルに従い設定します。マニュアルが画面キャプチャを含む詳細なものなのでこちらでは手順は省きますが、Kinesis Data FirehoseでWAFのログをS3に出力します。また、出力されたログをCSC社のS3に転送するLambdaを設定します。前の月に検知があった場合にレポートを利用できます。検証を行ったのは9月ですので、10月にはレポートが表示されると思われます。
レポート機能の雰囲気はこちらのブログがわかりやすいです。Kinesis Data FirehoseとLambdaを設定した上で、WAF Charmコンソールからメール通知を有効にすると、攻撃発生時にメールを受け取れます。
メールの送信元は「wafcharm-notification@cscloud.co.jp」で、以下のような形で届きます。参考までに、2日間で海外からの/phpMyAdmin/scripts/setup.php
への接続を3件検知しました。
さいごに
WafCharmのフリートライアルを試してみました。WafCharmをセットアップすることで、AWS WAFに自動でルールが作成されます。ルールの内容はユーザーでも確認ができるため、AWS WAFマネージドルールと比べると透明性が高いと言えます。また、CSC社のIPレピュテーションを利用できる点でも優れているかと思います。攻撃を検知した時にメールを受け取れたり、前の月のレポートを受け取れるので運用面で楽でしょう。