WordPressの設定

【事件発生】ログインできなくなった話

投稿日:2018.07.26 更新日:

初心者をビビらせる事案が発生しました。複数あるサイトの内一つの、管理画面にログインできなくなりました。

一番更新頻度の低いサイトに久々にログインしてみようとしたところ、そもそもログイン画面が出ずに、404Not Foundが出る…。mixhostから入ろうとしても同じように出ます。

原因はSiteGuard

思い返してみると、SiteGuard WP Pluginに、不正ログインに404を表示するという機能があり、そのサイトにもインストールしたような気がしました。ということはログインURLも変更していたということかもしれませんがブックマークをしていませんでした。が、そうであっても先日まではmixhostからは入れていたような…。どこからも入れません。アンインストールするしかないのか…。

.htaccessの内容

ログインID関連の情報やプラグインの設定を確認しようにもログインが出来ないので困り果てましが、ふと思い立ちファイルマネージャーで.htaccessを見てみました。短いプログラマ時代の微かな知識から察するに、やはりSiteGuradによるコメントのついたコードが追記されています。

#SITEGUARD_PLUGIN_SETTINGS_START
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_START
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /wp/
    RewriteRule ^wp-signup\.php 404-siteguard [L]
    RewriteRule ^wp-activate\.php 404-siteguard [L]
    RewriteRule ^login_zzzzz(.*)$ wp-login.php$1 [L]
</IfModule>
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_END
#==== SITEGUARD_ADMIN_FILTER_SETTINGS_START
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /wp/
    RewriteRule ^404-siteguard - [L]
    RewriteRule ^wp-admin/css - [L]
    RewriteRule ^wp-admin/images - [L]
    RewriteRule ^wp-admin/admin-ajax\.php - [L]
    RewriteRule ^wp-admin/load-styles\.php - [L]
    RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx$
    RewriteRule ^wp-admin 404-siteguard [L]
</IfModule>
#==== SITEGUARD_ADMIN_FILTER_SETTINGS_END
#SITEGUARD_PLUGIN_SETTINGS_END
(※xxx,zzzzzは具体的な数字です。)

と、なっており、どう見てもがっつりインストールされています。

9割がた理解できませんが、

  • 黄色のマーカー部分1つ目のlogin_zzzzzがログインURL
  • 2つ目の×××に入っているのが、IPアドレス

です。やはりSiteGuardが関係しているのは間違いないようです。

login_zzzzzというURLが分かったのでアクセスしてみると、ログイン画面はちゃんと表示されました。やはりURLが変更されているようです。ところがログインしてみると、なんとまた404エラーです。

IPアドレスではじかれる

.htaccessを見た時点で心当たりがあり、SiteGuardに「ログインが行われていない接続元IPアドレスに対して、管理ページのアクセスを、404(Not Found)で返す」という機能があったのを、うっすら思い出していました。実はログイン出来なくなる前と後で、場所が変わっていてIPアドレスが違います。2つ目のマーカー部分に書かれているのは、前のIPアドレスでした。ただし、ログインが行われていない接続元IPアドレスに対してとあるように、本来はちゃんとログインは出来るはずで、それが出来ればIPではじかれることはないはずです。

そこで今度は、おそるおそるIPアドレスの記述の二行の頭に#を付けてコメントにしてみると、ログイン出来るようになりました。

SiteGuradの設定を確認

ログインができたので、SiteGuardの設定を確認してみると、このようになっていました。

「管理ページアクセス制限」と「ログインページ変更」

見てみると、今回のトラブルの原因になっているはずの、「管理ページアクセス制限」も、「ログインページ変更」もOFFになっています。まだ記事数も少ないために、セキュリティをOFFにしていたので、ログインページのURLもブックマークしていなかったということのようです。ログインしていない接続元からのアクセスを受け付けないという機能も、ログインページ変更もOFFになっているのに、何故ログインできなかったのか。

そこで、もう一度「管理ページアクセス制限」を確認してみました。設定画面に機能が説明されており

管理ページ(/wp-admin/以降)に対する攻撃から防御するための機能です。ログインが行われていない接続元IPアドレスに対して、管理ページのアクセスを、404(Not Found)で返します。ログインすると、接続元IPアドレスが記録され、当該ページのアクセスを許可します。24時間以上ログインが行われない接続元IPアドレスは、順次削除されます。この機能を除外するURL(/wp-admin/以降)を指定することができます。

とあります。

解決策

解決する方法は「管理ページアクセス制限の機能をONにする」「ログインページ変更をONにする」でした。それぞれの機能は、ONにすることで、.htaccessのファイルの内容が書き換わり、IPアドレスが記録され、IPアドレスが記録されるとログインできるようになる、という動きをしているようです。本来は、OFFにしたことで、.htaccessからその記述が消えるようになっているのですが、私がおかしなタイミングでファイルを操作でもしたのか、何が原因か分かりませんが、設定がオフなのに.htaccessの記述が残ってしまっているということのようでした。

記述が残ってしまっているのに、設定がオフであることによって、「ログインすると、接続元IPアドレスが記録され、当該ページのアクセスを許可します」という機能が動作しないため、ログイン時と.htaccessに記載されているIPアドレスが延々と一致せず、IPではじかれてしまったのではないかと思われます。

何度か両機能のONOFFを繰り返してみましたが、通常は設定に従って、.htaccessのファイルがちゃんと書き換わります。ですから、(めったにないことだとは思いますが)

SiteGuardの設定がOFFなのにSiteGuradのせいで入れないという事態になった時には、.htaccessのSiteGuardの設定部分の頭にに全部#を付けてコメント化し、無理矢理入った上で、SiteGuardの設定をONOFFする

、ということになります。レアケース過ぎて参考になりませんでしたね(笑)

-WordPressの設定
-, , ,

Copyright© はじめてのアフィリエイト , 2018 All Rights Reserved.