Diese Frage hat mich immer beunruhigt.
Wenn Sie unter Linux nach einem Kennwort gefragt werden und Ihre Eingabe korrekt ist, wird sie sofort und ohne Verzögerung überprüft. Wenn Sie jedoch das falsche Passwort eingeben, dauert die Überprüfung länger. Warum ist das so?
Ich habe dies bei allen Linux-Distributionen beobachtet, die ich jemals ausprobiert habe.
security
authentication
passwords
Flávio Amieiro
quelle
quelle
Antworten:
Es soll verhindern, dass Brute-Force-Angriffe Millionen von Passwörtern pro Sekunde versuchen. Die Idee ist zu begrenzen, wie schnell Passwörter überprüft werden können, und es gibt eine Reihe von Regeln, die befolgt werden sollten.
Letzteres ist besonders wichtig. Es bedeutet keine hilfreichen Nachrichten wie:
oder:
Nicht einmal ein Zeitunterschied in der Antwort zwischen den Fehlergründen "ungültiger Benutzer und Passwort" und "gültiger Benutzer, aber ungültiges Passwort".
Jeder Fehler sollte genau die gleichen Informationen liefern, sowohl in Textform als auch auf andere Weise.
Einige Systeme gehen sogar noch weiter und erhöhen die Verzögerung mit jedem Fehler oder lassen nur drei Fehler zu, wobei eine massive Verzögerung auftritt, bevor ein erneuter Versuch zugelassen wird.
quelle
Dadurch dauert es länger, Passwörter zu erraten.
quelle
Ich bin mir nicht sicher, aber es ist durchaus üblich, nach Eingabe eines falschen Passworts eine Verzögerung zu integrieren, um Angriffe zu erschweren. Dies macht einen Angriff praktisch unmöglich, da Sie lange brauchen, um nur wenige Passwörter zu überprüfen.
Selbst das Ausprobieren einiger Passwörter - Geburtsdaten, Name der Katze und ähnliches - macht keinen Spaß.
quelle
123456
könnte durchaus 30% (zum Beispiel) der kompromittierten Konten ausmachen, ist jedoch auf allen Konten wahrscheinlich nicht annähernd so bedeutend .Grundsätzlich gegen Brute-Force- und Wörterbuchangriffe.
Aus dem Entwicklerhandbuch für Linux-PAM-Anwendungen :
quelle
Es ist eine sehr einfache und praktisch mühelose Möglichkeit, die Sicherheit erheblich zu erhöhen. Erwägen:
Das System
A
hat keine Verzögerung. Ein Angreifer hat ein Programm, das Kombinationen aus Benutzername und Passwort erstellt. Bei einer Rate von Tausenden von Versuchen pro Minute dauert es nur wenige Stunden, um jede Kombination auszuprobieren und alle erfolgreichen Anmeldungen aufzuzeichnen.Das System
B
generiert nach jeder falschen Vermutung eine Verzögerung von 5 Sekunden. Die Effizienz des Angreifers wurde auf 12 Versuche pro Minute reduziert, was den Brute-Force-Angriff effektiv lähmt. Anstelle von Stunden kann es Monate dauern, bis ein gültiges Login gefunden ist. Wenn Hacker so geduldig wären, würden sie legitim werden. :-)quelle
Fehlgeschlagene Authentifizierungsverzögerungen verringern die Anmelderate. Die Idee, dass, wenn jemand ein Wörterbuch oder einen Brute-Force-Angriff gegen einen oder mehrere Benutzerkonten versucht, dieser Angreifer auf die Fehlerverzögerung warten muss, um ihn zu zwingen, sich mehr Zeit zu nehmen und Ihnen mehr Chance zu geben, sie zu erkennen.
Möglicherweise möchten Sie auch wissen, dass es je nach Verwendung als Anmeldeshell normalerweise eine Möglichkeit gibt, diese Verzögerung zu konfigurieren.
In GDM wird die Verzögerung in der Datei gdm.conf festgelegt (normalerweise in /etc/gdm/gdm.conf). Sie müssen RetryDelay = x setzen, wobei x ein Wert in Sekunden ist.
Die meisten Linux-Distributionen unterstützen heutzutage auch die Definition von FAIL_DELAY in /etc/login.defs, sodass Sie nach einem fehlgeschlagenen Anmeldeversuch eine Wartezeit festlegen können.
Schließlich können Sie mit PAM auch ein Nodelay-Attribut in Ihrer Authentifizierungsleitung festlegen, um die Fehlerverzögerung zu umgehen. ( Hier ist ein Artikel über PAM und Linux )
quelle
Ich sehe nicht, dass es so einfach sein kann, wie die Antworten vermuten lassen.
Wenn die Antwort auf ein korrektes Passwort sofort erfolgt (ein Wert von), müssen Sie dann nicht nur bis zu diesem Wert warten, um zu wissen, dass das Passwort falsch ist? (Zumindest wahrscheinlich, was für Cracking-Zwecke in Ordnung ist) Und trotzdem würden Sie diesen Angriff parallel ausführen ... ist das alles eine große DoS-Begrüßungsmatte?
quelle
Was ich vorher versucht habe, schien zu funktionieren, tat es aber tatsächlich nicht; Wenn es dich interessiert, musst du den Wiki-Bearbeitungsverlauf überprüfen ...
Was tut der Arbeit (für mich) ist, um sowohl den Wert der pam_faildelay.so Verzögerung zu senken = X in /etc/pam.d/login (ich es 500000 gesenkt, eine halbe Sekunde), und auch nodelay hinzufügen (durch ein voran Leerzeichen) bis zum Ende der Zeile in Common-Auth , wie von Gabriel in seiner Antwort beschrieben.
auth [success=1 default=ignore] pam_unix.so nullok_secure nodelay
Zumindest für mich (debian sid) verkürzt nur eine dieser Änderungen die Verzögerung nicht wesentlich unter die Standard-3 Sekunden, obwohl es möglich ist, die Verzögerung zu verlängern, indem nur der Wert in /etc/pam.d/login geändert wird.
Diese Art von Mist ist genug, um einen erwachsenen Mann zum Weinen zu bringen!
quelle
Unter Ubuntu 9.10 und meiner Meinung nach auch neuen Versionen befindet sich die gesuchte Datei in
Bearbeiten Sie die Zeile:
Ändern Sie die Nummer 3 durch eine andere, die Sie möchten.
Beachten Sie, dass Sie die Datei bearbeiten sollten, um eine "Nodelay" -Authentifizierung zu erhalten
auch. An der Leitung:
füge 'nodelay' zum Finale hinzu (ohne Anführungszeichen). Aber diese letzte Erklärung über das "Nodelay" ist, was ich denke.
quelle
Ich möchte eine Notiz aus Entwicklersicht hinzufügen. Obwohl dies mit bloßem Auge nicht offensichtlich wäre, würde ein intelligenter Entwickler aus einer Übereinstimmungsabfrage ausbrechen, wenn die Übereinstimmung gefunden wird. Im Zeugnis würde ein erfolgreiches Match schneller abgeschlossen werden als ein fehlgeschlagenes Match. Denn die Übereinstimmungsfunktion vergleicht die Anmeldeinformationen mit allen bekannten Konten, bis die richtige Übereinstimmung gefunden wird. Mit anderen Worten, es gibt 1.000.000 Benutzerkonten, die nach IDs sortiert sind. 001, 002, 003 und so weiter. Ihre ID ist 43.001. Wenn Sie also einen korrekten Benutzernamen und ein korrektes Kennwort eingeben, stoppt der Scan bei 43.001 und meldet Sie an. Wenn Ihre Anmeldeinformationen falsch sind, werden alle 1.000.000 Datensätze gescannt. Der Unterschied in der Verarbeitungszeit auf einem Dual-Core-Server kann in Millisekunden liegen. Unter Windows Vista mit 5 Benutzerkonten würde dies in Nanosekunden erfolgen.
quelle
Genau. Dies ist eine willkürliche Programmierentscheidung. Wenn Sie die Verzögerung auf eine Sekunde anstatt auf drei setzen, wird die Knackbarkeit des Kennworts nicht wirklich beeinträchtigt, aber benutzerfreundlicher.
quelle
Technisch gesehen dient diese absichtliche Verzögerung dazu, Angriffe wie den "Linearisierungsangriff" zu verhindern (es gibt auch andere Angriffe und Gründe) .
Linearization.java.
Linearization.docx, Beispielausgabe
Ein großer Teil der schriftlichen Kampf aus angepasst dies (aus Mark Stamp des „Informationssicherheit: Principles and Practice“). Die oben genannten Berechnungen berücksichtigen auch nicht die Menge an Vermutungen, die erforderlich sind, um die korrekte Serienlänge herauszufinden.
quelle