WordPress Security Tutorial

WordPress Blogs absichern

Thomas Joos ist freiberuflicher IT-Consultant und seit 20 Jahren in der IT tätig. Er schreibt praxisnahe Fachbücher und veröffentlicht in zahlreichen IT-Publikationen wie TecChannel.de und PC Welt. Das Blog von Thomas Joos finden Sie unter thomasjoos.wordpress.com.
Unser WordPress-Tutorial zeigt, wie Sie Blogs zuverlässig vor Bedrohungen aller Art schützen können.

Da viele Webseiten und Blogs auf WordPress aufbauen, steigt auch die Anzahl an Angriffen auf Sicherheitslücken. Aus diesem Grund sollten Administratoren von WordPress-Seiten die Sicherheit der WordPress-Installation anpassen und dadurch verbessern. In den Standard-Einstellungen nach der Installation ist WordPress keineswegs sicher.

Vorsicht: In den Standard-Einstellungen nach der Installation ist WordPress keineswegs sicher.
Vorsicht: In den Standard-Einstellungen nach der Installation ist WordPress keineswegs sicher.
Foto: Georgejmclittle - shutterstock.com

In diesem WordPress-Tutorial zeigen wir Ihnen, welche Sicherheitseinstellungen wichtig sind. Unabhängig davon, ob Sie mehrere WordPress-Blogs betreiben oder nur einen einzelnen WordPress-Blog, spielt die Security in WordPress eine wichtige Rolle und sollte nicht unterschätzt werden.

Um WordPress abzusichern, können Sie an verschiedenen Bereichen ansetzen. Neben dem Einsatz von aktuellen Versionen für WordPress und die Datenbanken, können sie auch Plugins einsetzen, welche die Sicherheit erhöhen. Auch die korrekte Anpassung der Berechtigungen spielt eine wichtige Rolle beim Einsatz von WordPress.

Lesen Sie dazu auch:

Die besten kostenlosen CMS

Aktuelle Version verwenden, Datenbanken absichern

Bereits vor der Installation von WordPress, sollten Sie darauf achten, dass der Rechner, auf dem Sie den WordPress-Blog betreiben wollen, möglichst sicher arbeitet. Daher sollten Sie auch die Datenbank auf einen möglichst aktuellen Stand bringen. Aktuelle Datenbanken bieten in den meisten Fällen deutlich mehr Sicherheit. Auch die WordPress-Installation selbst sollte auf Basis der neusten Version durchgeführt werden. Nutzen Sie bereits WordPress in einer veralteten Version, sollten Sie auf die neueste Version aktualisieren.

DIGITAL INNOVATION Award - bewerben Sie sich jetzt!

Viele Aktualisierungen von WordPress schließen Sicherheitslücken. Sicherheits-Updates für WordPress sollten Sie ohnehin immer installieren. Allerdings sollten Sie diese zuvor in einer Testumgebung ausgiebig testen. Wer es besonders sicher haben will, kann die Aktualisierung von WordPress-Installationen weitgehend automatisieren, zum Beispiel über die Datei "wp-config.php". Die automatische Aktualisierung der Kernkomponente erfolgt:

define( 'WP_AUTO_UPDATE_CORE', true );

Über die Konfigurationsdatei „wp-config.php“ lassen sich auch Sicherheitseinstellungen weitergeben.
Über die Konfigurationsdatei „wp-config.php“ lassen sich auch Sicherheitseinstellungen weitergeben.

In älteren Versionen von WordPress lassen sich leichter SQL Injection-Angriffe durchführen, indem eine Schwachstelle bei "WP_Query" ausgenutzt wird. Auch die Version 4.7.3 schließt einige Lücken, das gilt auch für die Version 4.8. Vor allem bei der Neuinstallation kann es sinnvoll sein, gleich die neuste Version zu verwenden.

WordPress mit PlugIns absichern

Für WordPress stehen Plugins zur Verfügung, die zum Beispiel in den Systemdateien und den anderen Plugins nach Viren suchen. Ein solches Plugin ist zum Beispiel "AntiVirus" (https://pluginkollektiv.github.io/antivirus). Das Plugin meldet zwar manchmal Fehler wo keine sind (False Positives), erkennt dafür aber auch einige Angreifer, die ansonsten unentdeckt bleiben würden.

Es gibt auch AntiViren-Programme für WordPress,
Es gibt auch AntiViren-Programme für WordPress,

Das Plugin "Snitch" (https://github.com/pluginkollektiv/snitch/wiki) protokolliert den Datenverkehr von WordPress. Dadurch erkennen Administratoren verdächtige Datenpakete und können rechtzeitig gegensteuern.

Komplexe Kennwörter verwenden und Datenbank absichern

Für den Zugang von WordPress zur Datenbank sollten Sie komplexe Kennwörter nutzen. Auch für Benutzerkonten sollten Sie Einstellungen vornehmen, um möglichst sichere Kennwörter zu haben. Generell sollten für Anwender nur komplexe Kennwörter erlaubt sein. Sollen sich an der Webseite Benutzer registrieren, sollte bei den Plugins darauf geachtet werden, dass diese komplexen Kennwörter unterstützen und die Option auch aktiviert ist.

Die Kennwörter in WordPress sollten möglichst sicher gewählt werden, auch für die Datenbank.
Die Kennwörter in WordPress sollten möglichst sicher gewählt werden, auch für die Datenbank.

Im Rahmen der Benutzerverwaltung sollten Sie keine Standard-Benutzernamen wie "Administrator" oder "Admin" verwenden. Verwenden Sie Benutzernamen, aus denen möglichst nicht hervorgeht, dass es sich um Administrator-Konten handelt.

In den Datenbanken von WordPress können geübte Benutzer die Benutzer-ID des Administrator-Benutzers anpassen. Die ID sollte idealerweise so gewählt werden, dass das Konto in der Mitte der Datenbank angeordnet ist. Sie sollten nie mit Standardkonten arbeiten, sondern immer nur mit selbst angelegten Benutzerkonten. Generell sollte die Anmeldung an WordPress mit einem Administratorkonto nur in Ausnahmen erfolgen. Wenn für die aktuelle Aufgabe keine Administrator-Berechtigungen notwendig sind, sollte sich der Administrator auch nicht mit einem Administrator-Konto anmelden. Blogbeiträge oder -Antworten sollten nicht mit Administrator-Konto durchgeführt werden. In den meisten Fällen reicht die Berechtigung "Autor" aus.

Nicht immer sind Administrator-Rechte notwendig, vor allem nicht für die Bearbeitung von Blogbeiträgen.
Nicht immer sind Administrator-Rechte notwendig, vor allem nicht für die Bearbeitung von Blogbeiträgen.

Bei neuen Beiträgen erscheint der Name des Autors. Handelt es sich dabei um ein Administrator-Konto, können Angreifer mit Attacken versuchen, die Seite zu übernehmen, da der Anmeldenamen bereits bekannt ist. Das Administrator-Konto sollte daher nur für die administrativen Tätigkeiten verwendet werden.

Tabellen absichern

WordPress verwendet bei Tabellen meistens "wp_" als Präfix. Dadurch ist schnell erkennbar, welche Datenbanktabellen zu WordPress gehören. Es bietet sich an, das Präfix zu ändern. Übertragen Sie Daten auf WordPress-Seiten, sollten Sie beim Einsatz von FTP nur auf SFTP setzen und möglichst keine unverschlüsselten Verbindungen verwenden. Unverschlüsselte Verbindungen und deren Authentifizierungsdaten lassen sich schnell abfangen, vor allem im internen Netzwerk.

In WordPress sollten Sie möglichst auch angepasste Tabellennamen verwenden.
In WordPress sollten Sie möglichst auch angepasste Tabellennamen verwenden.

Ordnerstruktur optimieren

Das Verzeichnis, in das Daten in WordPress hochgeladen werden, sollte sich außerhalb der WordPress-Installation befinden und besonders abgesichert werden. Die Einstellungen dazu sind über Einstellungen\Mediathek\Uploads zu finden. Das Verzeichnis sollte darüber hinaus möglichst optimal abgesichert werden. Die Systemdateien von WordPress sollten Sie nicht in Verzeichnissen speichern, aus denen hervorgeht, dass es sich um WordPress handelt. Passen Sie die Verzeichnisse an, müssen Sie auch die einzelnen PHP-Dateien konfigurieren, zum Beispiel die "index-php". In den PHP-Dateien sollte daher auf die korrekten Verzeichnisse verwiesen werden, die wiederum in abgesicherten Bereichen abgelegt werden.

Unter Umständen kann es passieren, dass Sie die Konfigurationsdateien von WordPress anpassen müssen, wenn Sie die Verzeichnisse ändern.
Unter Umständen kann es passieren, dass Sie die Konfigurationsdateien von WordPress anpassen müssen, wenn Sie die Verzeichnisse ändern.

PHP-Dateien und Anmeldeseite absichern

In der Datei "functions.php" kann mit "add_filter( 'xmlrpc_enabled', '__return_false' );" deaktiviert werden, dass WordPress auch mit XML-RPC kommunizieren kann. Diese Schnittstelle wird zum Beispiel für Smartphones oder Tablets notwendig. Sie können die Funktion auch mit ".htaaccess" deaktivieren:

<Files xmlrpc.php>

Order Deny,Allow

Deny from all

Die Adminseite von WordPress können Sie mit einem Plugin absichern. Mit dem Plugin "Rename wp-login.php" (https://wordpress.org/plugins/rename-wp-login) legen Sie zum Beispiel fest, dass nicht angemeldete Benutzer keinen Zugriff auf die WP-Admin-Seite erhalten.

Die Konfigurations-Datei "wp-config.php" wird, wie andere Systemdateien, in einem Standardpfad abgelegt. Legen Sie die Datei stattdessen im Verzeichnis "/var/www/sites/" ab, sucht die WordPress-Installation automatisch nach der Datei. Angreifer finden die Datei zwar generell auch, aber nicht so schnell wie im Standardverzeichnis.

Die Datei „wp-config.php“ ist eine wichtige Konfigurationsdatei, die besonders abgesichert werden muss.
Die Datei „wp-config.php“ ist eine wichtige Konfigurationsdatei, die besonders abgesichert werden muss.

Um PHP-Fehler in WordPress zu blockieren, können Sie die folgende Zeilen in der "wp-config.php" vornehmen:

error_reporting(0);

@ini_set('display_errors', 0);

Berechtigungsstruktur in WordPress optimieren

Grundsätzlich sollten Sie Benutzern nur so viele Rechte zuweisen, wie notwendig sind. In größeren Umgebungen können Sie zum Beispiel ein Rollenmodell für die Berechtigungen erstellen. In kleinen Umgebungen können Sie auch mit den Standardrollen arbeiten. Hier helfen Plugins wie "Members" (https://wordpress.org/plugins/members/). Mit Members erhalten Sie einen Rollen-Manager, mit dem Sie sehr detailliert Rechte festlegen können.

Das Plugin „Members“ hilft dabei, das Berechtigungsmodell von WordPress zu erweitern.
Das Plugin „Members“ hilft dabei, das Berechtigungsmodell von WordPress zu erweitern.

Den Zugriff auf den Admin-Bereich (wpadmin) sollten Sie mit Rechten anpassen. Das kann aber auch über das Sperren von IP-Adressen durchgeführt werden (Blacklist) oder besser über die Zulassung des Zugriffs von bestimmten IP-Adressen aus (Whitelist).

WordPress mit .htaaccess absichern

Mit ".htaaccess" lässt sich die Sicherheit über eine weitere Konfigurationsdatei verbessern. Sie können zum Beispiel verhindern, dass unberechtigte Anwender Zugriff auf Systemdateien von Wordpress erhalten. Das Auflisten von Systemdateien verhindern Sie zum Beispiel mit:

# Prevent Directory Listings

Options -Indexes oder Options All -Indexes

Soll zum Beispiel nur eine bestimmte IP-Adresse zugelassen werden, können Sie mit folgenden Einstellungen arbeiten:

Order Deny,Allow

Deny from all

Allow from xxx.xxx.xxx.xx1

Allow from yyy.yyy.yyy.yy2

Das Plugin "Limit Login Attempts" (https://wordpress.org/plugins/limit-login-attempts) verhindert Bruteforce-Angriffe. Das Plugin blockiert Angreifer nach einer bestimmten Anzahl fehlerhafter Anmeldungen. Ein weiteres Plugin dazu ist "Login LockDown" (https://wordpress.org/plugins/login-lockdown).

Das Plugin "WP htaccess Control" (https://wordpress.org/plugins/wp-htaccess-control) schützt die Datei ".htaaccess". Mit ".htaaccess" können Sie auch Dateien blockieren, zum Beispiel die Konfigurationsdatei "wp-config.php":

<files wp-config.php>

order allow,deny

Deny from all

</files>

Multi-Faktor-Authentifizierung nutzen - Google und Rublon

Mit dem Plugin "WP Google Authenticator" setzen (https://wordpress.org/plugins/wp-google-authenticator) können Sie festlegen, dass sich Benutzer mit einem Einmal-Kennwort anmelden, zusätzlich zur Anmeldung mit ihrem Benutzernamen. Das Plugin nutzt dazu die Google Authenticator App. Sie können für einzelne Benutzer Zwei-Wege-Authentifizierung einsetzen oder auch für alle Benutzer. Die Verknüpfung mit Benutzerrollen ist ebenfalls möglich. Setzen Sie auf Authy (https://www.authy.com), können Sie den Google Authenticator for Wordpress ebenfalls verwenden.

Mit dem Google-Authenticator lassen sich WordPress-Installationen mit Multi-Faktor-Authentifizierung absichern.
Mit dem Google-Authenticator lassen sich WordPress-Installationen mit Multi-Faktor-Authentifizierung absichern.

Für diese Zwecke können Sie auch Rublon (https://wordpress.org/plugins/rublon) nutzen, um Mehrwege-Authentifizierung zu nutzen. Auch für dieses Plugin stehen Apps für Android, iOS, Blackberry und Windows Phone zur Verfügung.