WordPressをセキュアに保つための10の方法


20121010 02

先日ですが、友人のWordPressが攻撃にあい、フィッシングサイトに利用されるという事件がありました。

サーバー会社に問い合わせをした所、FTPのログインが海外から合ったとの事。
パスワードがどこかから漏れていたのかもしれません。

怖いですね・・・

FTPパスワードが漏れた原因は分からなかったのですが、
出来る事はちゃんとやろうと思いました。

何かがあってからでは、遅いのですからね。

・・・という訳で、WordPressで出来るセキュリティ対策を10個ご紹介。

プラグインも探してみたので情報をシェアします。
誰かのお役に立てれば幸いです。

IT/WEB業界への転職なら求人サイトGreen

1.WordPressを常に最新版に

一番の対策はこれです。WordPressはオープンソースのため、攻撃者はサーバーにどんなプログラムがあるか分かる状態になっています。
脆弱性が周知されているので、攻撃する側も簡単に出来ちゃうんですね。

必ず、最新版にアップデートしましょう!

最近だと、古いバージョンを使っていると
Googleのウェブマスターツールからメールが来るようになっているようです。
このメールで気づく人も多いかも。

面倒くさがらずに、ここは徹底しましょう。
後から後悔するのは自分ですよ!

2.不要な情報は表示しない

デフォルトでは、バージョン番号をhead内に表示したり、ログインエラー時にユーザー名が存在するかどうかなど、不要な情報を表示しています。

これらを消すのに、Secure WordPressというプラグインが使うと簡単に対応が可能です。

3.SSLを使用する

SSLが使用可能なサイトの場合には、SSLで管理者画面にアクセスするようにします。
wp-config.phpに以下を追記するだけです。

define('FORCE_SSL_ADMIN', true);

4.wp-config.phpを.htaccessで保護をする

wp-config.phpはデータベースなどの重要な情報がありますので、
.htaccessにて全てのアクセスを拒否します。

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

5.攻撃者のIPを拒否

明らかに攻撃者だと分かるIPアドレスを拒否するようにします。

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 123.456.789
</LIMIT>

6.スクリプトインジェクションを防ぐ

攻撃者がscriptタグをフォームから入力しても処理しないようにします。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

7.ユーザー名にadminを使用しない

ブルートフォース攻撃(パスワードをランダムにしてログインを何度も試す)を防ぐために
必ずadmin以外のユーザー名を使いましょう。

8.ディレクトリの参照を防止

ディレクトリの一覧を表示しないように、以下の記述を.htacessに追記しましょう

Options -Indexes

9.不要なクロールされないようにrogots.txtを設置

以下のようなrobots.txtを設置します。

User-agent: Googlebot
 
Disallow: /wp-content/
Disallow: /trackback/
Disallow: /wp-admin/
Disallow: /feed/
Disallow: /archives/
Disallow: /index.php
Disallow: /*?
Disallow: /*.php$
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
Disallow: */feed/
Disallow: */trackback/
Disallow: /page/
Disallow: /tag/
Disallow: /category/
 
User-agent: Googlebot-Image
Disallow: /wp-includes/
Allow: /wp-content/uploads/
 
User-agent: Mediapartners-Google*
Disallow:
 
User-agent: ia_archiver
Disallow: /
 
User-agent: duggmirror
Disallow: /
 
Sitemap: http://example.com/sitemap.xml

詳しくはコリスさんのサイトが参考になります。
WordPressで作ったサイトを最適化するためのrobots.txt

セキュリティ対策のプラグインを導入する

最後に、セキュリティ対策用のプラグインを紹介します。
プラグインをインストールしたら、こちらも常に最新版になるようにチェックをしておきましょう。

Secure WordPress

セキュリティ対策をするプラグインです。
私は全てのサイトにこれを導入しています。

主な機能は以下の通り

  • ログイン失敗時に出るエラーメッセージを無効化
  • head内に表示されるWordPressのバージョンの非表示
  • プラグインやテーマファイルを格納しているフォルダへのセキュリティ対策

Akismet

コメントスパムを防ぐプラグイン。
標準で同梱されいているので、有効にしておきましょう。

Semisecure Login Reimagined

ログインする際に、パスワードをMD5で暗号化してからサーバーに送信をします。

Ultimate Security Checker

セキュリティに問題が無いかチェックしてくれるプラグイン

WP Author Slug

URLにユーザー名を表示しないようにするプラグイン

投稿者別アーカイブがあるサイトには導入するべきでしょう。
ユーザー名を知られないようにするために必須です。

以上、WordPressをセキュアに保つための10の方法でした。

follow us in feedly