Nehmen wir an, dass CAPTCHA mit der Kontosperrungssteuerung (nach fünf fortlaufend fehlgeschlagenen Versuchen wird das Konto für 15 Minuten gesperrt) auf einem System aktiviert ist.
Ist Brute Force immer noch eine wahrscheinliche Bedrohung?
Nehmen wir an, dass CAPTCHA mit der Kontosperrungssteuerung (nach fünf fortlaufend fehlgeschlagenen Versuchen wird das Konto für 15 Minuten gesperrt) auf einem System aktiviert ist.
Ist Brute Force immer noch eine wahrscheinliche Bedrohung?
Der Schutz, den Sie beschreiben, ist gut, den Sie berücksichtigen sollten, aber es kann immer noch Schwächen geben:
Vielleicht.
Es hängt davon ab, wie Sie "Brute Force" definieren.
Eine Sperrung nach X falschen Versuchen ist ideal, um ein Konto zu schützen, bei dem ein Angreifer ein einzelnes Ziel verfolgt.
In einem anderen Szenario hat der Angreifer einige häufig verwendete Kennwörter ausgewählt: "Kennwort, Kennwort 123 usw." Und anstatt einen einzelnen Benutzer anzugreifen, versuchen sie ihre 4 allgemeinen Passwörter für jedes Konto, das sie in Ihrem System kennen.
Benutzer: JimPW: Passwort, Passwort123, letmein, secretUser: BobPW: Passwort, Passwort123, letmein, secretUser: AlicePW: Passwort, Passwort123, letmein, secret
Dies ist häufiger in Szenarien der Fall, in denen Angreifer Anmeldeinformationen für den Wiederverkauf im Darknet sammeln oder seitlich zu anderen Diensten wechseln möchten, bei denen Kennwörter möglicherweise wiederverwendet wurden.
Ich schlage vor, dass Sie etwas hinzufügen, um die Rate der insgesamt ungültigen Anmeldungen zu zählen, und nicht nur auf Konto- oder IP-Ebene.
Es ist eine Bedrohung in einem anderen Sinne. Wenn Sie Konten nach 5 erfolglosen Versuchen für 15 Minuten sperren, haben Sie effektiv einen DoS-Mechanismus eingebaut.
Angenommen, ich möchte nicht wirklich einbrechen, aber ich kann nur verursachen Chaos, kein Problem. Führen Sie einfach einige tausend Anmeldungen pro Sekunde mit zufälligen Benutzernamen durch. Hey, ich werde mir nicht einmal die Mühe machen, das CAPTCHA zu machen, wen interessiert das? Ich möchte nur fehlschlagen und sperren .
Eine bessere Strategie als eine festgelegte Zeitspanne nach einer festgelegten Anzahl von Fehlern kann quadratisch sein ( oder exponentielles Wachstum. Einige AVM-Router tun dies. Erster Anmeldefehler, 15 Sekunden Sperrung, nächster Fehler 30 usw. usw. Dies ist für legitime Benutzer viel weniger problematisch und für Angreifer viel problematischer.
Um DoS schwieriger zu machen, benötigen Sie eine Art des Rezepts mit der IP-Adresse sowie dem Kontonamen, wobei die maximale Verzögerung pro Konto-IP-Paar auf einen tolerierbaren Wert begrenzt wird. Andernfalls könnte ein legitimer Benutzer immer noch einfach und unbegrenzt DoSed werden. Das exponentielle Wachstum befasst sich jedoch besser mit dem Problem der "unendlichen Anzahl von Versuchen".
Das tatsächliche Finden eines Benutzernamen-Passwort-Paares online mit brutaler Gewalt setzt voraus, dass die Leute nicht ' t dumm, praktisch hoffnungslos. Leider sind die Leute dumm, sodass Sie nicht davon ausgehen können, dass sie nicht über eines der zehn dümmsten Passwörter verfügen, und Sie müssen davon ausgehen, dass dies machbar ist. Ja, da gibt es auch eine gewisse Bedrohung. Insbesondere, weil es zwar schwierig sein kann, einen Benutzer auf einem Server anzusprechen, Sie jedoch auf einem rein auf Benutzernamen basierenden Steuerungssystem problemlos tausend Benutzer auf demselben Server gleichzeitig ansprechen können (jede Bewertung nur ein einziger Fehler!) und Sie können dies auf tausend Servern parallel tun. Und es kostet Sie nichts, dieses Skript wochenlang (Monate, Jahre ...) laufen zu lassen und alle 15 bis 20 Minuten erneut zu versuchen.
Während Ihre Chancen als Angreifer für das individuelle Konto sehr gering sind, da sich die Zahlen zu praktisch unendlich summieren, müssen Sie irgendwo jemanden schlagen Schließlich ist es unvermeidlich. Da es ansonsten trivial ist, tausend Benutzer parallel zu testen, sollte klar sein, dass Sie auch IP-Adressen bei Ihrer Berechnung berücksichtigen müssen. Trotzdem bietet es keinen 100% igen Schutz gegen ein Botnetz mit einigen tausend Bots, aber es macht den Angriff sicher etwas weniger effektiv und erfordert mehr Arbeit und Management. Mehr Arbeit ist gut.
Sie können das Rennen nicht gewinnen, wenn Sie ein ernstes Ziel sind. Je schwieriger Sie jedoch die Arbeit eines Angreifers machen, desto wahrscheinlicher ist es, dass der Angreifer eine andere Person (die ein leichteres Ziel ist) auswählt Beginnen Sie mit.
Es ist fast das Gleiche wie das Schließen Ihrer Haustür, anstatt sie weit offen zu lassen. Ein Einbrecher kann leicht Ihr Fenster zerbrechen, und Sie können schließlich nichts tun, um jemanden am Betreten zu hindern. Aber wenn er die Wahl einer offenen Tür im Haus des Nachbarn hat und Ihr Fenster einschlagen muss, wird er wahrscheinlich den einfacheren Weg wählen. Weniger Ausgaben, gleicher Gewinn.
Ja, es ist immer noch eine Bedrohung, weil:
Ideen zur Verbesserung Ihrer Vorschläge:
15 * 2 ^ n
Minuten mit einer Obergrenze von 2 Stunden ein, wobei n
die Anzahl der vorherigen Sperren in den letzten 24 Stunden ist (erster Versuch) ist eine 15-minütige Sperre, die zweite ist 30, die dritte ist 60, die vierte und die folgenden sind 120). Es gibt so etwas wie Brute-Force-Angriffe mit niedriger Geschwindigkeit, die speziell für das Aufbrechen von Konten mit Zeitüberschreitungen oder Sperren entwickelt wurden.
Wenn der Angreifer Ihre Schwellenwerte ermitteln kann (die er durch Testläufe erreichen kann), Er kann einen Bot schreiben, um knapp unter dieser Schwelle zu bleiben.
Dies begrenzt natürlich die Anzahl der Kombinationen, die er in einem bestimmten Zeitraum versuchen kann, weshalb diese Art von Angriffen oft Monate oder Jahre dauern und es ist unwahrscheinlich, dass Konten mit relativ langen Passwörtern kompromittiert werden.
In Kombination mit einer vernünftigen Passwortrichtlinie (das ist ein anderes Thema, hier sage ich nur diese Komplexität! = Sicherheit und Länge> Komplexität) und Durch eine solide Implementierung Ihres beschriebenen Systems können Sie die Wahrscheinlichkeit eines Kompromisses erheblich reduzieren. In den meisten Fällen reicht dies aus, damit das verbleibende Risiko innerhalb Ihrer Risikoakzeptanzgrenze liegt.
Ratenlimit-Anmeldungen, Kontosperrung usw. sind gut, um jeden wirtschaftlich realisierbaren Brute-Force-Angriff auf einen Anmeldebildschirm zu stoppen. Dies ist jedoch nicht unbedingt der Fall.
Sehr oft werden Konten kompromittiert, weil Der Brute-Force-Angriff erfolgt nicht gegen den Anmeldebildschirm selbst (was einschränkend ist), sondern gegen eine Kopie der Daten. Wenn ein Angreifer über einen kompromittierten Server oder auf andere Weise auf die Daten zugreifen kann, geht es beim Brute-Force-Angriff wirklich darum, die Konten und Kennwörter herunterzuladen und dann die Verschlüsselung auf einem viel leistungsstärkeren Computer zu unterbrechen.
Brute Force muss nicht viel "Kraft" anwenden. Brute Force könnte tagelang laufen und ein winziger, aber anhaltender Tropfen für Tropfen sein. Ich würde Captcha als kein Problem für jeden entschlossenen Angreifer betrachten.
Selbst mit Ihren Einschränkungen haben Sie impliziert, dass diese Beschränkungen nur für ein einzelnes Konto gelten. Wenn ich also weiß, dass es mehrere Konten gibt, kann ich den Prozess trotzdem automatisieren, um es weiter zu versuchen.
Ich werde nicht in der Lage sein, den gesamten möglichen Schlüsselbereich mit Ihren Einschränkungen brutal zu erzwingen, aber ich werde in der Lage sein, die Spitze zu erzwingen 1000 Passwörter pro Konto innerhalb von etwas mehr als 2 Tagen.
Angesichts der Tatsache, dass eine Liste der Top-1000-Kennwörter höchstwahrscheinlich einen angemessenen Prozentsatz Ihrer Benutzer abdeckt, sollten Sie in Kürze Zugriff auf Ihr System erhalten.
Sie können dies auch dagegen verteidigen?
Die Testversion pro IP einschränken? -> Vektor, um dies zu vermeiden: Botnets / VPN
Fügen wir der Liste also "unmögliche Reisen" hinzu? (Benutzer meldet sich innerhalb einer Minute aus Deutschland und den USA an.)
Wie wäre es also, wenn dieselbe IP verschiedene Benutzer ausprobiert?
Eine zu berücksichtigende Sache ist der Wert der Ressource, die Sie schützen möchten, und welche zusätzlichen Schritte Sie unternehmen möchten, um sie zu sichern. Eine weitere ziemlich sichere Ergänzung zur Stärke Ihres Systems ist ein zweiter Faktor. Dies kann jedoch zusätzliche Kosten für Sie verursachen, je nachdem, was Sie verwenden und wie viele Authentifizierungen Sie vornehmen müssen. Als eigenständiger Dienst berechnet Azure beispielsweise 1,4 USD pro 10 Authentifizierungen. Oder Sie können einen kostenlosen Dienst oder ein "Grid" -System mit eindeutigen Daten pro Benutzer verwenden.
Ist Brute Force immer noch eine wahrscheinliche Bedrohung?
"Wahrscheinlich" hängt davon ab, wie lecker Sie als Ziel sind. Wenn Sie ein wünschenswertes Ziel sind, dann sind sie eine Bedrohung.
Während eine Zeitüberschreitung mit einem Ratenlimit und einer Sperrung für brutale Gewalt sorgt, würden sie nur X Versuche in Y Minuten erhalten Dies ist ein großes Problem, da externe Angreifer Ihre Benutzer nahezu mühelos aussperren können.
In diesem Fall haben Sie die Wahl zwischen Bedrohungen. Sie entscheiden, dass ein Angreifer im Austausch für den Schutz einzelner Konten die Benutzer sperren kann. Es ist ein anderer Angriff als das tatsächliche Stehlen / Ändern von Daten, aber es ist immer noch ein Angriff.
Eine bessere Lösung wäre, sichere Passwörter und eine Zwei-Faktor-Authentifizierung zu erfordern und keine Sperre zu haben.
Wenn Sie beides tun, sind Ihre Konten relativ sicher und Ihre Benutzer werden nicht gesperrt.
Die Sicherheitsanfälligkeit wird hier erheblich verringert, da der Angreifer Ihre Kennwortdatenbank und 2FA-Geheimnisse stehlen und knacken muss, um Zugriff zu erhalten. Bis sie jedoch tief genug sind, tun sie dies nicht Sie benötigen die Benutzerkonten tatsächlich nicht mehr.
Dies hängt wirklich alles davon ab, was Sie schützen. Wenn es sich um ein Wordpress-Blog handelt und die Benutzer Ihren neuesten Beitrag nicht kommentieren können, ist dies keine große Sache. Wenn Ihre Website finanzielle, medizinische oder Sicherheitsdaten enthält, ist dies eine große Sache.