WordPressのログインURLを変更して404エラーで返す【サイトセキュリティ強化】



WordPress を使っているサイトのログイン画面は、基本的に末尾に「wp-login.php」もしくは「wp-admin」を付ければ誰でもアクセスすることができます。

https://ドメイン/wp-login.php
https://ドメイン/wp-admin

また、ユーザー名は末尾に「?author=1」を付ければ表示されます。

https://ドメイン/?author=1

よって、何の対策もしていない場合は、ブルートフォースアタックによりパスワードを特定されれば、簡単にサイトに侵入されることになります。

.htaccessでログインURLを変更

ログイン URL を変更することにより、アクセスされても「404 not found」で返して侵入を防ぎます。

https://ドメイン/wp-login.php/任意の文字列

まずは任意の文字列を考えます。
ランダムな英数字、もしくは、ググってみて検索に引っかからない文字が良いかと。

コードを .htaccess ファイルに追記します。WordPress の場合 .htaccess は「public_html」の中に入っています。

【FTPソフト】FileZillaのインストール&接続方法

.htaccess をテキストエディタで編集します。

サクラエディタのインストール方法

次のコードを「# BEGIN WordPress」の前にコピペで追記し、文字を置き換えます。

  • 「サイトドメイン」5か所
  • 「文字列」4か所
# Login URL
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^enter/?$ /wp-login.php?文字列 [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^dashboard/?$ /not_found [R,L]
RewriteRule ^dashboard/?$ /not_found [R,L]
RewriteRule ^register/?$ /wp-login.php?文字列&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)サイトドメイン/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)サイトドメイン/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)サイトドメイン/enter
RewriteCond %{HTTP_REFERER} !^(.*)サイトドメイン/dashboard
RewriteCond %{HTTP_REFERER} !^(.*)サイトドメイン/register
RewriteCond %{QUERY_STRING} !^文字列
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?文字列 [R,L]
</IfModule>

エディタの置換機能を使うと間違いが少なくて済みます。

上書き保存をしたら FTP などでファイルを上書きします。

正しく反映されると「https://ドメイン/wp-login.php」にアクセスされた場合「404 Not Found」エラーとなります。

ユーザー名を隠す別の方法

Google Authenticator と併用するとセキュリティの強度は更に増すので、ぜひ設定しておきたいですね。

プラグインGoogle Authenticatorでセキュリティを強化【WordPress二段階認証】