AWSのWordPressにWAFのマネージドルールを適用する

以前の記事AWS WAFにWordPress用のManaged Rulesを比較で比較しました。
その際に Trustwave Managed Rules for AWS WAF – CMS Virtual Patches (以下Trustwave社のWAF)が良いのではないかという結論になりました。

今回はそれをEC2上に構築したWordPressに設定していきます。
いくつかWAFを適用する記事が見つかるのですが、AWSコンソールが変わっていて、若干迷ったのでそのあたりも載せられればと思います。

今回はEC2にWordPressを構築して、CloudFrontを適用しています。
CloudFrontかELBを適用していないと、AWSの場合WAFが適用できないんですね
ということで今回はCloudFrontを使った設定のやり方です。

今回はWordPressとCloudFrontの設定は終わっているものとします。

Trustwave Managed Rules for AWS WAF – CMS Virtual Patches購入

まずはこちらのリンクにアクセスします
Trustwave Managed Rules for AWS WAF – CMS Virtual Patches

アクセスしたら、Continue to Subscribeをクリックします

料金などを確認したら、Subscribeをクリックします

すると WAF & Shield のページに飛ぶと思います。

Trustwave社のWAFの設定

赤丸の Switch to AWS WAF Classicをクリックします

Create web ACL をクリックして、ACLを作成します。

名前は自由です。
今回はTrustwaveにしました。

RegionをCloudFrontにするのを忘れないでください。

Create conditionsは今回はマネージドルールを適用するので、特に何も設定せずに、次に進みます。

Add rules to a web ACLのSelect a ruleから Trustwave を選択します。

次にDefault Actionが Allow all ~~ になっていることを確認したら、Review and createを押します
これが、Block All ~~ になると、すべてのアクセスをブロックしてしまいます。

CloudFrontに適用

CloudFrontのGeneralから AWS WAF Web ACLに先程作成したTrustwaveを選択すれば完了です。

性能について

AWS WAFにWordPress用のルールを設定してみるの記事と同じ4.7.1の脆弱性をついてみたんですけど、これはTrustwave社のWAFでは防ぐことが出来なかったです。
これはWAFの仕組み的に、この脆弱性がWAFに引っかかるようなものではなかったということだと思われます。
なにか特殊なスクリプトが実行されるわけではないので、WAFが検知しなかったと思われます。

おわりに

今回の脆弱性は、防ぐことはできませんでしたが、セキュリティというのは完璧にすることは出来ないと言われていますからね。
なにが自分たちにとってのベストプラクティスなのかを考えていくのが、セキュリティだと思います。
WordPressのバージョンアップをしっかりする、脆弱性のありそうなテーマ・プラグインは使わない & すぐにアップデートする 等の対応が必要なわけです。