WordPressにログインしようとしてwp-adminやwp-login.phpにアクセスしたら、403エラーが表示されてログインできない!となったことはありませんか?
というのもつい最近、403エラーに遭遇してWordPressにログインできない事態になりました。原因はWordPressに入れていたセキュリティプラグインAll in one Securityに締め出されてしまったのが原因だったのですが。
この記事では、403エラーが起きる原因と対処法、セキュリティプラグインによってログインできない状態になってしまった時の解決方法も併せて解説します。
403エラーとは
403エラーは、HTTPステータスコードの一つで、「Forbidden(禁じられている)」を意味します。このエラーは、ユーザーがリクエストしたウェブページなどにアクセスする権限がない場合に表示されます。
403エラーが起きる原因
403エラーは、サーバーに設置したファイルやプログラムが原因でおきる場合とサーバーの機能によって起きる場合があります。主な原因を挙げてみます。
ひとつずつ詳しく見ていきます。
.htaccessファイルの問題
.htaccessに間違った記述があると403エラーになってしまいます。自分ではいじった記憶がない・・・という場合は不正アクセスの可能性も。
以下のような手順で、WordPressのルートディレクトリにある.htaccessを一旦削除して、正常にアクセスできるか確認してみます。
- WordPressのルートディレクトリにある.htaccessをローカルPCなどにバックアップする
- .htaccessを削除する
- ブラウザからWordPressにアクセスできるか確認する
- もし403エラーが解消されたら、.htaccessを再生成する
- 再度サイトが正常になったかテストする
.htaccessが原因のエラーだった場合、もとの.htaccessを設置してもまたエラーになってしまうので、WordPressのパーマリンクから.htaccessを生成します。
- WordPressの管理画面にログインし、「設定」メニューから「パーマリンク」を選択。
- 何も変更せずに、「保存」をクリック。
- WordPressが新しい.htaccessを生成します。
または、FTPやファイルマネジャーから手動で.htaccessを設置します。.htaccessに記述するのは以下の内容です。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
WordPressで生成される.htaccessの内容以外に、独自のカスタマイズを加えている場合は、バックアップした.htaccessを確認して必要なものを新しい.htaccessにも記述する必要があります。
ファイルのパーミッション(アクセス権限)の問題
WordPressを構成するPHPファイルやディレクトリのパーミッションが正しくない場合、403エラーになることがあります。
下記は一般的なWordPressファイル、ディレクトリのパーミッションです。使用しているレンタルサーバーでも確認してみてください。
ファイル・ディレクトリ | パーミッション |
---|---|
WordPressインストールディレクトリ (通常はpublic_htmlまたはhtdocs) | 755 |
php ファイル wp-から始まるファイルなど | 644 |
wp-content | 755 |
wp-content/themes | 755 |
wp-content/plugins | 755 |
wp-content/uploads | 755 必要に応じて書き込み可能にするため777の場合も |
FTPクライアントやファイルマネージャーでサーバーへアクセスして、パーミッションを確認・変更します。
またはAll In One WP SecurityやWordfenceなどセキュリティプラグインを使ってファイル・ディレクトリのパーミッションを推奨値に確認変更することもできます。
セキュリティプラグインによる問題
セキュリティプラグインには、WordPressのセキュリティを向上させてくれるさまざまな設定があります。しかし、これらの設定を間違えると、正当なアクセスもブロックされてしまう可能性があります。
例えば、IPアドレスのブロック、不正アクセスの検出、特定のパスへのアクセス制限などの設定が誤っている場合、正常なユーザーでもアクセスが制限されてしまいます。
- まず、使用しているセキュリティプラグインを一時的に無効化します。
- セキュリティプラグインが無効の状態で403エラーが解消されているか確認します。
エラーが解消されていればセキュリティプラグインが原因であることになります。 - セキュリティプラグインの設定確認し、修正します。
- セキュリティプラグインを再有効化します。
- エラーが発生しないか再度確認します。
セキュリティプラグインを一時的に無効にする方法
403エラーでWordPressにログインできない状態ではFTPでサーバーにアクセスし、wp-content/pluginsディレクトリへいき、セキュリティプラグインのディレクトリ名を変更します。
この状態でWordPressにログインできるかどうか確認し、ログインできればエラーの原因はセキュリティプラグインになります。セキュリティプラグインに限らず、プラグインがエラーの原因である可能性はプラグインを一つ一つ無効にしてエラーが解消されるか確認します。
セキュリティプラグインの設定確認
WordPressにログインできたら、無効になっているセキュリティプラグインを再度有効化して、設定を確認します。
403エラーを引き起こすのは、
IPブロックや不正アクセス防止などの項目が原因の場合が多いです。
All In One WP Securityの設定
私がAll In One WP Securityから締め出されてしまった時は、ログインIPアドレスをホワイトリストで設定していて、固定IPアドレスが変わったのを登録しないままにしてしまったためにログインできない状態でした。
「総当たり攻撃(Brute force)」の「ログインホワイトリスト」でIPアドレスを登録します。ここに登録したIPアドレスからのみログインできるようになります。
似た項目で「User Security」の「Login Lockout」タブの中に、「Login Lockdown IP ホワイトリスト設定」があります。この項目はログインを誤ってロックダウンする機能から除外するIPアドレスです。
WAFの誤検知
WAF(Web Application Firewall、ウェブアプリケーションファイアウォール)は、ウェブアプリケーションのセキュリティを強化するためのツールで、不正なトラフィックや攻撃からWordPressを保護する役割を果たします。
しかし正常なアクセスでもWAFが誤ってブロックしてしまいエラーとなってしまうことがあります。WAF機能を無効にしてエラーが解消するかを確認します。
- WAF機能があるプラグイン
- サーバーのWAF機能
WordPressにWAF機能があるプラグインをインストールしている場合は無効にしてみます。
そのほかエックスサーバーやConoHa WINGなどではサーバーの標準機能としてWAFが提供されています。
ConoHa WINGのWAFではログを確認することができるので、自分のアクセスがWAFにブロックされているかを確認することができます。
参考ConoHa WINGでWAFを無効にする方法
海外アクセスの制限
WordPressへの攻撃は海外から攻撃されることが多いため、レンタルサーバーではセキュリティ対策として海外からWordPressへのアクセスを制限する機能がある場合があります。
海外からのアクセスを制限する設定が有効になっている場合、海外からWordPressにアクセスしようとすると、サーバーはそのアクセスを拒否し、403 Forbiddenエラーが表示される可能性があります。
サーバー会社による制限(未払いによる凍結など)
サーバー契約更新を忘れてしまって、未払いの状態になってしまうとサーバー会社はサービスの提供を一時的に停止することがあります。
このようなサーバー契約を凍結されるとサーバーは403 Forbiddenエラーを返すことがあります。
これはめったにないことですがありえる話。先に述べたエラー原因がどれも当てはまらなかったら、サーバー契約が有効な状態かを確認してみてください。
まとめ
403エラーは、ウェブサーバーがリクエストを受け取ったものの、アクセス権限がないためにリソースにアクセスできない場合に発生します。
原因としては、.htaccessファイルの問題、ファイルのパーミッション(アクセス権限)の不足、セキュリティプラグインの制限、WAF(Web Application Firewall)の誤検知、さらには海外からのアクセス制限やサーバー会社による未払いによる凍結などが考えられます。
WordPressで403エラーが発生してしまった場合は、慌てずこれらの要因を確認し、適切に対処することが重要です。
WordPressにエラーが発生してもバックアップがあれば安心です。レンタルサーバーのバックアップと復元方法。