WordPress

【WP】WordPressの基本的なセキュリティ対策

More than 1 year has passed since last update.

2017/02/06 追記

WordPressの 4.7.04.7.1 で深刻な脆弱性がありました。

脆弱性を悪用したと思われる改ざん報告が急増しております。 :scream:
該当バージョンを使っているだけで、容易に改ざんされてしまいます。 :scream:
自動アップデート機能をOFFにしている方は、直ちに最新バージョンにアップデートしましょう。 :thumbsup:

今回の脆弱性については下記が詳説です。

改ざん情報については下記が詳説です。

以下、本編です。


はじめに

WordPressの基本的なセキュリティ関連の設定を簡単にまとめてみました。
当たり前ですが、WordPressとプラグインは常に最新のバージョンにしてください。
最新のバージョンに保つことが一番重要です。
また、パスワードは推測できない値に設定してください。
これから紹介するプラグインで総当り攻撃を防ぐこともできますが、単純なパスワードに設定すると総当り攻撃を受けてログインされてしまいます。
パスワードの管理が大変という方は、1Passwordなどのパスワード管理ツールを利用するという方法もあります。
ここではパスワード管理ツールについては説明しませんので、気になる方はググってください。
パスワード管理ツールも様々で、100%安全とも断言できないと思いますので、利用される方は吟味してください。

ここで紹介しているプラグインやツールなどの導入・設定は自己責任で行ってください。

セキュリティ界隈でも著名な徳丸先生が書いた下記もご覧ください。

むしろ、私が書いた内容より徳丸氏の記事を読んでくださいw

ぎょーむをしているみなさまへ

バージョンアップの通知をOFFにして、WordPressを導入してから一切アップデートしないのは絶対ダメです。
業務として請負っているなら、アップデートが必ず必要になる旨を説明し、作業費を請求して対応してください。
一度導入したら何もせずに終わりというものではありませんし、そんな単純な作業をやっているわけではありません。
きちんとアップデートして請求しましょう。
そもそも、自動アップデートをONにしていれば、勝手にアップデートしてくれます。

この記事では、各種設定とプラグインを紹介します。

各種設定

1.パーミッションの設定

各ファイルのパーミッションは適切に設定する必要があります。
パーミッションの設定については、サーバー会社のサイトに詳しく記載されております。
参考サイト:サイト改ざんへの対策をお願いいたします - ロリポップ!レンタルサーバー

ファイル パーミッション
.htaccess 604
wp-config.php 400

2.データベーステーブルのプレフィックスの変更

新たにWordPressをインストール場合は、wp-config.phpを開き、プレフィックスを変更します。

$table_prefix = 'wp_';

既に稼働中の場合は、データベースのテーブルネームを変更する必要があります。

参考サイト:WordPressのセキュリティを徹底強化 | CSSPRO

3.「Akismet」プラグインの利用

自動的にスパムコメントを分類してくれるプラグイン。
WordPressをインストールすると、デフォルトでインストールされています。
プラグインを「有効化」して設定をしてください。

参考サイト:Akismetプラグイン(コメントスパム対策) - WordPressプラグインの一覧

4.「admin」のユーザー名は削除または使用しない

「admin」は「ブルートフォースアタック(総当たり攻撃)」の対象となるため、「admin」ユーザーは必ず削除。

5.ディレクトリ一覧の非表示

Apacheなら「.htaccess」に下記を記述して、ディレクトリ一覧を非表示にします。
レンタルサーバーの設定によっては、「index.html」などがないディレクトリはファイルが一覧で表示されるため、下記を記述する。

Options –Indexes

※上述したOptionsを使用できるかは、サーバーの設定により異なります。
 ちなみに、さくらのレンサバでは使用できません。
 別のやり方は、「ディレクトリ内にあるファイル一覧を表示させない」をご覧ください。

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

特定のIPアドレスのみアクセスを許可する

「.htaccess」に下記を記述して、特定のIPアドレスのみアクセスを許可する。
「11.11.11.11」や「22.22.22.22」はアクセスを許可するグローバルIPアドレスに変更してください。

WordPressのルートディレクトリ直下に設置。

<Files wp-login.php>
Order deny,allow
Deny  from all
Allow from 11.11.11.11
Allow from 22.22.22.22
</Files>

上記とは別に下記を記述した「.htaccess」のファイルを「wp-admin/」のディレクトリにも設置する。
「wp-admin」以下の下層のディレクトリ・ファイル全てにアクセス制限を掛けます。

Order deny,allow
Deny  from all
Allow from 11.11.11.11
Allow from 22.22.22.22

日本国外からのアクセスを制限する

IPアドレスで日本国外(海外/外国)からのアクセスを制限する.htaccess CGI's」のWebサイトでhtaccessを配布しております。

設置方法に関しては上記のWebサイトを確認してください。

ダウンロードしたhtaccessを設置するか、既にhtaccessがある場合は追記するかしてアクセス制限してください。

「wp-admin/」ディレクトリに設置するか、ルートディレクトリに設置するかでアクセス制限するディレクトリが異なります。

Webサイトが国内向けならルートディレクトリに設置して、日本国外の閲覧自体を制限してもよいかもしれません。

適宜設定してください。

導入プラグイン

導入すべきプラグインは一つ、「SiteGuard WP Plugin」です。

「SiteGuard WP Plugin」の導入

上述した徳丸氏の記事で紹介されている「SiteGuard WP Plugin」を導入することで様々なセキュリティ対策が行えます。
「SiteGuard WP Plugin」には下記の機能があります。

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

「SiteGuard WP Plugin」の使い方は、本家サイトもしくはググると紹介しているページが幾つもありますので、そちらをご覧ください。

最後に

最初に紹介した徳丸先生の記事も読みましょう。こちらからは以上です。