En los sistemas Linux modernos, la razón es que pam_unix.so impone tal retraso. Como se informó anteriormente, esto se puede configurar hasta dos segundos cambiando FAIL_DELAY
en /etc/login.defs
. Si desea reducir aún más el retraso, debe dar a pam_unix.so la opción "nodelay". Por ejemplo, en mi sistema, si rastrea las inclusiones a partir de /etc/pam.d/sudo
, encontrará que tiene que editar la siguiente línea de /etc/pam.d/system-auth
:
auth required pam_unix.so try_first_pass nullok
y cámbialo a esto:
auth required pam_unix.so try_first_pass nullok nodelay
Desafortunadamente, la forma en que mi Linux distro (arch) configura las cosas, ese mismo system-auth
archivo se incluye system-remote-login
, que es utilizado por sshd.
Si bien es seguro eliminar el retraso en sudo, porque eso está registrado, solo lo usan los usuarios locales y los atacantes locales pueden evitarlo de todos modos, probablemente no desee eliminar este retraso para los inicios de sesión remotos. Por supuesto, puede solucionarlo escribiendo un sudo personalizado que no solo incluya los archivos compartidos de autenticación del sistema.
Personalmente, creo que la demora en sudo (e ignorar SIGINT) es un gran error. Significa que los usuarios que saben que escribieron mal la contraseña no pueden matar el proceso y se frustran. Por supuesto, aún puede detener sudo con Ctrl-Z, ya que sudo no atrapa SIGTSTP, y después de detenerlo puede matarlo con kill -9 (SIGKILL). Es molesto hacerlo. Eso significa que un ataque automatizado podría disparar sudos en pseudo terminales a una velocidad súper alta. Pero la demora frustra a los usuarios legítimos y los alienta a suspender sus shells raíz en lugar de salir de ellos para evitar tener que sudo nuevamente.