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

HOME'; $txt2 = '
  • サーバサービス
  • '; $txt3 = '
  • サポート
  • '; $txt4 = '
  • ホームページ制作
  • '; $txt5 = '
  • 技術情報
  • '; if($dir == "") $txt1 = ''; if($dir == "server_service") $txt2 = ''; if($dir == "support") $txt3 = ''; if($dir == "hp_service") $txt4 = ''; if($dir == "technology") $txt5 = ''; ?>

    [技術ブログ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