背景
今更ですが、wordpressのセキュリティを高くしようと思ってwp site enhancerというプラグインを入れてみました
このプラグインは、
https: //yourdomein/wp-admin
https: //yourdomein/wp-login.php
のようなログインリンクを隠して、ログインしようとすると
「404 not found」
を表示する事ができるという優れたプラグインです
しかし、複数のオフィスや自宅でログインしていたことと
パソコンを買い換えたことによる影響でログイン自体ができなくなってしまいました
やったこと
- パソコンの買い替え
- 事務所や自宅でログインしていたので、IPアドレスが追加されていると思っていたが、ログインできず、、
- データベースをwp site enhancer導入前のDBへ戻してみた→状況変わらず
- FTPからプラグイン本体を削除→変わらない
- DBのsiteguard_historyの履歴にIPをぶち込んでみた→変わらない
- teratailに質問→すぐ解決!
解決方法
- plugins/該当のプラグイン削除
- .htaccessの内部修正
.htaccessは完全に盲点でしたが、中身を確認したところすぐにこれだ!とわかりました
下記の内容を全て削除して保存→ブラウザのキャッシュクリアで解決する事ができました!
※.htaccessはFTPから確認する事ができます。wordpressのrootディレクトリに入ってます
# BEGIN WP Hide & Security Enhancer
#SITEGUARD_PLUGIN_SETTINGS_START
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_START
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^wp-signup\.php 404-siteguard [L]
RewriteRule ^wp-activate\.php 404-siteguard [L]
RewriteRule ^server_login_page_dummy(.*)$ wp-login.php$1 [L]
</IfModule>
#==== SITEGUARD_RENAME_LOGIN_SETTINGS_END
#==== SITEGUARD_ADMIN_FILTER_SETTINGS_START
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^404-siteguard - [L]
RewriteRule ^wp-admin/css - [L]
RewriteRule ^wp-admin/images - [L]
RewriteRule ^wp-admin/admin-ajax\.php - [L]
RewriteRule ^wp-admin/site-health\.php - [L]
RewriteCond %{REMOTE_ADDR} !^125\.58\.121\.42$
RewriteRule ^wp-admin 404-siteguard [L]
</IfModule>
#==== SITEGUARD_ADMIN_FILTER_SETTINGS_END
#SITEGUARD_PLUGIN_SETTINGS_END
ログインリンクの変更方法
.htaccesssを下記のコードを参考にして編集を行う事でログインのリンクを変更する事ができます。
参考にしたリンクは最後に記載してます
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^enter/?$ /wp-login.php?45jfvo9204 [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^dashboard/?$ /wp-login.php?45jfvo9204&redirect_to=/wp-admin/ [R,L]
RewriteRule ^dashboard/?$ /wp-admin/?45jfvo9204 [R,L]
RewriteRule ^register/?$ /wp-login.php?45jfvo9204&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/enter
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/dashboard
RewriteCond %{HTTP_REFERER} !^(.*)yoursitedomain/register
RewriteCond %{QUERY_STRING} !^45jfvo9204
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=register
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?45jfvo9204 [R,L]
</IfModule>
参考記事
「wordpress 」wp-hide-security-enhancer導入後、ログインできなくなってしまった場合の解決策について
セキュリティ向上のためのWordPress管理画面のログインURLカスタマイズ方法
コメントを残す