Количество попыток к грубой силе средний пароль / не навязчивые все же значимые пределы?

Существует несколько полезных ответов на ТАК относительно предотвращения скота, вызывающего пароль веб-сервиса путем применения регулировки. Я не мог найти хорошие числа, хотя и у меня есть мало экспертных знаний в этой области, таким образом, вопрос:

Сколько попыток обычно требуется к "в лоб" средний пароль 6 или больше символов (без дополнительного знания, которое может помочь, но принимая во внимание, что пароли, вероятно, подвержены атакам с подбором по словарю) и на основе этого, что значимые пределы состоят в том, чтобы относиться к алгоритму регулировки, не разрушая пользовательский опыт?

Это - моя текущая схема:

  • Форма входа в систему использует данный случай, таким образом, взломщик должен ожидать полного цикла запроса для завершения для и получения, результат входа в систему делают попытку и получают новый маркер.
  • Я позволяю форме входа в систему быть полученной 50 раз на IP с меньше чем минутой между запросами, после этого IP будет заблокирован в течение 1 минуты. Любые новые попытки в течение этой минуты перезапустят тайм-аут.
  • Существует a sleep использованный каждая выборка страницы входа в систему # of attempts / 5, таким образом, после 5 запросов с меньше чем минутой между запросами это возьмет> 1 секунда для выборки формы, после 10 запросов> 2 секунды, и т.д.
  • Кроме того, я только позволяю 100 неудавшихся попыток входа в систему на учетную запись пользователя с 2 часами между попытками, после этого учетная запись заблокирована в течение 2 часов.
  • Во избежание частого DoS'ing учетных записей дюйм/с может быть добавлен в белый список (никакие примененные пределы) или помещен в черный список (любая попытка входа в систему, проигнорированная полностью).

На основе ответов до сих пор, я настроил его для работы как это:

  • Получение формы входа в систему прогрессивно замедляется на на основание IP. Для каждого нового запроса спят # of requests / 2 секунды. Счетчик сбрасывается после 10 минут никаких действий со входом.
  • Я сохраняю стек FIFO попыток входа в систему для каждого IP. Если IP не удается зарегистрироваться в 30 раз в течение 2 часов, он приостановлен. Я также сохраняю список количества приостановок на IP, и время приостановки вычисляется как 2 ^ (# of suspensions + 1) hours. Это должно привести к быстрому фактическому помещению в черный список непрерывного оскорбления дюйм/с.
  • Кроме того, если учетной записи не удалось зарегистрироваться в 20 раз в течение одного дня, она приостанавливается в течение 2 часов. Я еще не слишком уверен в этой мере, так как это означает, что учетными записями может быть DoS'd довольно легко. За исключением крупного распределенного ботнета, хотя, нарушая дюйм/с должен стать де-факто помещенным в черный список быстрее, чем учетная запись, может быть постоянно DoS'd. Это - также настоящая эффективная мера для защиты учетной записи.

Я думаю, что эти пределы не должны вредить обычным пользователям, даже, которые регулярно забывают их пароль и пытаются войти в систему несколько раз. Пределы IP должны также работать хорошо с в большой степени пользователями NAT'ed, учитывая средний размер сервиса. Кто-то может доказать это, чтобы быть эффективным или неэффективным с некоторой твердой математикой?:)

8
задан deceze 5 March 2010 в 02:49
поделиться

2 ответа

Судя по вопросу, кажется, что самая быстрая попытка ввода паролей - 50 в минуту. На основании этого и с использованием случайных 6-значных паролей:

Конечно, словарные атаки будут намного быстрее, но у меня нет данных для этого.

РЕДАКТИРОВАТЬ: Я пытался связать результаты калькулятора Google, подтверждающие это, но ^ , похоже, испортил ссылки здесь.

EDIT2:

Атаки по словарю (из http://www.outpost9.com/files/WordLists.html ):

  • все перечисленные слова (75 000): ~ 1 day
  • список из 816 распространенных паролей: ~ 16 минут
  • очень длинный список слов: ~ 12 дней (Я смотрел на это и предполагаю, что он содержит большинство нетехнических людей пароли)

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

2
ответ дан 5 December 2019 в 20:15
поделиться

У вас есть пара хороших элементов управления, но вам действительно стоит затянуть еще больше. Обычный пользователь не должен пропускать авторизацию более пяти раз. Если он это сделает, покажите ему CAPTCHA.

Помните, что вы ни при каких обстоятельствах не должны блокировать учетную запись. Это называется уязвимостью блокировки учетной записи.Это позволяет произвольному пользователю отключать других пользователей от службы (DOS, отказ в обслуживании).

Я много раз подходил к этой проблеме ограничения входа в систему, и мне нравится то, что вы создаете поле неудачных попыток и дату последней неудачной попытки в своей базе данных. Когда кто-то (кто-либо) не может войти в учетную запись X, вы увеличиваете значение неудачных попыток X и обновляете дату последней неудачной попытки. Если количество неудачных попыток превышает Y (например, пять), покажите CAPTCHA для конкретного пользователя. Таким образом, у вас не будет огромной базы данных заблокированных IP-адресов для ограничения формы входа, вместо этого у вас будет всего два дополнительных поля для каждого пользователя. Также не имеет смысла блокировать / ограничивать IP-адреса из-за ботнетов и прокси (как легальных, так и нелегальных). Я полагаю, когда IPv6 войдет в моду, вы будете еще более обречены. Гораздо больше смысла регулировать на основе целевых учетных записей. Таким образом, когда ваша учетная запись X становится целью ботнета, форма входа будет заблокирована с помощью CAPTCHA. Очевидным недостатком здесь является то, что если ваша CAPTCHA не работает ... то же самое происходит и с вашим входом в систему.

По сути, это так:

  • Кто-то не смог войти в учетную запись X - увеличьте поле неудачных попыток.
  • Если было более 5 неудачных попыток, и последняя неудачная попытка произошла час назад, кажется, что учетная запись находится под атакой, покажите CAPTCHA.
  • С другой стороны, если последняя неудачная попытка произошла более суток назад, похоже, что атака закончилась, опустите ваши щиты и не требуйте CAPTCHA.

По сути, это щит, который включается при массированной целевой атаке на определенные учетные записи. Хорошая особенность такого подхода заключается в том, что не имеет значения, владею ли я фермой компьютеров по всему миру - я не могу использовать грубую силу для одной учетной записи, потому что она основана на учетной записи.

Две плохие вещи в том, что если CAPTCHA не работает, у вас ничего не останется. Конечно, вы можете улучшить эту ситуацию, разместив и другие средства защиты. Вторая проблема заключается в том, что если бы у меня была бот-сеть, я мог бы использовать один компьютер для одной учетной записи, и тогда вполне вероятно, что с миллионной компьютерной сетью я взламываю хотя бы одну учетную запись, но этот подход работает только при нецелевых атаках.

Надеюсь, это напомнило вам некоторые мысли.

6
ответ дан 5 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: