Ich bemerke eine seltsame (naja, meiner Meinung nach) Sache mit Passwörtern. Wenn ich zum Beispiel beim Anmelden ein falsches Kennwort eingebe, dauert es einige Sekunden, bis das System dies mitteilt. Wenn ich es sudo
mit einem falschen Passwort versuche, muss ich auch warten, bis die Shell "Sorry, try again" sagt.
Ich frage mich, warum es so lange dauert, ein falsches Passwort zu "erkennen". Dies wurde bei mehreren Distributionen beobachtet, die ich verwende (und sogar bei OSX), daher denke ich, dass dies keine verteilungsspezifische Sache ist.
security
password
authentication
pam
phunehehe
quelle
quelle
Antworten:
Dies ist eine Sicherheitssache, und es dauert nicht lange, sie zu realisieren. 2 Schwachstellen, die dadurch behoben werden:
Dadurch werden die Anmeldeversuche gedrosselt, was bedeutet, dass jemand das System nicht so schnell zerstören kann, wie er versucht, es zu knacken (1 Million Versuche pro Sekunde? Ich weiß nicht).
Wenn dies der Fall war, sobald überprüft wurde, dass Ihre Anmeldeinformationen falsch waren, können Sie die dafür benötigte Zeit zum Ungültigmachen Ihrer Anmeldeinformationen verwenden, um zu erraten, ob ein Teil Ihrer Anmeldeinformationen korrekt war.
Um diese 2 Dinge zu verhindern, braucht das System nur eine gewisse Zeit, um dies zu tun. Ich denke, Sie können die Wartezeit mit PAM konfigurieren ( siehe Michaels Antwort ).
Security Engineering ( 2ed, amazon | 1ed, kostenlos ) bietet eine viel bessere Erklärung für diese Probleme.
quelle
Dies ist beabsichtigt, um das brachiale Erzwingen zu begrenzen. Sie können es normalerweise ändern, indem Sie nach dem
FAIL_DELAY
Konfigurationseintrag in suchen/etc/login.defs
und dessen Wert ändern (meiner ist3
standardmäßig Sekunden), obwohl der Kommentar in dieser Datei den Eindruck erweckt, dass PAM2
unabhängig von der Einstellung mindestens eine zweite Verzögerung erzwingtquelle
/etc/pam.d/login
. Suchen Sie nachpam_faildelay.so delay=
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
:und ändere es so:
Leider wird auf die Art und Weise, wie meine Linux-Distribution (Arch) die Dinge konfiguriert, genau dieselbe
system-auth
Datei mit einbezogensystem-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.
quelle
nodelay
wird die Wartezeit übrigens auf 0 gesetzt, und FAIL_DELAY wird dann ignoriert.