Auf modernen Linux-Systemen ist der Grund, dass pam_unix.so eine solche Verzögerung auferlegt. Wie bereits berichtet, kann dies durch eine Änderung auf zwei Sekunden eingestellt wird FAIL_DELAY
in /etc/login.defs
. Wenn Sie die Verzögerung weiter reduzieren möchten, müssen Sie pam_unix.so die Option "nodelay" zuweisen. Wenn Sie beispielsweise auf meinem System die Includes ab verfolgen /etc/pam.d/sudo
, müssen Sie die folgende Zeile bearbeiten /etc/pam.d/system-auth
:
auth required pam_unix.so try_first_pass nullok
und ändere es so:
auth required pam_unix.so try_first_pass nullok nodelay
Leider wird auf die Art und Weise, wie meine Linux-Distribution (Arch) die Dinge konfiguriert, genau dieselbe system-auth
Datei mit einbezogen system-remote-login
, die von sshd verwendet wird.
Obwohl es sicher ist, die Verzögerung für sudo zu beseitigen, da diese protokolliert wird, nur von lokalen Benutzern verwendet wird und von lokalen Angreifern sowieso umgangen werden kann, möchten Sie diese Verzögerung wahrscheinlich nicht für Remoteanmeldungen beseitigen. Sie können das Problem natürlich beheben, indem Sie ein benutzerdefiniertes Sudo schreiben, das nicht nur die freigegebenen Systemauthentifizierungsdateien enthält.
Persönlich halte ich die Verzögerung bei sudo (und das Ignorieren von SIGINT) für einen großen Fehler. Dies bedeutet, dass Benutzer, die wissen, dass sie das Kennwort falsch eingegeben haben, den Vorgang nicht abbrechen und frustriert werden können. Natürlich können Sie sudo immer noch mit Strg-Z stoppen, da sudo SIGTSTP nicht abfängt, und nachdem Sie es gestoppt haben, können Sie es mit kill -9 (SIGKILL) beenden. Es ist nur ärgerlich zu tun. Das bedeutet, dass ein automatisierter Angriff Sudos auf Pseudo-Terminals mit einer super hohen Rate abfeuern könnte. Aber die Verzögerung frustriert legitime Benutzer und ermutigt sie, ihre Root-Shells auszusetzen, anstatt sie zu beenden, um zu vermeiden, dass sie erneut sudo müssen.