Da WordPress das weltweit beliebteste Content Management System (CMS) ist und einen Marktanteil von knapp 85% besitzt, ist es logisch, dass sich potenzielle Angreifer auf die breite Masse stürzen. Die Ergebnisse sind dann ernüchternd. Blog komplett gelöscht, schädliche iFrames eingebaut und andere unschöne Dinge wurden damit veranstaltet. Warum das ganze passiert? Viele WordPressnutzer vergessen wichtige Updates und haben einige wichtige Sicherkeitsvorkehrungen nicht beachtet. In dem folgenden Artikel, möchte ich einige Sicherheitsaspekte erklären und näherbringen.
WordPress gehackt – Warum?
Die Frage ist natürlich erst einmal nicht so leicht zu beantworten. In den meisten Fällen wurden alte und vor allem zu viele Plugins genutzt, die natürlich immer ein gewisses Risiko bedeuten. Wahrscheinlicher ist es in den meisten Fällen, dass der eigene Rechner durch einen Trojaner oder ähnliches infiziert wurde und die gespeicherten FTP-Zugangsdaten ausgelesen wurden und nun dafür verwendet werden, böse Dinge damit anzustellen. Oberste Priorität sollte also immer ein sauberes System sein!
Es muss dazugesagt werden, dass es eine hundertprozentige Sicherheit nicht gibt, aber es existieren einige grundlegende Dinge, die es dem Angreifer sehr schwer machen, Zugang zu bekommen.
Sicherheitsschlüssel von WordPress bearbeiten und ändern
Die Datei wp.config, die sich im Rootverzeichnis der WordPressinstallation befindet, beherbergt einige Sicherheitscodes, die verschlüsselt hinterlegt wurden. Das ganze sieht folgendermaßen aus:
Diese ganzen Blöcke, die mit ‘define’ beginnen, sollten ausgetauscht werden. WordPress selbst bietet dazu eine einfache Möglichkeit.
Zum Link
Durch ein Neuladen der Seite mit F5 werden die verschlüsselten Daten automatisch neu generiert. Ersetze die generierten Daten durch die momentan vorhandenen in der wp-config, speichere die Datei und lade sie erneut in das Rootvereichnis von WordPress. – Fertig!
Admin als Username vermeiden
Bei der Wahl des Nutzernamens sollte der standardmäßige ‘admin’ vermieden werden . Auch wenn es sich mit Umwegen immer herausfinden lässt, mit welchem Nutzernamen auf WordPress gebloggt wird, ist es dennoch durchaus sinnvoll, sich einen anderen anzulegen (Im Dashboard unter “Benutzer -> Neu hinzufügen -> Rolle -> Administrator) und den alten ‘admin’ zu löschen.
Sichere Passwörter verwenden
Ein Sicheres Passwort ist weder dein Geburtsdatum, noch der Name deines Hundes. Im Idealfall sollten es mindestens sieben Zeichen inklusive Groß-und Kleinschreibung, Zahlen und Sonderzeichen sein. Beispiel: ‘Shuttl3med1@’ – Diese sind erstens schwieriger zu erraten und ein Bruteforce-Programm würde erheblich länger dafür brauchen, dieses Passwort zu knacken.
Regelmäßige Updates sind ein Muss
Erschreckende Statistiken haben gezeigt, dass nicht wenige Nutzer noch mit Versionen unterwegs sind, die bereits mehrere Jahre auf dem Buckel haben. Dies ist im Webzeitalter mehr als eine Ewigkeit. Falls Angst besteht, dass die WordPressinstallation mit den Updates nicht zurechtkommen sollte, legen dir mit dem Programm Xampp eine lokale Kopie der Installation an und teste die Funktionsweise zuerst auf der eigenes Festplatte. Klappt alles, sollte die Live-Version ebenfalls mit Updates versorgt werden. Updates sind nicht ausschließlich für den Funktionsumfang gedacht, sondern in erster Linie zur Schließung von bestehenden Sicherheitslücken. – Auch möchte ich dringend davon abraten, sich Themes oder Plugins aus unseriösen Quellen herunterzuladen um Kosten zu sparen. Es ist ein leichtes Spiel, diverse Dateien so zu bearbeiten, dass ein Eindringen in das System ohne weiteres möglich ist.
Per htaccess den Zugriff auf wp-config verbieten
Bevor wir demnächst dazu kommen, den Adminbereich via htaccess abzusichern, möchte ich kurz eine einfache Möglichkeit erläutern, die den Zugriff von Außen auf die wp-config verbietet. Öffne deine htaccess, die sich ebenfalls im Rootverzeichnis befindet und füge folgendes hinzu:
Nun speichern und wieder hochladen.
Den Adminbereich von WordPress absichern
Hier gibt es mehrere Möglichkeiten, die meiner Meinung nach umgesetzt werden sollten. Vergesse unzählige Sicherheitsplugins, das ist meistens quatsch. Ein Plugin, dass durchaus einen großen Sinn macht, ist Limit Login Attempts. Dieses sorgt dafür, dass die IP nach mehreren ungültigen Anmeldeversuchen im Backend, für einen beliebigen Zeitraum gesperrt wird. Anzahl der Versuche und die Dauer der Sperre, können nach eigenen Wünschen entsprechend eingestellt werden.
Zum PluginAdminbereich zusätzlich mit htaccess schützen
Um es potenziellen Angreifen schwerer zu machen, gibt es eine tolle Möglichkeit, den Adminbereich zusätzlich mit einer zweiten Sicherheitsabfrage zu schützen. Dies geschieht ebenfalls über die htacces. Erstelle zunächst eine Textdatei mit dem Namen htpasswd. Dort werden die verschlüsselten Zugangsdaten, sprich Nutzername und Passwort eingetragen. Wähle hier NICHT die selben Daten, wie sie auch bei Worspress für das Login verwendet werden, denn das würde wenig Sinn machen.Auf http://www.htaccesstools.com/htpasswd-generator/ kannst du ganz einfach die gewünschten Daten verschlüsseln und diese dann in deine eben erstellte htpasswd speichern.
Natürlich muss auch die htaccess entsprechend erweitert werden. Auch dies ist ganz einfach und geschieht folgendermaßen:
AuthName "Sicherheitsabfrage"
AuthType Basic
AuthUserFile /dein/pfad/.htpasswd
require valid-user
<FilesMatch "(.htaccess|.htpasswd|wp-config.php|liesmich.html|readme.html)">
order deny,allow
deny from all
Um den Pfad zu ermitteln, gehe einfach mit dem FTP-Programm Filezille in das Rootverzeichnis, wo sich auch deine htaccess befindet. Oben im rechten Fenster ist nun der Pfad ersichtlich. Dieser wird nun in der htaccess angepasst und gespeichert. Beide Dateien nun hochladen und der Adminbereich ist nochmals eine ganze Spur sicherer. Natürlich geht ein Stück Bequemlichkeit verloren, doch Sicherheit hat ihren Preis.
SSL im Login erzwingen
Da viele Angriffe automatisiert erfolgen, macht es durchaus Sinn, den Login via SSL zu sichern. Hierzu öffne deine wp-config und füge folgendes, direkt unter dem Datenbankpräfix, den wir gleich noch bearbeiten, hinzu:
define('FORCE_SSL_ADMIN', true);
Ein Abfangen des Passwortes, zum Beispiel in fremden Wlan-Netzwerken ist so nicht mehr möglich. Auch kommen viele der eben angesprochenen Automatisierungsprogramme der Angreifer mit dem vorgeschalteten SSL nicht oder nur schwer zurecht.
Last but not least – Datenbankpräfix ändern
WordPress nutzt von Haus aus ein bestimmtes Präfix, dass vor einer Datenbanktabelle gestellt wird. Dies lautet ‘wp_’ und kann ganz leicht geändert werden. Hierzu benötigen wir Zugriff auf die Datenbank, der meist mit phpmyadmin erfolgt.
Hintergrund ist der, dass mögliche SQL-Injections nur dann erfolg haben, wenn das Tabellenpräfix bekannt sind. Bei dem von Haus aus verwendeten Präfix ist es natürlich ein leichtes Spiel – Doch das soll sich ändern.
Zunächst öffnen wir erneut die wp-config.php und ersetzen ‘$table_prefix = ‘wp_’;’ durch eine von uns ausgesuchte, beliebige Kombination. Beispiel: ‘7hZjf25_’. Diese tragen wir ein und speichern die Datei. Nun ist es an der Zeit, dies auch in der Datenbank zu ändern.
Markiere hierzu in phpmyadmin alle Tabellen und wähle unten im Reiter den Punkt ‘Tabellenpräfix ersetzen’ aus. Hier nehmen wir den Präfix, den wir eben in der wp-config festgelegt haben. Ist dies erledigt, müssen wir noch einige Einträge in der Datenbank ändern, die noch das alte Präfix beinhaltetet. Das ist recht einfach und passiert durch einen SQL-Befehl:
UPDATE NEUESPÄFIX_options SET option_name =
REPLACE(option_name, 'wp_', 'NEUESPRÄFIX_');
UPDATE NEUESPRÄFIX_usermeta SET meta_key =
REPLACE(meta_key, 'wp_', 'NEUESPRÄFIX_');
Fertig. WordPress ist nun eine ganze Ecke sicherer.
Zum Ende möchte ich noch einmal betonen, dass es ich es für völligen Unfug halte, mehrere Plugins dafür zu installieren, mit denen WordPress hinterher scheinbar nicht mehr als WordPress zu erkennen ist. Es also durch Umbenennung und Verschiebung mehrerer Verzeichnisse und Dateien dafür gesorgt werden, dass Angreifer und deren Programme, nicht mehr herausfinden können, dass es sich hierbei um WordPress handelt. Meine Meinung dazu: Unfug. Jeder, der sich ein wenig damit beschäftigt, wird nur wenige Augenblicke benötigen, um das CMS zu identifizieren. Spare dir diese unnötigen Plugins und wähle mit Bedacht und Sorgfalt ein Sicherheitskonzept. Mit den oben genannten Schritten ist jedenfalls schon viel getan.