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;
}