it-swarm.com.de

Wie schützen Sie Ihren Server vor Brute-Force-Angriffen?

Einer der häufigsten Cyber-Angriffe ist Bruteforce. Welche Mechanismen stehen zum Schutz dieses Angriffs zur Verfügung und wie wendet die Industrie diese Mechanismen an, um die Angriffe abzuschwächen (Best Practices)?

5
Ihebhamad

Brute-Force-Angriffe haben zwei Seiten des Aufpralls. Eine besteht darin, die Anmeldeinformationen durch Serien des Erraten von Passwörtern wiederherzustellen, und eine andere darin, einen Denial-of-Service (DDoS) zu erstellen, indem eine große Anzahl von Versuchen gestartet wird.

Die Industrie verwendet mehrere Mechanismen für eine Kombination, um den Angriff abzuschwächen, da die Implementierung nur einer Steuerung möglicherweise nicht ausreichend ist.

Mögliche Minderungskontrollen könnten sein:

  • Sperren von Konten aufgrund kontinuierlicher Anmeldefehler
  • Erstellen einer Pause im Authentifizierungsprozess nach mehreren Anmeldefehlern
  • Blockieren von IPs - Hier werden mehrere Anmeldeversuche für mehrere Konten initiiert
  • Ermöglichen Sie Benutzern mit hohen Berechtigungen, sich von einer bestimmten IP/IP-Adresse aus anzumelden
  • Anmeldeversuche mit mehreren Benutzernamen von einer IP-Adresse
  • Drosseln/blockieren Sie den Datenverkehr, wenn Anmeldeversuche bei einem Konto mehrere IPs gleichzeitig bilden
  • Verlangsamen Sie das Erraten mithilfe von Geräte-Cookies (Referenz: https://www.owasp.org/index.php/Slow_Down_Online_Guessing_Attacks_with_Device_Cookies )
  • Verwenden Sie ein CAPTCHA, um automatisierte Angriffe zu verhindern
  • Verwenden Sie die 2-Faktor-Authentifizierung, um Angriffe zu verhindern

Jetzt ist es wichtig, eine Kombination von Steuerelementen zu verwenden, um sicherzustellen, dass legitime Benutzer nicht betroffen sind oder nicht auf Ressourcen zugreifen können.

Wenn wir beispielsweise nur "Kontosperrung nach mehreren Fehlerversuchen" implementieren, können Angreifer dieses Steuerelement einfach missbrauchen und einfach Tausende von Benutzerkonten sperren, indem sie eine Reihe von Brute-Force-Versuchen senden. Infolgedessen stellt sich heraus, dass dies ein DDoS ist und die legitimen Benutzer unter dem Zugriff auf ihre Ressourcen leiden.

Daher wird immer empfohlen, eine Kombination der oben aufgeführten Steuerelemente zu verwenden, die auf dem Kontext der Anforderung basiert, um die Auswirkungen von Brute-Force-Angriffen zu verhindern.

5
Sayan

Um Brute-Force-Angriffe zu verhindern, können Sie folgende Ansätze verwenden:

Anmeldeversuche durch Schlaf künstlich verlangsamen.

Dies war etwas üblich für PHP Websites. Das Problem dabei ist natürlich, dass es einige Ressourcen auf Ihrem Webserver beansprucht.

benutze Captchas

erfordern, dass ein Login ein Captcha lösen muss.

Ratenbegrenzung

sie können die Rate pro IP begrenzen, aber ... es gibt auch NAT, was dies für einige Endbenutzer etwas umständlich macht. Außerdem können Sie andere Arten von Gerätefingerabdrücken verwenden, damit Sie nicht blockieren zu viele Benutzer.

Zwei-Faktor-Authentifizierung

sie können dies sogar per E-Mail tun. Einige Endbenutzer hassen dies, weil Sie zum Anmelden jetzt auch Ihre E-Mails abrufen müssen.

Sperren Sie das Konto nach 10 Versuchen und fordern Sie die Benutzer auf, das Konto per E-Mail zu entsperren.

etwas machbar, aber dies bedeutet, dass ein Angreifer ständig Konten sperren kann.

Bearbeiten: es gibt auch ein Phishing-Potenzial (danke für den Kommentar)

Hashcash

Wurde nie wirklich weit verbreitet. Grundsätzlich bitten Sie den Client, einen Hash teilweise für Sie zu "knacken" (Sie geben die ersten n-Bits an und fordern den Client auf, eine Eingabe zu finden, deren Hash mit diesen n-Bits beginnt). Sie können dies beliebig schwierig machen (wie 1s auf einem modernen Computer).

nachteile: Erfordert mehr CPU-Leistung vom Client. Außerdem müssen Sie den Hash überprüfen, der auch etwas CPU-Leistung vom Server benötigt (obwohl viel, viel weniger als vom Client).

das Problem auslagern

Verwenden Sie die Anmeldung über Facebook, Google oder was auch immer. Immer eine Option ... ist möglicherweise nicht immer die beste Wahl.

Nicht jeder mag dies, da Sie möglicherweise Informationen darüber verlieren, welche Websites Ihre Benutzer auf diesen Websites besuchen. (ist möglicherweise auch nicht GDPR-konform, wenn Sie in der EU sind?)

"menschliche" Erkennung

Abgesehen von Captchas gibt es andere Ansätze, um Bots von Menschen zu unterscheiden, z. B. die Überprüfung ihres Benutzeragenten, die Überprüfung von Verweisen, die Überprüfung der von ihrem Browser unterstützten Funktionen usw. Es ist jedoch wahrscheinlich einfacher, nur einen vorhandenen CAPTCHA-Anbieter zu verwenden, der dies ohnehin bereits tut.

Sie können damit wirklich kreativ sein, z. B. indem Sie Divs übereinander stapeln, sie mit CSS formatieren und mit JS so ändern, dass nur das richtige "Login" sichtbar ist und die anderen nicht, was bedeutet, dass es einem Bot schwer fällt, dies zu sagen Welches "Login" ist das richtige? Es macht Spaß, Methoden zu entwickeln, um Bots von Menschen zu unterscheiden ... aber auch hier ist es im Allgemeinen einfacher, nur einen vorhandenen CAPTCHA-Dienst zu verwenden.

Außerdem ... mit Blick auf die Barrierefreiheit ... machen es nur CAPTCHAs für manche Menschen unmöglich, sie zu verwenden. Gute CAPTCHA-Anbieter bieten zumindest auch Audio-CAPTCHAs an. Also ... erstelle kein eigenes CAPTCHA. Dann gibt es Bildschirmleser ... die Ihr "Mensch erkennen" stören könnte. (Hm, nicht sicher, ob die Verwendung eines solchen externen CAPTCHA-Anbieters GPDR-konform ist?)

Gas auf Netzwerkebene

Sie können dies tun, wenn Sie über die richtige Infrastruktur verfügen. Wenn Sie einen Hosting-Anbieter haben, tun diese dies möglicherweise bereits nach zu vielen Anfragen (als allgemeiner DoS-Schutz).

Honeypotting

Ich bin mir nicht sicher, ob jemand dies in der Praxis tut, aber im Wesentlichen, wenn Sie sicher sind, dass ein Konto brutal erzwungen wird, führen Sie einen seiner Anmeldeversuche zum Erfolg und geben Sie ihm eine Scheinwebsite, die den Bot davon überzeugt, dass die Anmeldung erfolgreich war, aber nicht tatsächlich erfolgreich.

3
mroman

Es gibt viele Methoden, mit denen Sie versuchen können, das Brute-Forcing zu vereiteln: Zwei-Faktor-Authentifizierung, CAPTCHAs, Ratenbegrenzung und natürlich pw-Komplexitätsanforderungen sind nur einige.

Die Antwort "Was soll ich verwenden?" Basiert auf Ihrem Risikomodell. Wenn Sie eine kleine Site sind, deren Hacken nicht die Zeit und Mühe wert ist, können Ratenbegrenzungs- und/oder Komplexitätsregeln mehr als ausreichend sein. Wenn Sie eine E-Commerce-Website wie Amazon mit Tonnen vertraulicher Daten betreiben, ist 2FA möglicherweise relevanter.

Sie sollten zuerst überlegen, was machbar ist, und dann innerhalb dessen, was angesichts Ihrer Ressourcen und Ihres Risikos angemessen ist.

1