10 запросов в минуту для атаки грубой силы и ддос?

Если я сэкономлю время первой попытки входа в систему и если 10-я попытка будет сделана менее чем за 1 минуту, и я забаню IP-адрес, этого будет достаточно, чтобы остановить атаку грубой силой и ddos? В реальной жизни пользователь сможет вводить неправильный адрес более 10 раз в минуту?

РЕДАКТИРОВАТЬ: может быть, я не правильно поставил вопрос, будет ли блокировка user/ip после 10 req/m сделать систему намного более безопасной, чем стандартный блок после 10 неправильных попыток?

2 ответа

Я думаю, что метод обнаружения вполне правильный. Если пользователь пытается войти в систему 10 раз в минуту, здесь что-то не так.

Но вам нужно проверить, если:

  • пользователь нетерпелив, поэтому нажимает десять раз, чтобы "ускорить загрузку". Это нормально, если вы отключите кнопку входа в систему с помощью JavaScript, но пользователь может отключить JS.
  • пользователь нажимает кнопку "обновить" на странице входа в систему, чтобы браузер повторно отправлял данные публикации. Это возможно, даже если его перенаправить, потому что у него низкая скорость соединения. Так что это может рассматриваться вами как атака.
  • у пользователя есть автозаполненная форма с неверным паролем. Он щелкает, поэтому есть ошибка, поэтому он делает это снова, и снова, и снова.

По моему мнению, это не контрмера, если он пытается сделать DoS-атаку, потому что не имеет значения, какой запрос он делает, потому что он просто хочет остановить ваш сервер. И, кроме того, он попытается сделать это со многих компьютеров с разными IP-адресами, поэтому вы не сможете легко их заблокировать.

Я думаю, что блокировка IP не является защитой и дает пользователю уверенность, что вам есть что скрывать. Вы можете заблокировать его таким образом, чтобы он начал другой путь, тот, о котором вы даже не думали. Я думаю - как говорят другие комментарии - вы должны временно заблокировать пользователя (вы можете зарегистрировать IP, почему нет?), Но показывать ему что-то вроде "Внутренняя ошибка сервера / базы данных, пожалуйста, подождите".

Все крупные сайты крупнейших мировых компаний никого не блокируют.

И, наконец, отвечая на ваш вопрос: да, этот метод сделает вашу систему более безопасной в краткосрочной перспективе, но пользователь никогда не должен знать, что он заблокирован.

Я создал класс, который заботится о защите от перебора в PHP.

https://github.com/ejfrancis/BruteForceBlocker

он регистрирует все неудачные входы в систему по всему сайту в таблице базы данных, и, если количество неудачных входов в систему за последние 10 минут (или любой выбранный вами период времени) превышает установленный лимит (также выбранный вами), он вызывает задержку по времени и / или требование капчи перед повторным входом.

пример:

// построить массив настроек газа (# недавние неудачные входы в систему => ответ).

$ throttle_settings = [

    50 => 2,            //delay in seconds
    150 => 4,           //delay in seconds
    300 => 'captcha'    //captcha 

];

$ BFBresponse = BruteForceBlocker:: getLoginStatus ($ throttle_settings);

// $ throttle_settings - необязательный параметр. если он не включен, будет использован массив настроек по умолчанию в BruteForceBlocker.php

switch ($ BFBresponse ['status']) {

case 'safe':
    //safe to login
    break;
case 'error':
    //error occured. get message
    $error_message = $BFBresponse['message'];
    break;
case 'delay':
    //time delay required before next login
    $remaining_delay_in_seconds = $BFBresponse['message'];
    break;
case 'captcha':
    //captcha required
    break;

}

Другие вопросы по тегам