管理画面にログインできなくなったとき 【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 は、初期設定時のデフォルトの状態で管理者のログインページを変更する機能が働きます。すると、インストールの途中で、もし、異常終了するなどエラーが生じてしまうと、正しく動くログインページのありかすら、わからなくなってしまいます!

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

設定中に生じた現象を記載しておきます。

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

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

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

復旧した手順

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

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

① サーバー側のコンソールを起動します。
② ドキュメントルート(Apache のデフォルトの場合、/var/www/html/)に移動します。
ドキュメントルートは設定により変わりますが、以下は Apache のデフォルトの場合の例で示します。
# cd /var/www/html/
# ls -al
③ .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 番ポートを使用しているかのような挙動をしています)。

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 番ポートを外して不要なアクセスを減らしたいのであれば、サーバーの画面に戻って、上記の Listen 80 をコメントアウトする(”# ” を加えて、別の番号を加えておく)、とすれば OK です。
# cd /etc/httpd/conf/
# vi httpd.conf
→ Listen 80 をコメントアウトする。

→ これでログインページが動作したら、WordPress の復旧 & SiteGuard WP Plugin の設定まで成功です!

まとめ

SiteGuard WP Plugin を有効化したとき、設定中に 404 エラーが出た際の復旧方法、対処方法をまとめました。
ネット検索をしても詳細な復旧手順が見つからず、サイトにログインできなくなってしまうので心臓に悪いですよね。

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

関連リンク
・ ログイン画面へのアクセスを IP アドレスで制限する方法 【WordPress】
・ Web サーバー関連コマンドまとめ 【Linux】
・ 記事リンクで「NOT FOUND 404」と表示されたとき
・ WordPress のブラウザタブの設定が反映されないとき

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