WordPress on Lightsail のセキュリティについて

 今までに CloudFront (CDN) の導入や可能限りの最新バージョンの導入で攻撃力(パフォーマンス)を上げてきたが、ここで防御力(セキュリティ)について考えてみようと思う。

まずは最悪のケースに備える

 防御力を上げると言っても色々な方法があるが、まずは最悪のケースだけは回避出来る方法を実施する。最悪のケースとは何かと言うと以下のことだと思う。

最悪なケース

  • ドメインの乗っ取り
  • AWS のルートアカウントの乗っ取り

 ドメインが乗っ取られれば DNS を書き換えられて悪意あるページにビューアを誘導されてしまうかもしれません。今まで育て上げてきたドメインの価値を著しく下げることになるでしょう。もしかしたら身代金も要求されるかもしれません。
 また AWS であればコンテンツの書き換えや、リソースが削除されてしまうかもしれません。バックアップが消されてしまえば復旧は絶望的です。

 この2つに比べたらコンテンツが改ざんされたり、サイトがダウンするなどは可愛いものです。いずれの場合も、例えばスナップショットからサーバーを復元し、DNS を書き換えることで復旧は可能です。しかし上記いずれかが行われた場合それも出来なくなります。AWS やドメインレジストラに問い合わせてアカウントを復旧してもらうことは出来るとは思いますが、イレギュラーな対応なので時間(恐らくは数日単位)が掛かると思います。

 ただし上記の対応策は簡単です。二段階認証などを導入してログインのセキュリティを高めます。WordPress の運用上、ドメインレジストラや AWS の管理コンソールにログインすることは稀だと思うので、ログインが不便になるくらいに何重にもセキュリティを張るぐらいが丁度良いです。

 AWS では多要素認証 (MFA) を、ドメインレジストラは様々ですが、今の時代二段階認証がないところなんてあるのだろうか。独身奇族はお名前.comなのでメールでの二段階認証を入れています。

普段から心がけること

これだけはやっておこう

  • プログラムのアップデート(リリースされたから数日以内には
  • 導入するプラグインやテーマは頻繁に開発されているかチェック

 その使いやすさ故に非常に狙われやすい WordPress のセキュリティで実施するべきことは沢山ありますが、セキュリティは突き詰めようと思うとキリがありませんし、運用コストも青天井です。バランスを考えて対応を決めていく必要がありますが、その中でも絶対にやらないといけないと独身奇族が思っているのが「プラグラムの最新化」です。
 先日ミドルウェアのアップデートをしましたが、同様の手順を定期的に実施する必要があります。

 WordPress 本体、プラグイン、ミドルウェアなどは常日頃アップデートされています。勿論機能面だけじゃなくてセキュリティ面も向上されています。ソフトウェアなどのアップデートは環境次第では容易に出来ない場合もあるとは思います。アップデートしたら動かなくなって切り戻したって話はよくある話です。ただそこで「アップデートしなくても動いているからいいや(´・ω・`)b」とアップデートを怠っていると、そのシステムは世の中ではとっくに対策されているセキュリティホールを残したままになります。もう格好の餌食です。

大抵の敵要塞や戦艦には攻めろと言わんばかりの致命的な弱点がある。

 WordPress の場合、アップデートで動かなくなる主なものとしてはプラグインだと思います。主な理由がプラグインが最新の WordPress に対応していないケースとかでしょうか。盛んに開発されているようなメジャーなプラグインだと大抵は WordPress のアップデートに合わせて開発をしてくれますが、開発が止まっているようなプラグインだともう絶望です。導入するプラグインが継続的にアップデートされているかもチェックしたいところです。

AWS WAF の検討

 AWS リソースであれば、AWS WAF を導入し防御力を上げることが出来ます。AWS WAF には WordPress 用のルールもあるので、入れる価値はあるとは思います。まあ勿論利用コストは掛かりますが、マネージドであるため運用コストは抑えられるので商用利用であれば思考停止で入れてもいいと思います。

WordPress サイト固有の脆弱性の悪用に関連するリクエストパターンをブロックするルールが含まれています。

AWS マネージドルール ルールグループ リスト

 ただ Lightsail に導入する場合はひと手間必要です。AWS WAF は CloudFront や ALB に適用することが出来るのですが、Lightsail のコンソールから作成した CloudFront には適用出来ないのです(ALB は未確認だが多分出来ない?)。AWS WAF のコンソールにも適用対象のリストに出てこない(´・ω・`)。
 以前紹介したプラグインから作成した CloudFront であれば AWS WAF は適用出来るはずなので、サイトの価値がそのコストに見合うものに成長していけば導入の余地ありです。

mod_security の検討

 bitnami にはデフォルトで mod_security がインストールされています。これを有効にすることで apache レイヤーでのセキュリティを高めることが出来ます。セキュリティ対策はあらゆるレイヤーで施すことが推奨されているので運用コストが許すのであればやったほうがいいと思います。ただこちらは AWS WAF と比べてルールを自分で設定していく必要があるので運用コストは高め。具体的な設定方法についてはここでは長くなりそうなので別の記事にて紹介したいと思います。

Bitnami stacks using system packages already ship the mod_security3 module installed in Apache but it is not enabled by default.

https://docs.bitnami.com/aws/infrastructure/lamp/configuration/enable-modules/#mod_security