WordPressの管理人アカウント"admin"へのbrute force attack

Pocket

今話題になっている、WPの”admin”アカウントへのbrute force attack。
以下は仮定だけど、もしこれがwp-login.php へアクセスして、パスワードが一致するまでひたすらアタックされるのならば、対策はある。パスワードを変えたりadminを変えたりするのも手だけど、自分は以下の対策をしたので例を書きます。
例えば、login_headフックを使って、直接アクセスを禁止する。別のページからのリンクから来た場合にのみwp-login.pphp が表示される仕掛け。functions.phpに

add_action('login_head', 'disable_direct_access');
function disable_direct_access()
{
    $temp = parse_url( $_SERVER['HTTP_REFERER'] );
    $your_domain = 'your domain here';
    if( $temp['host'] != $your_domain  )
    {
        wp_redirect( site_url() );
        exit;
    }
}

$your_domain は、リンクを貼ったページのドメインを入れる。例えばこのサイトなら daily.glocalism.jp になる。もっと詳しく、urlにしたりするのもありかも。
さらに、ログインを失敗したら、トップにredirectするなら

add_action('login_head', 'disable_direct_access');
function disable_direct_access()
{
    $temp = parse_url( $_SERVER['HTTP_REFERER'] );
    $your_domain = 'your domain here';
    if( $temp['host'] != $your_domain || $temp['path'] == '/wp-login.php' )
    {
        wp_redirect( site_url() );
        exit;
    }
}

ボットでもこういうのを回避してくるのかな?
自分のサイトでは”admin”はほとんど使わないけど、一応設定しておいた。

この記事を書いた人