AWS WAFのマネージドルールを試してみました

みんなのウェディングアドベントカレンダーの10日目です!
こんにちは、技術部の坪井です。寒くなってきて、朝布団から出たくなくなってきました。 皆様いかがお過ごしでしょうか。

Amazon Web Services ブログにて告知された、AWS WAFのマネージドルールが利用可能になりました。「すぐに」利用可能とありますが、本当にすぐに利用可能なのか試してみたいと思います。

AWSのWAF設定は、「IP addresses」や「Cross-site scripting」などのConditionを設定し、Conditionを組み合わせたルールを作成します。web access controlに、作成したルールを適用させ、各ルール毎でマッチした場合にAllowするかBlockするかを設定します。

マネージドルールに期待する事は、最新ルールへの自動更新!これに尽きると思います。 ルールの管理が自分たちの手から離れ、更新する作業を行う必要が無くなりますので、管理コストが非常に安くすみます。

WAFのマネージドルール

2017年12月10日現在利用可能なRule(Available marketplace products)は以下でした。

  • Alert Logic’s Managed Rules for AWS WAF Virtual Patches for WordPress
  • Fortinet Managed Rules for AWS WAF - Malicious Bots
  • Fortinet Managed Rules for AWS WAF - SQLi/XSS
  • Fortinet Managed Rules for AWS WAF - General and Known Exploits
  • Fortinet Managed Rules for AWS WAF - Complete OWASP Top 10
  • Imperva - Managed Rules for IP Reputation on AWS WAF
  • Imperva - Managed Rules for Wordpress Protection on AWS WAF
  • Trend Micro Managed Rules for AWS WAF - Content Management System (CMS)
  • Trend Micro Managed Rules for AWS WAF - WebServer (Apache, Nginx)
  • Trustwave Managed Rules for AWS WAF - CMS Virtual Patches
  • Trustwave Managed Rules for AWS WAF - ModSecurity Virtual Patching

WordPressを含むCMS向けのRuleが4つあります。用途に併せて試してみると良さそうです。

お試しなので 「Fortinet Managed Rules for AWS WAF - Malicious Bots」 を試してみることにしました。悪意のあるBotアクセスを検出してくれるようです。 こちらのルールは、月額$5.00で100万アクセス毎に$0.5の料金で利用可能です。一般的なWAFより安価で利用できるので、試してみる価値はあります!

設定手順

AWS WAFのMarketplaceを選択します。

Continue、Subscribeボタンを押下し購入が完了すると、Your marketplace product subscriptionsに加わりました。

さて、早速購入したルールを利用したweb access controlを作成します。 今回、RegionsはCloudFrontを選択し、AWS resource to associateは用意しているCloudFrontのDistributionを選択しています。ACL(acess control list) nameはCloudWatch metric nameは、「Block Malicious Bots」としました。

Subscribed rulesから「Fortinet AWS WAF」を選択します。Default actionでは、「Allow all requests that don’t match any rules」を選択します。「Block all〜」を選択してしまうと、ルールにマッチしない場合のアクセスをBlockすることになります。今回の場合、悪意のあるBot以外のアクセスを全て拒否してしまうことになります。私は初回間違えてしまいました。

ここまでで、WAFの設定は完了です。ほんの10分程度で設定は完了しました。

結果

設定を開始して丸1日分期間のリクエスト数をCloudwatchで見てみましょう。残念ながらBlockedRequestsカウントが見受けられませんでした。 これは、マネージドルールを関連付けたCloudFrontのDistributionが検証用であったため、Botのアクセス来ていなかったと考えられます。

考察

  • WAFマネージドルールはすぐに利用可能

でした。非常に安価であり、従量課金であるので、複数のルールを適用し効果状況を見て利用継続の判断ができるのではないでしょうか。

今回利用した「Block Malicious Bots」を含め、マネージドルールを稼働中のproduction環境へ適用する前に、テスト実施の必要性を感じました。ルールのCondition設定の内容を知る事ができないため、必要なリクエストをブロックしてしまうのではないかという心配があります。 予め、production環境へのリクエストを複製し、検証したいdistributionへリクエストを送りCloudWathで状況を確認してみるのが良いのではないでしょうか。それについては、別の回でご報告したいと思います。

みんなのウェディング Advent Calendar 2017 の11日目の12/11(月)は、1syoさんの最近使い始めた開発支援系サービスの話です。


みんなのウェディングでは仲間を募集しています。