Этот вопрос меня всегда волновал.
В Linux при запросе пароля, если вы введете правильный пароль, он проверяет сразу, почти без задержки. Но, с другой стороны, если вы введете неправильный пароль, проверка займет больше времени. Это почему?
Я наблюдал это во всех дистрибутивах Linux, которые когда-либо пробовал.
security
authentication
passwords
Флавио Амиейро
источник
источник
Ответы:
На самом деле это сделано для предотвращения попыток перебора миллионов паролей в секунду. Идея состоит в том, чтобы ограничить скорость проверки паролей, и существует ряд правил, которые следует соблюдать.
Последнее особенно важно. Это означает, что никаких полезных сообщений вроде:
или же:
Нет даже разницы во времени в ответе между причинами отказа «неверный пользователь и пароль» и «действительный пользователь, но неверный пароль».
Каждый сбой должен предоставлять точно такую же информацию, текстовую или другую.
Некоторые системы идут еще дальше, увеличивая задержку при каждом сбое или допуская только три сбоя, а затем с большой задержкой перед разрешением повторной попытки.
источник
Это заставляет угадывать пароли дольше.
источник
Я не уверен, но довольно часто можно интегрировать задержку после ввода неправильного пароля, чтобы усложнить атаки. Это делает атаку практически невозможной, потому что вам потребуется много времени, чтобы проверить всего несколько паролей.
Даже попытка ввести несколько паролей - даты рождения, имя кота и тому подобное - превращается в никуда.
источник
123456
может также составлять 30% (например) скомпрометированных счетов , но вряд ли где - нибудь рядом , что значительные по всем счетам.В основном для защиты от грубой силы и словарных атак.
Из Руководства разработчика приложений Linux-PAM :
источник
Это очень простой, практически не требующий усилий способ значительно повысить безопасность. Рассматривать:
Система
A
не имеет задержки. У злоумышленника есть программа, которая создает комбинации имени пользователя и пароля. При скорости тысяч попыток в минуту требуется всего несколько часов, чтобы попробовать каждую комбинацию и записать все успешные входы в систему.Система
B
генерирует 5-секундную задержку после каждого неверного предположения. Эффективность атакующего была снижена до 12 попыток в минуту, что эффективно препятствует атаке методом грубой силы. Чтобы найти действительный логин, вместо часов могут потребоваться месяцы. Если бы хакеры были такими терпеливыми, они бы стали законными. :-)источник
Задержки неудачной аутентификации уменьшают количество попыток входа в систему. Идея о том, что если кто-то пытается использовать словарь или грубую силу для одной или нескольких учетных записей пользователей, злоумышленнику потребуется дождаться задержки сбоя и, таким образом, вынудить его потратить больше времени и дать вам больше шансов обнаружить его.
Вам также может быть интересно узнать, что в зависимости от того, что вы используете в качестве оболочки входа в систему, обычно есть способ настроить эту задержку.
В GDM задержка устанавливается в файле gdm.conf (обычно в /etc/gdm/gdm.conf). вам нужно установить RetryDelay = x, где x - значение в секундах.
Большинство дистрибутивов Linux в наши дни также поддерживают определение FAIL_DELAY в /etc/login.defs, что позволяет вам установить время ожидания после неудачной попытки входа в систему.
Наконец, PAM также позволяет вам установить атрибут nodelay в вашей строке auth, чтобы обойти задержку сбоя. ( Вот статья о PAM и Linux )
источник
Я не думаю, что это может быть так просто, как предполагают ответы.
Если ответ на правильный пароль (какое-то значение) происходит немедленно, разве вам не нужно просто ждать дольше этого значения, чтобы узнать, что пароль неправильный? (по крайней мере, вероятностно знать, что подходит для взлома) И в любом случае вы бы запускали эту атаку параллельно ... это все один большой приветственный коврик DoS?
источник
То, что я пробовал раньше, казалось, сработало, но на самом деле нет; если вам не все равно, вы должны просмотреть историю редактирования вики ...
Что делает работу (для меня) в том, чтобы как снизить значение задержки pam_faildelay.so = Х в файле /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.
Такой хрени хватит, чтобы взрослый мужчина плакал!
источник
В Ubuntu 9.10 и, я думаю, в новых версиях файл, который вы ищете, находится в
отредактируйте строку:
замените число 3 на другое, которое вы можете захотеть.
Обратите внимание, что для аутентификации 'nodelay', Я ДУМАЮ, вы должны отредактировать файл
тоже. На линии:
в финал добавить 'nodelay' (без кавычек). Но это последнее объяснение по поводу «нодлея» - вот что я думаю.
источник
Я хотел бы добавить примечание с точки зрения разработчиков. Хотя это не будет очевидно невооруженным глазом, умный разработчик прервет запрос на совпадение, когда совпадение будет найдено. По сути, успешный матч завершится быстрее, чем неудачный. Потому что функция сопоставления будет сравнивать учетные данные со всеми известными учетными записями, пока не найдет правильное совпадение. Другими словами, предположим, что имеется 1 000 000 учетных записей пользователей, упорядоченных по идентификаторам; 001, 002, 003 и так далее. Ваш идентификатор - 43 001. Итак, когда вы вводите правильное имя пользователя и пароль, сканирование останавливается на 43 001 и выполняет вход в систему. Если ваши учетные данные неверны, сканирование выполняется для всех 1 000 000 записей. Разница во времени обработки на двухъядерном сервере может составлять миллисекунды. В Windows Vista с 5 учетными записями пользователей это будет в наносекундах.
источник
Я согласен. Это произвольное программное решение. Установка задержки на одну секунду вместо трех на самом деле не повредит взлому пароля, но сделает его более удобным для пользователя.
источник
Технически, эта преднамеренная задержка предназначена для предотвращения атак, подобных «атаке линеаризации» (есть и другие атаки и причины) .
Linearization.java.
Linearization.docx, пример вывода
Большая часть письменного боевого искусства адаптирована из этого (взято из книги Марка Стэмпа «Информационная безопасность: принципы и практика»). Кроме того, приведенные выше расчеты не учитывают количество предположений, необходимых для определения правильной серийной длины.
источник