Почему должен, проверяя неправильный пароль занять больше времени, чем проверка правильной?

Вы перебираете доступ (для доступа a) и изменяете значение b на каждой итерации (b = a.id). После этого вы проверяете, если б не в правах. Вы проверяете только последний элемент последовательности доступа. Это то, что вы хотите сделать?

82
задан Phil Miller 5 July 2010 в 17:24
поделиться

10 ответов

Это должно на самом деле препятствовать тому, чтобы атаки перебором пробовали миллионы паролей в секунду. Идея состоит в том, чтобы ограничить, как быстрые пароли могут быть проверены и существует много правил, которые должны сопровождаться.

  • Успешная пара пользователя/пароля должна сразу успешно выполниться.
  • Не должно быть никакого заметного различия в причинах отказа, который может быть обнаружен.

Тот последний особенно важен. Это не означает полезных сообщений как:

Your user name is correct but your password is wrong, please try again

или:

Sorry, password wasn't long enough

Даже разница во времени в ответ между "недействительным пользователем и паролем" и "действительным пользователем, но неверным паролем" причины отказа.

Каждый отказ должен передать точно ту же информацию, текстовую и иначе.

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

105
ответ дан paxdiablo 24 November 2019 в 09:14
поделиться

Это заставляет его занять больше времени для предположения паролей.

14
ответ дан RossFabricant 24 November 2019 в 09:14
поделиться

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

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

12
ответ дан Daniel Brückner 24 November 2019 в 09:14
поделиться

В основном смягчать против атак перебором и атак с подбором по словарю.

От руководства разработчика приложений Linux-PAM:

Планирование задержек

extern int pam_fail_delay(pam_handle_t *pamh, unsigned int micro_sec);

Эта функция предлагается Linux-PAM для упрощения задержек после неудавшегося вызова к pam_authenticate () и прежде чем управление будет возвращено к приложению. При использовании этой функции прикладной программист должен проверить, доступно ли это с,

#ifdef PAM_FAIL_DELAY
    ....
#endif /* PAM_FAIL_DELAY */

Обычно запросы приложения, что пользователь аутентифицируется Linux-PAM через вызов к pam_authenticate () или pam_chauthtok (). Эти функции называют каждый из сложенных модулей аутентификации перечисленным в соответствующем конфигурационном файле Linux-PAM. Как направлено этим файлом, один из большего количества модулей может перестать работать, порождение pam_... () звонят для возврата ошибки. Желательно для там также быть паузой, прежде чем приложение продолжится. Основной причиной такой задержки является безопасность: задержка действует для воспрепятствования атак с подбором по словарю грубой силы, прежде всего, но также и помогает препятствовать синхронизированный (скрытый канал) нападения.

12
ответ дан richj 24 November 2019 в 09:14
поделиться

Это - очень простой, фактически легкий способ значительно увеличить безопасность. Рассмотрите:

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

  2. Система B генерирует 5-секундную задержку после каждого неправильного предположения. Эффективность взломщика была уменьшена до 12 попыток в минуту, эффективно нанеся вред атаке перебором. Вместо часов могут потребоваться месяцы для нахождения допустимого входа в систему. Если бы хакеры были то, что пациент, они пошли бы законные.:-)

8
ответ дан Adam Liss 24 November 2019 в 09:14
поделиться

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

Вы могли бы также интересоваться знанием, что, в зависимости от того, что Вы используете, поскольку оболочка входа в систему там обычно является способом настроить эту задержку.

В GDM задержка установлена в gdm.conf файле (обычно в/etc/gdm/gdm.conf). необходимо установить RetryDelay=x, где x является значением в секундах.

Большая часть дистрибутива Linux они день также поддерживает наличие FAIL_DELAY, определенный в/etc/login.defs разрешение Вам установить время ожидания после неудавшейся попытки входа в систему.

Наконец, PAM также позволяет Вам устанавливать атрибут nodelay на своей подлинной строке для обхода задержки сбоя. (Вот статья о PAM и Linux),

4
ответ дан Pierre-Luc Simard 24 November 2019 в 09:14
поделиться

Я не вижу, что это может быть столь просто, как ответы предлагают.

Если ответ на правильный пароль (некоторое значение) непосредственен, необходимо ли не только ожидать, до дольше, чем то значение для знания пароля является неправильным? (по крайней мере, знайте вероятностно, который хорошо для взламывания целей), И так или иначе Вы работали бы, это нападение параллельно... является этим всем большая приветственная заставка DoS?

1
ответ дан 24 November 2019 в 09:14
поделиться

В Ubuntu 9.10, и я думаю, в новых версиях файл, который вы ищете, находится в

/etc/pam.d/login

отредактируйте строку:

auth optional pam_faildelay.so delay = 3000000

замените число 3 на другое, которое вы можете захотеть.

Обратите внимание, что для аутентификации «nodelay», Я ДУМАЮ, вам следует также отредактировать файл

/etc/pam.d/common-auth

. В строке:

auth [success = 1 default = ignore] pam_unix.so nullok_secure

добавить «nodelay» в финал (без кавычек). Но я думаю, что это последнее объяснение по поводу «нодлея».

0
ответ дан 24 November 2019 в 09:14
поделиться

Я хотел бы добавить примечание с точки зрения разработчиков. Хотя это не было бы очевидно невооруженным глазом, умный разработчик вырвется из запроса соответствия, когда совпадение будет найдено. В удостоверении успешный матч завершится быстрее, чем неудачный. Потому что функция сопоставления будет сравнивать учетные данные со всеми известными учетными записями, пока не найдет правильное соответствие. Другими словами, предположим, что существует 1 000 000 учетных записей пользователей в порядке идентификаторов; 001, 002, 003 и так далее. Ваш идентификатор 43 001. Таким образом, когда вы вставите правильное имя пользователя и пароль, сканирование останавливается на 43 001 и регистрирует вас. Если ваши учетные данные неверны, он сканирует все 1 000 000 записей. Разница во времени обработки на двухъядерном сервере может составлять миллисекунды. В Windows Vista с 5 учетными записями пользователей это будет в наносекундах.

0
ответ дан 24 November 2019 в 09:14
поделиться

То, что я пробовал раньше, казалось, сработало, но на самом деле нет; если вам не все равно, вы должны просмотреть историю редактирования вики ...

Что работает (для меня), так это оба понизить значение pam_faildelay.so delay = X в /etc/pam.d/login (я уменьшил его до 500000, полсекунды), , а также добавить nodelay (которому предшествует пробел) в конец строки в common-auth , как описано Гавриилом в его ответе.

auth [success = 1 default = ignore] pam_unix.so nullok_secure nodelay

По крайней мере, для меня (debian sid), только одно из этих изменений не сократит задержку значительно ниже 3 секунд по умолчанию, хотя это можно увеличить задержку, изменив только значение в /etc/pam.d/login.

Такой чуши достаточно, чтобы заставить плакать взрослого мужчину!

1
ответ дан 24 November 2019 в 09:14
поделиться
Другие вопросы по тегам:

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