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とルールの内容を一目で確認できました。