この記事は約6分で読めます。
本文は約3451文字です
【コピペOK】プラグイン無し .htaccessだけで行うWordPressセキュリティ対策
![](https://stilltalkintv.com/wp-content/uploads/2022/11/047-scaled.jpg)
WordPressの不正アクセスや改ざんが発生するケースの原因は、実はIDとパスワードが簡単なことがほとんどです。
不正ログインされた後は、プラグインをアップロードされてバックドアを仕掛けられて、あとは外部から自由にアクセスされてしまいます。
不正ログインされるということは、.htaccessやパーミッションと言った一般的な対策は全く意味が無くなります。よく知られた対策は全て無効化されてしまうためです。
不正ログインされないようにログインURLを変更することで、IDとパスワードに加えてログインURLを知らないとログインできなくなるので、不正ログインするのはほぼ無理になります。
![](https://stilltalkintv.com/wp-content/uploads/2024/04/856fbf39-13a0-42a3-85dd-854f43a41c7e-300x262.jpg)
不正ログイン対策を行ったうえで、サイトの改ざんが止まらない場合の対策としては、.htaccessへの追記が有効だと考えます。
この記事では、.htaccssのセキュリティ対策についてまとめています。
WordPress プラグイン無し .htaccessだけで行うセキュリティ対策
この対策が意味があるのは次のような対策が行われていて、かつ、サイトの改ざんが止まらない場合です
対策をしているのにサイトの改ざんが止まらない
- ログインURLを変更して不正ログインを防いでいる
- wordfenceのハードスキャンでサイトがクリーンである
- サーバーのWAFが有効である
- ファイアウォールプラグインが有効になっている
①:wp-content/uploadsフォルダでのPHPプログラムの実行を禁止する
このコードの目的は、WordPress サイトの wp-content/uploads/
ディレクトリ内にある PHP ファイルへのアクセスを拒否することです。
これにより、悪意のあるユーザーがアップロードされた画像ファイルなどを悪用してサイトに不正なスクリプトを実行することを防ぐことができます。
これは、WordPress サイトのセキュリティを強化するための一般的な対策の一つです。
コード
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^.*wp-content/uploads/.*\.php.*$ - [F,L]
</IfModule>
コードの解説
1. <IfModule mod_rewrite.c>
この行は、mod_rewrite モジュールが Apache に読み込まれているかどうかを確認しています。
mod_rewrite は、URL の書き換えやリダイレクトなどを行うためのモジュールです。
2. RewriteEngine On
この行で、mod_rewrite の機能を有効にしています。
これにより、URL の書き換えやリダイレクトが可能になります。
3. RewriteRule ^.*wp-content/uploads/.*\.php.*$ - [F,L]
この行は、特定の条件に一致する URL リクエストに対する処理を定義しています。
^.*wp-content/uploads/.*\.php.*$
は、正規表現で表されたパターンに一致する URL を指定しています。
この正規表現は、wp-content/uploads/
ディレクトリ内にある .php
拡張子を持つファイルへのアクセスを対象としています。
- [F,L]
は、この条件に一致した場合の処理を指定しています。[F]
は Forbidden (アクセス拒否) を意味し、[L]
はこのルールが最後のルールであることを示しています。
②:wp-includeフォルダのPHPプログラムの直接アクセスを禁止する
このコードの目的は、WordPress サイトの重要なディレクトリやファイルへのアクセスを制限することで、セキュリティを強化することです。
具体的には、wp-admin/includes/
、wp-includes/
、wp-includes/js/tinymce/langs/
、wp-includes/theme-compat/
ディレクトリ内のファイルへのアクセスを拒否することで、悪意のあるユーザーによる不正なアクセスを防ぐことができます。
コード
<IfModule mod_rewrite.c>
RewriteEngine On
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>
コードの解説
1. <IfModule mod_rewrite.c>
この行は、mod_rewrite モジュールが Apache に読み込まれているかどうかを確認しています。
mod_rewrite は、URL の書き換えやリダイレクトなどを行うためのモジュールです。
2. RewriteEngine On
この行で、mod_rewrite の機能を有効にしています。
これにより、URL の書き換えやリダイレクトが可能になります。
3. RewriteRule ^.*wp-admin/includes/ - [F,L]
この行は、wp-admin/includes/
ディレクトリ内のすべてのファイルへのアクセスを拒否しています。
[F,L]
は、Forbidden (アクセス拒否) を意味し、このルールが最後のルールであることを示しています。
4. RewriteRule !^.*wp-includes/ - [S=3]
この行は、wp-includes/
ディレクトリ以外のすべてのファイルへのアクセスを許可しています。
[S=3]
は、次の3つのルールをスキップすることを意味しています。
5. RewriteRule ^.*wp-includes/[^/]+\.php$ - [F,L]
この行は、wp-includes/
ディレクトリ内の PHP ファイルへのアクセスを拒否しています。
[^/]+\.php$
は、ディレクトリ名の後に .php
拡張子を持つファイルを指定しています。
6. RewriteRule ^.*wp-includes/js/tinymce/langs/.+\.php - [F,L]
この行は、wp-includes/js/tinymce/langs/
ディレクトリ内の PHP ファイルへのアクセスを拒否しています。
7. RewriteRule ^.*wp-includes/theme-compat/ - [F,L]
この行は、wp-includes/theme-compat/
ディレクトリ内のすべてのファイルへのアクセスを拒否しています。
まとめ
サイトの不正アクセスがあり改ざん被害にあった時、不正ログインされていないのにサイトの改ざんが止まらないケースというのはあります。
未知のセキュリティホールがあるのかもしれません。
そのようなケースでは、.htaccessを書き換えられないケースの方が多いので、.htaccessへの一般的な対策が効果を発揮するはずです。
コメント