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

Web Server

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

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

背景:WordPress のセキュリティを強化

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

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

例えば、サイト運用後、1日1回の数分間だけ、パスワードを総当たりで自動入力され、それが毎日繰り返されたとすると、時間が経つほどパスワードが破られる可能性が高くなることになります。
そこで、ウェブサイトが稼働し始めたあたりで、SiteGuard WP Plugin などのプラグインを入れて、サイトのセキュリティを強化することになります。
ところが、SiteGuard WP Plugin は、デフォルトで管理者のログインページを変更する機能が働くので、設定中にエラーが生じてしまうと、正しく動くログイン先すらわからなくなってしまいます。

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

WordPress を設定し、サイトが正常に動作しました。

その後、セキュリティ強化のため、WordPress に SiteGuard WP Plugin をインストールし、SiteGuard WP Plugin を有効にしました。
有効にした直後、WordPress のログアウト時、一度、404 エラーが出ました。エラーが出た理由は不明です。
その後、ブラウザを立ち上げてログインしようとすると、ログインページが表示されません。
具体的には、ページがないと表示され、404 エラーが出ます。
旧ログイン先にアクセスしても、エラー用の同じページに飛ばされて、ログインページが表示されません。
結局、ログインができなくなりました。

手順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
⑥ 再度、ブラウザからログイン画面を確認します。

→ これで動けば、設定成功です!

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

これでもログイン画面にたどり着けない場合は、プラグインが悪さをしています。
① この場合、まず、プラグインの入っているディレクトリにいきます。
# cd /wp-content/plugins/
# ls -al
② この中に、”siteguard” のディレクトリがあると思います。
暫定でディレクトリごと名前を書き換えます。
mv siteguard siteguard_backup
(他のプラグインが悪さをしている場合も同様に無効化できます。)
③ 再度、ログイン画面を表示させてみてください。

→ これでログインができれば、設定成功です。

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

上記のステップでは、WordPress のログインまではできました。
しかし、このままでは、SiteGuard WP Plugin は使用できません。

そこで、サーバーの設定を1つずつ、インストール初期の状態に戻していったところ、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

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

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

再度、ログイン中のブラウザに戻って、SiteGuard WP Plugin の設定をします。
ダッシュボード→プラグインから、SiteGuard WP Plugin を再度、有効化します。
続いて、ダッシュボードの下のほうの SiteGuard → ログインページ変更、などの設定をします。
設定が終わったら、新しいログイン先を確認し、画面左上からログアウトします。(WordPress を正常終了させます。)

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

この後、80 番ポートを外して不要なアクセスを減らしたいのであれば、上記の Listen 80 をコメントアウトする(”# ” を加えて、別の番号を加えておく)、とすれば OK です。
# cd /etc/httpd/conf/
# vi httpd.conf
→ Listen 80 をコメントアウトする。

→ これでログインページが動作したら、完了です!

まとめ

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

何らかの理由で設定中にエラーになったら、書き換えた個所をすべて自動でもとに戻してくれると安心なのですが、復旧時は手間がかかります。(すべて無料ツールですので何もいえません。。)

関連リンク
・ ログイン画面へのアクセスを IP アドレスで制限する方法 【WordPress】
・ 【Apache】 Web サーバー関連コマンド+ちょっとしたセキュリティ対策
・ 記事リンクで “NOT FOUND 404” が出たとき

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