独自のルールを設定するのはこの記事を見ればできます。しかし、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 Subscribe
→Subscribe
で購入されます。
購入したら、サービス→セキュリティ、 アイデンティティ、 コンプライアンスから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を選択し、Action
をNo override
,Default action
をAllow all requests that don't match any rules
としておきます。
No overrideはBlockを意味し、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