ブロガーは必ずやっておきたいWordPressを守るセキュリティ対策のまとめ


ホームページとして利用されるCMSで最も人気のWordpress。
多くの人が使ってるんじゃないでしょうか。
もちろん僕も使っていますし、お客さんにはみなさんにWordpressを入れて集客に活用してもらっています。
そのWordpressですが、すごく便利でホームページにとって欠かせないツールではあるんですが、
それゆえにセキュリティが心配になります。
これまで何年も書いてきたコンテンツがあるとき突然消えてしまったらどうします?
場合によっては悪意のある人に乗っ取られてサイバー犯罪に加担してしまうなんてこともあります。

自分は大丈夫と思っている人も多いです。
確かに私もこれまで幸いにも大きな被害にはあっていませんが、もしそうなったときには大変です。

WordPressを安全に運用するために、
まずはそのセキュリティについてしっかりと考えておきましょう。
今回はWordpressを安全に運用できるようにどのようなセキュリティ対策をするべきかを紹介します。

セキュリティのためにやっておく3つのこと

WordPressのセキュリティ強化

単純な話ですが、Wordpressに入るためのアカウントが第三者にばれてしまったら、またそれが悪意のある人だったら。
手に入れたアカウント情報でWordpressに入って、好き勝手に荒らされてしまいます。
あなたがアカウントを外部に漏らさなくても、Wordpressに対して行われる脅威はいくつもあります。
まずは、Wordpressそのものを守りましょう。
Wordpressのセキュリティはこの後順番に紹介します。

サーバー情報の管理

WordPressはサーバー上で動いています。
Wordpressの設定はサーバーアカウントでFTPにつないでアップロードします。
つまり、FTP情報さえあれば、サーバーにアクセスしてWordpressどころか他のファイルだって簡単に改ざんできます。
Wordpressをいくら強固にしても、サーバーのアカウントを乗っ取られると終わりです。
アカウント情報をしっかりと管理しておくこと、そしてパソコンには必ずアンチウィルスソフトを入れておくようにしましょう。
何かあってからでは遅いので、アンチウィルスソフトは常に最新できちんと更新しましょう。

データのバックアップ

セキュリティに完璧はありません。
常にハッキングの技術は進歩していますので、昨日まで大丈夫だったから今日も大丈夫とは言えません。
できる限りのセキュリティレベルで運用した上で、万が一ハッキングに合ってしまった場合には、元の状態に復旧できるようにしておきましょう。
これが一番大切なこと、次の2つは必ずバックアップしておきましょう。

  • データベース
  • ファイル一式

以上の3つの対策は必ずやっておくことです。
サーバー情報とファイルのバックアップは適切に管理しておく以外にありません。
そして、Wordpressについては様々な方法でアクセスができるためもっとも脆弱であると言えます。
ここではWordpressを守るためにできるセキュリティ対策について紹介します。

WordPressのセキュリティ対策

WordPressセキュリティの基本

WordPressのバージョンを最新に保つ

WordPressは常に新しいバージョンが公開されています。
バージョンアップの中にはセキュリティに関するものも多く、見つかった脆弱性がその都度修正されていきます。
セキュリティに完璧なものは無く、常に新しい攻撃方法が生み出され、それを防ぐという繰り返しです。
ですので、これまで大丈夫だったからとこれからも大丈夫とはいえません。
放っておくと、どんどんとセキュリティ的に弱くなっていき、ハッカーの恰好の的となってしまいます。
最新バージョンが公開されたら、できるだけ早くバージョンアップするようにしましょう。

WordPressは、バージョンによって動作する環境が変わることもあります。
特にPHPやSQLなどのバージョンは最低動作環境がありますので、
メンテナンスがされていないサーバーなどでは、サーバー環境の問題でバージョンアップできないこともあります。
download

テーマやプラグインを最新に保つ

WordPress本体だけでなく、使用してるテーマやプラグインにも脆弱性は存在します。
プラグインは最新にして、さらに使っていないものは停止ではなく削除することが推奨されています。
あとで使うかも・・・ってことで残している人は多いと思いますが、
できる限り使わないものは削除していきましょう。
言うのは簡単ですが、いろいろ設定したプラグインとか気持ち的になかなか消せなかったりするけどね。

WordPressを構成するファイルの扱い

「wp-config.php」のアクセス制限をする

WordPressを設置するときに生成される「wp-config.php」というファイルがあります。
いわゆるWordpressの設定用のファイルなのですが、
ここには、Wordpressがアクセスするデータベースの情報が入っていて、これをハッカーに読まれてしまうと、データベースに直接アクセスするための情報がばれてしまいます。
なので、第三者に見えないようにファイルを設定する必要があります。

「.htaccess」というファイルを「wp-config.php」と同じ階層に設置します。
もしすでに「.htaccess」が存在していれば、そこに以下を追記してください。

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

これで外部からのアクセスができなくなります。

さらに管理者以外は読めないようにパーミッションを「400」に設定します。
img

DBのテーブルプレフィックスの変更

WordPressで使用されるテーブル名は他で使われているものとかぶらないように「wp_」で始まるものと初期値ではなってます。
でも、初期値のままだとテーブル名が特定されてしまうのでオリジナルに変えておきましょう。
データベースにアクセスできてしまうような脆弱性があった場合を考えて、テーブル名が推測できないようにしておくことも大切です。

PHPのエラーメッセージを表示させないようにする

WordPressはPHPというプログラミング言語で書かれていますが、不具合を修正するためにプログラムのエラーが発生したときにそのエラーの原因をエラーメッセージとして表示させている場合があります。
そのような場合、エラーメッセージの中にサーバーの情報などに関するものが入っている場合があります。
不具合を修正するデバッグの時にはとても便利ですが、一般に公開されてしまうのはとても危険です。
なので、エラーが発生してもエラーメッセージを表示しないようにしておきましょう。
「php.ini」というファイルを用意して、以下のコードを書きます。
「php.ini」は有効にしたいフォルダに置くので、ルートフォルダに置けばいいでしょう。

php.ini
display_errors = off;

「php.ini」自体を守りましょう。

.htaccess
<Files php.ini>
deny from all
</Files>

「wp-admin」フォルダのBasic認証

/wp-admin/フォルダはWordpressの管理画面のためのフォルダです。
管理画面に入るにはログインが必要ですが、フォルダ自体をBasic認証でアクセスを制限すればWordpressのログインの前にフォルダへのアクセスを突破しないといけません。
ログイン画面を2つ突破しないといけないことになり、さらにセキュリティが強くなります。
Basic認証ではこのような認証ダイアログが表示されます。
download
ここではBasic認証について詳しく説明しませんが、以下を参照してください。
Basic認証

「wp-admin」フォルダのSSL化

/wp-admin/フォルダは管理画面で様々な操作をするので、
通信を安全にするためにSSL化をすることをお勧めします。
ただ、今ではサイト自体をSSL化することが大切になってきていますので、
特に/wp-admin/フォルダだけをというわけじゃなくてサイト自体をSSL化しましょうね。

「wp-includes」のセキュリティ

wp-includesフォルダの中にはユーザーによってアクセスされることを想定されていないファイルがあります。
wp-includesフォルダ自体に制限をかけてしまうと不都合があるので、wp-includesフォルダ内の特定のファイルについてだけ保護しましょう。
wp-includesと同じ階層の.htaccessに以下を追加します。
参照先のサイトにも書かれているように、# BEGIN WordPress と # END WordPress タグの外側に以下を書き込むようにしましょう。

# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

参考:
WordPress_の安全性を高める

「.htaccess」のセキュリティ

.htaccessでいろいろと設定してきました。
そして、この.htaccess自体も第三者が触れないように設定しておきましょう。
ルートの.htaccessに以下を設定します。

.htaccess
<files ~ "^.*\.(&#91;Hh&#93;&#91;Tt&#93;&#91;Aa&#93;)">
order allow,deny
deny from all
satisfy all
</files>

WordPressのログイン画面

推測されにくいIDとパスワードに

最も基本的なことは、推測されにくいIDやパスワードです。
IDもパスワードも折になるで生成してください。
特に、パスワードについてはある程度のセキュリティを保つためには「14文字以上のパスワードは必要」と言われています。
単純なパスワードではなく記号や数字などを組み合わせたものが有効です。
Wordpressが自動で生成してくれるパスワードがありますので、通常はそれをそのまま使いましょう。
忘れやすいからと簡単なパスワードにしてしまうのは危険ですよ。
download

2段階認証を利用する

アカウントを保護する機能として2段階認証というものがあります。
最近では金融機関では必須となっているもので、IDとパスワードの他に、あなたにだけ送られる特別なコードを入力することでログインができるのです。
ログインの際にはその専用コードを取得するためにあなたの持っているスマホなどを使います。
たとえば、SMSや専用のツールで一時的な専用コードを手に入れてます。
そのスマホを持っているあなたにしかわからないコードを使うので、第3者がパスワードを解読したとしてもログインできないという仕組みです。

2段階認証は「Google Authenticator」というプラグインを使用します。
Wordpressのプラグイン追加画面から「Google Authenticator」を追加してください。

スマホに専用コードを生成するためのアプリを入れます。
Google Authenticatorを App Store で
Google 認証システム – Google Play の Android アプリ

WordPressの設定に戻ります。
2段階認証はユーザーごとに設定します。
「ユーザー」のメニューより2段階認証したいユーザーの設定画面に移動します。
「Google Authenticator Settings」→「Active」にチェックを入れて、
「SHow/Hide QR Code」をクリックするとQRコードが現れます。
img
スマホにインストールしたアプリ「Google Authenticator」で表示されるQRコードを読み取ってください。
これで準備完了。

実際にログインする画面はこちらです。
img
3つ目の項目に2段階認証用のコードを入力する欄があります。
ログイン時にスマホアプリの「Google Authenticator」に表示される6桁の数字を、IDやパスワードとあわせて入力します。

WordPress内でのセキュリティ

管理画面からのテーマやプラグインの編集を無効にする

僕たちはWordpressのファイルを触るときはFTPで直接変更するのですが、Wordpressの管理画面からもテーマやプラグインのプログラムファイルを触ることができます。
プラグインのファイル編集
download
だとか、テーマの編集
download
大抵は不要なのでWordpressの管理画面からは編集できないようにしましょう。
wp-config.php内に以下を書きます。

wp-config.php
define('DISALLOW_FILE_EDIT', true);

WordPressのセキュリティについてまとめ

かなりたくさんのセキュリティ対応を紹介しました。
全てを対応している人はほとんどいないでしょう。
やっておくべきですが、なかなか簡単ではありません。
自分が必要だと思うものを中心に始めてみましょう。

セキュリティに完璧はありませんので、
ハッカーに侵入されない方法と共に、侵入されたらどうするかをあらかじめ考えておきましょう。
どのレベルで不正アクセスがあったのかで対応は変わりますが、
いずれにしてもハッカーに侵入された痕跡があれば、そのまま継続して公開しておくわけにはいきません。
始めに紹介したデータとファイルのバックアップは必ずするようにしておきましょう。
データさえ残っていれば、すぐに復旧することが可能です。

今回のセキュリティ対応をする前にもバックアップをとってください。
間違った設定をしてしまったりうまくいかなかったりすることがあるかもしれません。
セキュリティに限らずバックアップはとても大切です。

セキュリティ対策とバックアップをきちんとして、安心してブログの運営をしましょう!