0331 / 647 406 93
|
hello@christophpraet.de
Home » Blog » So machen Sie Ihre WordPress-Website sicherer: 17 einfache Schritte für jedermann

So machen Sie Ihre WordPress-Website sicherer: 17 einfache Schritte für jedermann

Von Christoph Praet im August 2024 geschrieben und in den Kategorien Security, Wordpress-Tipps veröffentlicht.

Einleitung

WordPress ist ein wundervolles CMS, das hervorragend funktioniert und teilweise recht einsteigerfreundlich ist. Da WordPress jedoch das weltweit am häufigsten verwendete CMS ist, ist es natürlich auch ein beliebtes Ziel für Hacker. Um sich hier zu schützen, gibt es diverse Tipps und Einstellungen, die man vornehmen kann.

Wenn ich eine Website mit WordPress erstelle, setze ich immer die folgenden Sicherheitstipps mit um. So schließe ich schon einmal diverse Angriffsmöglichkeiten aus und bin sicherer aufgestellt als 90% der restlichen Websites. Das macht meine Website für potenzielle Angreifer uninteressanter, und sie ziehen dann lieber weiter.

Ich empfehle Ihnen also, alle Schritte, die ich Ihnen hier nenne, auch bei Ihrer eigenen WordPress-Website umzusetzen. Sollten Sie sich das alleine nicht zutrauen oder einfach keine Lust darauf haben, melden Sie sich doch gern bei mir.

Vorbereitung und was Sie alles benötigen.

Um meine hier vorgestellten Tipps und Sicherheitseinstellungen einfach selbst umzusetzen, müssen Sie ein paar Kleinigkeiten vorbereiten und zur Hand haben. Keine Sorge, das ist kein Hexenwerk und kann eigentlich von jedem umgesetzt werden.

So oder so ähnlich sollte die Oberfläche ausschauen, wenn Sie sich korrekt eingeloggt haben:

Beispiel Screenshot des WordPress-Adminbereichs

Zugang zu Ihrem WordPress-Dashboard mit Adminrechten:

Um die wichtigen Einstellungen, welche direkt in der WordPress-Oberfläche vorgenommen werden müssen, benötigen Sie natürlich auch einen Zugang. Ich gehe mal ganz stark davon aus, dass Sie diesen auch besitzen, erwähne es trotzdem sicherheitshalber. Für die Anpassungen benötigen Sie einen Zugang, der Adminrechte hat. Sollten Sie diesen nicht haben, dann erkundigen Sie sich bitte bei Ihrem Administrator und lassen sich einen Zugang mit Adminrechten einrichten.

Zugang zum WordPress-Installationsordner auf Ihrem Webspace:

Einige Sicherheitseinstellungen müssen direkt auf dem Webserver vorgenommen werden. Um dies umzusetzen, benötigen Sie hier einen FTP-Zugang. Sie finden diesen in der Regel bei Ihrem Hostingpartner und/oder können ihn dort selbst einrichten. Leider kann ich Ihnen hier keine pauschale Anleitung geben, wie Sie an Ihre FTP-Zugangsdaten kommen. Im Zweifel fragen Sie einfach bei Ihrem Hostingpartner nach.

Sollten Sie hier Probleme haben, an die nötigen Daten zu kommen, ist das auch nicht weiter schlimm. Die meisten meiner Sicherheitstipps funktionieren auch ohne den Zugang. Wenn Sie alles abdecken wollen, muss dieser aber vorhanden sein.

Wenn Sie nun die Zugangsdaten haben, benötigen Sie noch eine Software, einen sogenannten FTP-Client, der Ihnen Zugriff auf den Webspace ermöglicht. Hier bietet sich eigentlich immer FileZilla an. Die Software ist sicher, funktioniert tadellos und ist kostenlos. Laden Sie sich diese runter und installieren Sie sie auf Ihrem PC. Anschließend müssen Sie noch Ihre Zugangsdaten eingeben und dann eine Verbindung mit Ihrem Webspace aufbauen. Wie das funktioniert, können Sie hier nachlesen.

So sollte es dann bei Ihnen ausschauen, wenn Sie mit Ihrem Webserver verbunden sind:

Beispiel eines WordPress-Installationsordners mit dem FileZilla-Client.

Installation eines Plugins zum Hinzufügen von Codezeilen:

Als Nächstes müssen Sie die Möglichkeit haben, kleine Codezeilen zu WordPress hinzuzufügen. Keine Angst, Sie können damit nichts kaputt machen oder zerstören. Ich empfehle dazu ein kleines Plugin, welches sich "Code Snippets" nennt und hier kostenlos heruntergeladen werden kann. Alternativ können Sie es auch ganz einfach über die Adminoberfläche Ihrer WordPress-Installation installieren. Dazu im Adminbereich einfach auf "Plugins -> neues Plugin hinzufügen" klicken und oben rechts nach dem Plugin suchen. Anschließend noch auf installieren klicken und fertig ist der Lachs.

Dieses Plugin gibt Ihnen nun die Möglichkeit, ohne wirklich in den Quellcode Ihrer WordPress-Website einzugreifen, Codezeilen auf der Website auszuführen. Das Schöne an diesem Plugin ist, dass jede Codezeile aktiviert und deaktiviert werden kann und Ihre Website nicht wirklich verändert. Sollte irgendetwas schiefgehen, sich etwas updaten oder einige Einstellungen nicht mehr aktuell sein, können Sie das Plugin oder die einzelnen Zeilen einfach per Mausklick deaktivieren und auch wieder aktivieren. Das macht es für Laien unheimlich einfach, Optimierungen vorzunehmen, ohne die Website wirklich zu verändern.

Nach der Installation sieht die Oberfläche des Plugins dann ungefähr so aus:

Beispiel der Adminoberfläche des Plugins CodeSnippets

Hier noch einmal alles, was Sie benötigen, in einer kleinen Übersicht:

  • Zugang zu Ihrem WordPress-Dashboard mit Adminrechten
  • Zugang zu Ihrem Webserver mit einem FTP-Client
  • Das Plugin "CodeSnippets", um einfach Codezeilen hinzuzufügen (oder direkter Zugriff auf die functions.php)

Kleiner Hinweis, bevor wir starten: Bevor Sie mit der Umsetzung meiner Sicherheitstipps für WordPress beginnen, sollten Sie sich ein Backup Ihrer WordPress-Website erstellen. Eigentlich ist hier alles sicher und es kann nichts passieren, aber man weiß ja nie. Sicher ist sicher.

Sicherheitseinstellungen direkt im WordPress-Dashboard:

Kommen wir zuerst zu den "wirklich einfachen" Einstellungen, die Sie direkt im Dashboard von WordPress ausführen können. Hierfür benötigen Sie nichts weiter als einen Adminzugang.

Prüfen Sie, ob es den User "admin" gibt und löschen Sie diesen

Überprüfen Sie, ob es einen User mit dem Namen "admin" gibt. Dies können Sie über die Benutzerverwaltung von WordPress tun ("Benutzer -> alle Benutzer"). Sollte dies der Fall sein, dann löschen Sie diesen bitte. Bevor Sie das aber tun, vergewissern Sie sich, dass es noch einen zweiten Adminaccount gibt. Sollte es keinen zweiten Adminaccount geben, erstellen Sie diesen einfach ("Benutzer -> neuen Benutzer erstellen"). Achten Sie darauf, dass Sie dem neuen Account einen anderen Namen als "Admin", "Administrator" oder einen ähnlich klingenden Namen geben und WordPress die Erlaubnis geben, den Inhalt von "admin" dem neuen Account zuzuschreiben.

Wozu soll das gut sein? Ziel ist es, es möglichen Angreifern so schwer wie möglich zu machen. Sollte jemand versuchen, sich mit typischen Anmeldedaten bei Ihrer Website einzuloggen (Stichwort: Bruteforce-Attacke), dann wird der Angreifer zuerst die Nutzernamen verwenden, welche weit verbreitet sind. Dazu gehört auch "admin".

Adminuser löschen und neuen Admin erstellen

Prüfen Sie, ob es den User mit der ID "1" gibt und löschen Sie ihn

Ich gebe zu, das ist etwas übertrieben, aber schaden kann es auch nicht. Sollte es immer noch den ersten User seit der Installation von WordPress auf Ihrer Website geben (meist ist das der "admin"), dann sollten Sie diesen einfach löschen und einen neuen Adminaccount, wie oben beschrieben, anlegen.

Wozu soll das gut sein? Der gleiche Grund wie oben: Wir wollen es möglichen Angreifern so schwer wie möglich machen.

Verhindern Sie, dass sich jeder registrieren kann.

Deaktivieren Sie unbedingt die Funktion, dass sich jeder auf Ihrer Website registrieren kann. Dies ist in der Regel nicht notwendig und sorgt einfach nur für ein weiteres Sicherheitsrisiko. Dies ist auch schnell erledigt.

Gehen Sie im Dashboard einfach auf "Einstellungen -> Allgemein" und nehmen Sie den Haken bei "Jeder kann sich registrieren" raus. Anschließend unten noch auf "Änderungen speichern" klicken und gut ist.

Jeder kann sich registrieren in WordPress deaktivieren.

Prüfen Sie die Aktualität Ihrer WordPress-Website

Das ist ein recht einfacher, aber wichtiger Sicherheitstipp. Es sollte generell dafür gesorgt werden, dass immer alles auf dem aktuellen Stand ist, allein um mögliche Sicherheitslücken zu schließen.

Loggen Sie sich in Ihr WordPress-Dashboard ein und dann sehen Sie schon, sollte etwas nicht aktuell sein. Um sicher zu gehen, klicken Sie auf "Dashboard -> Aktualisierungen". Dadurch gelangen Sie zur zentralen Stelle auf Ihrer Website, um mögliche WordPress-Aktualisierungen zu verwalten. Hier können Sie auch alle nötigen Updates ausführen.

Klicken Sie sich einfach durch die Liste und aktualisieren alle offenen Punkte. Tipp: Vergessen Sie nicht die Aktualisierungen der Übersetzungen, ganz unten auf der Seite.

Bitte machen Sie vor jedem Update ein Backup Ihrer Website. Es kann vorkommen, dass Plugins und/oder Themes nach einem Update nicht mehr kompatibel sind, was natürlich verhindert werden sollte. Da Sie das vorher in der Regel nicht wissen können, macht es immer Sinn, für den Fall der Fälle ein Backup zur Hand zu haben.

Screenshot der Aktualisierungen bei WordPress

Entfernen Sie alle unbenutzten Themes

Um Ihre Website sauber zu halten und alle möglichen Einfallstore für Hacker zu beseitigen, sollten Sie auch alle nicht benötigten Themes löschen. Auch wenn diese nicht aktiv sind, liegt der Code natürlich auf Ihrem Server und kann somit Sicherheitslücken verursachen. Die Chance ist recht gering, aber warum sollte man das Risiko eingehen?

Klicken Sie im Dashboard also auf "Design -> Themes" und anschließend auf ein inaktives Theme. Ob ein Theme aktiv oder inaktiv ist, erkennen Sie an dem Hinweis unter dem Theme. Außerdem ist das aktive immer ganz vorne in der Liste.

Wenn Sie auf das inaktive Theme geklickt haben, finden Sie unten den Button "Löschen". Klicken Sie drauf und entfernen somit das Theme.

Inaktives WordPress-Theme auswählen
Inaktives WordPress-Theme löschen

Löschen Sie inaktive Plugins

Das gleiche Prinzip, welches wir auch schon bei den inaktiven Themes angewandt haben, nutzen wir jetzt auch bei den Plugins. Löschen Sie alle unnötigen und inaktiven Plugins, um unnötigen Sicherheitslücken vorzubeugen.

Dies funktioniert genauso einfach wie schon bei den Themes. Klicken Sie dafür im Dashboard nur auf "Plugins -> installierte Plugins". Es öffnet sich nun eine Übersicht aller installierten Plugins. Diese gehen Sie nun durch und löschen einfach alle, die inaktiv sind. Sie können nur inaktive Plugins löschen und bekommen auch nur bei diesen einen Button zum Löschen angezeigt. Sie können sich also nicht vertun und aus Versehen ein aktives Plugin löschen.

Inaktive WordPress-Plugins löschen.

Vergeben Sie sinnvolle User-Passwörter

Der Tipp gilt eigentlich für alles, wo Sie Passwörter verwenden und ist nicht exklusiv für WordPress von Relevanz. Vergeben Sie lange Passwörter. Die Länge eines Passwortes schlägt die Komplexität. Anstatt ein komplexes Passwort mit fünf Stellen, nutzen Sie lieber ein leicht zu merkendes Passwort mit 12 Stellen.

In WordPress müssen Sie, um das Passwort für die Benutzer anzupassen, über das Dashboard zur Nutzerverwaltung. Dort gelangen Sie hin, wenn Sie auf "Benutzer -> Alle Benutzer" klicken. Klicken Sie nun auf den jeweiligen User, um in die Benutzermaske zu kommen. Scrollen Sie etwas runter und ändern das Passwort unter "Kontoverwaltung -> Neues Passwort". Anschließend noch etwas weiter scrollen und auf "Benutzer aktualisieren" klicken. Das war es dann auch schon.

Langes Passwort in WordPress verwenden

Sicherheitseinstellungen mit kurzen Codezeilen:

Kommen wir nun zu den Sicherheitseinstellungen, welche Sie mit Hilfe kurzer Codezeilen und dem oben genannten Plugin umsetzen können. Keine Angst, Sie können hier nichts kaputt machen, wenn Sie einfach meiner Anleitung folgen. Die Art und Weise der Umsetzung ist dabei für jeden genannten Punkt identisch.

Navigieren Sie zuerst zu der Verwaltungsoberfläche des Plugins ("Dashboard -> Snippets") und erstellen ein neues Snippet. Dafür klicken Sie oben auf den Button "Neu hinzufügen".

Neues Snippet erstellen.

Vergeben Sie dem Snippet einen Namen. Am ehesten bietet sich ein passender Name an, damit Sie später auch wissen, worum es in dem Snippet geht. "Sicherheitseinstellungen" wäre da zum Beispiel eine gute Idee.

Anschließend klicken Sie unten auf den Button "Speichere Änderungen und aktiviere". Nun sind die Vorbereitungen getroffen und wir können loslegen.

Sie kopieren nun jeweils die Codezeilen aus meinen folgenden Sicherheitstipps und fügen sie in das Textfeld unter "Funktionen (PHP)" ein. Schreiben Sie diese einfach untereinander und klicken nach jeder Änderung auf den Button, um zu speichern.

Snippet Code hinzufügen

Deaktivieren Sie die Bearbeitungsmöglichkeit von Themes/Plugins über WordPress

WordPress bietet einen eigenen Editor an, um direkt aus dem Adminbereich Dateien von Themes und Plugins anzupassen. Dies birgt natürlich ein unnötiges Sicherheitsrisiko, da Dateien immer lokal und nur durch einen Admin angepasst werden sollten. Schalten Sie den Editor also am besten aus und verwenden dafür den folgenden Codeschnipsel:

define('DISALLOW_FILE_EDIT', true);

Entfernen Sie den Link für den Windows Live Writer aus der Headerdatei.

Wenn Sie den Windows Live Writer nicht nutzen, was eigentlich niemand tut, dann gibt es keinen Grund, diesen in WordPress nicht zu deaktivieren. Tun Sie das also und verwenden dafür den folgenden Code:

remove_action('wp_head', 'wlwmanifest_link');

Sorgen Sie dafür, dass keine wichtigen Daten bei fehlgeschlagenen Anmeldeversuchen angezeigt werden.

Im Normalfall meldet die WordPress-Loginmaske einen Fehler, wenn der Nutzername nicht vorhanden ist oder das Passwort falsch eingegeben wurde. WordPress benennt hier auch das Problem und teilt dem Besucher mit, dass zum Beispiel das Passwort falsch ist oder der Nutzername nicht existiert.

Dies sind Informationen, die einem Hacker sehr dienlich sein können, da er so verschiedene Kombinationen ausschließen kann und auch weiß, wo er nicht suchen muss.

Machen Sie es diesen Lappen schwer und verhindern Sie die Ausgabe dieser Informationen. Dafür verwenden Sie einfach den folgenden Code:

function wrong_login(){
	return 'Wrong username or password.';
}
add_filter('login_errors', 'wrong_login');

Entfernen Sie den WP-REST-API-Link aus dem Quellcode.

WordPress bietet eine mächtige REST-API-Funktion an, die Zugriff auf verschiedene strukturierte Daten liefert. Ich empfehle immer, den Link dazu aus dem Quellcode zu entfernen. Dies können Sie ganz einfach mit dem folgenden Schnipsel erledigen:

remove_action('xmlrpc_rsd_apis', 'rest_output_rsd');
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('template_redirect', 'rest_output_link_header', 11, 0);

Prüfen Sie, ob der Antwort-Header des Servers „X-Content-Type-Options“ enthält.

Durch diese Einstellung zwingen Sie den Browser, externe Ressourcen nur dann zu laden, wenn diese auch den erwarteten entsprechen. Dies verhindert, dass böswilliger Code ausgeführt werden kann und Ihre Website Schaden nimmt. Wie dies im Detail funktioniert, ist dabei unerheblich und würde den Rahmen hier sprengen. Wichtig ist nur, dass Sie dies einstellen. Dies können Sie mit der folgenden Codezeile ganz einfach und schnell erledigen.

header('X-Content-Type-Options: nosniff');

Überprüfen Sie, ob der Antwort-Header des Servers „X-Frame-Options“ enthält.

Mit dieser Einstellung können Sie verhindern, dass Ihre Website auf einer anderen Website via einem iFrame, Frame oder Object dargestellt werden darf. Vermeiden Sie damit sogenannte Clickjacking-Angriffe und schützen Ihre Website. Einfach den folgenden Code dafür verwenden:

header('X-Frame-Options: SAMEORIGIN');

Checken Sie, ob der Antwort-Header des Servers „Referrer-Policy: same-origin“ enthält.

Mit dieser Einstellung können Sie dafür sorgen, dass andere Websites nicht sehen können, wenn ein Besucher von Ihrer Website dorthin verwiesen wurde. Verwenden Sie für diese Einstellung einfach folgende Codezeile:

header('Referrer-Policy: same-origin');

Überprüfen Sie, ob der Antwort-Header des Servers die korrekte „Permissions-Policy“ enthält.

Mit dieser Einstellung können Sie dem Browser sagen, welche Funktionen die Website verwenden darf. Sie können damit zum Beispiel die Funktion "Zugriff auf Mikrofon oder Ortungsdienste" deaktivieren. Das ist dann sinnvoll, wenn sich schadhafter Code auf Ihrer Website befindet, der genau diese Funktionen nutzt.

Vermeiden Sie also dieses unnötige Sicherheitsrisiko und schalten einfach alle sinnlosen Funktionen ab. Dies geht ganz schnell, wenn Sie folgenden Code verwenden:

header("Permissions-Policy: accelerometer 'none' ; ambient-light-sensor 'none' ; autoplay 'none' ; camera 'none' ; encrypted-media 'none' ; fullscreen 'none' ; geolocation 'none' ; gyroscope 'none' ; magnetometer 'none' ; microphone 'none' ; midi 'none' ; payment 'none' ; speaker 'none' ; sync-xhr 'none' ; usb 'none' ; notifications 'none' ; vibrate 'none' ; push 'none' ; vr 'none' ");

Alle Schnipsel zusammen in einem Copy+Paste

Wenn Sie zu faul waren, um alle Punkte zu lesen, und einfach nur alles Wichtige aktiviert haben wollen, dann kopieren Sie einfach folgende Codezeilen und fügen diese in Ihre Sicherheitseinstellungen ein. Hier sind alle vorher genannten Codeschnipsel in einem zusammengefasst.

define('DISALLOW_FILE_EDIT', true);
remove_action('wp_head', 'wlwmanifest_link');
function wrong_login(){
	return 'Wrong username or password.';
}
add_filter('login_errors', 'wrong_login');
remove_action('xmlrpc_rsd_apis', 'rest_output_rsd');
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('template_redirect', 'rest_output_link_header', 11, 0);
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: SAMEORIGIN');
header('Referrer-Policy: same-origin');
header("Permissions-Policy: accelerometer 'none' ; ambient-light-sensor 'none' ; autoplay 'none' ; camera 'none' ; encrypted-media 'none' ; fullscreen 'none' ; geolocation 'none' ; gyroscope 'none' ; magnetometer 'none' ; microphone 'none' ; midi 'none' ; payment 'none' ; speaker 'none' ; sync-xhr 'none' ; usb 'none' ; notifications 'none' ; vibrate 'none' ; push 'none' ; vr 'none' ");

Sicherheitseinstellungen auf Ihrem Webserver (via FTP):

Die nächsten Sicherheitseinstellungen müssen direkt auf Ihrem Webserver und in der Ordnerstruktur von WordPress vorgenommen werden. Dafür benötigen Sie, wie oben bereits erwähnt, einen FTP-Zugang und eine Software, um die Dateien anzupassen (FTP-Client).

Löschen Sie alle unnötigen Dateien im WordPress-Ordner.

Löschen Sie zuerst alle unnötigen Dateien, welche sich im Hauptordner der WordPress-Installation befinden. Diesen Schritt müssen Sie nach jedem Update erneut durchführen, da WordPress, aus welchem Grund auch immer, diese Dateien wieder hinzufügt. Diese Dateien können sensible Informationen oder Fehlerdetails enthalten, sind sonst aber völlig unnötig und gehören daher einfach gelöscht.

Namentlich sind es folgende Dateien, die es zu löschen gilt:

  • license.txt
  • liesmich.html
  • readme.html
  • wp-config-sample.php

Verschieben Sie die wp-config.php eine Ebene höher.

Im Hauptverzeichnis Ihrer WordPress-Installation liegt immer die "wp-config.php". Diese Datei ist das "Gehirn" von WordPress und enthält alle wichtigen Einstellungen und Infos. Dazu gehört unter anderem die Datenbankverbindung und Sicherheitsschlüssel. Es wäre also fatal, würde ein Hacker an diese Datei kommen.

WordPress bietet hier einen interessanten Sicherheitsmechanismus, den Sie unbedingt nutzen sollten. Sie können die "wp-config.php" im Verzeichnisbaum eine Ebene höher setzen und damit aus dem eigentlichen Hauptverzeichnis schmeißen. WordPress wird sie trotzdem finden und wie gewohnt funktionieren.

Markieren Sie mit der Maus einfach die Datei und ziehen Sie sie eine Ebene höher und zack, wieder ein Stück sicherer.

Hinweis: Sie müssen Ihre WordPress-Installation dafür natürlich in einem Unterordner auf dem Server und nicht im Root-Ordner haben (was der Standard sein sollte).

Wp-Config in WordPress verschieben.

Prüfen Sie, ob die wp-config.php die korrekten Berechtigungen (chmod) hat.

Es ist wichtig, dass die "wp-config.php" die korrekten und sichersten Berechtigungen auf Ihrem Webserver besitzt, die möglich sind. Die Berechtigungen legen fest, welche Benutzergruppe, was mit welcher Datei auf Ihrem Server machen darf. Das klingt komplizierter als es ist, Sie müssen hier nicht viel beachten, um die Berechtigung einzusehen und entsprechend anzupassen.

Klicken Sie in FileZilla mit der rechten Maustaste auf die "wp-config.php" und wählen den Punkt "Dateiberechtigungen" aus.

Sie können im folgenden Fenster nun die Berechtigungen für die einzelnen Gruppen einstellen. Für Sie ist aber nur die Zahl im unteren Abschnitt wichtig (diese spiegelt die Berechtigungen wider). Tragen Sie hier nun folgende Zahlen ein:

Starten Sie mit der 0400 und testen anschließend Ihre Website. Läuft alles wie gewohnt, war’s das schon. Treten Fehler auf, tragen Sie die Nummer 0440 ein. Diese Einstellungen sollten für den Großteil der Webserver da draußen funktionieren.

Zusammenfassung:

Wenn Sie bis hierhin durchgehalten und alle Sicherheitstipps für WordPress umgesetzt haben, ist Ihre Website ein ganzes Stück sicherer geworden. Sollten Sie auf Probleme gestoßen sein oder die Anpassungen lieber von einem Profi, also mir, umsetzen lassen wollen, dann melden Sie sich doch gern bei mir.

Vielen Dank für Ihre Aufmerksamkeit und liebe Grüße aus Potsdam.