
.htaccess は、Apache ウェッブサーバーの設定ファイルです。.htaccessでサーバーの様々な機能設定をおこなうことができます。本記事では、WordPressのセキュリティを強化する.htaccessの設定方法を紹介します。
目次 - Table of Contents
はじめに / 注意事項
.htaccess のファイルは、サイトの機能設定を行う重要なファイルです。記述に間違い、スペルミスなどがあると、サイトが表示されなくなったりします。編集を行う前に、必ず.htaccessのバックアップを取るようにして下さい。
ここで紹介する .htaccess の設定は、本サイトの別記事、WordPressのセキュリティを強化する基本で取り上げた内容と共通するところが多いです。合わせてご参照頂ければ、幸いです。
.htaccess を保護する
.htaccessはサーバーの機能設定を行う重要な役割を持つファイルです。そのため、ハッカーからも狙われやすいです。セキュリティを強化する上で、まず第一に行った方が良いことは、.htaccess自体を保護することです。以下の記述を.htaccessに加えると、承認していないユーザーのアクセスを制限することができます。
# .htaccessの保護 <files ~ "^.*\.([Hh][Tt][Aa])"> order allow, deny deny from all satisfy all </files>
上記のルールは、”hta”で始まるファイル(.htaccessが該当します)へのアクセスを制限するルールです。
wp-config.phpへのアクセスを制限する
wp-config.phpは、host、データベースのユーザー名やパスワード等、その他の重要なWordPressの設定用のアクセス情報が保管されているファイルです。このファイルへのアクセスを制限する以下のルールの記述を.htaccessに加えます。
# wp-config.php の保護 <files wp-config.php> order allow,deny deny from all </files>
includes ディレクトリへのファイル設置をブロックする
ハッカーが乗っ取り用のファイルを、以下の4つのincludes ディレクトリに設置することを防止します。
- /wp-admin/includes/ : WordPress管理用ファイルが含まれる ディレクトリー
- /wp-includes/ : WordPress : コアの主要な機能を格納するディレクトリー
- /wp-includes/tinymce/langs/ : tinymce で使用する(サポートする)言語ファイル格納フォルダー
- /wp-includes/theme-compat/ : WordPress のテーマのバックワード互換性を保つためにテーマの古い機能などを格納するディレクトリー
# includes ディレクトリーのブロック <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>
サイトのディレクトリブラウジングを防止する
ハッカーなど他者が、サイトのディレクトリや含まれるファイル情報などを見ることができないよう設定するルールです。
# ディレクトリ閲覧防止 Options All -Indexes
特定のディレクトリ内でのPHPの実行を無効にする
ハッカーの乗っ取りの手口の一つは、バックドアの設置です。バックドアのファイルは、/wp-includes/ や /wp-content/uploads/ フォルダーなどに設置されることが多いです。これらのディレクトリでのPHP実行を無効にすることは、バックドアの防止に効果があります。
.htaccessを新たに作成して、以下のコードを記載して(貼り付けて)保存し、/wp-includes/ と /wp-content/uploads/ のディレクトリーにアップロードします。
# PHP実行禁止 <Files *.php> deny from all </Files>
不審なIPアドレスからのアクセスをブロックする
以下の記述を.htaccessに加えると、指定されたIPアドレスからのサイトへのアクセスをブロックすることができます。不審なIPアドレスなどが分かっている場合、アクセス禁止にすることができます。
# 指定したIPアドレスからのアクセス禁止 <Limit GET POST> order allow,deny deny from xxx.xxx.xx.x(指定IP アドレス) allow from all </Limit>
WordPressの管理画面へのログインにIP アドレスを指定する
WordPressのダッシュボードにログインするためにアクセスする wp-login.php の実行を指定したIPアドレス(レンジ)のみ認める設定です。
# 指定したIP以外ログインを認めない <files /wp-login.php> order deny,allow allow from [IP アドレス] allow from [IP アドレス2] deny from all </files>
画像ファイルのホットリンク防止
以下のルールは、サイトの画像を指定したサイト以外の他のウェッブサイトが使用することを防止します。ホットリンクは、他のサイトによる画像へのアクセスによって帯域幅制限への影響やスピード低下などをもたらすことを防ぎます。小規模なサイトの場合は、一般的にはホットリンクによる影響を心配する必要ありません。ホットリンク防止は、大規模なサイトや画像ファイルを他のサイトが利用していることによって弊害が生じたりしている場合に有効な設定です。通常のサイトでは、特に理由がなければ、設定はオプション(しなくても良い)です。
# ホットリンク禁止 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} \ !^http://(www\.)example.com/.*$ [NC] RewriteCond %{HTTP_REFERER} \ !^http://(www\.)example2.com/.*$ [NC] RewriteRule \.(gif|jpg|jpeg|bmp|png)$ - [NC,F,L]
上の記述のexample.comを、運営するサイトのドメインに変更します。example2.comは、例えば関連するサイトやgoogle.comなど自分が運営する関連サイトやgoogleなどホットリンクを許可するドメインを必要に応じて加えます。
コメントを残す(承認後表示されます)