В современных системах Linux причина в том, что pam_unix.so налагает такую задержку. Как ранее сообщалось, это может быть сконфигурировано до двух секунд, изменяя FAIL_DELAY
в /etc/login.defs
. Если вы хотите еще больше уменьшить задержку, вы должны предоставить pam_unix.so опцию "nodelay". Например, в моей системе, если вы отслеживаете включения, начиная с /etc/pam.d/sudo
, вы обнаружите, что должны отредактировать следующую строку /etc/pam.d/system-auth
:
auth required pam_unix.so try_first_pass nullok
и измените это на это:
auth required pam_unix.so try_first_pass nullok nodelay
К сожалению, способ, которым мой linux distro (arch) настраивает вещи, в которые system-auth
включается тот же самый файл system-remote-login
, который используется sshd.
Хотя безопасно исключить задержку для sudo, поскольку она регистрируется, используется только локальными пользователями и в любом случае обходится локальными злоумышленниками, вы, вероятно, не хотите устранять эту задержку для удаленных входов в систему. Конечно, вы можете исправить это, написав собственный sudo, который включает не только общие системные аутентификационные файлы.
Лично я считаю, что задержка в sudo (и игнорирование SIGINT) является большой ошибкой. Это означает, что пользователи, которые знают, что набрали неверный пароль, не могут остановить процесс и разочароваться. Конечно, вы все равно можете остановить sudo с помощью Ctrl-Z, так как sudo не перехватывает SIGTSTP, и после его остановки вы можете убить его с помощью kill -9 (SIGKILL). Это просто раздражает. Это означает, что автоматическая атака может запускать sudos на псевдотерминалах с очень высокой скоростью. Но задержка расстраивает законных пользователей и побуждает их приостанавливать свои корневые оболочки вместо выхода из них, чтобы избежать необходимости повторного запуска sudo.