WordPress Benutzernamen verstecken

Webseiten, die mit WordPress gebaut sind, werden verhältnismäßig oft Ziel von Hacker-Angriffen – insbesondere von sogn. Brute Force Angriffen. Dafür versucht der Angreifer, durch eine manchmal sehr große Anzahl von Login-Versuchen, das Passwort eines Nutzers oder sogar eines Administrators zu erraten. In den meisten Fällen werden diese Angriffe von Bots durchgeführt.

Es gibt Dinge, die man tun kann, um solche Brute Force Angriffe abzuwehren. Ganz oben auf der Liste möglicher Abwehrmaßnahmen sind Sicherheits-Plugins, die solche Angriffe registrieren und dann die entsprechende IP-Adresse oder den Nutzernahmen für eine gewisse Zeit blockieren. EIn Erraten des Passworts ist dann zwar immernoch möglich, dauert aber entscheidend länger.

Woher haben Angreifer die Nutzernamen?

Angrifer nutzen häufig den Umstand aus, dass sich die Nutzernamen einer WordPress Installation recht einfach herausfinden lassen. Dazu muss der Angreifer lediglich die Autorenseite aufrufen. Aber wie ruft ein potentieller Hacker die Autorenseite auf, ohne den Login-Namen zu kennen? Die Antwort liegt in der Systematik, wie WordPress eigentlich alle Seiten verwaltet: über die URL /?author=1 wird man beispielsweise auf die Profilseite des Hauptaccounts weitergeleitet – der Name des Hauptnutzers, in den meisten Fällen der Nutzer mit Administrator- und somit allen Rechten.

WordPress Profilseiten und Benutzernamen verstecken

Mit folgendem Script wird genau diese Weiterleitung unterbunden:


/* hide author archive page */ 

add_action('template_redirect', 'my_custom_disable_author_page');

function my_custom_disable_author_page() {
    global $wp_query;

    if ( is_author() ) {
        // Redirect to homepage, set status to 301 permenant redirect. 
        // Function defaults to 302 temporary redirect. 
        wp_redirect(get_option('home'), 301); 
        exit; 
    }
}

Dieses Skript muss in die Datei function.php des aktiven Themes oder Child-Themes eingesetzt werden – dann werden alle Anfragen auf die URL /?author=x auf die Startseite weitergeleitet.

Das Skript bietet natürlich keine 100%-ige Sicherheit gegen Brute Force Angriffe – sollte aber als Mindest-Maßname in jedes WordPRess-Theme einegesetzt werden – zumindest dann, wenn man auf die Profilseiten bzw. Autorenseiten verzichten kann.

Benutzernamen in der REST API

Neben der oben aufgeführten ‚Quelle‘ gibt es noch die REST API, die Nutzernamen und somit Login-Namen nach außen kommuniziert.

Grundsätzlich kann die REST API natürlich sehr hilfreich sein, wenn man möchte, dass Inhalte der Website nach außen kommuniziert und somit abrufbar werden. Aber bei Nutzernamen wird aus meiner Sicht aus diesem Feature ein Bug.

Zum Testen einfach mal die folgende URL Aufrufen: „/wp-json/wp/v2/users/1“

Ich nutze Solid Security Pro – und darüber lässt sich diese Sicherheitslücke ziemlich einfach schließen. Dazu muss man an folgender Stelle die Option „Restricted Access“ auswählen:

„Solid Security Pro > Settings > Advanced > WordPress Tweaks > REST API“

Und schon erscheint anstelle von Nutzer-ID, Nutzer-Name, Nutzer-Slug etc. lediglich der folgende Hinweis:

code: "itsec_rest_api_access_restricted"
message: "You do not have sufficient permission to access this endpoint. Access to REST API requests is restricted by Solid Security settings."
status: 401

Und fertig ist die Hütte.

Schreibe einen Kommentar

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