WordPressは日本で最も使用されているオープンソースのCMSです。
ただ、それが原因でWordPressは最もセキュリティ攻撃を受けやすいCMSでもあります。今回は安全にWordPressを運用するためにアプリケーション側の設定について説明します。
WordPressのセキュリティチェックリスト
- XML-RPCを無効化する
- wp-config.phpの対処
- WordPressログインURLを変更する
- ログイン試行回数を制限する
- 不要なプラグインは削除する
XML-RPCを無効化する
XML-RPCとはWordPressの管理画面にログインせずに外部からコントロールするための仕組みで、うまく活用すれば便利な機能なのですがこの仕組みを悪用されてDDos攻撃などのセキュリティ攻撃に利用されるケースがあります。
これを事前に防ぐためには無効化の処理をしておきましょう。無効化にするには「XO Security」などのセキュリティ系プラグインを導入するか.htaccessで下記のコードを記述して無効化してしまいましょう。
# xmlrpc.phpへのアクセス無効化(# END WordPress 以下に記述)
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
※「自ドメイン/xmlrpc.php」で検索をしてXML-RPC server accepts POST requests only.と表示された場合はXLM-RPCが有効化されています。
wp-config.phpの対処
wp-config.phpには重要な情報が多く保存されています。
例えば、DB接続情報(DB名、ユーザー名、パスワード)やセキュリティキー(AUTH_KEYなどの秘密鍵)の情報が含まれているので、wp-config.phpをpublic_html外に移動(非公開ディレクトリに移動)させておきましょう。
WordPressにおいて、攻撃者から最も狙われやすい箇所なのでセキュリティ対策を考えるならこの箇所の対策は必須と言えます。
その他にも「.htaccessでアクセス制限をかける」「ファイルのパーミッションを強化」などの対応方法もあります。
WordPressログインURLを変更する
OSS(オープンソース)では誰でもデフォルトの管理画面のURLを知ることが可能です。管理画面のURLがわかるということは誰でも管理画面への不正なログインを試みることができるということです。
そのため、管理画面のURLの変更は必須と言えるでしょう。
変更をするには”XML-RPCの無効化”と同様に「XO Security」などのセキュリティ系プラグインを導入するか.htaccessで制御をしましょう。
ログイン試行回数を制限する
前述の”WordPressログインURLを変更する”と通ずる内容となりますが、毎日様々なサイトで管理画面への不正ログインが試みられています。推測がされにくいパスワードを設定していたとしてもWordPressはログインの試行回数制限がないためブルートフォースアタック(総当たり攻撃)で不正ログインをされることがあります。
これの対策をするには「XO Security」などのセキュリティ系プラグインを導入するか.htaccessでログインできるIPアドレスの制御をすることが有効です。
不要なプラグインは削除する
使用していないプラグインの放置は脆弱性になり得るので無効化にしているだけなく削除しましょう。
理由としては、更新されていないプラグインはアクティブでなくてもファイルに存在するだけで攻撃対象となります。無効化しているだけではプラグインのコードやファイルはサーバ上に残り続けるからです。
これはプラグイン選定をする際にも関係する話ですが、直近数ヶ月でアップデートが入っていないプラグインは脆弱性対応がされていない可能性があるので、インストールをするのは危険です。
プラグインをインストールする場合はしっかりと定期的にメンテナンスされているかチェックをしましょう。
まとめ
今回紹介した内容はWordPressを運用するなら対応しておくべき基本的な内容となっています。
いくつか対応するには難しい箇所もありますが、セキュリティプラグインを使えば簡単に対応できる部分も多いのでセキュリティプラグインで一括で対応してしまうのもオススメです。
ただ、セキュリティプラグイン自体に脆弱性がある場合もあり、セキュリティプラグインを入れるだけで全て解決というわけではありません。セキュリティを強化するはずのプラグインが逆に攻撃の入口になる場合もありますので導入するプラグインの選定には十分気をつけましょう。