Mit diesen 7 Maßnahmen lässt du Brute Force Attacken ins Leere laufen

8 Min.
Mit mindestens 4 Mrd. einzelnen Angriffen dieses Jahr sind Brute Force Attacken die wohl größte Gefahr für WordPress-Seiten.
Zuletzt aktualisiert am 10/07/2020

Mit mehreren Milliarden einzelnen Angriffen pro Jahr sind Brute Force Attacken die wohl größte Gefahr für WordPress-Seiten. Zum Glück ist diese Angriffsart auch sehr plump und leicht auszutricksen. Wir zeigen dir vier einfache und schnelle Maßnahmen gegen die Hacker-Angriffe. Und auch noch drei etwas komplexere Schutzmechanismen.

Allein im April 2017 hat der Sicherheitsanbieter Wordfence mehr als eine Milliarde Brute Force Attacken auf WordPress-Seiten weltweit gezählt. Und das ist nur ein Näherungswert – die Dunkelziffer liegt noch einmal deutlich höher. Damit stellen die Attacken, die automatisiert Passwörter und Nutzernamen zu erraten versuchen, eine große Gefahr für WordPress-Seiten weltweit dar. Aber nicht nur das. Denn über 37,5 Prozent der 10 Mio. größten Webseiten laufen aktuell unter WordPress. Und das heißt, dass die Frage nach wirksamen Schutzmechanismen für WordPress auch das Internet als Ganzes betrifft.

Wenn du genau wissen möchtest, wie Brute Force Attacken funktionieren und wie gefährlich sie sind, schau dir unseren Hintergrundartikel zum Thema Brute Force Attacken an.

Trotz ihrer großen Zahl gibt es eine gute Nachricht: Es gibt sinnvolle Sicherheitsmaßnahmen gegen Brute Force Attacken, die du ohne viel Aufwand und vor allem ohne Programmierkenntnisse selber umsetzen kannst. Und es gibt Maßnahmen, die zumindest Grundlagen im Umgang mit der .htaccess-Datei voraussetzen.

Um diese sieben Maßnahmen geht es heute:

  1. Starke Passwörter (ganz wichtig!)
  2. Nicht “admin” als Nutzernamen verwenden
  3. Anzahl ungültiger Logins beschränken
  4. Zwei-Faktor-Authentifizierung
  5. Mehrstufiger Login
  6. Blacklisting
  7. Loginbereich verstecken (ist umstritten)

1. Benutze ein starkes Passwort

Ein starkes Passwort ist als Schutz gegen Brute Force Angriffe extrem wichtig. Bots und Botnets nutzen riesige Passwortdatenbanken für ihre “Ratespiele”. Diese werden stumpf durchprobiert. Je ungewöhnlicher und schwieriger dein Passwort, desto größer die Wahrscheinlichkeit, dass es darin nicht auftaucht.

Je länger und schwieriger dein Passwort, desto länger brauchen Bots auch, um es zu knacken, wenn sie zusätzlich versuchen das Passwort ohne Liste zu erraten.

Dein Passwort sollte also diverse Zeichenkombinationen aus den …

  • 10 verschiedenen Zahlen (0 bis 9)
  • 52 verschiedenen Buchstaben (A bis Z und a bis z)
  • 32 verschiedenen Sonderzeichen …

… enthalten und wenigstens 8 Zeichen lang sein.

Der Passwort-Manager Passwort-Depot stellt dazu einige anschauliche Rechenbeispiele bereit. Hier geht man davon aus, dass ein starker Einzelrechner zwei Milliarden Passwörter pro Sekunde generieren kann. Konkret heißt das:

  • Ein Passwort aus 5 Zeichen (3 Kleinbuchstaben, 2 Zahlen) hat 60 466 176 Kombinationsmöglichkeiten und kann damit in 0,03 Sekunden geknackt werden.
  • Ein Passwort mit 8 Zeichen (4 Kleinbuchstaben, 2 Sonderzeichen, 2 Zahlen) hat bereits 457 163 239 653 376 mögliche Kombinationen. Hier braucht der Rechner rund zweieinhalb Tage.
  • Und ein Passwort aus 12 Zeichen (3 Großbuchstaben, 4 Kleinbuchstaben, 3 Sonderzeichen, 2 Zahlen) hat sage und schreibe 475 920 314 814 253 376 475 136 Kombinationsmöglichkeiten. Bis ein einzelner Rechner dieses Passwort geknackt hat, braucht er 7,5 Millionen Jahre.

Im WordPress-Codex wird für die Erstellung solcher Passwörter das Plugin Force Strong Passwords empfohlen. Dieses zwingt Nutzer dazu entsprechend komplexe Passwörter zu wählen. Damit macht dieses Plugin die Seiten zwar nicht direkt sicherer, erzieht aber die Nutzer zur Verwendung starker Passwörter. Und gerade wenn du im Kundenauftrag arbeitest, kann diese kleine Hilfsmaßnahme sehr praktisch sein.

Du musst dir die Passwörter nicht merken!

Passwortmanager helfen dir dabei, sichere Passwörter zu erstellen und zu verwalten. Du brauchst dir bloß ein (natürlich auch möglichst komplexes) Masterpasswort zu merken. Den Rest erledigt das Programm für dich. Bei Apple-Rechnern ist bereits eine entsprechende Anwendung namens “Schlüsselbundverwaltung” installiert. Cloudbasierte Passwortverwaltungsprogramme wie 1Password, LastPass oder KeyPass arbeiten auf die gleiche Weise.

Du musst dir also nicht alle deine Passwörter merken. Gerade wenn du mehr als eine Seite betreust und eine Vielzahl von Diensten nutzt, ist eine professionelle Passwortverwaltung ein Segen.

Free Dev Programm RAIDBOXES

2. Benutze nicht den Usernamen “admin”

Wie schon gesagt: Brute Force Attacken sind im Prinzip Rateversuche. Du solltest es den Hackern also möglichst schwer machen, deinen Nutzernamen zu erraten. Verwende deshalb nicht den von WordPress voreingestellten Nutzernamen “admin” – und deshalb nicht denjenigen verwenden, den das System für dich voreingestellt hat. Denn dieser Nutzername gilt natürlich auch für alle anderen WordPress-Nutzer standardmäßig.

3. Sperr’ die Login-Seite nach zu vielen Fehlversuchen

Brute Force Attacken testen tausende und abertausende Kombinationen aus Benutzernamen und Passwörtern. Das heißt im Umkehrschluss: Sie generieren tausend und abertausende Login-Versuche zu limitieren.

Dein Server merkt also durchaus, dass da was im Busch ist. Mit einem entsprechenden Plugin kannst du festlegen, dass der Zugang nach einer gewissen Anzahl von Fehlversuchen gesperrt wird, sodass Hacker ihre Attacke auf Eis legen müssen. Diesen Schutz kannst du bspw. über ein Plugin wie WP Limit Login Attempts oder Limit Login Attempts Reloaded umsetzen.

Bei RAIDBOXES hat jede WordPress-Installation die Funktion, Login-Versuche zu limitieren, standardmäßig integriert. Versucht sich eine Person oder ein Bot zu häufig mit den falschen Zugangsdaten in deine Seite einzuloggen, sperren wir die betreffende IP zunächst für 20 Minuten. Gehen die Login-Versuche mit falschen Daten weiter, wird die IP sogar für 24 Stunden gesperrt. Natürlich kannst du die Zahl der Versuche und den Sperrzeitraum auch selbst definieren.

Limit Login Attempts und Co. haben ein Verfallsdatum

Bei diesem Plugins gibt es jedoch eine wichtige Sache, die es zu verstehen gilt: Die Begrenzung der Anmeldeversuche einer IP-Adresse hat eine gravierende Schwachstelle. Sie kann das Wechseln einer IP-Adresse nicht antizipieren. Das bedeutet, dass z.B. Angriffe mit Botnets nur leidlich oder gar nicht abgewehrt werden können. Mit der neuen Generation von IP-Adressen (den IPv6-Adressen) kann zudem ein einzelner Angreifer seine IP-Adresse in Bruchteilen von Sekunden wechseln. Dieser Umstand potenziert die Gefahr, die von Botnet-Attacken ausgeht.

Und: Eine Großzahl der Brute Force Attacken dürften keine bloßen Ratespiele sein. Denn wie die Rechnung im Abschnitt über sichere Passwörter zeigt kann auch ein Botnet mit einer Million Geräten entsprechend sichere Passwörter nicht erraten. Deshalb arbeiten viele Hacker mit Passwortlisten. Das reduziert die Zahl der Login-Versuche auf die Kombinationsmöglichkeiten der jeweiligen Passwortbibliothek.

Noch macht die Begrenzung der Login-Versuche pro IP zwar Sinn, die Bedeutung dieses Sicherungsmechanismus wird in Zukunft aber rapide abnehmen. Der einzige wirklich sichere Schutzmechanismus gegen Attacken mit wechselnden IPs ist eine Zwei-Faktor-Authentifizierung.

4. Zwei-Faktor-Authentifizierung

Hinter dem Konzept der Zwei-Faktor-Authentifizierung steckt die Idee, beim Login neben dem Passwort auch noch eine zweite Bestätigung zu verlangen. Das ist meist ein weiterer alphanumerischer Code. Das Besondere daran: Dieser wird außerhalb des eigentlichen Anmeldeverfahrens übermittelt – also zum Beispiel über einen Code-Generator oder ein Mobiltelefon. Und nur der Besitzer dieses Geräts ist auch in der Lage sich schlussendlich einzuloggen.

Mit der Google-App Google Authenticator und einem entsprechenden Plugin lässt sich so eine erweiterte Authentifizierung relativ einfach für WordPress implementieren. Häufig genutzt werden zum Beispiel die Plugins Google Authenticator von Hendrik Schack oder Google Authenticator von miniOrange.

Um den zusätzlichen Sicherheitsschutz einzubauen, lädst du die Google-App auf dein Smartphone und installierst das Plugin in WordPress. Hier wird nun ein QR-Code generiert, den du mit der App abscannst. Alternativ dazu kannst du den Account manuell anlegen. Nun sind dein WordPress-Benutzeraccount und die App auf deinem Handy verknüpft.

Die App generiert ab sofort alle 30 Sekunden einen neuen Sicherheitscode. Jeder Benutzer, für den die Zwei-Faktor-Authentifizierung aktiviert ist, sieht nun im Login-Bereich neben “Benutzername” und “Passwort” zusätzlich die Zeile “Google Authenticator Code”. Zum Einloggen braucht er also das Smartphone, auf dem die Codes generiert werden. Große Sicherheitsplugins wie bspw. Wordfence bieten teils einen ähnlichen Mechanismus an.

Der Prozess der doppelten Authentifizierung klingt zwar aufwändig, ist aus sicherheitstechnischer Sicht aber eine sehr gute Absicherung gegen Brute Force Attacken. Vor allem mit Blick auf den vorhin erwähnten Wechsel von IPv4 auf IPv6 Adressen.

Starke Passwörter, das Ändern des Nutzernamens, Plugins wie Limit Login Attempts und eine Zwei-Faktor-Authentifizierung sind alles Maßnahmen, die du einfach, schnell und ohne Programmierkenntnisse umsetzen kannst. Und vor allem die zusätzliche Authentifizierung und wirklich sichere Passwörter schützen auch effektiv gegen Brute Force Attacken.

Wenn du möchtest, kannst du aber noch mehr tun. Und zwar kannst du deinen WP-Admin-Bereich mit einem zusätzlichen Passwort sichern, eine Black- bzw. Whitelist erstellen oder auch deinen WP-Admin-Bereich verstecken. All diese Maßnahmen bieten aber tendenziell kein Mehr an Sicherheit, sondern sind eher als Optionen oder Alternativen zu verstehen.

5. Zusätzlicher Passwortschutz

Wenn du deine WordPress-Seite auf einem Apache-Server betreibst, hast du die Möglichkeit, ohne Plugin ein mehrstufiges Login-Verfahren einzuführen. Denn jede WordPress-Installation auf einem Apache-Server beinhaltet eine sogenannte .htaccess-Datei. In dieser Datei kannst du Code für eine zusätzliche HTTP-Authentifizierung hinterlegen, um einen weiteren Passwortschutz der Login-Seite einzubauen. Der Server verlangt also schon ein Passwort, um Besucher überhaupt zur Anmeldemaske durchzulassen.

# Protect wp-login
AuthUserFile ~/.htpasswd
 AuthName "Private access"
 AuthType Basic
 require user mysecretuser

Mit diesem Befehl entsteht schon bevor der wp-admin-Bereich überhaupt aufgerufen werden kann eine Passwortabfrage. Hier gibst du dann einen zusätzlichen Benutzernamen und ein zusätzliches Passwort ein, um überhaupt auf den Anmeldebereich zu gelangen. Die Daten für den zusätzlichen Nutzer müssen allerdings in der .htpasswd definiert werden. Hierzu müssen Nutzername und Passwort in verschlüsselter Form in die Datei eingefügt werden. Der WordPress-Codex erklärt wie dieser Prozess grundlegend funktioniert.

ebook: Messe die Performance deiner Seite wie ein Profi

6. Blacklisting & Whitelisting

Wo wir gerade bei der .htaccess sind: Mit dieser Datei kannst du noch einen weiteren mächtigen Schutz implementieren. Ein paar Zeilen Code veranlassen, dass nur noch bestimmte IPs Zugriff auf das WordPress-Dashboard oder einzelne Verzeichnisse haben.

Dazu hinterlegst du eine zusätzliche .htaccess mit folgendem Code im entsprechenden Verzeichnis – vorzugsweise wp-admin:

# Block access to wp-admin.
 order deny,allow
 allow from x.x.x.x
 deny from all

x.x.x.x musst du natürlich mit den IPs ersetzen, die Zugriff auf die Seite haben sollen. Das Beispiel zeigt eine Whitelist, also eine Liste von IPs, denen es erlaubt ist auf die Seite zuzugreifen. Damit ist die Login-Seite für alle anderen IPs gesperrt. Die Reihenfolge der Befehle – “allow” gefolgt von “deny” – ist übrigens extrem wichtig, da sie der Reihe nach ausgeführt werden. Kommt zuerst “deny from all”, stehst auch du vor verschlossenen Türen.

Eine Blacklist würde den genau umgekehrten Mechanismus implementieren: Sie würde bestimmen welche IPs nicht auf die Seite zugreifen dürfen. Für beides gibt es natürlich auch Pluginlösungen. So bieten beispielsweise bekannte Sicherheitsplugins, wie All In One WP Security, Wordfence oder Sucuri, jeweils eine Blacklist- bzw. Whitelistfunktion. Allerdings sei angemerkt, dass diese drei Plugins natürlich wesentlich mehr können, als nur Blaklists, bzw. Whitelists zu erstellen. Ausschließlich für diese Funktionen solltest du sie daher nicht installieren. Eine beliebte Alternative wäre hier das Plugin Loginizer, das derzeit mehr als 500.000 aktive Installationen hat.

7. Den Anmeldebereich verstecken

Brute Force Attacken greifen deine Login-Seite an. Eine denkbar einfache Möglichkeit, die Angriffe zu verhindern, ist es daher, die Angreifer gar nicht erst auf die Login-Seite zu lassen. Zu diesem Zweck verstecken einige Webmaster die Anmeldemaske. Der Login-Bereich ist dann nur noch über eine geheime URL zugänglich.

Diese Maßnahme folgt dem (umstrittenen) Prinzip Security through Obscurity und ist für sich alleine genommen keine sinnvolle Sicherungsmaßnahme. Wir bei RAIDBOXES sind keine großen Freunde dieses Prinzips. Denn wenn du die oben genannten Maßnahmen umsetzt, hast du deinen Login-Bereich bereits sehr gut gesichert und musst ihn nicht noch zusätzlich verschieben. Diese Maßnahme kann aber zur gefühlten Sicherheit beitragen, was insbesondere für die Wahrnehmung deiner Kunden wichtig sein kann.

Wenn du deinen wp-admin-Bereich verstecken möchtest, kannst du bspw. eines der großen Sicherheitsplugins nutzen (die ja wie gesagt noch viele weitere Features anbieten). Oder du probierst eines dieser beliebten Plugins aus:

Wie gesagt: Unserer Meinung nach ist das Verstecken des wp-admin keine sinnvolle Maßnahme – zumindest nicht, um deine Seite vor Brute Force Attacken zu schützen. Hast du ein starkes Passwort ausgewählt und ein sinnvolles IP-Ausschlussverfahren, bzw. eine Zwei-Faktor-Authentifizierung implementiert, dann hast du die Gefahr einer erfolgreichen Brute Force Attacke bereits signifikant reduziert.

Fazit

Mit derzeit über 32 Prozent Marktanteil ist WordPress das mit Abstand größte CMS weltweit. Das wird sich wohl in Zukunft auch nicht ändern. Die Wahrscheinlichkeit Ziel einer Brute Force Attacke zu werden ist also, rein rechnerisch, extrem hoch. Das muss dir bewusst sein. Zum Glück kann man sich aber auch sehr einfach vor ihnen schützen. Denn einige wenige Maßnahmen, also sichere Passwörter und eine Zwei-Faktor-Authentifizierung, lassen sich in wenigen Augenblicken und komplett ohne Programmierkenntnisse umsetzen.

Und auch die vermeintlich schwierigeren Maßnahmen, wie das Black-, bzw. Whitelisting, ein zusätzlicher Passwortschutz oder Sperrmechanismus für den Login-Bereich kannst du mit Plugins implementieren. Wenn du also nur die ersten drei oder vier Punkte dieses Posts beachtest, bist du schon gut gegen Brute Force Attacken geschützt. Natürlich kannst du immer mehr tun, also einen zusätzlichen Passwortschutz schaffen oder Black-, bzw. Whitelists einrichten. Doch solltest du in solchen Fällen abwägen, ob sich das Mehr an Sicherheitsmechanismen tatsächlich lohnt, vor allem mit Blick auf den Administrationsaufwand.

Ähnliche Artikel

Kommentare zu diesem Artikel

Samuel
Samuel

Servus,

“Hast du ein starkes Passwort ausgewählt und ein sinnvolles IP-Ausschlussverfahren, bzw. eine Zwei-Faktor-Authentifizierung implementiert, dann hast du die Gefahr einer erfolgreichen Brute Force Attacke bereits signifikant reduziert.”

interessant ist an der Stelle was RAIDBOXES von Haus aus schon dagegen unternimmt. 🙂

Jan
Jan

Hi Samuel,

gute Frage 🙂 Die Verwaltung der Passwörter und das Einrichten einer Zwei-Faktor-Authentifizierung sind natürlich Sache des jeweiligen Nutzers. Wir haben serverseitig ein Aussperrverfahren für IPs eingerichtet (also im Prinzip das, was unter Limit Login Attemtps steht), das nach drei fehlgeschlagenen Loginversuchen die IP blockiert. Allerdings steht es ja auch im Artikel: Dieser Mechanismus hat die entscheidende Schwäche, dass er keine wechselnden IPs antizipieren kann. Wir haben natürlich auch schon intern darüber diskutiert, was man hier noch machen kann. Im Gespräch waren hier z.B. Listingverfahren. Aus Erfahrung können wir tatsächlich die Methode der Zwei-Faktor-Authentifizierung empfehlen. Viel besser geht’s tatsächlich nicht. Natürlich ist das Verfahren aber recht aufwändig.

Samuel
Samuel

Hi Jan,

ok danke für den Hinweis. Wenn ich ein starkes PW habe, bei euch Hoste, aber keine Zwei-Faktor-Authentifizierung habe, wie sicher ist das bei euch?

Worauf ich nicht so stehe: unnötig Plugins installieren. Das nervt und zieht Ressourcen.

E
Erich

Hat man bei Raidboxes shreibenden Zugriff auf die .htaccess-Datei?

Jan
Jan

Hi Erich 🙂

Sorry erstmal für die späte Antwort! Jain 😉 Denn unsere Seiten laufen auf NGINX Webservern. D.h. es existiert zwar eine .htaccess, diese hab aber keinen Einfluss auf die Webserverkonfiguration. Wenn deine Seite auf einem Apache Webserver läuft, kannst du über die .htaccess aber alle relevanten Einstellungen vornehmen.

Viele Grüße aus Münster!

H
Henning Uhle

Hi, sehr schöne Aufstellung. Danke dafür. Ich nutze aufgrund einer heftigen Brute Force Attacke die Lösung mittels htpasswd. Und das seit fast 4 Jahren.

http://www.henning-uhle.eu/in-eigener-sache/in-eigener-sache-diese-webseite-wurde-angegriffen-und-wird-nun-geschuetzt

Ich habe Limit Login Attempts getestet, das war aber nicht das, was mir so vorschwebt. Die 2FA erscheint mir aber sinnvoll.

Jan
Jan

Hi Henning,

tatsächlich ist das zweite Passwort vor dem Login-Bereich wahrscheinlich die komfortablere Lösung. Insbesondere, wenn immer das Smartphone zum Scannen von Codes etc. benötigt wird. Die 2FA ist allerdings die Methode, die wir empfehlen würden. Es gibt ja mittlerweile auch Lösungen die eine 2FA ohne Smartphone ermöglichen (ich meine Yubico heißt eine der Firmen/Produkte hierzu). Limit Login Attempts wiederum hat ja ganz klar die Schwachstelle, dass es keine Rotationen bzw. IP-Wechseln antizipieren kann. Hier sind wir sehr gespannt, was sich in nächster Zeit tut.

M
Magdalena

Hallo,

könnt Ihr etwas zur DSGVO-Konformität der beiden vorgestellten Google-Authenticator-Plugins sagen?

Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.