WordPress Xserver 問題解決

初心者の私がWordPressブログを作るまで⑤(セキュリティ対策〜.htaccess設定〜)

2020年7月1日

当記事では、実践した.htaccessファイルに関する設定の中からいくつかをご紹介します。

当記事の通りに設定をすれば万全!というわけでもありませんが、こういうことやってるんだな〜くらいの参考にして頂ければ幸いです。

また.htaccessファイルは1サイトに1つではなく複数作成してサイト内に適宜配置していきますので、置く場所や書き込むファイルをお間違えのなきようお気をつけください。

第2回の記事内の「サイトのSSL化 - http→httpsへのリダイレクト設定をする」にて.htaccessファイルを編集していますが、このときのファイルは「(設定対象ドメイン名)/public_html/.htaccess」のことを指すようです。

初心者の私がWordPressブログを作るまで②(インストール〜最低限の設定編)

WordPressのインストール サーバーとドメインが準備できたら、契約したサーバー毎の指示に従ってWordPressのインストールをしていきます。 私は事前にXFREEやMAMPなどを利用してWor ...

続きを見る

ご利用のサーバーによってファイルの場所などが異なるかもしれませんので、レンタルサーバーのマニュアルページなどで(ファイルの場所などを)確認した上で作業するようにしましょう。

.htaccessファイルって何?

.htaccessとは、WebサーバーApacheにおける、サーバーディレクトリごとの設定情報を記しておくためのファイルのことである。(Weblio辞書-IT用語辞典バイナリより)

要するに、Apache(Webサーバーソフトウェアの一種)で使用可能な設定ファイルです。

このファイルに命令を記述することで、サーバー上のファイルへのアクセス権限の設定などを行う事ができます。

.htaccessファイルは設置した場所とそれより下層のディレクトリに影響を及ぼし、複数の.htaccessファイルが設置されている場合にはより下層のものが優先されます。

この.htaccessファイルによる制御が可能かどうかは「レンタルサーバーがApacheを使っているか」によります。いくつかの有名なサーバーはApacheを使用しているため問題なく設定できそうでしたが、念の為に「(ご利用のレンタルサーバー名) サーバー仕様」「(ご利用のレンタルサーバー名) Apache」などで検索して確認してみてください。

.htaccessへのアクセスを制限する

他のファイルへの制御が書いてある.htaccess自体にアクセスされたのでは意味がないので、.htaccessファイルそのものへのアクセスが出来ないようにします。

参考にしたのはこちらのサイトです。

特定のファイルだけ守る - .htaccessの小技編 - futomi's CGI Cafe

上から2つ目のhtaccessとhtpasswdに制限をかけるものを採用しています。

htpasswdは"ベーシック認証"を適用する過程で作成するファイルです。

(ベーシック認証はWordPressのログイン画面にアクセスする際に既定のIDとパスワードの入力を求めるものです。詳しくは次記事に記載します。)

もしベーシック認証を利用しないのであれば、

<Files \.htaccess>
deny from all
</Files>

のみで大丈夫かと思います。

\.htaccessの「\」はエスケープと呼ばれるものです。

これは正規表現という表現法によるもので、正規表現において「.」は「任意の一文字」を表す記号として使用されます。これをメタキャラクタといいます。(正規表現とは - IT用語辞典)

しかし前述した.htaccessに含まれる「.」はメタキャラクタではなく、htaccessを隠しファイルとして扱うために付ける「.」になります。

正規表現の世界で特別な意味を与えられている記号は他にも*や+、?などがありますが、それぞれはメタキャラクタとしてではなく単なる記号として扱われる場合もあります。

そのような場合に「これはメタキャラクタではなく只の記号ですよ」という目印のために使用するのが\(エスケープ)だというわけです。

直前に\が置かれエスケープされることにより各記号はメタキャラクタとしての意味を失い、記号そのものとして配置されます。

この設定はサイト内に設置する全てのhtaccess(及びhtpasswd)に適用したいので、サイト内の一番上の階層に設置します。

↑このへんのファイルがある場所と同じあたりです。
(冒頭で述べたとおり、Xserverの方はここにある.htaccessに関してはサーバーパネルから編集が可能です)

wp-includesのセキュリティ設定

wp-includesディレクトリに攻撃者が悪意あるPHPファイルなどを設置するのを防ぎます。

参考サイトはこちらです。

WordPress の安全性を高める - WordPress Codex 日本語版

WordPressのセキュリティ 制作者向け基本ガイド

WordPressCodexだけだと結局なんの意味があるのかが良く分かりませんでしたが、2つ目のリンクの「wp-includeへのアクセスを禁止する」の項目の説明がわかりやすかったです。

これらのページを参考にして、.htaccess ファイルの # BEGIN WordPress と # END WordPress タグの外側に以下のコードを記述します。

場所は前項と同じ、wp-adminやwp-contentディレクトリがあるところです。

# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
# BEGIN WordPress

xmlrpc.phpへの不正アクセスをリダイレクト

詳しい説明などはこちらのサイトにて分かりやすく説明がされていたので、リンク先(外部サイト)を御覧ください。

WordPressの脆弱性をついた不正アクセス対策 - ATWORK SYSTEM

wp-config.phpについて

WordPressを構成するファイル群の中にwp-config.phpというファイルがあります。

これにはデータベース接続情報などのサイトに関する情報が記載されており、重要なファイルのひとつです。

ファイルの場所を変更する

以前はWordPress Codex 日本語版に記載がありましたが、現在はwordpress.orgのサポートページへのリンクが記載されているのみになっています。
そのため当時参考にした情報元を見つけることができませんでした。

要するにwp-config.phpはひとつ上の階層の非公開ディレクトリに配置しても問題なく動作しますので、移動してセキュリティを高めましょうという話です。

今も有用なのかは分かりませんが、この記事を書いている令和2年7月1日時点でサイトも問題なく動作していることをここに記録しておきます。

この方法を実践した場合には、wp-config.phpはpublic_htmlディレクトリと同じ場所に配置されます。(Xserver以外だと名前が違うかもしれませんが、最初にwp-config.phpが置かれていたフォルダと並ぶ形になります)

この方法は公開のルートディレクトリにフォルダを作成してそこにWordPressをインストールしている場合にはうまくいかない可能性がありますのでご注意ください。

.htaccessの設定

.htaccessファイルは配置した場所より下層のディレクトリに作用するので、wp-config.phpにはこれまで使っていた.htaccessファイルの影響下にはありません。

今まで使っていたファイルはサーバー側で用意されておりあまり動かしたくないので、ここにもうひとつwp-config.php保護用の.htaccessファイルを作成します。

このファイルに記載するのは、

.htaccess自体の保護

<Files \.htaccess>
deny from all
</Files>

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

<Files wp-config\.php>
Order deny,allow
Deny from all
</Files>

の2つです。



ブログランキング・にほんブログ村へ

-WordPress, Xserver, 問題解決

Copyright© こげろぐ , 2024 All Rights Reserved.