WordPress Sicherheit – Tipps, wie man den Blog vor Angreifern schützt

Mit ein paar Kniffen kann man WordPress (.org) sicherer machen – Symbolbild: Collage von pixabay-Bildern CC0

Jeder Blogbetreiber, der einmal die Erfahrung machen musste, dass unbekannte Dritte in seine mühsam mit WordPress (.org) eingerichtete Website eingedrungen sind und Schadcode eingeschleust haben, kennt das Problem: Wie schütze ich meine WordPress-Installation vor Cyberangriffen? Eine Frage, die spätestens seit Inkrafttreten der DS-GVO im Mai 2018 auch existenziell geworden ist. Da eine meiner Websites vor rund zwei Jahren davon betroffen war, gebe ich an dieser Stelle hilfreiche Tipps mit an die Hand – auch für Fotografen.

Gewisse Kenntnisse bei der Installation von und im Umgang mit WordPress.org vorausgesetzt (z.B. zu Plugins, Child-Theme, FTP-Verzeichnis), lassen sich meine nachfolgend beschriebenen Empfehlungen relativ leicht umsetzen.

Hinweis vorab: Die nachfolgenden Tipps richten sich nicht an WordPress.com-Nutzer. Wenn ich von WordPress spreche, meine ich ausschließlich WordPress.org.

Backup machen, bevor Sie starten!

Bevor Sie Änderungen durchführen, machen Sie bitte ein vollständiges Backup Ihrer WordPress-Installation, damit diese notfalls wiederhergestellt werden kann. Wenn Sie ein Plugin nutzen, das Backups automatisch erstellt, führen Sie mit diesem Programm ein manuelles Backup durch. Nutzen Sie kein entsprechendes Plugin, empfehle ich folgende Schritte:

  1. Exportieren Sie im WordPress-Backend unter „Werkzeuge / Daten exportieren“ alle Inhalte Ihrer Website (entweder über „Alle Inhalte“ oder einzeln die Beiträge, Seiten usw.) und speichern diese auf einer Festplatte Ihres Computers. Ist das hauseigene „WordPress Importer“-Plugin nicht verfügbar, können Sie diesen Schritt auch übergehen, wenn Sie nicht massig Bilder (-galerien) auf dem Blog veröffentlichen.
  2. Exportieren Sie die MySQL-Datenbank Ihrer Website auf die Festplatte Ihres Computers.
  3. Laden Sie das komplette WordPress-Verzeichnis mit einem FTP-Programm (z.B. FileZilla) auf die Festplatte Ihres Computers herunter.

Je nach Größe des Verzeichnisses kann es Minuten, Stunden oder sogar einen ganzen Tag dauern, bis alles gesichert ist.

WordPress und Plugins aktualisieren

Vergewissern Sie sich, bevor Sie meine Empfehlungen umsetzen, dass WordPress sowie alle Plugins auf dem neuesten Stand sind. Unter „Werkzeuge / Website-Zustand“ können Sie den aktuellen Zustand der WordPress-Installation überprüfen.

Vorausgesetzt, Sie haben ein Child-Theme angelegt, führen Sie alle notwendigen Aktualisierungen durch.

Sollten keine Aktualisierungen / Updates notwendig sein, können Sie mit TIPP 1 weitermachen. Mussten Sie noch Aktualisierungen durchführen, empfehle ich, nochmals ein Backup anzulegen.

Alles aktualisiert und gesichert? Dann kann’s losgehen.

Dass bereits beim Einrichten von WordPress (.org) ein ungewöhnlicher Benutzername und ein sicheres Passwort gewählt werden sollten, ist selbsterklärend. Auch dürfte allen fortgeschrittenen Anwendern bekannt sein, dass in der wp-config.php Sicherheitsschlüssel einzurichten sind. Die mitunter wichtigste Datei ist und bleibt aber vorerst die .htaccess. In ihr können zahlreiche Sicherheitsregeln angelegt werden. Los geht’s.

TIPP 1: .htaccess-Datei vor Suchmaschinen verstecken

Um zu verhindern, dass die von WordPress automatisch im Hauptverzeichnis angelegte „.htaccess“-Datei von Suchmaschinen indiziert bzw. ausgelesen wird, hilft der Befehl:

Options -Indexes

Wichtig: Der Befehlscode muss in die letzte Zeile der .htaccess-Datei eingefügt werden. Danach darf keine Leerzeile oder Leerzeichen folgen.

Des Weiteren kann die .htaccess-Datei mit verschiedenen Codes bestückt werden, die zur Sicherheit anderer wichtiger Dateien im WordPress-Verzeichnis dienen:

TIPP 2: wp-config.php vor unbefugtem Zugriff schützen

Neben der .htaccess-Datei ist die „wp-config.php“ eine weitere wichtige Datei im Hauptverzeichnis der WordPress-Installation, die vor Zugriffen Dritter geschützt sein sollte. Das kann man einfach umsetzen, indem man folgenden Code unter der Zeile „# END WordPress“ in die .htacess-Datei einfügt:

# protect wpconfig.php
<files wp-config.php>
Order deny,allow
deny from all
</files>

TIPP 3: Einbetten von Bildern auf fremden Webseiten vereiteln

Fotografen können ein Lied davon singen. Immer wieder tauchen ihre Bilder ohne Genehmigung auf fremden Webseiten im Internet auf. Oft sind die Bilder dann nicht einmal mit dem Copyright bzw. Namen des Fotografen versehen. Richtig kritisch wird es, wenn die Bilder unbefugt auf verbotenen oder verwerflichen Seiten automatisch eingebettet werden. Im Fachjargon nennt man das „Hotlinking“ oder „Embedding“. Das soziale Netzwerk Pinterest beispielsweise macht sich die Gesetzeslücke im großen Stil zunutze (siehe dazu mein Blogartikel). Das kann man bisher leider nicht verhindern, aber es gibt einen Weg, den „Bild-Dieben“ ihr Handeln zu vereiteln.

Dazu legt man zuerst ein Bild an mit dem Hinweis, dass unberechtigterweise versucht wurde, ein Bild einzubetten, was einem nicht gehört – am besten unter Angabe des Urhebers und Kontaktmöglichkeiten. Ich habe folgendes Bild erstellt:

Beispiel für Hotlinking-Bild – Copyright: Namira McLeod

Das angelegte Bild (auf keinen Fall meines verwenden!) speichert man unter einem beliebigen Namen im .png-Format (z.B. „hotlink.png“) auf der Festplatte ab und lädt es anschließend per FTP-Programm ins WordPress-Verzeichnis wp-content / uploads hoch.

Ist das erledigt, schreibt man folgenden Code in die .htaccess-Datei:

# Embedding von Bildern verbieten
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://www\.domainname\.de.*$ [NC]
RewriteCond %{HTTP_REFERER} !^https://www\.google\..*$ [NC]
RewriteCond %{HTTP_REFERER} !^https://www\.bing\..*$ [NC]
RewriteCond %{HTTP_REFERER} !^https://pinterest\.com.*$ [NC]
RewriteCond %{REQUEST_URI} !^.*hotlink\.png$ [NC]
RewriteRule ^.*\.(gif|jpg|png|jpeg)$ https://www.domainname.de/wp-content/uploads/hotlink.png [NC,R,L]
</ifmodule>

  • Anstatt „Embedding von Bildern verbieten“ kann eine beliebige Anweisung geschrieben werden.
  • Die Angaben „domainname“, „www“ und „.de“ müssen durch den eigenen Domainnamen und die eigene Domainendung ersetzt werden.
  • „hotlink“ und „.png“ muss ggf. durch den eigenen Bildnamen und das eigene Bildformat ersetzt werden.
  • Neben Google, Bing und Pinterest kann auch anderen Suchmaschinen bzw. sozialen Netzwerken das Einbetten von Bildern erlaubt werden. Will man beispielsweise Pinterest in diesem Fall nicht erlauben, Bilder von der eigenen Website einzubetten, lässt man die Code-Zeile einfach weg.

Der Sinn des Ganzen: Ist alles fertig eingerichtet, wird auf der fremden Webseite das urheberrechtlich geschützte Bild durch das oben angezeigte „Hotlinking-Bild“ ersetzt.

Auf einer fremden Webseite wurde beispielsweise vor einiger Zeit versucht, zahlreiche Bilder von gleich zwei meiner Websites per Hotlinking einzubinden. Nach Durchführung der oben genannten Sicherheitsmaßnahmen sah es einige Minuten später auf der fremden Webseite so aus:

Beispiel für fehlgeschlagenes Einbetten urheberrechtlich geschützter Bilder auf fremden Webseiten – Copyright: Namira McLeod

Meine Bilder wurden auf der fremden Webseite also nach und nach durch meine Hinweis-Bilder ersetzt (eins meiner Bilder war zu dem Zeitpunkt des Screenshots noch sichtbar – deutlich zu erkennen an meinem Wasserzeichen „FNM“ auf dem Bild). Dass ich dem Webseitenbetreiber das Einbetten fremder Bilder auf seiner Webseite erfolgreich vereitelt habe, erkennt sich daran, dass bei Aufruf des alten Links jetzt nur noch eine „404-Fehlerseite“ angezeigt wird.

TIPP 4: Dateiberechtigungen ändern (CHMOD Zugriff)

Sowohl der .htaccess-Datei als auch der wp-config.php sollte der Zugriff durch Dritte weitestgehend untersagt werden. Das kann man ganz einfach umsetzen, indem man die jeweilige „Dateiberechtigung“ ändert. Aber Vorsicht, diese Einstellungen sind nichts für Anfänger (*).

Dazu ruft man die entsprechende Datei entweder über ein FTP-Programm oder den Zugang des gewählten Providers auf, klickt mit der rechten Mousetaste drauf und dann auf „Dateiberechtigungen“ oder „Dateiattribute“. Jetzt öffnet sich ein Fenster, in dem entweder durch Setzen eines Häkchens oder Eingabe einer Zahl Berechtigungen vergeben werden können.

Standardmäßig vergibt WordPress den numerischen Wert „640“. Das ist auch gut so, um die Neuinstallation durchzuführen. Sobald WordPress eingerichtet ist und bestimmte Sicherheitscodes, wie beispielsweise in diesem Beitrag beschrieben, eingefügt wurden, sollte man allerdings die Dateiberechtigungen ändern. Ich empfehle, die .htaccess-Datei auf den numerischen Wert „444“ einzustellen, wenn WordPress keine automatischen Updates vornehmen soll, und die wp-config.php auf den Wert „440“, dann jeweils auf „OK“ zu klicken und die Speicherung zu bestätigen.

Beispiel Dateiberechtigung der .htaccess-Datei ändern – Copyright: Namira McLeod

(*) Je nach Anforderungen der installierten Plugins und weiteren Sicherheitseinstellungen in WordPress können auch andere Berechtigungen vorteilhaft sein. Hier rate ich an, auszuprobieren. Sollte im Anschluss die Website nicht mehr erreichbar sein oder bestimmte Funktionen beeinträchtigt, einfach die Dateiberechtigungen auf die ursprünglichen Werte zurücksetzen oder die im Backup vorhandene Datei ins Hauptverzeichnis laden und überschreiben.

Nachteil ist auch, dass jedes Mal, wenn Änderungen an der .htaccess und/oder wp-config.php durchgeführt werden sollen, die Dateiberechtigungen vorher auf „640“ (oder: 644, nur im Notfall: 777) geändert bzw. zurückgesetzt werden müssen, sonst erscheint eine Fehlermeldung, dass die Änderung nicht durchgeführt werden kann. Nach der Änderung kann wieder auf „440“ oder „444“ umgestellt werden.

Mit diesen sogenannten „CHMOD“-Einstellungen können die Zugriffsberechtigungen geregelt werden, und zwar nicht nur auf die genannten Dateien, sondern auf alle Ordner, die sich auf dem Webspace befinden. Probieren Sie es einfach aus.

TIPP 5: XML-RPC-Einfallstor für Angreifer schließen

Die wohl wichtigste Sicherheitseinstellung, die meiner Website damals „das Leben gerettet“ hat nach einem Cyberangriff, ist der nachfolgend beschriebene Code, der meines Erachtens in jede WordPress-Website gehört.

Fügen Sie in die functions.php des Child-Themes (nicht in die Originaldatei des Haupt-Themes einfügen, sonst geht die Einstellung beim nächsten Update verloren!) folgende Zeilen ein:

/* XML-RPC-Einfallstor abschalten */
add_filter( 'xmlrpc_enabled', '__return_false' );

/* HTTPS-Header von XML-RPC-Eintrag bereinigen */
add_filter( 'wp_headers', 'AH_remove_x_pingback' );
function AH_remove_x_pingback( $headers )
{
unset( $headers['X-Pingback'] );
return $headers;
}

Die von WordPress verwendete „XML-RPC-Schnittstelle“ ist leider seit Jahren ein Einfallstor für Angriffe von außen. Ursprünglich für Mobile Web Services konzipiert, bleibt sie seit WordPress 3.5 standardmäßig eingeschaltet. Diese Schnittstelle haben bereits Millionen Angreifer ausgenutzt, um sich Zugriff auf fremde Websites zu verschaffen und schädliche Codes einzuschleusen, die zum Teil erst Monate später aktiviert und vom Webseitenbetreiber bemerkt werden. Lassen Sie es nicht soweit kommen.


So, das war’s für heute. Selbstverständlich habe ich noch zahlreiche weitere Tipps auf Lager. Aber das ist ja nun mal der erste WordPress-Hilfe-Artikel in meinem Blog. Weitere werden folgen.

Ich hoffe, ich konnte etwas Licht ins Dunkel bringen und zur Sicherheit Ihrer Website beitragen. Eine Garantie gegen Cyberangriffe ist dies sicher nicht, aber ein guter Schritt, um auch den Anforderungen der DS-GVO gerecht zu werden – was letztlich den Besuchern Ihrer Website und Ihren Kunden zugute kommen kann.

Brauchen Sie Hilfe?

Gern unterstütze ich Sie auf dem Weg zu mehr Sicherheit Ihrer WordPress.org-Website.

Kontaktieren Sie mich!