Предотвращение перебора логинов на сайтах - PullRequest
52 голосов
/ 08 января 2009

В ответ на недавние угон Twitter'а и пост Джеффа о атаках по словарям , каков наилучший способ обезопасить ваш веб-сайт от атак методом "грубой силы"?

В сообщении Джеффа предлагается увеличивать задержку для каждой попытки входа в систему, и в комментариях предлагается добавить капчу после 2-й неудачной попытки.

Оба они кажутся хорошими идеями, но как вы узнаете, что это за "число попыток"? Вы не можете полагаться на идентификатор сеанса (потому что злоумышленник может изменить его каждый раз) или на IP-адрес (лучше, но уязвим для ботнетов). Простая регистрация его по имени пользователя может, используя метод задержки, заблокировать законного пользователя (или, по крайней мере, сделать процесс входа в систему очень медленным для них).

Мысли? Предложения?

Ответы [ 13 ]

2 голосов
/ 08 января 2009

Вы можете добавить некоторую форму теста CAPTCHA. Но имейте в виду, что большинство из них затрудняют доступ к глазам или людям с нарушениями слуха. Интересная форма CAPTCHA задает вопрос,

Что такое сумма 2 и 2?

И если вы запишите последний сбой входа в систему, вы можете пропустить CAPTCHA, если он достаточно стар. Тест CAPTCHA можно выполнять только в том случае, если последний сбой произошел за последние 10 минут.

0 голосов
/ 22 декабря 2016

Старый пост, но позвольте мне опубликовать то, что у меня есть в этом конце 2016 года. Надеюсь, это все еще может помочь.

Это простой способ, но я думаю, что он эффективен для предотвращения атаки при входе в систему. По крайней мере, я всегда использую его в каждой своей сети. Нам не нужны CAPTCHA или другие сторонние плагины.

При первом входе пользователя в систему. Мы создаем сессию как

$_SESSION['loginFail'] = 10; // any number you prefer

Если вход в систему успешен, мы уничтожим его и позволим пользователю войти в систему.

unset($_SESSION['loginFail']); // put it after create login session

Но если пользователь терпит неудачу, как мы обычно посылаем ему сообщение об ошибке, в то же время мы уменьшаем сессию на 1:

$_SESSION['loginFail']-- ; // reduce 1 for every error

и если пользователь потерпит неудачу 10 раз, мы перенаправим его на другой веб-сайт или любые другие веб-страницы.

if (!isset($_SESSION['loginFail'])) { 

     if ($_SESSION['login_fail'] < 1 ) {

     header('Location:https://google.com/'); // or any web page

     exit();

}
}

Таким образом, пользователь больше не может открывать или заходить на нашу страницу входа, так как она перенаправлена ​​на другой веб-сайт.

Пользователи должны закрыть браузер (чтобы уничтожить созданный нами сеанс loginFail), открыть его «снова», чтобы снова увидеть нашу страницу входа в систему.

Это полезно?

0 голосов
/ 22 мая 2012

Для среды .NET

Динамические ограничения IP

Расширение динамических IP-ограничений для IIS предоставляет ИТ-специалистам и хостерам настраиваемый модуль, который помогает смягчать или блокировать атаки типа «отказ в обслуживании» или взлом паролей с помощью перебора, временно блокируя адреса интернет-протокола (IP) клиентов HTTP, которые следуют шаблон, который может способствовать одной из таких атак. Этот модуль можно настроить таким образом, чтобы анализ и блокировка выполнялись на уровне веб-сервера или веб-сайта.

Уменьшите вероятность атаки типа "отказ в обслуживании", динамически блокируя запросы от вредоносных IP-адресов.

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

Минимизируйте возможности взлома паролей вашего веб-сервера

Динамические ограничения IP для IIS могут обнаруживать шаблоны запросов, которые указывают, что пароли веб-сервера пытаются расшифровать. Модуль поместит нарушающий IP-адрес в список серверов, которым запрещен доступ в течение заранее определенного периода времени. В ситуациях, когда аутентификация выполняется для служб Active Directory (ADS), модуль может поддерживать доступность веб-сервера, избегая необходимости создавать проблемы аутентификации для ADS.

Особенности

  • Полная интеграция в IIS 7.0 Manager.

  • Динамическая блокировка запросов с IP-адреса на основе одного из следующих критериев:

    • Количество одновременных запросов.

    • Количество запросов за период времени.

  • Поддержка списка IP-адресов, которым разрешено обходить фильтрацию динамического ограничения IP-адресов.

  • Блокировку запросов можно настроить на уровне веб-сайта или веб-сервера.

  • Настраиваемые действия запрета позволяют ИТ-администраторам указать, какой ответ будет возвращен клиенту. Модуль поддерживает возврат кодов состояния 403, 404 или закрытие соединения.

  • Поддержка адресов IPv6.

  • Поддержка веб-серверов за прокси-сервером или брандмауэром, которые могут изменять IP-адрес клиента.

http://www.iis.net/download/DynamicIPRestrictions

...