Woher die Liste kommt
WordPress hat eine Programmierschnittstelle, über die andere Software die Website liest: die mobile App, der Block-Editor und Integrationen. Ein Teil davon listet Benutzer auf. Standardmäßig kann jeder diese Liste lesen, angemeldet oder nicht, unter der Adresse Ihrer Website gefolgt von /wp-json/wp/v2/users. Sie zeigt den öffentlichen Namen jedes Kontos und seinen Anmelde-Slug, der auf den meisten Websites der Anmeldename selbst ist.
Es gibt einen älteren Weg zu derselben Information. Hängen Sie /?author=1 an die Adresse Ihrer Website an, und WordPress leitet auf die Archivseite des ersten Kontos weiter, deren Adresse den Anmeldenamen enthält. Probieren Sie 2, 3 und so weiter, und Sie bekommen den Rest Ihres Personals.
Warum ein Benutzername zählt
Eine Anmeldung hat zwei Hälften. Beide zu erraten ist mühsam. Wird eine Hälfte frei herausgegeben, bleibt nur noch das Ausprobieren von Passwörtern, und Passwortlisten aus anderen Datenlecks sind billig. Wenn Ihre Benutzernamen öffentlich sind, ist jedes Konto allein durch sein Passwort geschützt.
Die alte Fernschnittstelle, xmlrpc.php, beschleunigt das Raten. Eine einzige Anfrage kann Hunderte von Passwortversuchen enthalten. Sie ist standardmäßig eingeschaltet, und die meisten Websites haben sie nicht mehr genutzt, seit die mobile App von WordPress sie nicht mehr braucht.
Vier Änderungen
Erstens: Beschränken Sie die Benutzerliste auf angemeldete Besucher. Sicherheits-Plugins bieten die Einstellung an, und für eine Entwicklerin oder einen Entwickler ist es ein kurzer Filter. Der Block-Editor und die App funktionieren weiter, weil sie angemeldet sind.
Zweitens: Schalten Sie xmlrpc.php ab, sofern keine bestimmte Integration sie braucht. Jetpack und einige ältere mobile Werkzeuge tun das. Wenn Ihre Website eines davon nutzt, lassen Sie die Schnittstelle an und setzen Sie stattdessen eine Ratenbegrenzung davor.
Drittens: Geben Sie jedem Konto, das veröffentlichen kann, einen zweiten Faktor. Das ist die wichtigste Änderung, weil sie ein erratenes Passwort nutzlos macht. Eine Authenticator-App auf dem Smartphone genügt. Zuerst die Administratorkonten, dann die Redaktion, dann alle.
Viertens: Benennen Sie das Konto namens admin um oder entfernen Sie es, und machen Sie den Anzeigenamen jedes Kontos verschieden von seinem Anmeldenamen. Keines von beiden ist für sich ein Schutz. Beides entfernt den einfachsten Rateversuch.
Was sich nicht lohnt
Die Anmeldeseite an eine geheime Adresse zu verlegen ist beliebt und bringt wenig. Die Benutzerliste liegt unter einer anderen Adresse, das Verlegen der Anmeldeseite verbirgt sie also nicht. Ein Plugin, das die Versionsnummer von WordPress verbirgt, hilft hier ebenfalls nicht. Verwenden Sie die Zeit auf den zweiten Faktor.
Was das kostenlose Audit meldet
Das kostenlose Audit fragt die Benutzerliste genauso ab, wie es ein Angreifer tun würde. Es meldet, wie viele Anmeldenamen zurückkamen, und zeigt die ersten paar, damit Sie sie wiedererkennen. Es meldet außerdem, ob xmlrpc.php antwortet. Jeder Befund ist für sich mittelschwer und in Kombination ernst, und meist treten sie zusammen auf.