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」の中に入っています。
.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 と併用するとセキュリティの強度は更に増すので、ぜひ設定しておきたいですね。