管理画面にログインできなくなったとき 【SiteGuard WP Plugin】

Web Server

WordPress に SiteGuard WP Plugin を入れたところ、途中で404 エラーが出て、管理ページのログインができなくなりました。対処方法をまとめておきます。

構成: レンタルサーバー(ConoHa VPS)、CentOS、Apache、MySQL、PHP、WordPress 5.x、Cocoon

背景 WordPress のセキュリティ強化を実施!

サーバーをレンタルして WordPress を設定し、サイトを作りました。

WordPress はデフォルトで、サイトに管理者名が表示される仕様になっています。
この仕様ですと、WordPress のインストール作業中などに誰かがサイトを閲覧すると、管理者名の情報が流出する可能性があります。
管理者名が流出すると、あとはパスワードさえ推測されてしまうと、管理者としてログイン可能な状態になってしまいます!

例えば、サイト運用開始後、悪意を持ったユーザから1日1回の数分間だけパスワードを総当たりで自動入力され、それが毎日繰り返されたとします。すると、時間が経つほどパスワードが破られる可能性が高くなることになります。これでは、とても気持ちが悪いです。

そこで、ウェブサイトが稼働し始めたあたりで、SiteGuard WP Plugin などのプラグインを入れ、サイトのセキュリティを強化することになります。
ところが、SiteGuard WP Plugin は、初期設定時のデフォルトの状態で、管理者のログインページを変更する機能が働きます。(この機能は、インストールが正常に完了してユーザーが ON にするまでは、OFF にしてあったほうが無難なような気がします。)

すると、インストールの途中で、もし、異常終了するなどエラーが生じてしまうと、正しく動くログインページのありかすら、わからなくなってしまいます!

現象:ログインページ変更後、404エラーが出る

私が設定している際に生じた現象を記載しておきます。

WordPress を設定し、サイトが正常に動作しました。記事も正常に表示できます。
すでに https 化の設定も済ませました。

その後、セキュリティ強化のため、WordPress に SiteGuard WP Plugin をインストールし、SiteGuard WP Plugin を有効にしました。
ところが、SiteGuard WP Plugin を有効にした直後、WordPress のログアウト時、サーバーの 404 エラーが、1度、出ました。エラーが出た理由は不明です。

その後、ブラウザを再度立ち上げて WordPress にログインしようとしましたが、ログインページが表示されません。
具体的には、ページがないと表示され、404 エラーが出ます。
旧ログイン先にアクセスすると、エラー用の同じページにつねに飛ばされてしまい、ログインページが表示されません。
結局、WordPress にログインできなくなりました!

復旧した手順

いくらかの試行錯誤の結果、以下の手順で順次、復旧することができました。
ポイントをまとめ、公開しておくことにします。

手順1:.htaccess の修正: 自動追記された部分をいったんコメントアウトする

① サーバーの管理会社のサイトから、サーバー側のコンソールを起動します。
② ドキュメントルート(Apache のデフォルトの場合、/var/www/html/)に移動します。
例:
# cd /var/www/html/
# ls -al
ドキュメントルートは変更が可能ですが、以下、Apache のデフォルトの例で示します。
③ .htaccess の内容を確認します。
# vi .htaccess
④ .htaccess の末尾のほうを探して、#SITEGUARD_PLUGIN_SETTINGS_START ~ #SITEGUARD_PLUGIN_SETTINGS_END
となっているところを探します。この部分が SiteGuard WP Plugin に書き換えられた部分です。
この範囲の各行の冒頭に # を入れ、コメントアウトし、保存します。
⑤ Apache を再起動します。
# systemcntl restart httpd
⑥ 再度、ブラウザからログイン画面を確認します。

→ これでログイン画面が動けば、WordPress の復旧までは成功です!

手順2:プラグインの無効化

これでもログイン画面にたどり着けない場合は、プラグインが悪さをしています。
① この場合、まず、コンソール画面で、プラグインの入っているディレクトリにいきます。
# cd /wp-content/plugins/
# ls -al
② この中に、”siteguard” のディレクトリがあると思います。
暫定でディレクトリごと名前を書き換えます。
mv siteguard siteguard_backup
★ 他のプラグインについても、インストール後に挙動がおかしくなった場合は、同様の手順でプラグインを無効化できます。

③ 再度、ログイン画面を表示させてみてください。

→ これでログインができれば、プラグインを外すところまで OK です。

手順3:http ポートの有効化

上記のステップでは、WordPress のログインまでは復旧できました。
しかし、このままでは、SiteGuard WP Plugin が使用できないことになってしまいます。

そこで、以下の手順でサーバーの設定を順次、インストール初期の状態に戻していったところ、SiteGuard WP Plugin が機能するようになりました。

実際のソフトウェアの動きから、結果的に得られた推測からではありますが、SiteGuard WP Plugin は、ログイン画面の設定時/修正時、http の 80 番ポートを使用しているかのような動きになっています。
(プラグインのインストール後、初回の正常ログイン/ログアウトを終えるまでは、80 番ポートを使用しているかのような挙動をしています。= SiteGuard WP Plugin の設定を終えたあと、https 化することが想定されているかのような動きになっています。)

http の 80 番ポートは、パスワードなどが流出しうるなど、セキュリティ上、弱い側面があります。そこでサーバーの初期設定時には、https のみを使うよう設定することが多いと思います。
そこで、いったん、80 番ポートを有効化し、SiteGuard WP Plugin の設定を正常に終えた後80 番ポートを再度、無効化してみます。

以下は、サーバーのプロンプト上で設定しますが、ブラウザ側では WordPress にログインしたままでも動作しましたので、管理画面にログインしたままでも特に問題はないと思います。

# cd /etc/httpd/conf/
# vi httpd.conf
このファイルを見ていき、”# Listen 80″ のように、80 番ポートをコメントアウトしている行を探します。
つぎに、このコメントアウトを外し(”# “の部分を削除し、”Listen 80” のみを残し)、保存します。
もし、Listen 80 の行がなければ行を追加します。

手順4:プラグインの有効化

さらに、前段の手順2で、プロンプト上で、SiteGuard WP Plugin のディレクトリの名前を書き換えました。
そこで、以下を参考にディレクトリ名を元に戻し、SiteGuard WP Plugin が動くように設定を戻します。

# cd /wp-content/plugins/
# ls -al
# mv siteguard_backup siteguard

→ これで SiteGuard WP Plugin をもとに戻しました。

Apache を再起動して、これまでの設定を反映させます。
# systemctl restart httpd

手順5:プラグインの再設定と HTTP の設定を戻す

ログイン中の WordPress のブラウザ画面に、再度、戻って、SiteGuard WP Plugin の設定を続けます。

ダッシュボード→プラグインから、SiteGuard WP Plugin を再度、有効化します。
続いて、ダッシュボードの下のほうの SiteGuard → ログインページ変更、などの設定をします。

設定が終わったら、新しいログイン先を確認し、WordPress の管理画面右上のメニューからログアウトします。
WordPress をいったん正常終了させます。

→ WordPress の正常終了後、新しいログイン先からログインをしてみて、正常動作すれば OK です。
このとき、ひらがなの画像認証なども有効になっていると思います。

この後、80 番ポートを外してもとに戻す(80番ポートへの不要なアクセスを減らす)には、サーバーの画面に戻って、上記の Listen 80 をコメントアウトするとすれば OK です。
# cd /etc/httpd/conf/
# vi httpd.conf
→ Listen 80 をコメントアウトする。(冒頭に “# ” を加える。)

systemctl restart httpd を実行し、Apache を再起動しておく。
→ WordPress のログインが可能か、確認します。

→ これで、正常にログイン画面が機能したら、WordPress の復旧 & SiteGuard WP Plugin の設定まで成功です!

まとめ

SiteGuard WP Plugin を有効化したとき、設定中に 404 エラーが出た際の復旧方法、対処方法をまとめました。

私がネット検索をした時点では、具体的な復旧手順が見つかりませんでした。
そこで、手順をまとめ、公開しておくことにします。
自分のサイトにログインできなくなってしまうので心臓に悪いですよね。

何らかの理由で設定中にエラーになったら、自動で書き換えた個所を自動ですべてもとに戻してくれると安心なのですが、復旧時は手間がかかります。
また、ログインページを変更する機能は、デフォルトで機能させるのではなく、インストールを完全に完了し正常にログアウト/ログインをするまでは OFF にし、インストールが完全に終了したのち、ユーザが最初に正常にログインしたときログインページを変更するよう促す、としたほうがベターではないかなと思います。インストール中に異常終了した際の問題が生じにくくなるためです。すべて無料ツールですので何もいえませんが。。

関連リンク
・ エラーコードのまとめ 【Webサーバー】
・ Web サーバー関連コマンドまとめ 【Linux】
・ ログイン画面へのアクセスを IP アドレスで制限する方法 【WordPress】
・ 記事リンクで「NOT FOUND 404」と表示されたとき
・ .htaccess の動きがおかしいとき 【WordPress】
・ 「投稿名」でパーマリンク設定をする際の httpd.conf のチェックポイント 【WordPress】
・ WordPress のブラウザタブの設定が反映されないとき

タイトルとURLをコピーしました