Как изменить задержку, которая возникает после ввода неверного пароля?

32

После ввода неверного пароля при входе в систему происходит приблизительно 3-секундная задержка. Как я могу изменить это в системе Linux с PAM?

Шон Дж. Гофф
источник
1
Я получаю необходимость задержки с точки зрения безопасности, но задержка по умолчанию является довольно раздражающей
Майк Пеннингтон
3
Это было интересно; возможно я напишу модуль, который позволяет N попыток без задержки, за которыми следует любое количество попыток с большой задержкой.
Шон Дж. Гофф,
1
Вместо нового модуля (предложенного в моем предыдущем комментарии) я использовал pam_unixс nodelayпараметром и pam_tally2с deny=5 unlock_time=15; Это позволяет выполнить 5 повторных попыток, но отказывает в доступе (даже при наличии успешного пароля) в течение 15 секунд. Я все еще собираюсь попытаться написать описанную модель, но теперь это задний план, потому что он не подходит, если ваш основной доступ к системе основан на сети, поскольку это делает атаку DOS тривиальной.
Шон Дж. Гофф
1
если вас беспокоит сетевая DoS из-за тайм-аутов, используйте fail2ban ... на самом деле используйте его, даже если вы думаете, что вы в безопасности :-). я использую двухдневный запрет
Майк Пеннингтон,

Ответы:

21

Я предполагаю, что вы используете Linux и PAM. Задержка, вероятно, вызвана pam_faildelay.so. Проверьте свою конфигурацию pam при /etc/pam.dиспользовании pam_faildelay, например:

# Enforce a minimal delay in case of failure (in microseconds).
# (Replaces the `FAIL_DELAY' setting from login.defs)
# Note that other modules may require another minimal delay. (for example,
# to disable any delay, you should add the nodelay option to pam_unix)
auth       optional   pam_faildelay.so  delay=3000000

Чтобы изменить время, настройте параметр задержки. Если вы хотите избавиться от задержки, вы можете удалить / прокомментировать всю строку.

Другим источником задержки может быть pam_unix.so. Чтобы отключить задержку, вызванную pam_unix.soдобавлением nodelayпараметра, и при необходимости добавить строку, вызывающую pam_faildelay.soдобавление (переменной) задержки, например:

auth       optional   pam_faildelay.so  delay=100000
Ульрих Дангел
источник
2
Там нет упоминания о задержке в любом месте /etc/pam.d/*. Самое близкое, что я вижу, это то, pam_tally.soчто позволяет блокировать после некоторого количества попыток. Но у меня есть n /etc/login.defs, что может быть тем, что мне нужно.
Шон Дж. Гофф,
@ ShawnJ.Goff pam_tally.soне вызывает задержку, насколько я знаю. Другой источник для dealy может быть pam_unix.so- вы можете отключить его с помощью nodelayопции - см. Linux.die.net/man/8/pam_unix для получения более подробной информации
Ульрих Дангел
1
Добавление nodelayопции pam_unix.soи добавление новой записи pam_faildelay.so delay=$some_numberпозволяет мне установить все, что я хочу. Благодарность!
Шон Дж. Гофф
2
Запустив fedora 23, мне пришлось отключить pam_unix.soзадержку и начать использовать ее, pam_faildelay.soкак говорит @ ShawnJ.Goff. Тем не менее, большинство pam.dконфигураций имеют « Этот файл генерируется автоматически. Изменения пользователя будут уничтожены при следующем запуске authconfig». Так где я могу постоянно настроить задержку?
jozxyqk
11

Вам нужно передать nodelayпараметр в auth pam_unix.so.

В зависимости от того, как ваша аутентификация, где вам нужно установить параметр, варьируется. Однако в большинстве дистрибутивов Linux есть что-то вроде того, /etc/pam.d/system-authчто включено во все разные файлы.

Так, например, у /etc/pam.d/system-authвас может быть строка, которая выглядит следующим образом:

auth            sufficient      pam_unix.so try_first_pass nullok

Это должно быть изменено на:

auth            sufficient      pam_unix.so try_first_pass nullok nodelay

pam_unix.soМодуль , что выполняет аутентификацию против /etc/passwdи /etc/shadow. Если Youre использованием LDAP или какой - либо другой пароль бэкенд, вы , вероятно , все равно должны быть установки nodelayна pam_unix.soтак это то , что управляет подсказка (если pam_unix.soне в AUTH, он обычно просто передает пароль , полученный он к следующему модулю).

Вы можете узнать больше о pam_unix.so, делаяman pam_unix

Патрик
источник
На моей системе system-authне существовало; это было /etc/common-auth. Благодарность!
Люк