Sur les systèmes linux modernes, la raison en est que pam_unix.so impose un tel délai. Comme indiqué précédemment, cela peut être configuré jusqu'à deux secondes en changeant FAIL_DELAY
en /etc/login.defs
. Si vous voulez réduire davantage le délai, vous devez donner à pam_unix.so l'option "nodelay". Par exemple, sur mon système, si vous tracez les inclus à partir de /etc/pam.d/sudo
, vous devez modifier la ligne suivante de /etc/pam.d/system-auth
:
auth required pam_unix.so try_first_pass nullok
et changez cela en ceci:
auth required pam_unix.so try_first_pass nullok nodelay
Malheureusement, de la même manière que ma distribution Linux (arch) configure les choses, ce même system-auth
fichier est inclus par system-remote-login
, utilisé par sshd.
Bien qu'il soit prudent d'éliminer le délai sur sudo, car il est enregistré, utilisé uniquement par les utilisateurs locaux et contournable par les attaquants locaux de toute façon, vous ne souhaiterez probablement pas éliminer ce délai pour les connexions à distance. Vous pouvez bien sûr résoudre ce problème en écrivant un sudo personnalisé qui n'inclut pas uniquement les fichiers partagés avec l'authentification système.
Personnellement, je pense que le retard sur sudo (et ignorer SIGINT) est une grosse erreur. Cela signifie que les utilisateurs qui savent qu'ils ont mal saisi le mot de passe ne peuvent pas arrêter le processus et sont frustrés. Bien sûr, vous pouvez toujours arrêter sudo avec Ctrl-Z, car sudo ne capture pas SIGTSTP, et après l'avoir arrêté, vous pouvez le tuer avec kill -9 (SIGKILL). C'est juste ennuyant à faire. Cela signifie donc qu'une attaque automatisée pourrait déclencher très rapidement des sudos sur des pseudo-terminaux. Toutefois, ce délai frustrant les utilisateurs légitimes et les encourageant à suspendre leur shell racine au lieu de les quitter pour éviter de devoir à nouveau subir une erreur.