WordPressはブラウザー上で管理できるCMSサイトです。
動的なPHPサイトのため、とても多機能で色々な可能性がある反面、不正なアクセスやサイト改ざんのリスクも伴います。WEBサイトは生物ですから、「出来たら終わり」ではありません。きちんと適切に管理を行うことがとても重要です。
今日はWordPressサイトで、最低限行っておきたいセキュリティ対策をご紹介します。
サーバー側でのセキュリティ対策
1.WAFの有効化
WAF(ファイヤウォール)は基本的に有効化しましょう。サーバーでWAFの設定がない場合(大抵のサーバーではそのようなことはありませんが)、Wordfenceなどのプラグインを使ってWAFを有効化する方法もあります。
2.サイトSSL化
サイトはSSL化しましょう。大抵のサーバーで無料のSSL化オプションが用意されています。
サーバーで無料のSSL化ができない場合、Really Simple Securityなどのプラグインを使ってSSL化することもできます。
3.PHPのバージョンは最新バージョンにアップデート
WordPressの管理画面で「お使いのPHPバージョンはアップデートの必要があります」というアラートが表示されていたら、必ずPHPをアップデートしましょう。
PHPのアップデートに伴い、「重大なエラーが発生しました」と表示されて、サイトが表示されなくなる場合があります。ケースバイケースですが、その場合はプラグインが原因となっていることが多いようです。もしそのような事態に陥ったら、プラグインを全て無効化して一つずつ有効化し、原因となっているプラグインは削除するなどして対応しましょう。(テーマが原因となっている場合は、テーマを変更する必要があるかもしれません)
WordPressの基本セキュリティ対策
1.WordPressのバージョンは最新バージョンにアップデート
これは基本中の基本ですが、WordPressのバージョンは最新を保つようにしましょう。
自動的に最新バージョンにアップデートされるようになっているか確認して、もしなっていない場合は自動アップデートをオンにしましょう(↓)

2.プラグインは最新バージョンにアップデート
こちらも基本ですが、プラグインについても脆弱性が発見された場合アップデートされていますので、プラグインについても基本的に常に最新版に自動アップデートされるように設定しておきましょう。
ただし、プラグインの自動アップデートに伴う不具合は一定の頻度で起こりますので、その場合は原因となったプラグインを一旦無効化(※1)して、更にアップデートするか、もしくはエラーの解消バージョンが発行されるまで、以前のバージョンにロールバック(※2)するなどしましょう。
※1)サイトにログインできないようなエラーが発生した場合には、FTP上での作業が必要となります。
※2)ロールバックに便利なプラグイン「WP Rollback」を入れておくことをおすすめします。
3.古いプラグイン・使っていないプラグインの削除
残念ながらアップデートが止まってしまい、脆弱性がそのままになって、攻撃の窓口となってしまうプラグインがあります。そのようなプラグインはWP側で公開が廃止されることもありますが、もし最新WPとの互換性が無くなってしまったり、不具合が散見されたり、あるいは脆弱性を指摘されるようなITニュースが出たプラグインについては、代替プラグインに乗り換えるか、廃止するかして削除しましょう。
また以前にインストールしたけれど使っていないプラグインなどがある場合は削除しましょう。
4.テーマのアップデート
テーマもできるだけ最新版にアップデートすることが推奨されます。ただテーマを編集している場合、アップデートによって表示が崩れてしまうリスクが伴いますので、慎重に判断しましょう。そのようなケースで、テーマのアップデートがあった場合、アップデートの情報を確認して、アップデートのあったファイルだけを更新したりすることもできます。
5.ユーザー名をadminにしない
これも基本中の基本なのですが、ユーザー名がadminになっていると、不正ログインのリスクが跳ね上がります。
初期設定のままadminにしているユーザーが少なくないため、Botがそのユーザー名でログイン試行を行うためです。ユーザー名は必ずadmin以外にしましょう。
6.ユーザー名を表示させない
たまに、「ユーザー名」をそのまま「ブログ上の表示名」に設定している方がいますが、そうしますと、投稿記事などでユーザー名を晒すことになり、不正ログインのリスクが高まります。
必ず「ブログ上の表示名」はユーザー名とは異なるものに変更しましょう。
管理画面 > ユーザー > 編集 から変更できます。
まず最初にニックネームを設定(①)します。そうすると、ブログ上の表示名(②)でニックネームを選択できるようになりますので、選択して保存しましょう。

セキュリティプラグインを使って更に堅固化する
ここからは、セキュリティプラグインを使って更にサイトを堅固化していきます。
使うプラグインは以下の6つです。
SiteGuard
Really Simple Security
Edit Author Slug
Two-Factor
Advanced Google reCAPTCHA
WP-Ban
1.ログインページを隠す
WordPressサイトの場合は、ログインページを変更しましょう。
ログインページがwp-loginのままだと、不正アクセスのリスクが高まります。
SiteGuardプラグインを使えば、簡単にログインページURLを変更できます。
ログインページを変更した場合は、必ず設定画面の「管理画面からログイン画面にリダイレクトしない。」にチェックを入れてください。

2.ユーザー名を隠す、投稿者スラッグを変更
そして更にユーザー名を隠す必要があります。
①SiteGuardプラグインで「ユーザー名を隠す」に設定
②Really Simple Securityで「ユーザー列挙を無効化」に設定(設定 > 堅固化)
③Edit Author Slugで投稿者スラッグを変更
Edit Author Slugを有効化すると、ユーザー編集画面 の下の方に「投稿者スラッグ変更」の項目が出てきますので、ここで「1」などに変更しましょう。こうすることで、「投稿者記事一覧ページのURL」からユーザー名が漏洩することを防ぐことができます。

3.二段階認証システムの導入
プラグインTwo-Factorを使ってサイトに二段階認証システムを導入できます。
プラグイン有効後、ユーザー > 編集 画面に二段階認証項目ができますので設定しましょう。
Googleの二段階認証アプリなどと連携して、ログイン時に二段階認証コードを発行することができます。他にもリカバリーコードやメール、秘密鍵などを設定することもできます。
4.reCAPTCHAでログインページを保護
プラグインAdvanced Google reCAPTCHAを使って、ログインページにGoogle reCAPTCHAを設定することができます。利用するにはまず、Google reCAPTCHAでサイトのAPIを登録し、サイトキーとシークレットキーを発行する必要があります。
その後Advanced Google reCAPTCHAを有効化し、設定画面から以下の手順で設定します。
①reCAPTCHAのバージョンを選択(v3ならならv3を選択)、②でもv3を選択。
③に発行したサイトキーとシークレットキーを入力。
④をクリックしてAPIをテスト実行。⑤で保存。

5.ログインページに画像認証、ログインエラーを隠す、ログインメッセージ、更新通知を受け取る
SiteGuardプラグイン設定しましょう。必要に応じて、ログインIPを制限することもできます。またフェールワンスを設定することも可能です。

6.XMLRPCを無効化
こちらもSiteGuardプラグインや、Really Simple Securityプラグインで設定します。
こうすることで、XMLRPC経由の攻撃を防ぐことができます。ただし、こちらを無効化すると使用しているプラグインによってはエラーが発生する可能性がありますので、問題がないかを確認して、必要に応じて判断しましょう。
7.ディレクトリ参照を無効化、WPのバージョンを隠す、共用の uploads フォルダー内でのコード実行を防止、Unset X-Powered-By header
すいません…ちょっと細かく説明できなくなってきましたが、すべてReally Simple Securityプラグインの設定画面で設定できますので、有効化しておきましょう。必要に応じて「組み込みエディターの無効化」も可能です(テーマエディターが表示されなくなります)。

8.不審なアクセスの監視とBan
SiteGuardではログイン履歴を参照できます。
定期的に確認して、不審なログイン履歴のあるIPは「WP-Ban」のプラグインでBanしましょう。
9.サイトの定期的なバックアップ
サイトデータは定期的にバックアップを取り、もしものときに速やかに復旧できるようにしましょう。
個人的には「UpdraftPlus」プラグインがエラーが少なくておすすめです。
バックアップデータはサーバーが消えてしまう事故(実際体験したことあります)に備えて、サーバー外に保存しておくことをおすすめします。
「最低限」とうたいながら、結果的に20項目以上になってしまいました。
WordPressの管理は簡単!誰でもできる!とお考えの方も少なくありませんし、実際そうではあるのですが、ただ「しっかりと管理する」ことは容易ではありません。そして「これだけやったら確実に安心」ということもできません。ハッカーたちは日々新しい脅威を生み出し続けていますので、慢心せずに警戒心をもち、できる限りの対策をするということが重要ですし、日々最新情報を注視する必要があります。
ホームページ制作を依頼される場合は、保守管理もご依頼をご検討ください
保守管理契約を結ばずに、管理が行き届かないと、結果的に復旧作業で管理契約料金よりも多額のコストがかかり、さらにサイトの信頼性も落ちてしまって(SEO順位を落とされる)、回復に時間と労力を消費するということもあります。また、改ざんされたサイトを介して、サイト来訪者がフィッシングなどの被害を受け、さらに甚大な損害を被る可能性もあります。
近年では中小の管理の甘いサイトがハッカーのターゲットとして狙われやすく、Botは無差別に多数のサイトに攻撃を仕掛け続けています。
オリーブでは、管理運用をご依頼いただいた場合、上記の対策をすべて行ったうえで、バックアップデータはサーバー外にも保存し、もしものときは早急に復旧できる体制を整えています。
保守管理に自信のない方は、ぜひ保守管理も含めてご検討ください!