WafCharmによるマネージドルールの管理

WafCharm(ワフチャーム)には、マネージドルールの例外登録を容易に行う機能があります。本機能についてご紹介します。AWS WAFマネージドルールで誤検知が発生したら、ルールIDごとに除外設定できます。マネージドルール全体ではBlockにするが、誤検知のルールIDのみBlockしないといった形です。手順はブログになっています。簡単にいうと、AthenaなどでAWS WAFのログを集計した上で、ruleGroupList中のterminatingRuleに含まれるruleIdを例外に登録します。正直なところ、コンソールは見やすいとは言いづらいです。WafCharmでは、専用のコンソールで例外登録やその管理を簡単に実現します。WafCharmのエントリープランでは使えないので、ご注意ください。

検証環境の作成

ALBにAWS WAFのWeb ACLを適用した環境を用意しました。ALBにAmazon Linux 2を登録します。また、WafCharmの登録に必要なため、ALBのログ出力を有効にしておきます。

CSC社のマネージドルールを適用する

AWS Marketplaceから、CSC社のルールをSubscribeします。

Web ACLにカウントモードで設定します。

Waf Charmから、Web ACL情報を登録する

設定方法はブログで公開されています。WafCharmのコンソールで、Web ACL Config>Add ACLを選択します。

AWS WAFのIDと名前を入力します。

IAMユーザーを作成し、AWSWAFFullAccessポリシーとAmazonS3ReadOnlyAccessポリシーを割り当てます。アクセスキーとシークレットキーを作成し、登録します。

WafCharmが適用するルール数を指定します。執筆時点でウェブ ACL あたりのルールの数は10までという制限があります。WAFCharmが作成するルールを制限すれば、ユーザー側でその分ルールを作成できます。今回は制限一杯の10を指定しました。

東京リージョンのALBを指定します。

ホワイトリストとブラックリストを指定します。後から変更できるので、指定なしで進みました。

ルールのアクションをカウントにしました。 マネージドルールを使うためusedにします。

FQDNとALBのログ出力先を入力します。s3://BucketName/AWSLogs/AWS-Account-ID/elasticloadbalancing/ap-northeast-1/といった形で入力します。

AWS WAFのルールが自動作成される

10分ほど待つと、Web ACLにルールが自動で追加されます。

マネージドルールと個々のルールの状況を表示する

WafCharmコンソールから、Managed Rules>Web ACL Nameを選択します。

Managed Rulesを選びます。

マネージドルールと個々のルールの状況が表示されます。マネージドルール中の全てのルールが表示されるわけではなく、ユーザーが制御できるルールが表示されています。

マネージドルールと個々のルールの動作を変更する

editから、マネージドルール全体のアクションを変更したり、個々のルールの設定を変更できます。以下の 例では、全体をNo override(Block)、1つのルールをCountにしました。

反映には10分ほど時間がかかります。"Waiting Tasks"で待機中のタスクを確認できます。

タスクが完了してからAWS WAFコンソールから確認すると、マネージドルールの動作がNo override(Blockになっています。)

また、CountにしたルールIDが例外として登録されています。

さいごに

WafCharmのマネージドルールの管理機能をご紹介しました。WAFCharmのコンソールから、マネージドルール全体の動作と個々のルールの動作を変更しました。ルールIDとルールの名前をWafCharmコンソールから確認できるため、ルールIDとルールの内容を一目で確認できました。

参考