Der WordPress Admin-Bereich ist ein beliebteste Angriffs-Ziel und sollte daher besonders gut und wirksam geschützt werden. Bei einer betroffenen Seite ist in der Folge eine massiv erhöhte Zahl von Login-Versuchen festzustellen – eine „Brute Force Attack“.
WordPress schützen
1. Nutzernamen „admin“ löschen
Beim Initialisieren eines neuen Blog legt das System einen Administrationsnutzer mit dem Namen „admin“ mit einem durchaus sicheren Passwort an und sperrt den öffentlichen Zugang zum Bereich mit sämtlichen Einstellungen durch eine Login-Seite ab. Da dieser Nutzername bei WordPress-Blogs so verbreitet ist, nutzen Angreifer diese „Sicherheitslücke“.
Anleitung zum Löschen des „admin“
Schritt 1 – neuen Benutzer anlegen
Als Administrationsnutzer in das WordPress Backend einloggen und dort auf den Menüpunkt Benutzer klicken. Oben in der Maske auf den Button Neu hinzufügen klicken und das Formular mit den Daten des neuen Benutzers ausfüllen.
Als Letztes sollte dem neu angelegten Benutzer die Rolle Administrator zugewiesen werden. Abschließend auf den Button Neuen Benutzer hinzufügen klicken.
Schritt 2 – Nutzer „admin“ löschen
Nachdem der neue Administrationsnutzer erfolgreich angelegt wurde, loggen Sie aus und anschließend mit dem neu angelegten Benutzer ein. Dies ist notwendig, da angemeldete Benutzer nicht gelöscht werden können.
Unter dem Menüpunkt Benutzer findet sich die Übersicht der Benutzer, hier wählen Sie den Benutzer „admin“ aus und im Auswahlmenü die Schaltfläche Löschen.
Schritt 3 – Beiträge und Kommentare übertragen
Anschließend wird abgefragt welchem Benutzer die unter „admin“ angelegten Beiträge und Kommentare übertragen werden sollen. Hier wählen Sie nun im DropDown-Menü den neu angelegte Benutzer aus. Mit Klick auf Löschen bestätigen wird der Vorgang abgeschlossen.
2. WordPress User ID ändern
Standardmäßig ist die User ID des Admins „1“. Um die Sicherheit zu erhöhen, kann diese nachträglich geändert werden. Dazu muss in der Datenbank nicht nur die Tabelle wp_users geändert werden, sondern auch wp_usermeta, wp_posts, wp_links, wp_comments. In phpMyAdmin folgende Befehle ausführen.
UPDATE wp_users SET ID = '2014' WHERE ID = 1; UPDATE wp_usermeta SET user_id = '2014' WHERE user_id = 1; UPDATE wp_posts SET post_author = '2014' WHERE post_author = 1; UPDATE wp_links SET link_owner = '2014' WHERE link_owner = 1; UPDATE wp_comments SET user_id = '2014' WHERE user_id = 1;
3. WordPress Tabellenpräfix nachträglich ändern
Um die Sicherheit des WordPress-Blogs weiter zu erhöhen, kann man das Datenbank-Tabellenpräfix ändern. Macht man dies bei der Installation, so reicht es einfach das Präfix anzugeben. Hat man dies während der Installation versäumt, so sind nachträglich ein paar Handgriffe notwendig um Tabellenpräfix zu ändern.
In der wp-config.php folgenden Eintrag ersetzen:
$table_prefix = 'XY110_';
Im Anschluss die vorhandene Datenbank anpassen. Dazu in phpMyAdmin alle Tabellen der Datenbank markieren und über die Dropdown-Liste Tabellenpräfix ersetzten auswählen. Dann auf Ok und alten und neuen Wert eingeben.
Als Letztes müssen nun noch die Einträge innerhalb der Datenbank ersetzt werden. Dazu folgende Befehle in phpMyAdmin ausführen:
UPDATE XY110_options SET option_name = REPLACE(option_name, 'wp_', 'XY110_');</code> UPDATE XY110_usermeta SET meta_key = REPLACE(meta_key, 'wp_', 'XY110_');
4. Meldungen bei fehlerhaftem Login deaktivieren
Bei einem fehlerhaftem Login gibt WordPress dem Anwender aber auch einem potenziellen Eindringling Informationen zum Fehler. Diese Informationen stellen ein weiteres Sicherheitsrisiko dar.
Den folgenden Code in die functions.php des Themes eintragen:
// Fehler-Informationen deaktivieren add_filter('login_errors',create_function('$a',"return null;"));
5. Externe Zugriffe auf wp-config.php unterbinden
Externe Zugriffe auf die Konfigurationsdatei wp-config.php lassen sich mittels .htaccess unterbinden. Die .htaccess Datei muss sich im selben Ordner wie die Konfigurationsdatei wp-config.php befinden! In die .htaccess folgenden Code eintragen:
# protect wpconfig.php <files wp-config.php> Order deny,allow deny from all </files>
6. Passwortschutz für wp-login.php
Die Loginseite des Administrationsbereichs wird mit einem zusätzlichen Passwortschutz ausgestattet. Da WordPress auch außerhalb des Backends an diversen Stellen auf die Dateien aus dem wp-admin-Verzeichnis zugreift kann nicht das gesamte Verzeichnis eingeschlossen werden. Die Abfrageroutine für den Passwortschutz übernimmt die .htaccess Datei, die gemeinsam mit der .htpasswd im selben Ordner wie die Konfigurationsdatei wp-config.php abgelegt wird. Beim Aufruf des Admin-Bereichs fragt der Browser künftig die in der .htpasswd gespeicherten Zugangsdaten ab, diese können für jeden Benutzer individuell oder einheitlich für eine Benutzergruppe bestimmt werden.
# protect wp-login.php <files wp-login.php> AuthName "Admin-Bereich" AuthType Basic AuthUserFile /lokaler-pfad-zu/.htpasswd require valid-user </files>
Weitere Informationen zum Verzeichnisschutz und einen .htpasswd Generator