Frage:
Anmeldeversuche stillschweigend einschränken
James_pic
2015-04-07 20:56:43 UTC
view on stackexchange narkive permalink

Ich habe den folgenden Ansatz zur Begrenzung der Anmeldungsrate auf einer Website gesehen, an der ich gearbeitet habe, aber ich kann nicht herausfinden, ob dies eine gute Idee ist:

Nach einem fehlgeschlagenen Anmeldeversuch die Website sperrt das Benutzerkonto für den Bruchteil einer Sekunde. Wenn das Konto gesperrt ist, schlagen Anmeldeversuche fehl, auch Versuche mit korrekten Anmeldeinformationen. Dem Benutzer wird nicht mitgeteilt, dass sein Konto gesperrt ist, sondern nur, dass seine Anmeldung fehlgeschlagen ist.

Die Idee ist, dass echte Benutzer im Allgemeinen länger als die Sperrzeit benötigen, um ihre Anmeldeinformationen erneut einzugeben (und wahrscheinlich erneut) Geben Sie sie beim dritten Mal langsamer ein, wenn sie versehentlich die Sperre auslösen. In der Zwischenzeit würden Hacker, die Passwörter brutal erzwingen, die Sperrung mit Anmeldeversuchen mit hohem Volumen auslösen.

Was sind die Probleme bei diesem Ansatz?

Siehe auch: http://stackoverflow.com/questions/1622952/simple-way-to-prevent-flood-of-login-requests/1623046#1623046
Um weniger Auswirkungen auf den Benutzer zu haben, können Sie nach dem fehlgeschlagenen Anmelden einen Ruhezustand hinzufügen. Auf diese Weise löst der Benutzer nicht versehentlich die mögliche Sperre aus. Die "Hacker" sind weiterhin betroffen, da das Konto in der Zwischenzeit * gesperrt * wird. Sie versuchen, den legitimen Benutzer davor zu schützen.
Das Problem bei der Verwendung von Schlaf ist, dass der Hacker weiß, dass sie ausgesperrt sind. Ohne Schlaf meldet sich ein Hacker, der so schnell wie möglich Anmeldeanfragen sendet, nie an (es sei denn, er hat die Anmeldeinformationen beim ersten Versuch richtig erhalten). Mit dem Schlaf hat jeder Versuch die Möglichkeit, erfolgreich zu sein, sodass ein geduldiger Hacker schließlich die richtigen Anmeldeinformationen erhält.
"Echte Benutzer benötigen im Allgemeinen länger als" "einen Bruchteil einer Sekunde **" - Ja, jeder ** echte ** Benutzer benötigt immer länger als einen Bruchteil einer Sekunde. Wo könnte das "Problem" sein?
Sieben antworten:
armani
2015-04-07 21:07:05 UTC
view on stackexchange narkive permalink

Eine Brute-Force-Funktion kann Pausen implementieren, die der von Ihnen angezeigten kurzen Sperrlücke entsprechen. Dies würde ein Brute-Force-Skript verlangsamen. Das dauerhafte Sperren des Kontos (oder das Erzwingen der Sicherheitsfrage von CAPTCHA & zusätzlich zu zukünftigen Anmeldeversuchen) nach x aufeinanderfolgenden fehlgeschlagenen Versuchen ist jedoch ein besserer Weg, um dieses Ziel zu erreichen. Ihr Ansatz hat zwar einen kleinen Vorteil, aber Sie möchten ihn sicherlich mit den traditionellen Anti-Brute-Methoden kombinieren.

Es hat einen Vorteil: Das Brute-Force-Skript ist nicht auf die Anforderungsrate beschränkt. Wenn es also 1000 Passwörter pro Sekunde versucht, wird es 999 Mal von 1000 abgelehnt, selbst wenn es richtig errät.
Richtig. Kleine Siege wie diese sind der Grund, warum ich erwähne, dass die Technik einen gewissen Wert hat. Aber es ist offensichtlich nicht robust genug für bekannte Angriffe. Wenn es verwendet wird, sollte es mit anderen Techniken gekoppelt werden.
Welches ist natürlich der schwierige Teil. Ich denke, die meisten zusätzlichen Schichten werden alle Vorteile dieser Technik eliminieren.
Ja genau. Beachten Sie, dass ich nie gesagt habe, dass das OP dies implementieren sollte. = P.
KnightHawk
2015-04-08 09:03:32 UTC
view on stackexchange narkive permalink

Es gibt eine wachsende Anzahl von sogenannten "langsamen Brute-Force-Angriffen". Wenn ein Bot-Netz mit einer Liste von Zielen in regelmäßigen Abständen nur wenige Versuche mit jedem Ziel unternimmt, um nicht von den üblichen Methoden zur Überwachung schneller Angriffe erfasst zu werden.

Ich verwalte eine Reihe von Websites und Ich sehe normalerweise fehlgeschlagene Anmeldeversuche im Bereich von 3 bis 10 Versuchen auf mehreren nicht verwandten Websites mit genau denselben Benutzernamen und Kennwortkombinationen. Normalerweise ist es eine alphabetische Liste, aber nicht immer. Die Versuche werden normalerweise einmal täglich für eine beliebige Anzahl von Tagen durchgeführt.

Die Komplexität dieser Hacking-Versuche ist sehr gering, aber sie könnten wahrscheinlich eine kurze Sperre umgehen, wie Sie beschreiben. Jeder Benutzer mit einem schwachen Passwort kann / wird möglicherweise kompromittiert, und der Angriff soll unter dem Radar bleiben.

Ihre Methode kann für einen bestimmten Typ / eine bestimmte Geschwindigkeit eines schnellen Angriffs sehr nützlich sein, sollte es aber sein Seien Sie nur eines von vielen Tools, wenn Sie es überhaupt verwenden möchten.

Folgendes habe ich gelesen: "** Ich sehe normalerweise Benutzernamen und * Passwort * -Kombinationen **."
JA. Bei fehlgeschlagenen Anmeldeversuchen protokolliere ich die Kombinationen aus Benutzername und Passwort sowie IP und Uhrzeit. Dadurch kann ich persistente IPs blockieren, wenn ich möchte. Ich sehe auch Trends bei Hacking-Versuchen, wie ich alphabetische Listen, Benutzername = admin usw. erwähnt habe. Ich kann auch feststellen, ob ein Angriff von einer einzelnen IP oder mehreren stammt. Ein möglicher Fehler ist, dass ich auch sehen kann, wann eine gültige ist Der Benutzer gibt sein Passwort (oder seinen Benutzernamen) falsch ein. Sollten diese Daten in die falschen Hände geraten, könnte dies zu Kompromissen führen. Ich muss die Protokolle mit einer gewissen Häufigkeit bereinigen, um dies zu mildern.
HillBillyHacker
2015-04-07 21:08:36 UTC
view on stackexchange narkive permalink

Ich mag den stillen Ansatz. Als Penetrationstester, der häufig Tests auf PCI-Konformität durchführt, stoße ich regelmäßig auf Probleme mit der Kontosperrung. PCI-DSS erfordert, dass Konten nach sechs fehlgeschlagenen Anmeldeversuchen für mindestens 30 Minuten (oder bis sie von einem Administrator entsperrt werden) gesperrt werden. Mein Problem mit Nachrichten, die besagen, dass das Konto gesperrt wurde, besteht darin, dass es sehr einfach ist, einem Benutzer einen Denial-of-Service zuzufügen. Dies kann auch verwendet werden, um gültige Benutzerkonten aufzulisten (wenn Sie jedoch brutal forcieren, würde man annehmen, dass ein gültiges Konto bereits bekannt ist).

Wenn Sie die Verzögerung erhöhen, bis ein "maximaler Schwellenwert" erreicht ist , dann sperren Sie das Konto für einen längeren Zeitraum, der Ansatz scheint mir vollkommen gültig. Außerdem sollten Sie die Uhr jedes Mal zurücksetzen, wenn ein weiterer Authentifizierungsversuch durchgeführt wird.

Ja, ich habe gesehen, dass die Sperre von einem entlassenen Mitarbeiter als Denial-of-Service verwendet wurde (Remotezugriff). Sie hatten keine Möglichkeit, den Daten Schaden zuzufügen, aber alle wurden gesperrt, bis die Dinge von der Konsole zurückgesetzt wurden selbst.
phyrfox
2015-04-08 04:27:11 UTC
view on stackexchange narkive permalink

Die Implementierung wäre schwierig, um es richtig zu machen. Sie müssten verschiedene Möglichkeiten in Betracht ziehen, wie ein Angreifer erkennen kann, dass etwas nicht stimmt. Mein erster unmittelbarer Gedanke ist, dass ein Angreifer möglicherweise bemerkt, dass eine geschwindigkeitsbeschränkte fehlgeschlagene Anmeldung schneller zurückkehrt als eine normale fehlgeschlagene Anmeldung. Oder vielleicht ist die zurückgegebene Nachricht versehentlich etwas anders.

In jedem Fall sollte dies nicht die einzige Verteidigungslinie sein. Eine vollständige Sperrung ist für einen Benutzer eine Unannehmlichkeit, ebenso wie gehackte Konten. Zumindest sollte die Site weiterhin alle Anmeldeversuche mit demselben Algorithmus fehlschlagen, jedoch eine vollständige Sperrung erzwingen, bis der Benutzer sein Kennwort zurücksetzt. Sie sollten auch nur einmal per E-Mail oder SMS benachrichtigt werden, dass mehrere fehlgeschlagene Versuche stattgefunden haben. Sie werden wissen, ob sie es getan haben oder nicht.

Insgesamt denke ich, dass die Implementierung die Zeit nicht wert ist, verglichen mit dem Sperren des Benutzers oder dem Erfordernis eines Captchas oder eines sekundären Passworts, wie z. B. einer Sicherheitsfrage ein paar Versuche.

Nun, das OP muss immer noch prüfen, ob der Benutzer zuerst gesperrt ist - vermutlich durch dieselbe Abfrage an die Datenbank wie im Normalfall - und erst die Sperreinstellung überprüfen, nachdem das Abfrageergebnis zurückerhalten wurde (um die Optimierung des Abfrageplans sicherzustellen) macht die Antwortzeit nicht verdächtig). In Bezug auf Sicherheitsfragen, ewww: D.
baordog
2015-04-07 21:10:02 UTC
view on stackexchange narkive permalink

Die meisten verzögerungsbasierten Sperrmechanismen geben eine progressive Verzögerung an. Wenn die Verzögerung mit der Zeit nicht zunimmt, reicht es möglicherweise nicht aus, ein adaptives Brute-Forcing-Programm zu stoppen - eines, das langsamer wird, um die kleinen Verzögerungen zu bewältigen. Der Nachteil im ursprünglichen Beispiel ist, dass die Brute Force möglicherweise nicht ausreichend verlangsamt wird. Der Nachteil eines Algorithmus, der die Verzögerung erhöht, besteht darin, dass legitime Benutzer möglicherweise gesperrt werden.

Das OP beabsichtigt, dass der Sperrfehler genau das gleiche wie ein falsches Kennwort anzeigt - der Angreifer sollte nicht erkennen, dass ein Fehler auf eine Sperrung zurückzuführen ist.
hildred
2015-04-09 21:06:42 UTC
view on stackexchange narkive permalink

Ich glaube nicht, dass Sie einen Benutzer auf diese Weise sperren möchten, sondern den Endpunkt sperren möchten. Es gibt zwei Gründe, warum Sie dies tun würden: Erstens, wenn ein Benutzer versucht, sich gleichzeitig anzumelden, während sein Konto gehackt wird, ist er nicht betroffen, da er sich nicht vom selben Endpunkt aus anmeldet. Zweitens zielt der Angreifer möglicherweise nicht nur auf einen ab Konto, so dass sie gesperrt werden, wenn mehrere Konten sowie einzelne Konten ausprobiert werden.

Wie andere bereits betont haben, möchten Sie Ihr Timing nicht ändern oder andere Verteidigungslinien vernachlässigen.

Arshid KV
2015-11-17 22:20:57 UTC
view on stackexchange narkive permalink

Ich denke, die vorübergehende Sperr-IP bietet keine gute Sicherheit. Weil Angreifer ihre IP per Proxy ändern und es mit verschiedenen IPs versuchen. Es kann durch zwei Methoden überwunden werden.

1. Hinzufügen einer Captcha-Überprüfung auf der Anmeldeseite

2. Fügen Sie vorübergehend eine Sperr-IP hinzu.

In WordPress können wir ein Plugin dafür hinzufügen. https://wordpress.org/plugins/wp-limit-login-attempts/ Plugin, das diese beiden Feacher bereitstellt.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...