
おはようございます。じぇいかわさきです。
新年早々になりますが、昨晩の遅くになって自分のサイトで構築しているwordpressにログインできなくなり、何をしてもダメな状態に陥りました。
症状としては、WPのログイン画面にまでいくのですが、ログインを実行すると「403 Forbidden」の表示が出てそこで止まってしまう。朝まで普通に動いていたのですが、夜になったらいきなり。

何の前触れもなくいきなりなったんですか?

そうなんです、超焦りました。
昨晩までの対処方法では何も変わりませんでした。朝になって変化していることを期待したのですが、全く変わらず403 Forbiddenの表示が居座ったままです。
もう一度、最初からチェックしなおして意外な所に落とし穴が有りました。自分と同じような環境の人は少ないかと思いますが、もし同じような状況に陥ったら、確認する手順は使えます。
新年早々真っ白画面に403 Forbidden表示

新年早々の”403 Forbidden”トラブルに見まわれました。実際には新年1月2日の夜です。
サイトをチェックしようとして、いつも通りにWPのログイン画面を呼び出し、ログインをした後に凍り付いてしまいました。
なんと!画面は真っ白で左上に”403 Forbidden”の文字だけが表示されています。
あれ?と思いましたが、ログイン画面をリロードして再度実行しましたが、全く変わりません。Chromeのキャッシュを削除しても変わらずです。
ヤバシ!ダッシュボードにログインできなくなっている。この状態でもブログ自体は普通に読めているので、管理画面に入れないだけのようなんです。
まずい、これは非常にまずい状況になった。管理画面に入れないと言うことは、新規投稿もできず、設定変更もできないと言う事ではないですか。
えええええええ、このブログはもう死んでいる状態じゃないかと勝手に判断してしまいましたが、気を取り直してネットを検索しながら対応策を実施していきました。
そもそも、403 Forbiddenとは何か、はっきり言ってサイト側のエラーは分かるのですが、それが何を表しているのか恥ずかしながら理解できていません。
まずはこの403 Forbiddenの正体を知ることからですね。
ウィキペディアで調べてみると、以下のように書いてあります。
HTTP 403、またはエラーメッセージ Forbidden(「閲覧禁止」「禁止されています」の意)は、HTTPステータスコードの一つ。ページが存在するものの、特定のアクセス者にページを表示する権限が付与されず、アクセスが拒否されたことを示すもの。また、サイトの制作者側の設計ミスによる障害やサイトが非常に混雑している時、URLが間違っている場合にも表示されることがある。
引用:ウィキペディア
と言うことは、簡単に言えばアクセス権が無くなっていると言うことですよね。だって朝までは普通に使用できていたのですから。
何でアクセス権が無くなったのか?ここから戦いが始まりました。
新年早々403 Forbiddenとの闘い

新年早々の”403 Forbidden”トラブルについていろいろと調べていくと403 Forbiddenが発生する条件として以下の物が多いようなんです。
自分の場合に当てはめてみると、1は絶対に在り得ない。そんなに知られているブログじゃないから。あえて言うのであれば、詐欺メールの紹介をしているので、詐欺グループがDDoS攻撃をしているか?
そんなことはあり得ないので、1は排除。2についても、存在しているのでこれも対象から削除。
そうすると、残りは3,4になるのだが、実行したことを書き残していこう。
1.ファイルアクセス権の確認

まずは簡単なファイルアクセス権の確認をしていく事にした。確認を実施するファイルとフォルダーはそんなに多くないので、チャチャと確認して変化をチェックしてみる。
wordpressでの初期の設定は以下のようになっている
ここで言っている数値の意味ですが、アクセス権には3つの項目が有ります。
各々に数値が割り付けられています。そして上記3つのアクセス権はオーナー、グループ、その他の3つの項目に割り当てられているんです。
これはLinux(Unix)から来ているファイルのアクセス権の考え方だと思います。
今回の対象となるのは、大本のディレクトリとwp-login.phpになります。自分の場合は、大本のディレクトリは755になっていましたが、なぜかwp-login.phpは644になっていましたので、400に変更をかけました。
変更方法は、FTPソフトを使用して目的のディレクトリ、ファイルを選択し、右クリックでメニューを出してアクセス権変更で実施できます。これらは使用するソフトにより多少違いますので、自分が使用しているソフトの確認をお願いします。
これを実行してみても変化なし。
2.特定プラグインの禁止

一番最初に疑ったのは、SiteGuardと言うプラグイン。これはLoginページを変更しているので、こいつが原因なのかと思い、最初に機能を停止してみた。
機能を停止させるには、本来は管理画面に入らなければいけないのだが、管理画面にはいれないので強制的に実行してみた。まあ後で戻せば良いと言う気持ちもあったので。
まずは非常に危険な.htaccessファイルの変更になります。この後も、最終的にこのファイルをいじる可能性が有るので、一旦FTPを使いサイトからローカルにダウンロードしておき、ファイル名を変えてコピーをつくり、オリジナルは保管しておく。
このSiteGuardw機能を停止させるには、まず.htaccessファイルの中で以下の文章を探す。
#SITEGUARD_PLUGIN_SETTINGS_START同時に、STARTが有ればENDが有るはずなので、そこまでの範囲を丸ごと削除する。この部分でログイン画面の変更を実施しているからである。
#SITEGUARD_PLUGIN_SETTINGS_STARTから#SITEGUARD_PLUGIN_SETTINGS_ENDの間が対象
次に、FTPでloginしwp-contentの配下にpluginと言うディレクトリが有るので、その中にあるSiteGuardと言うディレクトリを丸ごと削除する。
これで、SiteGuardの影響はなくなるはず。従来のログインアドレスと異なるので、通常のログイン方法(wp-login.php)でログインする。
残念ながらここまでやっても、ログイン画面の変更は出来たがログインボタンを押した後は全く変わらず。即行で403表示になってしまう。
まったく変化なし。
3.プラグイン全部を停止する

残念ながらSiteGuardが原因ではなかったようです。かなり期待したんですが、残念な結果になりました。
それでは、アップデートなどにより他のPluginが影響していないのかを切り分けます。これは非常に簡単で、先ほどSiteGuardでチェックしたpluginと言うディレクトリの名前を、例えばplugin-disableとかにしてしまえば、pluginへのアクセスがすべて停止します。
この状態でもう一度ログインからチェックしてみます。
しかし、結果は全く変わらず。これも原因ではありませんでした。
4.いよいよ.htaccessの修正

まずは初期の初期と言う事で、アクセス権が644になっているのかの確認を実施しました。こちらは間違ってないですね。
既にSiteGuardの時に一部修正してしまっておりますが。
さて、いよいよ困った状態になり.htaccessの内容を確認、修正するしかない状況にまで追い込まれてしまいました。
調べると、.htaccessの中にOptions +FollowSymLinksを追加すると改善するとの情報も有りましたので、まず自分の.htaccessの中にOptions +FollowSymLinksの記述が無いかを確認しました。
この記述は見つかりませんでしたので、期待を込めてOptions +FollowSymLinksを追加してみたんです。
そしたら、結果はなんと403は消えたのですが、500になってしまいました。Internal Server Errorですから、今回修正した.htaccessが原因のようですね。
記述を削除して再登録したらまた403に戻りましたので、今回記述したのが間違っていた事になります。必要ないのかな?それとも記述方法が違っているのか?
今の所どちらが原因か分かりませんが、ダメだったことだけは事実です。
新年早々の”403 Forbidden”トラブルは灯台下暗し、情報は目の前に有った

新年早々の”403 Forbidden”トラブル対応ですが、結局のところ、同じような症状がロリポップサーバーでは発生しており、これはどうやら海外からの不正アクセスを防止するために、制限をかけた事が原因らしい。
だから、ロリポップサーバーでの事例はネット上わんさか出てくるのだが、自分が使用しているcoreserverについては、同じようなキーワードで検索しても出てこなかった。
でもGoogle様はきっと知っているだろうと、キーワードの最後にcoreserverを追加して検索しなおした。
なんと、coreserverも同じようになっており、よくある質問の技術ページに書かれていたんですよ。まさに灯台下暗しで、最初にチェックすべきところだったんですね。
<Files ~ "^wp-login.php">
<Limit POST>
order allow,deny
allow from all
</Limit>
</Files>
ここに書いてある記載内容を.htaccessに記載したら、何の問題も無かったようにダッシュボードに入れました。

今までやっていたことは何だったのでしょうか?
近年の海外からの不正アクセス対策で、このようにサーバーが変更になっていたようなんですが、急にこのようになった事自体がちょっと解せないんですがね。
今までOKでいきなりダメになるって事有るのかな?この部分だけが未解決になってしまった。
新年早々の”403 Forbidden”トラブル顛末記 まとめ

新年早々の”403 Forbidden”トラブルについては、結局今回、403のアクセス権が無い問題は以下の事を実施しました。
ここまでやって、結局のオチはサーバー側での設定変更が原因だったと言う事ですね。
他にも同じようにcoreserverでブログ作っていますが、そちらは何も影響が出ていなかったので、多分順次サーバー毎の対策をしているのでしょう。
たまたま、このブログが入っているサーバーが対策に当たり、今回の症状になったような気がしなくもないですが。
新年早々、大変な目にあいましたが、いろいろとwordpressを学ぶことができましたし、Linuxについてももう少し勉強する必要があるかなと感じました。特に、.htaccessの記述については学ぶ必要があると感じましたね。
やはりこれは、神様が自分に与えた試練でネタにしとと言うことだったのでしょうね。
とりあえず、復活をいたしました。ご心配をかけ申し訳ございませんでした。Twitterでいろいろ拡散してくれたり、コメントをいただいたり、本当にありがとうございました。
人気記事 何でwordpressはセルフピンバックするんだ?無駄なピンバックを回避してみた。
人気記事 Google Search Consoleでエラーを修正してくれと怒られた
