AWS WAFにWordPress用のルールを設定してみる

独自のルールを設定するのはこの記事を見ればできます。しかし、AWSでWordPressのサイトを運用する場合、独自で設定していくのは大変です。

この記事ではWordPress用にパッケージされているManaged Rulesを利用して、簡単にルールを設定していきます。前記事と同様にロードバランサーを保護対象とします。

Managaed Rulesを使うメリット

独自ルールの導入方法を確認していただければわかりますが、サーバーに合わせたルールを一つ一つ追加していくことは現実的ではありません。

多くの脆弱性が検知されていくなか、対策のルールを次々に追加していく必要があり、専門的な知識が常時更新をかける必要が生まれるからです。

Managaed Rulesを使うことで、ルールの適用を信頼できる専門の会社に任せ、低いコストで最新の対策を運用することが可能です。

また、ルールもWordPress用などCMSに合わせたものもあるため、用途に合わせて導入できます。

使うManagaed Rules

Trend Micro Managed Rules for AWS WAFを利用していきます。

WordPress用に使うならこのパッケージが安定ですね。

設定していく

Trend Micro購入

上のリンクからページに飛び、Continue to SubscribeSubscribeで購入されます。

購入したら、サービス→セキュリティ、 アイデンティティ、 コンプライアンスからWAF&Shieldを選択、Go to AWS WAFで始めます。

Web ACLの設定

Create web ACLで始めます。 Nameを適当に設定(今回はtest-rulesとします)し、保護対象を選びます。この記事ではtest-hacknoteというロードバランサーを対象としていきます。

Conditionの作成は不要なので、Create conditionsはNextで飛ばします。

Rulesの設定

Select a ruleから購入したTrend Microを選択し、ActionNo override,Default actionAllow all requests that don't match any rulesとしておきます。

No overrideBlockを意味し、Allow all requests that don’t match any rulesはブロック対象以外のアクセスを許可する設定です。

Confirm and createで作成完了。保護対象もちゃんと設定されています。

動作テスト

WordPress 4.7と4.7.1の権限昇格に関する脆弱性についてテストしてみます。 このようにHTTPリクエストを送ると外部から内容の編集ができてしまうという脆弱性でした。Trend Microはこの脆弱性(WordPress CVE-2017-1001000)をカバーしています(詳しくはこちら)。

WAFを切ってこのリクエストをすると、書き換わりはしないもののWordpressまでは到達しています。

一方WAFありでリクエストをするとWAFの段階でブロックされ、Wordpressまで到達していないことが分かります。

おまけ:料金の比較

今回使ったTrend Micro以外にもWordpress用のManaged Rulesはいくつかあります。それらを費用の面で比較して見ようと思います。

Alert Logic Managed Rules

こちら

Charge per month in each available region (pro-rated by the hour) $20 / unit

Charge per million requests in each available region $1.6 / unit

上は一ヶ月のお値段、下は100万リクエストごとのお値段です。

Trend Micro

こちら

Charge per month in each available region (pro-rated by the hour) $5 / unit

Charge per million requests in each available region $0.2 / unit

すごく安い。

Trustwave

こちら

Charge per month in each available region (pro-rated by the hour) $15 / unit

Charge per million requests in each available region $0.9 / unit

Imperva

こちら

Charge per month in each available region (pro-rated by the hour) $30 / unit

Charge per million requests in each available region $0.6 / unit