WordPressのセキュリティを高める.htaccessの設定

こんにちは。「クロジカサーバー管理」コンサルティングチームの西原です。

.htaccess」ファイルは、ページやファイルへのアクセスを制御するWebサーバー用の設定ファイルです。WordPressでもパーマリンク設定に使われる重要なファイルで、内容も複雑なコマンドで書かれているので初心者の方には取り扱いが難しく感じられそうですが、特定の内容を書き加えるだけでWordPressのセキュリティを向上できるため、WordPressを立ち上げたら最初に実施したい内容を紹介します。

WordPressの.htaccessを編集するうえでの注意

WordPressをインストールした直後の.htaccessは以下のようになっています。


      # BEGIN WordPress
      <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteRule ^index\.rdf$ /feed/rdf/ [L,R=301]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
        </IfModule >
      # END WordPress
    

# BEGIN WordPressから# END WordPressに挟まれた範囲はWordPressのための設定で、WordPressで設定を変更すると書き換えられるため、よく分からないうちは# BEGIN WordPressより上に書き加えるようにします。

.htaccessの保護

.htaccess自体が不正アクセスされては他の設定も無意味になってしまうので.htaccessファイルへのアクセスをすべて拒絶します。


      <Files ~ "^\.(htaccess|htpasswd)$">
        deny from all
      </Files>
    

ディレクトリ表示の禁止

ブラウザでディレクトリにアクセスされた時にファイル一覧が見れる状態は攻撃の手がかりになってしまうため、表示されないようにします。


        Options -Indexes
      

ログイン管理画面(wp-login.php)のアクセス制限

ログイン画面への攻撃を防ぐため、関係者以外はログイン画面にアクセスできないようにします。IP制限かベーシック認証を使うパターンがあります。

IP制限

会社で固定IPを持っている場合はIP制限をします。


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

Allow fromにはIPを記入してください。

ベーシック認証

固定IPを持っていない、また外部関係者がアクセスする場合はベーシック認証をかけます。

まずベーシック認証用に暗号化されたユーザーIDとパスワードを記した「.htpasswd」ファイルが必要です。以下のサイトで簡単に作ることができます。

.htaccessEditor


        <Files wp-login.php>
          AuthName "Please enter your ID and password"
          AuthType Basic
          AuthUserFile /home/www/***/.htpasswd
          Require valid-user
        </Files>
      

AuthUserFileにはアップした.htpasswdのサーバーパスを記入してください。

管理者画面(wp-admin)のアクセス制限

wp-adminディレクトリ以下はログインユーザー以外は不要なため、一切のアクセスを禁止します。wp-adminディレクトリ内に.htaccessを新規作成しアクセス制限をかけます。


          Order deny,allow
          Deny from all
          Allow from 00.00.00.00
        

Allow fromにはIPを記入してください。

攻撃されやすいファイルのアクセス制限

  • wp-config.php:WordPressの動作に必要な設定ファイル
  • wp-cron.php:予約投稿やアップデート通知など時刻連動の処理に使われるファイル

        <FilesMatch "^(wp-config\.php|wp-cron\.php)">
          order allow,deny
          deny from all
        </FilesMatch>
      
  • xmlrpc.php:特定のホストへpinbackを送るファイル

        <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteBase /
          RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]
        </IfModule>
      

xmlrpc.phpへのアクセスは0.0.0.0へリダイレクトして負荷を避けるノウハウが一般化されています。なおxmlrpc.phpは有名プラグイン「Jetpack」で使われているため、もし使っている場合は以下の対応も検討してください。

参照:WordPressのxmlrpc.phpへのブルートフォースを防ぐ

さいごに

.htaccessで制御できるWordPressのセキュリティ対策はおよそ以上となります。定番の形さえ掴んでしまえばあとはほぼコピペで流用できます。本稿が.htaccessの編集にお役立てば幸いです。

コーポレートサイトクラウドでセキュアに

コーポレートサイトをクラウドでセキュアに クロジカガイドブック

無料ではじめるサーバー管理
クロジカガイドブック

「クロジカサーバー管理」の詳しい内容がわかる資料をご用意しました。
  • コーポレートサイト構築・運用の課題を解決
  • クロジカサーバー管理の主な機能
  • 導入事例
  • 導入までの流れ

詳しい資料をご覧いただけます

クロジカサーバー管理のサービス内容を記載した資料をダウンロードできます。
クロジカの機能や事例が分かる
資料ダウンロード