24時間365日フルマネージドホスティングサービスのデイーネット

[技術ブログVol.5] 簡単WordPress セキュリティ

05_wp_240_sec

今回は簡単にできるWordPressのセキュリティ設定を紹介します。
「簡単に」ということで、方針を以下のとおりとします。

方針:ソースは変更せずに簡単に。

  • WordPress本体やプラグイン、利用テーマのコードは変更しません。
  • WordPress自体のコードを修正するとアップデート等に支障が出る可能性があります。
  • プラグインやテーマのコードの変更は、コンテンツへの影響があるので、今回は対象外とします。

この方針の中で、今回実施する内容は次の5点です。

  1. wp-admin/wp-login.phpへのアクセス制限
  2. wp-config.phpへのアクセス制限
  3. ログインパスワードを複雑にする
  4. readme.htmlを削除する
  5. テーマやプラグイン利用のポリシーを決める

では、1番目からです。

 

1.wp-admin / wp-login.phpへのアクセス制限

wp-adminディレクトリ以下は管理画面で、wp-login.phpはログインページになります。
この両方に対してアクセス制限を行います。

WordPress自体には画面毎にアクセス制限できる機能はなく、デフォルトでは、全世界からアクセスできてしまいます。
(※そういった用途のプラグインをインストールすれば可能です)

アクセス制限の方法は簡単で、.htaccessで制限します。
Basic認証などでもいいですが、より強力に特定IPからのみ許可するようにします。

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

wp-login.phpのあるディレクトリに次の内容の.htaccessを設置します。
(※WordPressのインストールディレクトリです)

<Files wp-login.php>
Order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx #許可するIPアドレス
</Files>

wp-adminのアクセス制限

wp-adminディレクトリの中に、次の内容の.htaccessを設置します。
(※WordPressのインストールディレクトリ以下にあります)

order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx #許可するIPアドレス

 

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

wp-config.phpには、データベースへの接続情報なども書かれているので、Apacheの設定に不備があった場合、他のユーザからファイルの中身を閲覧できてしまいます。
その為、ファイルの権限をデフォルトから変更します。

デフォルトでは、他のユーザも参照できる権限になっているので、該当ユーザしか見れないようにします。
SSHなどでサーバにログインできる場合は、WordPressのインストールディレクトリに移動して、以下のコマンドを実行します。

chmod 404 /home/user/wp-config.php

SSH接続できない場合は、FTPソフトでパーミッションを「404」に修正します。

※他には、Ver2.6よりwp-config.phpを移動させることが出来るので、非公開ディレクトリへ移動させるということもできます。
 但し、階層は1つ上までで、それ以上の上位の階層は動作が保証されていません。
 また、ユーザ権限によっては、上位ディレクトリにアクセスできない場合もあります。

 

3.ログインパスワードを複雑にする

これは程度の問題になりますが、類推しやすいものは避けましょう。

ブルートフォースなどでパスワード類推が行われる場合、機械的に行われることを前提にすると、アタック用にパスワードファイルが用意されます。しかし、ランダムな文字列で作られたパスワードに対してアタックしようと思えば、全てのパターンを網羅したパスワードファイルが必要です。
ところが、パスワードが複雑になればなるほど、パスワードファイルのサイズが肥大化してしまいます。

例えば、英小文字と数字で8桁の全てのパスワードを書いたファイルを作ると、ファイルサイズが20TBを超えてしまいます。

この手間を考えると、最低でも「英大小文字 + 数字で8桁」のランダム文字列にしましょう。
ポイントは、完全にランダム文字列にすることです。「Password」とか「a1b2c3d4」というような類推しやすいパスワードは絶対にやめましょう!

以下のようなパスワード作成ツールを使うと簡単です。
http://www.graviness.com/temp/pw_creator/

 

4.readme.htmlを削除する

WordPressをインストールした同じ階層にあるreadme.htmlを削除します。
このファイルは標準で設置されてしまいますが、ファイルにWordPressのバージョンが書かれています。

WordPressのバージョンを調べる方法は、他にもいくつかありますが、プラグインのソースコードを変更したりする必要があるので、今回は対象外とします。

 

5.テーマやプラグイン利用のポリシーを決める

テーマやプラグインをインストールする場合は、公式サイト「wordpress.org」からインストールするようにしましょう。
公式のwordpress.orgではなく、個人サイトなどからインストールすることもあると思いますが、中には不正なコードによりWordPress自体のコードが書き換えられたりするものもあり、どんな影響が出るか分かりません。

逆に公式のものであれば、自動アップデートが利用できたりしますし、しっかり内容レビューを受けたもののみが公開されているので比較的安心です。

基本ルールとして、「公式のテーマ、プラグイン以外は利用しない」とすることがオススメです。

 

▼次回予定

今回はWordPressのセキュリティについて簡単に紹介しました。

次も引き続きWordPressのセキュリティを紹介しようと思います。

更新予定は、10月中旬頃です。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar