WordPress: Passwörter mit "Have I been pwned?" abgleichen
Es passiert immer mal wieder, dass Dienste angegriffen und Daten gestohlen werden. Bei diesen Daten handelt es sich auch sehr oft um Passwörter, die Nutzer verwendet haben verwenden. Aus diesen Sammlungen ergeben sich dann z. B. auch die TOP 10 Passwörter. Das Passwort 123456
führt weiterhin diese Liste an.
Ein schwaches Passwort kann dazu genutzt werden, um zu versuchen sich in WordPress anzumelden. Sind keine entsprechenden Plugins installiert, die fehlgeschlagene Login-Versuche blockieren, dann kann der Angreifer jedes Passwort ausprobieren und vielleicht hat er irgendwann Glück (Brute-Force-Methode). Den Benutzernamen bekommt man in WordPress relativ schnell raus. Entweder findet man ihn im Quell-Code oder man fragt ihn über die REST-API von WordPress ab.
WordPress zeigt beim Anlegen eines Passworts die Stärke des Passworts an. Jedoch kann der Benutzer dies mit einem Haken ignorieren. (Sollte man natürlich nicht tun.)
Block error: "esc(): Argument #1 ($string) must be of type string, null given, called in /home/leitsch/leitsch.org/vendor/getkirby/cms/config/methods.php on line 344" in block type: "image"
Um sicherzustellen, dass kein Passwort verwendet wird, das schon mal veröffentlicht wurde, kannst du das Plugin Passwords Evolved installieren. Das Plugin gleicht das von dir gewählte Passwort mit der Plattform Have I been pwned? ab. Dabei wird dein Passwort natürlich nicht im Klartext übertragen. Vor der Übertragung wird das Passwort in ein Hash umgewandelt und dann werden nur die ersten 5 Zeichen des Hashes an die API geschickt. Die API liefert eine Liste an möglichen Passwörtern, die mit dem gleichen Hash anfangen. Die eigentliche Überprüfung passiert in dem WordPress-Plugin. Die Technik nennt sich k-anonymity.
Ist das Plugin aktiv und man versucht erneut ein unsicheres Passwort zu speichern, bekommt der Benutzer einen entsprechenden Fehler angezeigt. Den Haken für das unsichere Passwort kann man weiterhin noch setzen, jedoch lässt das Plugin kein Speichern mehr zu, wenn das Passwort bei Have I been pwned? gelistet ist.
Block error: "esc(): Argument #1 ($string) must be of type string, null given, called in /home/leitsch/leitsch.org/vendor/getkirby/cms/config/methods.php on line 344" in block type: "image"
Installation von Passwords Evolved
Das Plugin kann ganz klassisch wie jedes andere WordPress-Plugin installiert werden. Einfach nach dem Namen suchen. Nach dem Aktivieren ist das Plugin sofort für die Rolle Administrator aktiv.
Da ich das Plugin in allen WordPress-Installationen installieren möchte, die ich betreue, gehe ich den Weg über die WP-CLI, um das Plugin zu installieren und anschließend zu aktivieren. Wie ich WordPress-Website mit der WP-CLI warte, habe ich in diesem Artikel gezeigt.
wp @all plugin install passwords-evolved --activate
Da ich für alle Rollen sicherstellen möchte, dass sichere Passwörter verwendet werden, habe ich das Plugin für alle Rollen aktiviert. Dies kann über die Einstellungen des Plugins gemacht werden oder mit einem Befehl für alle WordPress-Installationen.
wp @all eval "update_option('passwords_evolved_enforced_roles', array_keys(get_editable_roles()));"
Fazit
Das Plugin Passwords Evolved ist in meine Must-Have-Plugin-Liste aufgenommen. Ein schönes Plugin, das im Hintergrund seine Arbeit macht und sicherstellt, dass Benutzer ein sicheres Passwort wählen und somit die Angriffsfläche auf das WordPress verkleinern.
Vielen Dank Simon für den Tipp.