WordPressのサイトを運営する際に気をつけたいセキュリティについて。

おすすめの記事

WordPressを利用するにあたって、一番気になるところ、やはりセキュリティの問題だと思います。
ネット上でも定期的にWordPressを利用しているサイトへの一斉攻撃などの話題が上がってきますから、導入にも躊躇してしまいますよね。

僕自身も長い間導入に対してはどちらかといえば引き気味でしたが、しっかり対策さえすれば攻撃されてもクリティカルな問題はないなと考えるようになり、最近では積極的におすすめするようにしています。

ただできれば構築後のメンテナンスなど運用面で保守契約を結んでいただけると一番ありがたいのですが、そこはお客さんの予算の都合もあるのでご相談の上、ということが多いです。

そこで、今回はWordPress導入時の最低これはやっときましょう、というセキュリティ対策についてまとめてみたいと思います。

前回同様、有料・無料のテンプレートを利用される方前提となります。
基本的な対策方法は共通ですが、ご自身でテンプレートからカスタマイズされる場合はまた別の問題が発生することもあります。
あしからずご了承下さい。

WordPressのセキュリティ対策には何がある?

対策方法は一つではなく、複数の対策を施すことでより強固なものとなります。

ただサーバーの環境などによっては動作しない場合もあるので、必要に応じて調整してみてください。

本体

最新バージョンへのアップデート

まず本体のバージョンはできるだけ最新版にしておくことは重要です。
ただ、これも落とし穴があって、WordPressは最新版が常に安定版というわけではなく、たとえマイナーアップデートであっても何故か急にログインできなくなることや、プラグインの一部が設定できなくなるなどの不具合が生じることもあります。

こういったこともあるので、運用の際には必ず構築した制作会社と保守契約を結んで欲しいということなのです。
お客さんだけでアップデートした後、なにをしたのかよくわからないということもありますからね。

アップデートの際には必ずバックアップを忘れないようにしてください。

またどうしてもダウングレードの必用が生じた場合は、下記のサイトでわかりやすくまとめられていますのでご参考までに。

複雑なパスワードを使う

ユーザーID:admin
パスワード:password

なんてびっくりするようなことが結構あったりします。

複雑なパスワードなんて考えられない、という場合は

のようなパスワードジェネレータもありますので、利用してください。

プラグイン

最新バージョンへのアップデート

こちらも本体同様アップデートが望ましいのですが、本体同様トラブルが発生することも少なくありません。

どうしようもなくなった場合はダウングレードの必要がありますが、こちらのサイトにわかりやすくまとめられています。

また使っていないプラグインは停止するだけではなく、必ず削除するようにしましょう。

SiteGuard WP Plugin

WordPressの基本的なセキュリティ設定はこれだけで対応できます。
ちなみにどんなものが含まれているのかというと

管理ページアクセス制限ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。
ログインページ変更ログインページ名を変更します。
画像認証ログインページ、コメント投稿に画像認証を追加します。
ログイン詳細エラーメッセージの無効化ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。
ログインロックログイン失敗を繰り返す接続元を一定期間ロックします。
ログインアラートログインがあったことを、メールで通知します。
フェールワンス正しい入力を行っても、ログインを一回失敗します。
XMLRPC防御XMLRPCの悪用を防ぎます。
更新通知WordPress、プラグイン、テーマの更新が必要になった場合に、管理者にメールで通知します。
WAFチューニングサポートWAF (SiteGuard Lite)の除外ルールを作成します。
詳細設定IPアドレスの取得方法を設定します。
ログイン履歴ログインの履歴が参照できます。

無料でこれだけ使えるのは素晴らしいですね。

WAFチューニングサポートだけはちょっとややこしいですが、それ以外はほぼチェックするだけでOKです。

Google Authenticator

WordPressを二段階認証に対応させるプラグインです。

Googleのワンタイムパスワードアプリを利用してのログインとなるので、例えID、PWが流出してもワンタイムパスワードがわからない限りログインできません。

ちなみに導入後のログイン画面は

のようになります。

上から順にID、PW、SiteGuard WP Pluginによる画像文字認証、そしてGoogle二段階認証です。

二段階認証を管理するアプリとしておすすめはこちら。

UpdraftPlus WordPress Backup Plugin

クリティカルなダメージを喰らわないよう、転ばぬ先の杖といったところでしょうか。

バックアップスケジュールも細かく設定できますし、バックアップ内容や送信先なども設定できます。

今のところうちのサイトでは週に1回、Dropboxへすべてのデータ(DBやテーマ、プラグイン、アップデートした画像など)を送るようにしています。

テーマ

利用されているテーマにもよりますが、責任感の強いテンプレート作者さんであれば、定期的にテンプレートの見直し(バグフィックスやセキュリティアップデートなど)を提供してくださいます。

もちろんアップデートするのは重要な事なんですが、やはりここで問題になるのはfunction.php、CSS、Javascriptなどに改変を加えた場合。

そこでおすすめするのは先日の記事でも紹介させてもらった下記のプラグイン。
テーマを更新しても影響を受けませんから、安心してアップデートできますね。

プラグイン同様、使っていないテーマは削除するようにしたほうがいいですよ。

Code Snippets

function.phpをカスタムする際に大変利便性が上がります。

function.phpを直接編集すると、正直長くなりすぎて何がなんだかわからなくなることもありますが、このプラグインを使えば機能ごとにsnippetとして登録が可能なので、function.phpの整理にも役立ちます。

またsnippetごとに機能のオン、オフも切り替えられますので、おかしくなればすぐにオフにすることもできます。

Simple Custom CSS

style.cssを直接編集編集することがありませんし、シンタックスハイライターも実装しているので、初心者の方でも安心して変更できますね。

こまめにアップデートされるテンプレートを利用されている方や、cssで大幅にカスタムしたい方なんかは是非活用して欲しいものです。

兄弟プラグインに「Simple Custom CSS and JS」があります。
こちらはCSSに加えて、Javascriptも編集可能となっています。

Head & Footer Code

<head>〜</head>領域や</body>の直前にコードを埋め込んでくれるプラグインです。

広告等様々なタグがJavascriptで提供されているかと思いますが、このプラグインを使うことでテンプレートを編集することなく簡単に埋め込み、管理ができるようになります。

.htaccess

こちらは運営の方法にもよりますが、下記の2点に気をつけておけば大丈夫だと思います。

wp-comments-post.phpへのアクセス制限

コーポレートサイトなどではコメント機能を利用されないことも多いと思いますが、その際に下記の内容を.htaccessファイルに記載することでアクセスを制限することができます。

<Files wp-comments-post.php>
order allow,deny
deny from all
</Files>

wp-config.phpへのアクセス制限

WordPressの各種情報が記載されたconfigファイルへのアクセス自体を制限してしまいます。
インストール時に生成する以外、編集することは稀ですからね。

<Files wp-config.php>
order allow,deny
deny from all
</Files>

さらにパーミッションを「400」などに変更しておくといいかもしれません。

ディレクトリ

wordpressやwp、cmsといったものではなく少し複雑にしておくことがポイントです。

データベース

データベースのプレフィックスは標準の場合「wp_」ですが、これを他のものに変更しておくことで特定されにくくなります。

まとめ

これだけで完璧というわけではなく、他にも対策方法はあるかと思いますが、まずはこれだけの対策をすることでクリティカルな攻撃からは多くの場合対策できると思います。

こういったオープンソースのCMSを利用する以上、セキュリティの問題は必ずついて回ります。

セキュリティに問題があるから使わないのではなく、どうすればいいのか正しい知識を得ることで、安心して運用が可能になります。

すでに運用されているサイトにも上記のような対応をするだけでかなり変わると思います。
これを機会に、一度ご確認されてみてはいかがでしょうか?