WordPress Sicherheit
Mehr als ein Viertel aller Internetseiten laufen mittlerweile mit WordPress. Die ehemalige Blogging-Software hat sich damit zum erfolgreichsten Content-Management-System aller Zeiten entwickelt. Vom persönlichen Blog, über Shopsysteme bis hin zum großen Nachrichtenmedium lässt sich auf WordPress Basis nahezu alles umsetzen.
Doch der Erfolg von WordPress führt auch dazu, dass es Hacker auf mit diesem System gebaute Seiten abgesehen haben. Gibt es eine Sicherheitslücke in einem beliebten Plugin, in einem bekannten Theme oder gar im WordPress Core selbst, kann diese Schwachstelle auf dieselbe Art und Weise bei hunderttausenden, ja Millionen von Webseiten ausgenutzt werden.
Aktuell macht etwa eine Sicherheitslücke im WordPress Core der Version 4.7.0 und 4.7.1 große Furore. Über die RestAPI war es für Hacker ein Leichtes, Websites zu kapern. Mit dem Update zu 4.7.2 wurde die Lücke geschlossen, die Version sogar als kritisches Sicherheitsupdate automatisch ausgeliefert. Viele Webmaster stellen sich daher wieder vermehrt die Frage, wie sich WordPress am besten absichern lässt?
Eine hundertprozentige Sicherheit gibt es zwar nie, aber mit folgenden Maßnahmen lässt sich WordPress zumindest vor den gängigsten Angriffen schützen.
Beim Aufsetzen von WordPress
Tabellenpräfix für Datenbank ändern
Schon bei der ersten Installation von WordPress heißt es aufpassen. Standardmäßig legt WordPress die notwendigen Tabellen in der Datenbank unter dem Tabellenpräfix „wp_“ an. Definiert wird das Ganze in der wp-config.php Datei:
$table_prefix = ‚wp_‘;
Um die Gefahr einer SQL-Injection, die genau auf dieses Tabellenpräfix zielt zu mindern, sollte man bei der Installation in der wp-config.php Datei dieses Präfix verändern. Also z.B.
$table_prefix = ‚mitp17_‘;
Aber Vorsicht: Will man das Präfix nachträglich anpassen, müssen auch Änderungen in der Datenbank selbst vorgenommen werden.
Salt Keys
Ebenfalls in der wp-config.php Datei findet man die Möglichkeit einen SALT Key einzufügen. Diese Sicherheitsschlüssel dienen der Verschlüsselung von Informationen, die für eingeloggte User in Cookies abgelegt werden.
define(‚AUTH_KEY‘, ‚Füge hier deine Zeichenkette ein‘);
define(‚SECURE_AUTH_KEY‘, ‚Füge hier deine Zeichenkette ein‘);
define(‚LOGGED_IN_KEY‘, ‚Füge hier deine Zeichenkette ein‘);
define(‚NONCE_KEY‘, ‚Füge hier deine Zeichenkette ein‘);
define(‚AUTH_SALT‘, ‚Füge hier deine Zeichenkette ein‘);
define(‚SECURE_AUTH_SALT‘, ‚Füge hier deine Zeichenkette ein‘);
define(‚LOGGED_IN_SALT‘, ‚Füge hier deine Zeichenkette ein‘);
define(‚NONCE_SALT‘, ‚Füge hier deine Zeichenkette ein‘);
Über https://api.wordpress.org/secret-key/1.1/salt/ kann man sich hier ganz einfach individuelle Schlüssel generieren lassen und in die wp-config.php kopieren. Diese machen es für Angreifer später nicht mehr so leicht, einfach laufende Sessions zu übernehmen.
Sichere Nutzernamen & Passwörter
Das Wichtigste bei jeder Installation von WordPress, wie auch im laufenden Betrieb ist aber die Verwendung sicherer Zugangsdaten.
Niemals sollte man einen Administrator Account mit dem Benutzernamen „admin“ anlegen. Zwar legte WordPress diesen Nutzer in früheren Versionen automatisch an, heute kann man aber den Nutzernamen des Administrators frei wählen. Damit potentielle Angreifer nicht nur das Passwort, sondern auch den Username des Admins erraten müssen, empfiehlt sich hier ein individueller Nutzername.
Wo wir auch schon beim Passwort wären: Wie überall gilt, ein starkes und individuelles Passwort besteht aus einer Kombination von Groß- und Kleinbuchstaben, Ziffern und Sonderzeichnen. Ein Passwort-Generator kann helfen ein neues, sicheres Passwort zu erstellen. Um sich dieses nicht mit zahlreichen anderen – hoffentlich auch starken – Passwörtern merken zu müssen, kann ein Passwort-Manager, wie KeePass, 1Password oder LastPass helfen.
Dateirechte
WordPress läuft in aller Regel auf einem Linux Server, meist mit einem Apache- oder seltener auch einem nginx-Setup. Per chmod können daher Ordnern und Dateien auf dem Server verschiedene Dateirechte zugewiesen werden, die festlegen, welcher Nutzer genau was machen darf. Dabei legt man die Rechte immer für drei Arten von Benutzern fest: Den Besitzer der Dateien, die Gruppe und alle anderen Nutzer. Weil chmod ursprünglich ein Kommandozeile Befehl war, werden diesen drei Benutzern die Rechte über Ziffern zugewiesen.
Ziffer | Dateien | Ordner |
0 | keine Rechte | keine Rechte |
1 | ausführen | Inhalt auflisten |
2 | schreiben | schreiben |
3 | schreiben, ausführen | schreiben, Inhalt auflisten |
4 | lesen | lesen |
5 | lesen, ausführen | lesen, Inhalt auflisten |
6 | lesen, schreiben | lesen, schreiben |
7 | lesen, schreiben, ausführen | lesen, schreiben, Inhalt auflisten |
Die erste Ziffer bestimmt die Rechte des Besitzers, die zweite die der Gruppe und die dritte die aller anderen User. chmod 664 heißt also etwa, dass Besitzer und Gruppe Lese- und Schreibrechte haben, alle anderen Nutzer nur Leserechte.
Bei einem guten Hoster gibt es einen getrennten FTP Nutzer (mit dem man Dateien auf den Server spielt) und PHP Nutzer. Der FTP Nutzer ist dann der Besitzer der Dateien, der PHP Nutzer die Gruppe.
In der Regel braucht PHP bei WordPress Installationen keine Schreibrechte, es reicht, wenn PHP andere Dateien lesen kann. Der einzige Vorgang, bei der PHP Nutzer Schreibrechte für Dateien braucht ist die Update Funktion.
Verbietet man daher dem PHP Nutzer Dateien zu schreiben, kann man sich damit vor potentiellen Angriffen durch eingeschleuste PHP Scripte schützen.
Bei einer Standard WordPress Installation wären bei den meisten Hostern die korrekten Rechte daher 644 für Dateien bzw. 755 für Ordner. Lediglich für den /wp-content/uploads/ Ordner, wie bei Verwendung eines Cache-Plugins den /wp-content/cache/ Ordner, bräuchte man 664 für Dateien und 775 für Ordner.
Die Zuweisung der Dateirechte funktioniert meist über einen FTP-Client, manchmal aber auch über die Serververwaltung des Hosting-Providers.
Aber Vorsicht! Bei korrekt gesetzten Dateirechten ist das Auto-Update nicht möglich, weil dem php-Nutzer die Schreibrechte fehlen. Für die manuellen Updates benötigt man immer die FTP-Daten.
.HTACCESS nutzen
Auf Apache Servern steht mit der .htaccess-Datei ein mächtiges Tool zur Verfügung. Durch ein paar gezielte Befehle kann über diese Datei sowohl eine zusätzliche Authentifizierung aufgeschaltet werden, aber auch der Zugriff auf sensible Daten wie wp-config.php oder die XML-RPC-Schnittstelle geschützt werden.
Mehr darüber, wie man die .htaccess Datei konkret einsetzen kann, aber auch wie man WordPress auf nginx Server weiter absichern kann, findet man hier.
Im laufenden Betrieb
Updates, Updates, Updates!
Ist WordPress einmal installiert und die Website online heißt die oberste Regel: Updates, Updates, Updates! Denn die größte Gefahr geht von veralteten Versionen von WordPress Themes oder Plugins aus. Deshalb sollte es oberste Pflicht eines jeden Webmasters sein, stets alles auf dem neuesten Stand zu halten.
Grundsätzlich gilt, sich bei der Installation von Plugins und Themes immer auch die Wartungsintervalle anzusehen. Wurde ein Plugin seit mehreren Monaten oder gar Jahren nicht mehr geupdated, sollte man sich gut überlegen, ob man nicht ein aktuelleres Plugin mit gleicher Funktion nutzt oder auf das Plugin sogar überhaupt verzichten kann. Und auch Plugins und Themes, die ungenutzt auf dem Server herumliegen, sollten entfernt werden.
Backups
Zweite Pflicht eines jeden Webmasters sind laufende Backups. Sowohl die Dateien auf dem FTP Server, als auch die Datenbank sollten regelmäßig weggesichert werden, um im Falle eines Falles eine funktionierende Seite in der Hinterhand zu haben.
Damit man das nicht per Hand machen muss, gibt es einige gute Plugins, die Dateien und Datenbank regelmäßig automatisiert in eine Dropbox, auf Google Drive oder auf einen anderen Server wegsichern.
Verschiedene Benutzerollen
Beiträge und Kommentare auf der Seite sollten mit einem Autoren Profil, mit weniger Rechten veröffentlicht werden. Das Administrator Konto dagegen sollte lediglich für die Verwaltung und Pflege von WordPress verwendet werden. Damit wird vermieden, dass das Administrator-Konto irgendwo auf der Seite erwähnt wird und ein potentieller Angreifer bekommt so keinerlei Informationen zum Administrator Konto.
Verschlüsselung
Nachdem sich HTTPS Verschlüsselung mit kostenlosen Let’s Encrypt SSL bzw. TLS Zertifikaten immer mehr durchsetzt und mittlerweile die meisten Hoster diese auch bei kleinen Webspaces mitanbieten, sollte man unbedingt auf HTTPS umsteigen. Neben zahlreichen anderen Vorteilen, bedeutet das vor allem, dass bei der Anmeldung die Daten nicht so einfach mitgelesen werden können.
Im Idealfall sollte aber nicht nur die Verbindung zwischen Browser und Server verschlüsselt sein, sondern auch die Verbindung zwischen FTP-Programm und FTP-Server. Ein guter Hosting Provider ermöglicht daher auch eine Verbindung via SFTP Protokoll.
Was helfen Security-Plugins?
Viele Webmaster installieren ein oder sogar mehrere der unzähligen Security Plugins für WordPress und wiegen sich damit in Sicherheit. Tatsächlich vermitteln viele Plugins, wie iThemes Security & Co den Nutzern ein Gefühl falscher Sicherheit, da der tatsächliche Nutzen der gebotenen Funktionen oft sehr gering ist.
Und an der größten Schwachstelle, dem Einsatz veralteter Software mit Sicherheitslücken können auch solche Plugins nichts ändern.
Fazit
Generell lässt sich der Schluss ziehen, dass es hundertprozentigen Schutz niemals geben kann, man es Angreifern aber auch nicht zu leicht machen sollte.
Ein sauberes Setup, mit sorgfältig ausgewählten Themes und Plugins, die zusammen mit WordPress regelmäßig geupdated werden, und sichere Zugangsdaten sind der Grundstein für eine abgesicherte Installation. Statt blind auf Security-Plugins zu vertrauen, sollte man sich als Webmaster zumindest grundsätzlich mit dem Thema Sicherheit auseinandersetzen.