У сучасних системах 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 налаштовує речі, system-auth
входить той самий файл system-remote-login
, який використовує sshd.
Хоча безпечно усунути затримку на sudo, тому що це зареєстровано, використовується лише місцевими користувачами, а локальними зловмисниками так чи інакше обійти, ви, мабуть, не хочете усунути цю затримку для віддалених входів. Звичайно, ви можете це виправити, написавши користувальницьке sudo, яке не включає лише спільні файли-автори системи.
Особисто я вважаю, що затримка судо (і ігнорування SIGINT) є великою помилкою. Це означає, що користувачі, які знають, що вони неправильно ввели пароль, не можуть вбити процес і зірватися. Звичайно, ви все одно можете зупинити судо за допомогою Ctrl-Z, оскільки судо не вловлює SIGTSTP, а після його припинення ви можете вбити його з kill -9 (SIGKILL). Це просто прикро робити. Тож це означає, що автоматизована атака може вистрілити судів на псевдо-терміналах із надзвичайно високою швидкістю. Але затримка відлякує законних користувачів і спонукає їх призупинити їх кореневі оболонки замість того, щоб виходити з них, щоб уникнути необхідності знову судо.