第4回の概要

WordPressサイト運用のコツということでお届けしている本連載、第4回はWordPressのセキュリティ設定について。ちょっと油断するとクラックされて不正利用されるというイメージも強いWordPress。実はちょっとした注意で容易に被害を防ぐことができます。そんなWordPressとレンタルサーバのセキュリティ設定についてご紹介していきます。

セキュリティチェックポイント

レンタルサーバでWordPressサイトを運営する場合、セキュリティ設定で気をつけることは大きく分けて2ポイントあります。

  • レンタルサーバの設定
  • WordPressの設定

この2ポイントについてご紹介していきます。

レンタルサーバのセキュリティ設定

レンタルサーバは、VPSやクラウドサーバと異なりOSやミドルウェアの保守(Apacheやnginx、PHPなどのセキュリティメンテナンスです)はレンタルサーバの運営会社が実施します。このためOSの緊急セキュリティパッチなどが配布された場合でもエンドユーザが対応する必要はありません。しかし、エンドユーザ側で対応しておく必要がある設定項目もあります。

国外IPアドレスフィルタ

一部のレンタルサーバでは海外からのアクセスをブロックする機能が備えられています。さくらのレンタルサーバでは、国外IPアドレスフィルタという機能があり、特定のコンテンツに対する国外からのアクセスを遮断する機能が初期設定オンで設定されています。

WordPress関連ですと、xmlrpc.phpやwp-admin配下、wp-login.phpなどのファイルへのアクセスが遮断されていますので、海外旅行先などからブログを更新したい場合はコントロールパネルから解除する必要があります(コントロールパネルは海外からもアクセスできます)。よく誤解されるのですが、この国外IPアドレスフィルタ。国外からのウェブ閲覧などすべてがブロックされていると思われがちです。実際には、海外からの攻撃を受けやすい特定のファイルや特定のフォルダへのアクセスが制限されているだけで、ホームページは問題なく閲覧できます。

国外IPアドレスフィルタの設定画面

さくらのレンタルサーバにおける詳しい設定項目などはサポートサイトで確認できます。

ウェブアプリケーションファイアウォール(WAF)

ウェブアプリケーションファイアウォールという機能はウェブサイトへの通信を監視し、OSコマンドインジェクションやSQLインジェクションといった主にWordPressコアやWordPressプラグインの脆弱性を突こうとする攻撃を防御します。さくらのレンタルサーバの初期設定ではこの機能がオフになっていますので、WordPressの初期設定が終わったらオンにしておくことをおすすめします。詳しい設定方法はサポートサイトで確認できます。

ウェブアプリケーションファイアウォールの検知ログの一例

WordPressサイトの保護としてプラグインやコアを最新に保つことが挙げられますが、万が一脆弱性が放置されている場合でもウェブアプリケーションファイアウォールは、攻撃を防御することが出来る可能性があります(もちろん万能ではありませんのでソフトウェアを最新に保つことは重要です)。二重の防御をする上でも、ソフトウェアを最新版に保ちつつ、さらにウェブアプリケーションファイアウォールをオンにするのは重要なことです。

WordPress専用の保護設定

さくらのレンタルサーバにはこの機能はありませんが、WordPress専用の保護設定がコントロールパネルからおこなえるレンタルサーバがあります。REST APIやXMLRPCへのアクセスを制御したり、コメント/トラックバックの制御をおこなったりできますのでお使いのレンタルサーバにこの機能がある場合はチェックしてみましょう。

WordPressログイン画面保護

WordPressのログイン画面は絶えず外部からのパスワード総当たり攻撃などにさらされています。このログイン画面を保護するプラグインなどは数多くあり、2要素認証を追加したりCAPTCHAにより画像認証を追加したりするものなど多岐にわたります。ですが、レンタルサーバではファイルやフォルダにBASIC認証をかけることができるため、wp-login.phpへのアクセスに対してBASIC認証をかけることにより、簡単に外部からの攻撃への耐性を強化することができます。

BASIC認証でログイン画面を保護することのメリットとして、余計な負荷がかからないことが挙げられます。プラグインによる保護は手軽ですが、反面ログイン画面への攻撃のたびにPHPのプログラムが実行されることにより意図せずサーバへの負荷が高まることがあります。BASIC認証をかけると、PHPプログラムの実行前にサーバ側でアクセスを遮断してくれるのでこの心配がありません。マニュアルなどを見て是非トライしてみましょう。

PHPのバージョン選択

多くのレンタルサーバではPHPのバージョン選択機能があります。現在、WordPressの推奨PHPバージョンは最新の7.2となっています。さくらのレンタルサーバではPHPは4.4から7.2までが利用できますが、5.4以前のバージョンは非推奨としております。現在提供しているPHP5.6も2018年12月にサポート終了が予告されており、それ以降はセキュリティパッチなどがリリースされなくなります。

ここで問題になるのが、PHP5.6や5.4じゃないと動かないプラグインの存在ですが基本的には古いバージョンのPHPじゃないと動かないプラグインは利用すべきではありません。こういったプラグインは高確率でメンテナンスがおこなわれておらず、近い将来脆弱性が見つかる可能性が高くなります。PHPは常に最新版の利用を前提とし、サイト制作時点で古いバージョンのPHPを必要とするプラグインなどを利用することは避けましょう。

PHPのバージョン選択画面

WordPressの設定

セキュリティの設定はレンタルサーバとWordPress両方で必要です。今度はWordPress側の設定を見てみましょう。

長いパスワードを使う

簡単な話ですが、パスワードは長ければ長いほど強度が高まり、また記号や数字を使って複雑化するほどより強度が高まります。絶対にpasswordやadministrator、1234といった簡単で類推可能なパスワードは使ってはいけません。WordPressでは初期設定時に大文字小文字数字記号混じりで長めのパスワードを生成しますので、特にこだわりが無ければそれをそのまま利用しましょう。

パスワードは覚えようとせずにパスワードマネージャなどを使って管理することがおすすめです。なぜ長く複雑なパスワードを設定する必要があるかと言うと、前項でも述べている通りWordPressログイン画面への攻撃は総当たり攻撃が多く、攻撃者はパスワードリストを使ってログインを試行します。このパスワードリストには想像可能なパスワードは一通り登録されているため、1234やpasswordといった簡単なものから、いくら長くても mississippiといった1単語のものは突破されやすくなります。

WordPressコア(本体)のバージョンアップ

WordPressコアは現在自動バージョンアップ機能があり、放置していても勝手に最新版がリリースされるとバージョンアップされます。ところが、実際WordPressの自動アップデートはマイナーバージョンのみでおこなわれ、メジャーバージョンは自動バージョンアップされません。マイナーバージョンアップとは4.7.9.9の部分が変わる時、メジャーバージョンアップとは、4.7.9.7が変わる時です。

つまり、バージョン4.8.1のWordPressは、もしマイナーバージョンアップがあると4.8.2には自動でバージョンアップされますが、4.9.0には自動でバージョンアップされないことになります。メジャーバージョンアップ時は初期設定では人の手でおこなう必要がありますので、更新してくださいと表示されている時は積極的に更新しましょう。もし挙動に不安がある場合は、さくらのレンタルサーバではバックアップ&ステージング機能がありますので、ステージング環境を作成してバージョンアップを試してみましょう。

WordPressプラグイン・テーマのバージョンアップ

WordPressコアよりも攻撃されやすいのがWordPressプラグインです。WordPressのコアはマイナーバージョンにおいて自動バージョンアップ機能がありますが、プラグインには自動バージョンアップはありません。

特に有名プラグインの過去バージョンで深刻な脆弱性があった場合、自動バージョンアップがおこなわれないのでユーザが自分でバージョンアップしないと永遠にその脆弱性が放置される可能性があります。これは非常に危険なことで、かつこのプラグイン脆弱性のためサイトがクラックされてしまう被害が跡を絶ちません。プラグインは最新の状態で使うということを心がけましょう。

また、忘れてはいけないのですがWordPressのテーマもPHPで書かれているため脆弱性が存在する場合があります。テーマについてもバージョンアップが必要です。

WordPressコア、プラグイン、テーマを最新に保つために

WordPressコアとプラグインは常に最新に保つ必要があります。個人のブログなどでヘビーなカスタマイズなどをおこなっていない場合は、ほとんど何も考えずにバージョンアップしてしまって問題は無いでしょう。問題が起こり得るのは、重度にカスタマイズしたWordPressとプラグインを利用して制作されたサイトが、セキュリティ意識の低いエンドユーザへ納品された場合などです。

この場合、かなり高確率でWordPressサイトの更新はおこなわれず、かつ運用マニュアルなどにもWordPressの更新通知が出ても無視するといった記載がされていることがあります。もちろん、原因は安易にカスタマイズされたWordPressコアやプラグイン、テーマによるもので、アップデートしてしまうと動かなくなる危険があるからです。そして、こういったサイトは将来高確率で攻撃の被害を受けることになります。

このような被害を防ぐために気をつけなければいけないことは、WordPressのコアとプラグインはバージョンアップが実施される前提でサイトを制作し、納品するということです。自動更新を停止する設定をおこなうこともせずに、バージョンアップしても概ね問題ない状態で納品することが重要です。また、もし万が一PHPのメジャーバージョンアップなどでどうしてもプログラム改修が必要な場合は、改修費用が発生するが必要なコストであることを事前にクライアントに納得して貰う必要があります。

もし、どうしても受け入れられない場合はWordPressを利用せずにスタティックな形で納品するというオプションを選択する勇気もまた必要です。

不正利用、改ざん被害にあったら

もし、被害にあってしまったらという場合の心得も必要です。さくらインターネットではセキュリティ関連のサポート情報を公開しておりますので一読をおすすめします。

また、Google Search Consoleへの登録などもおすすめです。サイトがクラックされてマルウェアなどを配布し始めるとメールで警告してくれる機能などがあります。

バックアップの重要性

不正利用などの被害にあった場合、サイトが著しく改ざんされてしまう場合があります。さくらのレンタルサーバではバックアップ&ステージング機能で最大8世代のスケジュールバックアップ機能をオプション料金無料で提供しています。WordPressサイトはデータベースごとバックアップすることができますので、設定しておくことをおすすめします。特に、スケジュールバックアップ機能を使うと勝手に一定間隔でバックアップして古いものから上書きしてくれるので、クライアントにそのまま納品してしまうことも可能です。

まとめ

今回はセキュリティ設定のご紹介ということでちょっと難しい内容で、かつ広範囲にわたり説明してきました。様々なポイントに触れてきましたが、重要なのはソフトウェアを最新版に保つ、パスワードを複雑にするという2点で、これらは特に守ってほしい項目です。セキュリティについては制作者の意識、運用者の意識の両方を啓蒙し、維持することが重要です。この機会に是非、レンタルサーバやWordPressの設定を見直してみましょう。

次回は第5回、モジュール版PHPやキャッシュプラグインなどを利用したWordPressの高速化についてご紹介します。