Modul 7 · 7.3
Deutsch
Anmeldung: Passwörter, Zwei-Faktor-Authentifizierung und Brute Force
Modul 7: Sicherheit · Lesezeit: 9 Minuten
Lernziel: Nach dieser Lektion können Sie die Anmeldung an Ihrer Website mit starken Passwörtern, Zwei-Faktor-Authentifizierung und der Begrenzung von Anmeldeversuchen absichern, und Sie wissen, was xmlrpc.php ist.
Kernbegriffe: Passwort-Manager, Passphrase, einzigartiges Passwort, Zwei-Faktor-Authentifizierung (2FA, TOTP), Passkey, Brute Force, Anmeldeversuche begrenzen, wp-login.php auf IP-Adresse, xmlrpc.php, durchsickernde Benutzernamen (REST, ?author=), Anwendungspasswörter
Das Passwort: lang und einzigartig
Ein gutes Passwort hat zwei Eigenschaften:
- Lang: Länge zählt mehr als ungewöhnliche Zeichen. Eine Passphrase aus vier oder fünf zufälligen Wörtern (
sieb-pinguin-oktober-laterne) ist sicherer und leichter zu merken alsP8ssw0rt!. Behörden und Sicherheitsstellen empfehlen ein einzigartiges Passwort von mindestens 12 Zeichen, vorzugsweise eine Passphrase. - Einzigartig: nirgendwo sonst verwendet. Credential Stuffing (Lektion 7.1) funktioniert nur, wenn Sie ein Passwort wiederverwenden.
Niemand merkt sich Dutzende lange einzigartige Passwörter. Verwenden Sie deshalb einen Passwort-Manager: ein Programm, das sie für Sie erstellt, speichert und einträgt. Dann müssen Sie sich nur noch eines merken: das des Managers selbst, und auch das sichern Sie mit Zwei-Faktor-Authentifizierung.
Ob ein Passwort in einem bekannten Datenleck vorkommt, können Sie auf haveibeenpwned.com prüfen. Steht Ihre E-Mail-Adresse in einem Leck, ändern Sie das Passwort bei jedem Dienst, bei dem Sie dasselbe Passwort verwendet haben.
Zwei-Faktor-Authentifizierung
Mit Zwei-Faktor-Authentifizierung (2FA) benötigen Sie beim Anmelden neben Ihrem Passwort noch etwas: meistens einen sechsstelligen Code aus einer App auf Ihrem Telefon (ein Authenticator, nach dem Standard TOTP). Ein Angreifer mit Ihrem Passwort kommt damit noch nicht hinein.
WordPress hat keine eingebaute Zwei-Faktor-Authentifizierung. Sie fügen sie mit einem Plugin hinzu. Es gibt viele; ein einfaches ist Two Factor, erstellt von Mitwirkenden an WordPress selbst. Auch Sicherheits-Plugins bringen sie oft mit. Achten Sie bei der Auswahl auf:
- TOTP-Apps und Backup-Codes (für den Fall, dass Sie Ihr Telefon verlieren); Codes per E-Mail sind schwächer, weil Ihr Postfach ebenfalls gehackt werden kann;
- die Möglichkeit, sie für Administratoren und Redakteure verpflichtend zu machen;
- Passkeys: Anmelden mit Ihrem Fingerabdruck, Gesicht oder einem Sicherheitsschlüssel, ohne Passwort. Dafür gibt es ebenfalls Plugins. Passkeys sind resistent gegen Phishing, weil sie nur auf der echten Website funktionieren.
Schalten Sie Zwei-Faktor-Authentifizierung auch bei allem ein, was um Ihre Website herum liegt: Ihr Hosting-Panel, Ihre E-Mail, Ihr Registrar und Ihr Passwort-Manager. Ein Angreifer, der Ihr Hosting-Panel übernimmt, braucht Ihr WordPress-Passwort nicht.
Brute Force und Anmeldeversuche begrenzen
Eine offene WordPress-Website erhält den ganzen Tag Anmeldeversuche auf wp-login.php, oft mit admin und Listen gängiger Passwörter. Mit einem langen Passwort und 2FA kommen diese nicht hinein, aber jeder Versuch kostet Ihren Server Rechenleistung (ein vollständiger WordPress-Start). Bei einer grossen Welle wird Ihre Website langsam.
WordPress selbst begrenzt die Anzahl der Versuche nicht. Was hilft, in der Reihenfolge von „früh abwehren":
- Auf dem Server: Viele Hoster blockieren eine IP-Adresse, die in kurzer Zeit viele fehlgeschlagene Versuche durchführt, noch bevor WordPress startet (mit einer Firewall oder einer Webserverfunktion). Fragen Sie Ihren Hoster, was dort passiert.
- wp-login.php nur für Ihre IP-Adresse: mit ein paar Zeilen in
.htaccess(bei LiteSpeed und Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Das funktioniert gut, wenn Sie eine feste IP-Adresse haben. Ist das nicht der Fall (zu Hause, auf dem Telefon), sperren Sie sich selbst aus, sobald sich Ihre Adresse ändert. Eine Alternative ist ein zusätzliches Passwort auf der Anmeldeseite (ein „geschützter Ordner", Basic Authentication) mit einem anderen Passwort als Ihrem WordPress-Passwort.
- Ein Plugin, das Versuche begrenzt: Nach fünf fehlgeschlagenen Versuchen wird die IP-Adresse für eine Weile blockiert. Funktioniert, aber erst nachdem WordPress bereits läuft, der Rechenaufwand bleibt also bestehen.
Das Verbergen oder Umbenennen der Anmeldeseite (zum Beispiel /mein-login statt /wp-login.php) verringert das Rauschen in Ihrem Logbuch. Es ist keine echte Sicherheitsmassnahme, und manche Plugins und Themes erwarten die Standardadresse. Gut als Ergänzung, niemals als Ersatz für ein starkes Passwort und 2FA.
xmlrpc.php
xmlrpc.php ist eine alte Schnittstelle aus der Zeit vor der REST API, über die Apps und andere Websites mit WordPress kommunizieren. Sie wird noch von einigen Apps, von Jetpack und von ein paar Schnittstellen verwendet. Für die meisten Websites ist sie überflüssig.
Angreifer mögen xmlrpc.php, weil man damit in einer einzigen Anfrage Hunderte Passwörter gleichzeitig ausprobieren kann (mit der Funktion system.multicall), und weil sie für Angriffe auf andere Websites missbraucht werden kann (Pingbacks). Was Sie tun:
- Nutzen Sie sie nicht: blockieren Sie sie. Manche Hoster, darunter WebOké, blockieren xmlrpc.php standardmässig auf dem Server. Andernfalls mit einer Regel in
.htaccessoder mit einem Sicherheits-Plugin. - Nutzen Sie sie doch (zum Beispiel für eine App, die sie benötigt): lassen Sie sie offen, aber sorgen Sie für starke Passwörter, 2FA und eine Begrenzung der Versuche. Moderne Apps nutzen meistens die REST API mit einem Anwendungspasswort (Lektion 3.3).
Durchsickernde Benutzernamen
In Lektion 3.3 haben Sie gesehen, dass WordPress eine Ableitung von Benutzernamen anzeigt:
https://example.com/?author=1leitet weiter zu/author/<name>/;https://example.com/wp-json/wp/v2/userszeigt eine Liste mit den Slugs aller an, die etwas veröffentlicht haben.
Ist das schlimm? Ein Benutzername ist kein Passwort. Mit einem langen einzigartigen Passwort und 2FA macht das wenig aus. Aber es gibt einem Angreifer die Hälfte der Anmeldedaten und erleichtert gezieltes Phishing. Sinnvolle Massnahmen:
- geben Sie Administratoren einen Benutzernamen, der nicht ihrem öffentlichen Namen entspricht, und veröffentlichen Sie nicht mit einem Administratorkonto (Lektion 3.3);
- beschränken Sie die Benutzerliste in der REST API mit einem Sicherheits-Plugin oder ein paar Zeilen Code, wenn Sie sie nicht benötigen. Schliessen Sie die REST API nicht vollständig: der Block-Editor und viele Plugins benötigen sie.
Anwendungspasswörter
Anwendungspasswörter (Lektion 3.3) sind eine sichere Möglichkeit, einer App oder einem System Zugriff zu gewähren, aber sie umgehen Ihre Zwei-Faktor-Authentifizierung: Eine App mit einem Anwendungspasswort benötigt keinen Code. Erstellen Sie sie nur, wenn es nötig ist, bei einem Konto mit niedriger Rolle, und widerrufen Sie sie, sobald Sie die Verbindung nicht mehr nutzen.
Zusammenfassung
- Verwenden Sie lange, einzigartige Passwörter (Passphrasen) in einem Passwort-Manager.
- Schalten Sie Zwei-Faktor-Authentifizierung ein, mit einem Plugin in WordPress und auch auf Ihrem Hosting-Panel, Ihrer E-Mail und Ihrem Registrar.
- Halten Sie Anmeldeversuche so früh wie möglich auf: auf dem Server, mit einer IP-Regel oder einem zusätzlichen Passwort, oder mit einem Plugin.
- Blockieren Sie xmlrpc.php, wenn Sie sie nicht nutzen.
- Durchgesickerte Benutzernamen sind keine Katastrophe, aber ein Hinweis: veröffentlichen Sie nicht als Administrator und beschränken Sie die REST-Benutzerliste, wenn Sie sie nicht benötigen.
Quiz
Aufgabe
Aufgabe A7.3: Was gibt Ihre Website beim Einloggen preis? Geben Sie die Adresse Ihrer Website ein und weisen Sie nach, dass es sich um Ihre eigene Website handelt (mit dem Code der Aufgabe, als TXT-Eintrag oder als Datei). Das Programm prüft drei Dinge: ob xmlrpc.php eine Liste von Funktionen zurückgibt (offen) oder blockiert ist, ob /wp-json/wp/v2/users Benutzernamen (Slugs) anzeigt, und wohin /?author=1 weiterleitet. Geben Sie an, ob Sie xmlrpc.php benötigen; wenn nicht, wird ein offenes xmlrpc.php rot markiert. Durchgesickerte Slugs werden orange mit Erläuterung markiert.
Aufgabe D7.3: Zwei-Faktor-Authentifizierung einschalten. Schalten Sie Zwei-Faktor-Authentifizierung für alle Administratoren Ihrer WordPress-Website ein, und auch auf Ihrem Hosting-Panel und Ihrer E-Mail. Bewahren Sie die Backup-Codes in Ihrem Passwort-Manager auf. Kreuzen Sie pro Komponente an, dass sie aktiviert ist, und notieren Sie, welche Methode Sie verwenden (App, Passkey, E-Mail) und wo die Backup-Codes gespeichert sind. Notieren Sie auch, wie Sie wp-login.php zusätzlich schützen und warum Sie sich für diese Methode entscheiden.
Aufgabe D7.3: Zwei-Faktor-Authentifizierung einschalten
Diese Aufgabe machen Sie selbst; niemand prüft sie nach. Haken Sie ab, was Sie erledigt haben, und markieren Sie die Aufgabe als erledigt.
Verwenden Sie bei Administratoren lieber eine App oder einen Passkey statt nur E-Mail. Eine feste IP-Adresse können Sie für wp-login.php zulassen; bei wechselnden Adressen passt eine Begrenzung der Anmeldeversuche besser.
Ihre Haken und Notizen bleiben nur in diesem Browser; wir senden sie nirgendwohin. Sind Sie angemeldet, speichern wir in Meine Kurse nur, dass Sie die Aufgabe erledigt haben.
Weiterführende Lektüre
Diese Artikel beschreiben die Schritte in den Panels von WebOké; in anderen Panels funktionieren sie ähnlich.
- DirectAdmin Anleitung 3.7: Sichere Passwörter und was Sie bei einem geleakten Passwort tun
- Zweistufige Verifizierung in Mein WebOké und eine Authenticator-App einrichten
- WordPress: Zugriff auf xmlrpc.php funktioniert nicht
- wp-login.php in WordPress absichern
- DirectAdmin Anleitung 15.9: Passwortgeschützte Verzeichnisse
- Sicher anmelden (allgemeine Informationen zur Internetsicherheit): https://veiliginternetten.nl/veilig-inloggen/
- Brute-Force-Angriffe (developer.wordpress.org, Englisch): https://developer.wordpress.org/advanced-administration/security/brute-force/
