今回は、WordPressのアクセス制限を掛けておくべきファイルとディレクトリをまとめてみました。
外部から不正にアクセスされると、WordPressの中身を書き変えられたりする可能性もあります。
もちろん、不正アクセスに備えて、定期的にバックアップを取るなどの対応も大切です。
ですが、不正アクセスにより攻撃を受けてしまう可能性のあるファイルやディレクトリには、アクセス制限をかけておくことも大切です。
そこで、今回は、.htaccessを利用したアクセス制限の設定方法も一緒にまとめています。
WordPressを安全に運用したい方は、ぜひチェックしてください。
その場合には、プラグインを利用してアクセス制限の設定を行いましょう。
コンテンツ
- 1 アクセス制限が必要なファイルと制限方法
- 2 WordPressのセキュリティ設定を行えるレンタルサーバーもあり
- 3 最後に!
アクセス制限が必要なファイルと制限方法
アクセス制限の必要なファイルはこちらです。
- xmlrpc.php
- wp-cron.php
- wp-login.php(ログイン画面)
- wp-adminディレクトリ(ダッシュボード)
- wp-config.php
- wlwmanifest.xml
- license.txt
- wp-jsonディレクトリ(REST API)
- readme.html
- wp-config-sample.php
xmlrpc.phpへのアクセス制限
xmlrpc.phpは、以下の機能で使用されるスクリプトです。
・iPhone、Androidなどのスマホアプリからの記事の更新
・メール投稿
ただ、このxmlrpc.phpを使った不正投稿が度々問題になることがあります。
弊社でも、過去に1度だけ被害を受けたことがあります。
ピンバック機能なんて無くても全く問題ないです。
メール投稿機能も、今の時代、使用している人間などほぼいないです。
スマホアプリから投稿できなくなるのは痛いですが、そこまで重要ではないので、極力アクセスを制限してしまいましょう。
有名なところであれば、Jetpackがxmlrpc.phpと連携している為に、xmlrpc.phpへアクセス制限が掛かっていると、機能しない部分もあります。
そもそも、Jetpackなんて使う必要があるのか?という疑問もありますが、その辺はどうするのか考慮する必要も出てきます。
もし、xmlrpc.phpへアクセス制限をかけることで何かしらのエラーが出る場合には、アクセス制限を解除しておきましょう。
アクセス制限の設定方法
以下の記述を行った.htaccessをxmlrpc.phpと同じ階層にアップして下さい。
Order deny,allow
Deny from all
</Files>
wp-cron.phpへのアクセス制限
予約投稿やアップデート通知など時間と連動した処理に使用されるプログラムを記述したファイルです。
このwp-cron.phpも不正アクセスに利用される可能性があります。
もし予約投稿を使っていない場合や、アップデート通知不要の場合には、アクセス制限を掛けておきましょう。
アクセス制限の設定方法
以下の記述を行った.htaccessをwp-cron.phpと同じ階層にアップして下さい。
Order deny,allow
Deny from all
</Files>
wp-login.phpへのアクセス制限
wp-login.phpは、WordPressログイン画面のファイルになり、アクセス制限を掛けている方は多いのではないでしょうか?
サイト運用者や制作者以外が管理画面にログインする必要はないですよね。
なので、それら以外の人間がアクセスする必要のないファイルになります。
それに、ログイン画面へは、外部の人間にはアクセスして欲しくないです。
可能であれば、特定のIPアドレス以外からのアクセスを制限することをおすすめします。
アクセス制限の設定方法
以下の記述を行った.htaccessをwp-login.phpと同じ階層にアップして下さい。
Order deny,allow
Deny from all
Allow from xxxx.xxxx.xxxx.xxxx
</Files>
「xxxx.xxxx.xxxx.xxxx」は、サイト運用者や制作者の環境のIPアドレスに変更して下さい。
これにより、「Allow from xxxx.xxxx.xxxx.xxxx」へ設定したIPアドレスのみがアクセス可能になります。
もし複数の場所からアクセスする場合には、
「Allow from xxxx.xxxx.xxxx.xxxx」を追加すれば、複数のIPアドレスからのアクセスが可能になります。
ただし、こちは特定のIPアドレスからのアクセスのみを許可する方法になります。
なので、利用場所(オフィスなど)のIPアドレスが固定されている場合に限ります。
※固定IPアドレスを取得されていない場合には設定不可になります。
管理画面「wp-admin」へのアクセス制限
「wp-admin」は、管理画面のダッシュボードですね。
ダッシュボードも、wp-login.phpと同様に、サイト運用者や制作者以外がアクセスする必要のない画面になります。
こちらも、可能であれば、特定のIPアドレス以外からのアクセスを制限することをおすすめします。
アクセス制限の設定方法
以下を記述した.htaccessをwp-adminディレクトリ直下にアップして下さい。
Deny from all
Allow from xxxx.xxxx.xxxx.xxxx
「xxxx.xxxx.xxxx.xxxx」は、サイト運用者や制作者の環境のIPアドレスに変更して下さい。
ただし、こちらも、利用場所(オフィスなど)のIPアドレスが固定されている場合に限ります。
wp-config.phpへのアクセス制限
WordPressで使用する諸々の情報を記載するファイルです。
例えば、データベースのアカウントやテーブルのプレフィクスなど重要な情報を記述します。
その為、wp-config.phpへは直接アクセスできないようにしておきましょう。
アクセス制限の設定方法
以下を.htaccessに記述して、wp-config.phpと同じ階層にアップしましょう。
※既に.htaccessがアップされている場合には、そちらへ追記してください。
Order deny,allow
Deny from all
</Files>
wp-config.phpへは、サイトの管理者であってもアクセスする必要はないです。
その為、ほとんどの場合、上記の記述で問題ないです。
ですが、もし、特定のIPアドレスからのアクセスだけ許可したい場合には、以下のように記述してください。
Order deny,allow
Deny from all
Allow from xxxx.xxxx.xxxx.xxxx
</Files>
「xxxx.xxxx.xxxx.xxxx」は各環境のIPアドレスに変更して下さい。
wlwmanifest.xmlへのアクセス制限
wlwmanifest.xmlは、マニュフェストファイルと呼ばれるファイルで、wp-includesディレクトリに保存されています。
外部からの攻撃が多いファイルになり、wlwmanifest.xmlを利用してWordPressの中身が不正に書き変えられてしまうリスクもあります。
wlwmanifest.xmlは、ほとんどの方にとっては不要なファイルになるので、こちらのファイルへもアクセス制限をかけておきましょう。
Windows Live Writer利用者は注意
wlwmanifest.xmlは、「Windows Live Writer」を利用してWordPressの記事投稿を行う場合に利用されます。
「Windows Live Writer」利用者以外の方は、アクセス制限をかけておきましょう。
アクセス制限の設定方法
以下の記述を行った.htaccessをWordPressのインストールディレクトリにアップして下さい。
Order deny,allow
Deny from all
</Files>
REST API「wp-json」へのアクセス制限
REST APIとは、WEBシステムを外部から利用できるようにした仕組みです。
WordPressでもREST APIの仕組みが実装されており、外部システムからアクセスしてデータを利用することができます。
とても便利な機能ですが、誰でもアクセスできてしまうというデメリットもあります。
APIを利用されていない方は、このREST APIへもアクセス制限をかけておきましょう。
アクセス制限の設定方法
一番簡単な方法は、WordPressインストールディレクトリに「wp-json」というディレクトリを作成
↓
以下を記述した.htaccessをwp-jsonディレクトリ直下にアップして下さい。
Deny from all
もしくは、functions.phpへ以下のコードを記述することで、機能を無効化することもできます。
return new WP_Error( 'disabled', __( 'REST API is disabled.' ), array( 'status' => rest_authorization_required_code() ) );
}
add_filter( 'rest_authentication_errors', 'disable_rest_api' );
license.txt、readme.html、wp-config-sample.phpへのアクセス制限
インストールディレクトリ直下にある以下の3つのファイルも不要です。
- license.txt
- readme.html
- wp-config-sample.php
ライセンス情報やバージョン情報なども記述されており、外部からは見られたくないファイルになります。
削除しても問題はないので、物理的に削除してしまうのもおすすめです。
wp-config-sample.phpに関しては、残しておいても問題はないですが、不要なスクリプトファイルは削除してしまいましょう。
※不要なPHPスクリプトが残っていても、脆弱性が増えるだけです。
ただ、削除したとしても、WordPress本体のバージョンアップの度に、同じファイルが作成されてしまいます。
その都度、手動で削除する必要もあるので注意してください。
それが面倒な方は、.htaccessを使ってアクセス制限をかけてしまうのもおすすめです。
アクセス制限の設定方法
Order deny,allow
Deny from all
</Files>
記述をひとまとめにする
同じ内容を記述する場合には、コードを一つにまとめてしまうこともできます。
例えば、mlrpc.php、wp-cron.php、wp-config.phpの3つのファイルは、同一階層に設置されているファイルです。
もし、全てのファイルにアクセス制限を掛ける場合には、以下のようにひとまとめにすることも可能です。
Order deny,allow
Deny from all
</Files>
※複数ファイル設定する場合、パイプライン(|)で区切ります。
.htaccessへ記述するコードが増えると、ファイルが見にくくなります。
その場合には、上位のようにコードをまとめてしまうこともできます。
WordPressのセキュリティ設定を行えるレンタルサーバーもあり
以下のレンタルサーバーの場合、コントロールパネル上からアクセス制限をかけることも可能です。
■エックスサーバー
■ConoHa WING
エックスサーバーであれば、このような画面上から簡単に設定を行えます。
ConoHa WINGの設定画面はこちらです。
ログイン試行回数を制限することも可能です。
より安全にWordPressを運営したい方は、上記レンタルサーバーを利用するもおすすめです。
最後に!
今回は、WordPressでアクセス制限をかけておくべきファイルやディレクトリについてまとめました。
WordPressは便利に利用でき、WEBサイトを簡単に構築できるのが大きなメリットです。
ですが、世界中に利用者が多いため、WordPressで構築したWEBサイトは悪意のあるユーザーからの攻撃対象になりかねません。
外部からアクセスされたくないファイルやディレクトリには、アクセス制限をかけておきましょう。
また、WordPressに関するセキュリティ設定を行えるレンタルサーバーもあります。
よりセキュリティを意識したい方は、そういったレンタルサーバーを利用するのもおすすめです。