以下のサイトで WordPress のセキュリティ(ブルートフォースアタック対策)に関する記事を見つけたのでメモ。
WordPress wp-login.php brute force attack
次は記事で推奨されている内容。
以下は3番目の「wp-admin フォルダや wp-login.php へのアクセスを .htaccess を使って制限する」について。
wp-admin フォルダまたは wp-login.php への POST リクエストが自分のドメイン(または特定の IP アドレス)からでない場合は拒否するように、wp-admin フォルダ と wp-login.phpにベーシック認証を設定する。
.htaccess に以下を記述して、自分のドメインからのアクセスのみを許可する。「example\.com」の部分を自分のドメインに変更する。
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_METHOD} POST RewriteCond %{HTTP_REFERER} !^http://(.*)?example\.com [NC] RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteRule ^(.*)$ - [F] </IfModule>
特定の IP アドレスからのみ許可する場合は、以下を記述し、「123\.123\.123\.121」をその IP アドレスに変更する。複数ある場合は「RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.121$」の行を追加する。
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.121$ RewriteRule ^(.*)$ - [R=403,L] </IfModule>
参考:Lock down WordPress admin login with .htaccess
wp-admin ディレクトリに .htaccess ファイルを作成して、以下を記述する。
AuthType Basic AuthName "Secure Area" AuthUserFile "/home/xxxx/.htpasswds/public_html/wp-admin/passwd" require valid-user
パスワードファイル(passwd)を作成して、上記で指定した(外からアクセスできない安全な位置)へ配置する。
<body> password: <?php echo crypt("mypassword", '1#'); ?> </body>
WordPress の .htaccess に、前述の wp-admin ディレクトリの .htaccess の内容をコピーして、<FilesMatch “wp-login.php”> と </FilesMatch> を記述してその間にペーストする。
<FilesMatch "wp-login.php"> AuthType Basic AuthName "Secure Area" AuthUserFile "/home/xxxx/.htpasswds/public_html/wp-admin/passwd" require valid-user </FilesMatch>
参考:Prevent unauthorized WordPress wp-admin and wp-login.php attempts