WordPress でログインページを wp-login.php より変更する

WordPressは利用者が最も多い人気のCMSですが、利用者が多い分、攻撃の対象とされることが多いです。
デフォルトではログインページは wp-login.php になっていますので、そのまま使用しているとログイン名とパスワードをbrute force attack等の総当たり攻撃をされれば、ログインされサイトを改竄されてしまうかもしれません。
wp-login.php の名称を変えれば、WordPressで運用していることに気付かれないかもしれませんし、気付かれてもログインページを探し出すことが困難になります。

プラグインを使用せずに、wp-login.phpより名称を変更する方法です。
ブラウザより http://–URL–/wp-login.php に接続すると not found となり、
http://–URL–/wp-login.php?12345 がログインページとなる方法を紹介します。

–URL– の部分は、あなたのwebサイトのアドレスにしてください。
12345 の部分は、wp-login.php?12345の部分がお好みの文字列になるよう設定してください。

WordPressが置いてあるディレクトリの .htaccess に設定します。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^enter/?$ /wp-login.php?12345 [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^dashboard/?$ /wp-login.php?12345&redirect_to=/wp-admin/ [R,L]
RewriteRule ^dashboard/?$ /wp-admin/?12345 [R,L]
RewriteRule ^register/?$ /wp-login.php?12345&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php
RewriteCond %{HTTP_REFERER} !^(.*)--URL--/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)--URL--/wp-login\.php
RewriteCond %{HTTP_REFERER} !^(.*)--URL--/enter
RewriteCond %{HTTP_REFERER} !^(.*)--URL--/dashboard
RewriteCond %{HTTP_REFERER} !^(.*)--URL--/register
RewriteCond %{QUERY_STRING} !^12345
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?12345 [R,L]
</IfModule>

# END WordPress

9から28行目を追記しています。

以上で、http://–URL–/wp-login.php?12345 がログインページとなります。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です