ブルートフォース攻撃(総当たりログイン試行)
プラグインを使わずに対策する場合
総当たりログイン試行への対策はい
ログイン試行回数を制限する
プラグインを使わない場合は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