※当記事内には、商品プロモーションを含む場合があります
WordPressのアクセス制限を掛けておくべきファイル・ディレクトリのまとめ

今回は、WordPressのアクセス制限を掛けておくべきファイルとディレクトリをまとめてみました。

外部から不正にアクセスされると、WordPressの中身を書き換えられたりする可能性もあります。

もちろん、不正アクセスに備えて、定期的にバックアップを取るなどの対応も大切です。
ですが、不正アクセスにより攻撃を受けてしまう可能性のあるファイルやディレクトリには、アクセス制限をかけておくことも大切です。

そこで、今回は、.htaccessを利用したアクセス制限の設定方法も一緒にまとめています。
WordPressを安全に運用したい方は、ぜひチェックしてください。

".htaccessを編集するのが怖い"、".htaccessの編集方法が分からない"という方もいると思います。
その場合には、プラグインを利用してアクセス制限の設定を行いましょう。
当記事を書いている人
サイト運営者
こちらの記事は、プログラミング・Web制作歴15年以上、ブログ歴10年以上のプログラマーが書いています。
プライベートでも仕事でも多くのレンタルサーバーを利用してきた経験から、サーバーに関する豊富な知識をもとに書いています。
>> プロフィール

アクセス制限が必要なファイルと制限方法

アクセス制限の必要なファイルはこちらです。

  • 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は、以下の機能で使用されるスクリプトです。

・ピンバック機能(WordPressのサイトにリンクが貼られた時に通知をしてくれる)
・iPhone、Androidなどのスマホアプリからの記事の更新
・メール投稿

ただ、このxmlrpc.phpを使った不正投稿が度々問題になることがあります。
弊社でも、過去に1度だけ被害を受けたことがあります。

ピンバック機能なんて無くても全く問題ないです。
メール投稿機能も、今の時代、使用している人間などほぼいないです。

スマホアプリから投稿できなくなるのは痛いですが、そこまで重要ではないので、極力アクセスを制限してしまいましょう。

注意点
xmlrpc.phpは、何かしらのプラグインで使用している場合も多いです。
有名なところであれば、Jetpackxmlrpc.phpと連携している為に、xmlrpc.phpへアクセス制限が掛かっていると、機能しない部分もあります。

そもそも、Jetpackなんて使う必要があるのか?という疑問もありますが、その辺はどうするのか考慮する必要も出てきます。
もし、xmlrpc.phpへアクセス制限をかけることで何かしらのエラーが出る場合には、アクセス制限を解除しておきましょう。

アクセス制限の設定方法

以下の記述を行った.htaccessxmlrpc.phpと同じ階層にアップしてください。

<Files xmlrpc\.php>
Require all denied
</Files>

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

wp-cron.phpは、予約投稿やアップデート通知など、時間と連動した処理(擬似的な定期実行)に使用されるプログラムを記述したファイルです。

このwp-cron.phpも不正アクセスに利用される可能性があります。
もし予約投稿を使っていない場合や、アップデート通知不要の場合には、アクセス制限を掛けておきましょう。

重要:制限前の確認事項
wp-cron.phpは予約投稿以外にも、以下の重要な処理を担っています。
  • バックアッププラグインの自動実行
  • キャッシュ系プラグインの自動クリア
  • お問い合わせフォームの自動返信メールの送信待ち処理

これらを完全にブロックすると、サイトの重要な機能が止まってしまう可能性があるため、影響を理解している中・上級者以外は制限しないことをおすすめします。

アクセス制限の設定方法

もし、外部からの不正な呼び出しを制限したい場合には、以下の記述を.htaccessに追記して、wp-cron.phpと同じ階層にアップしてください。

<Files wp-cron\.php>
Require all denied
</Files>

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

wp-login.phpは、WordPressログイン画面のファイルになり、アクセス制限を掛けている方は多いのではないでしょうか?

サイト運用者や制作者以外が管理画面にログインする必要はないですよね。
なので、それら以外の人間がアクセスする必要のないファイルになります。

それに、ログイン画面へは、外部の人間にはアクセスして欲しくないです。

可能であれば、特定のIPアドレス以外からのアクセスを制限することをおすすめします。

アクセス制限の設定方法

以下の記述を行った.htaccesswp-login.phpと同じ階層にアップしてください。

<Files wp-login\.php>
Require ip 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」は、WordPressの管理画面(ダッシュボード)を格納しているディレクトリです。

ここもwp-login.phpと同様、サイト運用者や制作者以外の人間がアクセスする必要はありません。
可能であれば、特定のIPアドレス以外からのアクセスを制限することをおすすめします。

ただし、wp-adminディレクトリを単純にIPアドレス制限してしまうと、サイトの一部機能が動かなくなる恐れがあります。

注意:admin-ajax.phpの除外が必要
WordPressでは、お問い合わせフォームの送信や、記事の「もっと見る」ボタンなどの動的な処理に、wp-admin内にある「admin-ajax.php」というファイルを使用します。

ディレクトリ全体を完全にロックしてしまうと、一般の読者がこれらの機能を使えなくなってしまうため、admin-ajax.phpだけは誰でもアクセスできる状態にしておく必要があります。

アクセス制限の設定方法

以下の記述を行った.htaccessを作成し、wp-adminディレクトリの直下にアップロードしてください。
(※管理者のIPアドレスのみ許可しつつ、AJAX通信のみ全開放する設定です)

Require ip xxxx.xxxx.xxxx.xxxx

# admin-ajax.php は表側の機能で使うため許可する

</Files admin-ajax\.php>
Require all granted
</Files>

「xxxx.xxxx.xxxx.xxxx」は、ご自身の環境のIPアドレスに変更してください。

ただし、こちらも、利用場所(オフィスなど)のIPアドレスが固定されている場合に限ります。

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

WordPressで使用する諸々の情報を記載するファイルです。
例えば、データベースのアカウントやテーブルのプレフィクスなど重要な情報を記述します。

その為、wp-config.phpへは直接アクセスできないようにしておきましょう。

アクセス制限の設定方法

以下を.htaccessに記述して、wp-config.phpと同じ階層にアップしましょう。
※既に.htaccessがアップされている場合には、そちらへ追記してください。

<Files wp-config\.php>
Require all denied
</Files>

wp-config.phpへは、サイトの管理者であってもアクセスする必要はないです。
その為、ほとんどの場合、上記の記述で問題ないです。

ですが、もし、特定のIPアドレスからのアクセスだけ許可したい場合には、以下のように記述してください。

<Files wp-config\.php>
Require ip xxxx.xxxx.xxxx.xxxx
</Files>

「xxxx.xxxx.xxxx.xxxx」は各環境のIPアドレスに変更してください。

wlwmanifest.xmlへのアクセス制限

wlwmanifest.xmlは、マニフェストファイルと呼ばれるファイルで、wp-includesディレクトリに保存されています。
外部からの攻撃が多いファイルになり、wlwmanifest.xmlを利用してWordPressの中身が不正に書き換えられてしまうリスクもあります。

もともとは「Windows Live Writer」というブログ投稿ソフトを利用するためのファイルですが、このソフトは2017年にサポートが終了しており、現在は利用されていません。

今となっては不要なファイルであり、脆弱性を突かれるリスクを減らすためにも、アクセス制限をかけておくのが賢明です。

アクセス制限の設定方法

以下の記述を行った.htaccessを、WordPressのインストールディレクトリにアップしてください。

<Files wlwmanifest\.xml>
Require all denied
</Files>

REST API「wp-json」へのアクセス制限

REST APIとは、WEBシステムを外部から利用できるようにした仕組みです。

WordPressでもREST APIの仕組みが実装されており、外部システムからアクセスしてデータを利用することができます。
とても便利な機能ですが、誰でもアクセスできてしまうというデメリットもあります。

APIを利用されていない方は、このREST APIへもアクセス制限をかけておきましょう。

アクセス制限の設定方法

一番簡単な方法は、WordPressインストールディレクトリに「wp-json」というディレクトリを作成することです。

以下を記述した.htaccessをwp-jsonディレクトリ直下にアップしてください。

Require all denied

もしくは、functions.phpへ以下のコードを記述することで、機能を無効化することもできます。

add_filter( 'rest_authentication_errors', function( $result ) {
if ( ! empty( $result ) ) {
return $result;
}
// ログインしていない場合のみREST APIを無効化
if ( ! is_user_logged_in() ) {
return new WP_Error( 'rest_not_logged_in', 'REST APIへのアクセスは制限されています。', array( 'status' => 401 ) );
}
return $result;
});

license.txt、readme.html、wp-config-sample.phpへのアクセス制限

インストールディレクトリ直下にある以下の3つのファイルも不要です。

  • license.txt
  • readme.html
  • wp-config-sample.php

ライセンス情報やバージョン情報なども記述されており、外部からは見られたくないファイルになります。
削除しても問題はないので、物理的に削除してしまうのもおすすめです。

wp-config-sample.phpに関しては、残しておいても問題はないですが、不要なスクリプトファイルは削除してしまいましょう。
※不要なPHPスクリプトが残っていても、脆弱性が増えるだけです。

ただ、削除したとしても、WordPress本体のバージョンアップの度に、同じファイルが作成されてしまいます。
その都度、手動で削除する必要もあるので注意してください。

それが面倒な方は、.htaccessを使ってアクセス制限をかけてしまうのもおすすめです。

アクセス制限の設定方法

<Files ~ "^(license\.txt|readme\.html|wp-config-sample\.php)$">
Require all denied
</Files>

記述をひとまとめにする

同じ内容を記述する場合には、コードを一つにまとめてしまうこともできます。

例えば、xmlrpc.php、wp-cron.php、wp-config.phpの3つのファイルは、同一階層に設置されているファイルです。

もし、全てのファイルにアクセス制限を掛ける場合には、以下のようにひとまとめにすることも可能です。

<Files ~ "^(xmlrpc\.php|wp-cron\.php|wp-config\.php)$">
Require all denied
</Files>

※複数ファイル設定する場合、パイプ(|)で区切ります。

.htaccessへ記述するコードが増えると、ファイルが見にくくなります。
その場合には、上記のようにコードをまとめてしまうこともできます。

WordPressのセキュリティ設定を行えるレンタルサーバーもあり

以下のレンタルサーバーの場合、コントロールパネル上からアクセス制限をかけることも可能です。
エックスサーバー
ConoHa WING

エックスサーバーであれば、このような画面上から簡単に設定を行えます。
エックスサーバーのWordPressセキュリティ設定

ConoHa WINGの設定画面はこちらです。
Conoha WINGのWordPressセキュリティ設定

ログイン試行回数を制限することも可能です。
より安全にWordPressを運営したい方は、上記レンタルサーバーを利用するのもおすすめです。

最後に

今回は、WordPressでアクセス制限をかけておくべきファイルやディレクトリについてまとめました。

WordPressは便利に利用でき、Webサイトを簡単に構築できるのが大きなメリットです。
ですが、世界中に利用者が多いため、WordPressで構築したWebサイトは悪意のあるユーザーからの攻撃対象になりかねません。

外部からアクセスされたくないファイルやディレクトリには、アクセス制限をかけておきましょう。

また、WordPressに関するセキュリティ設定を行えるレンタルサーバーもあります。
よりセキュリティを意識したい方は、そういったレンタルサーバーを利用するのもおすすめです。

この記事を書いた人
userimg
ダッチ
当サイトは丹波のホームページ屋さんの代表「ダッチ」が運営しています。

プログラミング・WEB制作歴15年以上になります。

ブログ・WordPress・レンタルサーバーに関して分からないことがあればご質問ください!
ご質問・ご相談は無料で受け付けています。

https://dacchi.hp.peraichi.com/

WEB制作に関するお仕事の依頼は、こちらのホームページからお願いします。

京都HP屋さん
丹波のホームページ屋さん

Xでフォローしよう

おすすめの記事