AccessDeniedでWordpressが真っ白になりサイトが表示されない時やったこと
ある日突然Wordpressの画面が真っ白になり、片隅に小さく「Access Denied」と表示されているだけの状態になってしまいました。
テーマの更新をしたのは2週間以上前だし、こんな時間差で何か起きるか?どうすればいい??とプチパニックに。
何とかしないとサイトが死ぬ!!!という危機感で必死になって検索を繰り返し、xserverやブログのメンターなどに相談しつつ復旧作業を実施。何とか復旧に成功しました。
途方に暮れている方のために個人的な体験と「こうすればよかった」を残します。
素人の記録ですので対応が的確でないかもしれませんが、一部でも参考になれば幸いです。
AccessDeniedとは?
AccessDeniedという言葉の意味さえわかっていませんでした^^;
アクセス拒否(制限)された状態でサイトが表示されない
AccessDeniedとは、文字通り「Access=アクセス」が「Denied=拒否された」状態のことです。
Wordpress、テーマ、プラグインと、記事とその画像などのコンテンツは別々のサーバーに保管されています。
サイトを表示するときは、Wordpressが入っているサーバーが別のサーバーに記事データを読みに行ってページを表示しています。
私の場合はWordpressが格納されているサーバーにアクセスできない状態だったのでサイトが表示されませんでした。
wordpressの画面が真っ白に!実際に起きたこと
備忘録として起きたことを時系列で書いておきます。いやあ、長かった…。
11月8日(水) 前触れ(1回め)
管理画面にエラーメッセージ。
サイトでwp-admin/admin-ajax.phpを表示すると「0」が表示され真っ白だった。ただしサイトは普通に表示されていた。
こちらのページで取り上げられているのと同じ事が起きていました。
このエラーについては、ブログのメンターに相談したところデフォルトでこういう設定になっているようだとのことで一安心。なぜエラーメッセージが来たのか…?不正アクセスが始まってたのかもしれません。
11月11日(土) 前触れ(2回め)
管理画面にエラーメッセージ。
①class-wp-privacy-requests-table.phpのエラー。サイトからプロフィールが消えていた。
⇒改めてプロフィールを掲載したところ問題なく表示された。
②contactform7のエラー。ただしサイトもコンタクトフォームも普通に表示されていた。
⇒とりあえずcontactform7を削除してGoogleFormを埋め込んだ。
ひとまず自分で対応できてよかった!とホッとしたのを覚えてます。
11月12日(日) webサイトが真っ白に
「Access Denied」と表示されサイトが真っ白に…。
xserverから「■重要■お客様のサーバーアカウントにおける不正なアクセスの検知および制限の実施について」というメールが届く。
不正なファイルのリストに853のファイル名あり。午前中は管理画面に入れたが午後は入れなくなった(涙が出た)。
メールの内容を解読して不明点についてお問い合わせメールを送信(電話対応は平日のみ)。
なぜか夜になって再び管理画面に入ることができた。
11月13日(月) 403Forbiddenの表示に
朝イチでxserverに電話。12日に届いたメールに対してやるべき作業内容がわかったものの、作業の内容に絶句(あとで詳しく書きます)。メンターもそれを聞いて言葉を失っていましたが、xserverの指示通りやるしかないということに。
サイトにアクセスすると「403Forbidden」の表示。↓これは実際の画像です。
再びxserverから「■重要■お客様のサーバーアカウントにおける不正なアクセスの検知および制限の実施について」というメールが。心臓に悪い…。
不正なファイルのリストに新たに451のファイル名あり。管理画面には入れていた。
11月14日(火) 復旧作業
空き時間は不正ファイルの削除とサイト復旧作業。
11月15日(水) 復旧作業
空き時間はサイト復旧作業。
11月16日(木) サイト復活
夕方5時すぎ、サイト復活。ばんざーーーい\(^o^)/
wordpressが真っ白になったときやったこと・やるべきこと
ここからは私が実際にやったこと+こうすればよかった!ということを書いていきます。
サイトのセキュリティ状況を確認する
サイトに不正アクセスがあったのか?を手っ取り早く知るのに使えるサイトがこちら。
↑このサイトはWordpress公式のフォーラムで紹介されているんですが、なぜかリンクが切れてるのでここに貼っておきます。
こういうサイトがあるなんて知りませんでした。事が終わってから気づくんですよね、こういうことって。。。
今起きていることの記録を撮る
今起きていることの記録を撮りましょう。スクリーンショットのファイル名にはデフォルトなら日時が記録されますので、あとから振り返るときに役立ちます。
エラーメッセージは直接コピーをとってテキストファイルで保存できればいいのですが、それが出来ない場合もありました。
そこでOCRサイトで画像を文字化してエラーメッセージを取り出しました。
やり方は、Win+PrtScキーで画面全体のスクショを撮るか、Win+Shift+Sでwindowsのsnippingtoolを起動させ範囲を選択して切り取ります。デフォルトならピクチャフォルダに画像が保存されます。
①ファイルを選択(複数ファイルも可)
②画像OCRボタンをクリック
③数秒待つ
これだけでテキストを抽出できます。
サーバーからのメールが届いていないか確認する
とりあえずサーバーからメールが届いていないか確認することをおすすめします。
後から気づいたことですが、Access Deniedの表示に気づいたとき、すでにxserverから「不正アクセスのためこちらでアクセスを制限しました」という内容のメールが届いていました。
しかし真っ白な画面を見て慌ててしまった私は、メール確認なんて思いつかず「Access Denied」について必死で調べて時間を浪費したんですよね。
特に連絡がないようなら、画面に表示されているエラーメッセージやサーバーのファイルを見て状況を確認していきましょう。
サイトや管理画面のエラーメッセージはChatGPTに相談
サイトや管理画面に表示されたエラーメッセージの内容が理解できなくて苦しみました。
そういうときはChatGPTに伝えてアドバイスをもらうのがおすすめです。
手順としては、エラーメッセージでもエラーを含むファイルのコードでもとにかくコピペしてChatGPTに貼り付け、エラーを解決するにはどうしたらいい?と尋ねればOK。
その他でも例えば『サイトのルートにある「.maintenance」ファイルを削除する。』のファイルの場所がよくわからないとき、どこにありますかと質問すると画像つきで詳しく解説してくれました^^ほんと助かります。
問題が解決してからこの方法を知ったことが残念でなりません…。
エラーログを確認する
サーバーのファイルマネージャを開いて、エラーログを確認しました(存在も確認方法も初めて知りました…)。
↓こちらの画像のようにサーバー直下に「Maildir」フォルダが作成されている場合、その中身はエラーログの可能性が高いです。
xserverにはCron設定といって、指定時間に指定コマンド(プログラム)を自動的に実行させる機能があります。
Wordpress簡単インストールを利用した方ですと、デフォルトでこの設定が「On」になっておりエラーログが吐き出されます。全然記憶にないけど自分も利用したのでしょう(笑)
最初に「Maildir」が作成され、翌週に「Maildir.1」、その翌週に…と4週間ごとのローテーションでフォルダが作成され、4つ作成されると古いものから上書きされていきます。
つまり最長で28日前までのエラーログならチェックできる可能性があるということです。
内容を確認した(ChatGPTに聞いた)ところ、私のサイトでは2種類のエラーを発見しました。
Googleのメールサーバーで、xserverから送信されたメッセージがサイズ制限を超えているため受信できなかった
cronジョブによって実行されたコマンドがエラーで終了した
今回はこちらのエラーログは(多分)Access Deniedの直接の理由ではありませんでしたが、原因がわからない時はチェックする価値がありそうです。詳しくはxserverの解説ページへどうぞ。
パーミッションの数値を確認する
サーバーのファイルマネージャを開いて、Wordpressのフォルダのパーミッションを確認しましょう。何らかの理由でパーミッションの数値が変更されアクセスが制限されることがあります。
今回初めて知ったのですが、Wordpressのフォルダやファイルには3桁の番号が割り振られていて、誰がどの段階までアクセスや読み書きが許可されているか、その番号でわかるようになっています。
サーバーのファイルマネージャで該当サイトのpublic_htmlを開くとそこにWordpressが格納されています。
例えば、ログイン出来ない人はpublic_html>wp-login.phpのパーミッションを確認しましょう。
↓こちらは私のサイトのpublic_htmlの画像です。xserverではファイルマネージャに入るとパーミッションが表示されていますしボタンから簡単に変更できます。
変更するのは怖かったですが、不正アクセスのせいで勝手に変更されていたファイルもあり、いくつか修正しました。
ちなみに私のサイトに大量投入された不正ファイルのパーミッションはすべてサーバー側で「000」(誰も何もできない)設定にしていたようです。
ファイルの種類によって適切な設定の数値が異なります。詳しくはxserverの解説ページへどうぞ。
Wordpressのフォーラムを見る
Wordpressのフォーラ厶には、真っ白画面解消の方法が沢山掲載されています。
公式サイトなので安心して修正方法を試すことができます(最初にたどり着けてたらよかった…)。
ちょっと用語が専門的に感じますが、ChatGPTに相談しながらだと何とかなるのではないでしょうか。
不正アクセスによる「Access Denied」からの復旧作業
私のサイトで「Access Denied」が表示されたのは不正アクセスがあったためです。
大量の無意味なファイルがサーバーにアップロードされ保存容量が逼迫.
xserverがサイトへのアクセスを制限しサイトが表示されなくなりました。
どうやってサイトを復活させたのかの記録を残します。
不正なアクセスの検知および制限の実施についてのメールが届いた
xserverから「■重要■お客様のサーバーアカウントにおける不正なアクセスの検知および制限の実施について」というこわーいタイトルのメールが届いて初めて「Access Denied」の原因がわかりました。
私が利用していたWordpressのパスワード、テーマやプラグインの脆弱性につけ込まれ国外から不正アクセスがあった、セキュリティを強化してアクセス出来ない状態にしてますという内容でした。
そこで何をすべきか、5項目のやるべきことが並んでいました。
電話で問い合わせ(録音するべきだった!)
『検出されているすべてのファイルの完全削除または、該当ドメイン名を「初期化」してください。』の意味がよくわからなくて。
調べてみると、ドメイン初期化によってサイトのテーマ、プラグインなどの設定(外観に関わる部分)や内部リンクなどが消える事が判明。
アフィリエイトサイトを運営しているため、内部リンクが消えるのは避けたい…!しかしメールの宣告は過酷な内容でした。↓
これには注意書きがいくつもあるんですが、ケース1の注意書きに
※バックアップや作業用端末に保存されているファイルもすでに汚染されている可能性がございます。再発防止のため、セキュリティ上問題のない、改ざんされていないクリーンなデータをアップロードなさいますようお願いいたいます。(※原文のままコピペしてます)
って書いてあったんです。。これ素人には無理な話ですよね。
そこで「ケース1では具体的に何をどうすればいいか教えてほしい」とメールで問い合わせ、翌日電話でも話を聞きました。
その結果わかったことは、ケース1でやる内容は
1.サーバー上の不正ファイルを削除する
2.自分のPCのウィルスチェックを済ませる
3.クリーンなWordpressをダウンロードする
4.サーバー上のファイルとクリーンなWordpressのファイルを比較する
5.足りないファイルやフォルダをサーバーにアップロードする
という作業だとわかりました。まさかの…、Wordpress全ファイルの比較チェック作業が必要でした!
電話を録音しとけばよかった!
事前にアドバイスをうけていたのに、電話を録音できなかったことが悔やまれます。
スマホアプリをいくつか試してもうまくいかず(Androidのせいか?)、諦めてメモをとりながら電話したんです。
でもスピーカーにしてボイスレコーダーで録音すればよかったんじゃない?と後からメンターに言われてそうだよなと。。
たとえサーバーの人であっても担当者によっては間違った指示を出す人もいるから絶対録音して対策するべしとのことでした。今後はそうします。
【悲報】バックアップが利用できなかった
バックアップが利用できるならドメイン初期化でもいいかなと思ったんです。でもですね、バックアップが利用出来ないことが判明したんですよ。
いやこんなこと、素人には無理w
なのでおとなしく、検出されているすべての不正ファイルの完全削除からのクリーンなファイルアップロード作業にとりかかりました。
不正ファイルの削除
不正ファイルの削除では1,000以上のファイルをdelete。すごく緊張して、終わったとたんに疲れ切って寝ました(笑)
不正ファイルたちはこんなふうにあちこちのフォルダ内を占拠していました。ファイル名が数字のみ、パーミッション000の奴らがそれです。
ファイルを比較
ファイルを比較するってどうやるの…?これが最大の疑問だったんです。
最初は画面を見て見比べてましたが、数が多すぎるしファイル名が長くて複雑だと訳がわからなくなってしまいます。
検索してみると、一つの方法としてWinMergeというアプリを使う方法があることがわかりました。
↑こちらで紹介している方法ですと、クリーンなWordpressと現在サーバーにあるWordpressの両方をPCにダウンロードして比較することになります。
※ちなみにクリーンなWordpressは「Wordpress.org」からダウンロードするように、とxserverのお問い合わせの方から念押しされました。
私の場合は、なぜかサーバーのファイルをうまくダウンロードできず、この方法が使えませんでした。
それに不正ファイルが入っているかもしれないファイルをダウンロードすることに抵抗もあったんです。
そこでクリーンなWordpressのファイルをツリーコマンドを利用して一覧でプリントアウトし、サーバーのファイルはファイルマネージャやFTPソフトで確認しながら比較しました。
ファイル名が複雑なときはFTPソフト上のファイル名をコピーしcoutif関数で比較。
印刷したファイルのリストは2in1で印刷して48枚。全部チェックするのに3日かかりました。
プラグインとテーマの削除と再インストール
ずっとファイル比較作業をしていると気が滅入るので(笑)、合間にプラグインとテーマに関する対応を行いました。
テーマやプラグインに関してxserverの方から何度も念押しされたことは「半年以上更新されていないテーマやプラグインは即削除してください」ということです。
なのでどんなに便利なプラグインでも涙を飲んで、このルールに当てはまらないものは使わないことにしました。
もし使うとしても、その時だけインストールして即削除することにします。今回テーマとプラグインについてやったことは次のとおりです。
●親テーマ(Cocoon)の削除⇒デフォルトのテーマ(twentytwentythree)に一旦変更⇒Wordpressをクリーンにした後最新バージョンのCocoonをインストール
●プラグインをいったん全て削除し(プラグインで広告を貼り付けていたためsearch regexでショートコードを書き換えたあと削除)、Wordpressをクリーンにした後9種をインストール。
Cocoonをご利用の方は、テーマ開発者わいひらさんご推薦のプラグインをぜひチェックしてみてください。
クリーンなWordpressをアップロード
全てのファイルの比較が終わりクリーンなWordpressをアップロードする前に、ブログ仲間の方にお願いして健全な状態のフォルダを見せていただきました。
同じCocoonを使っていてプラグインもほぼ同じということを知っていたので、私のサイトのファイルはほんとにおかしいのかな?という疑問を解消したかったんです。
見せていただいてすぐにわかりました。不正なファイルを削除した私のサイトでは、あちこちが歯抜け状態になっていました…。
その後クリーンなファイルアップロード作業は2時間かからずに終了。その後新しいテーマとプラグインをインストールしている間に復活しました。
復活
プラグインの設定などを行っている途中で、管理画面を開いているタブに色がついていることに気づきました。
サイトがダウンしている間は、薄いグレーの地球模様になっていたんです。あっ!と思って確認したらサイトが表示されていました。
復活です!!!\(^o^)/ばんざい!!!
まとめ
「Access Denied」の原因は、私が利用していたWordpressのパスワード、テーマやプラグインの脆弱性につけ込まれ国外から不正アクセスがあったことでした。
半年以上更新されていないテーマやプラグインは即削除する、管理パスワードを定期的に変更する、SiteGuard WP PluginやEdit Author Slugなどのセキュリティ関連プラグインで自衛するなどの対策が不可欠だと身にしみました。
わいひらさんご推薦のプラグインの中で特に「Wordfence Security」は非常に効果があると感じています。
ファイル比較の作業中に怪しいファイルを見つけ、xserverに「削除していいか」と問い合わせたんですが、xserverの返事は「あなたがアップロードしたものでなければご自身の責任で削除してください」でした。
いや、どうしろっていうんだよ…と対応を迷っていたところ、「Wordfence Security」が”こいつらは非常に危険なファイルだから削除したほうがいい”とリストアップしてくれたんですよね。
それで恐る恐る削除したんですが、結果何の問題もありませんでした。
プラグインの提案がすべて正しいわけではないかもしれませんが、一つの目安になるのは間違いないでしょう。
「Access Denied」事件はこうして無事解決しました。何か一つでも参考にしていただければ嬉しいです。
素人の悪戦苦闘の記録をここまで読んでくださって本当にありがとうございました!
この記事が気に入ったらサポートをしてみませんか?