ブルートフォース攻撃(総当たりログイン試行)

Security

プラグインを使わずに対策する場合

総当たりログイン試行への対策はい

ログイン試行回数を制限する

プラグインを使わない場合はFunctions.phpに以下のコードを書きます

IPごとに$attempts >= 5 (つまり5回)までログインを試行できます

function check_login_attempt($username) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $transient_key = 'login_attempts_' . md5($ip);
    $attempts = get_transient($transient_key);

    if ($attempts && $attempts >= 5) {
        wp_die('試行回数が多すぎます。5分後にもう一度お試しください');
    }
}
add_action('wp_authenticate', 'check_login_attempts');


function record_failed_login($username) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $transient_key = 'login_attempts_' . md5($ip);
    $attempts = get_transient($transient_key);
    $attempts = $attempts ? $attempts + 1 : 1;
    set_transient($transient_key, $attempts, 5 * MINUTE_IN_SECONDS);
}
add_action('wp_login_failed', 'record_failed_login');

ログイン試行回数を制限する(プラグイン)

プラグインをインストールすれば、DBを利用して、ユーザーごとにログイン試行回数を制限できます

ログインURLを変更する

ブルートフォース攻撃はwp-login.phpを狙うことが多いため、プラグインを使って、別URLに変更することが推奨されます

Google reCAPTCHAの追加

Google reCAPTCHA v2 かv3のサイトキー&シークレットキーを取得し、wp_login_formをフックしてHTMLに<script>と<div class=”g-recaptcha”>を挿入したら、authenticateフィルターでreCAPTCHAのトークンを検証する方法

BACK