AWS WAF のマネージドルールでリクエストを許可/ブロック(Allow/Block)する設定方法を教えてください

2021.08.13

困っていた内容

AWS WAF コンソールでマネージドルールのルールアクションを変えたいのですが、「カウント」しか見当たらず許可・ブロックに該当する項目が見当たりません。

現状すべてのルールをカウントモードで実行していますが、一部ルールをブロックにして動作確認を行いたいです。

どのようにすればマネージドルールグループのルール毎のリクエスト許可・ブロックができますか?

どう対応すればいいの?

AWS WAF コンソールのマネージドルールグループは「Rule action」の編集項目に Count のトグルスイッチがあります。

このスイッチのオン/オフ変更でルール毎のリクエスト許可・ブロックができます。
スイッチオン/オフ後の挙動は以下の通りです。

  • スイッチオン: カウント有効(監視)、かつ許可
  • スイッチオフ: カウント無効、かつブロック(拒否)

AWSマネージドルールAWS WAF - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

マネージドルールに一致するリクエストをカウント(監視)するか、ブロックするかを選択できます。

動作例

Bot Control ルールグループを例として紹介します。

トグルスイッチがオンの状態

$ curl -sLI -A "test-bot" https://example.com/ninja.jpg -o /dev/null -w '%{http_code}\n'
200

→ HTTP ステータスコード 200: OK、アクセス成功

トグルスイッチがオフの状態

SignalNonBrowserUserAgent(Webブラウザからではないと思われるユーザーエージェント文字列を検査します。)のスイッチオフ

$ curl -sLI -A "test-bot" https://example.com/ninja.jpg -o /dev/null -w '%{http_code}\n'
403

→ HTTP ステータスコード 403: Forbidden、アクセス拒否

運用観点でのワンポイント

AWS WAF のルールをルールビルダーで作成する場合は、条件に一致した場合のアクションが 3 種類(Allow/Block/Count)の中から選択できますが、マネージドルールの場合は上述のとおり 2 種類(Allow+Count/Block)の中から選択することになります。

マネージドルール導入時のベストプラクティスとしては、テスト環境でカウントモード(Override rule group action to count 設定がオン)で動作チェックし、意図した動作であることを確認後、本番環境でカウントモードを外し導入する形となります。

AWSマネージドルールAWS WAF - AWS WAF、AWS Firewall Manager、および AWS Shield Advanced

ベストプラクティスとして、本番稼働環境でルールグループを使用する前に、アクションの上書きをカウントに設定して、非本番稼働環境でテストします。Amazon CloudWatch メトリクスをAWS WAFサンプリングされたリクエストまたはAWS WAFログ。ルールグループが目的どおりに実行できたら、グループのオーバーライドを削除します。

参考資料