Andreas Hecht 8. Juni 2016

WordPress-Sicherheit: Diese wp-config.php schützt deine Website

Die meisten Menschen denken, dass ihre WordPress-Website sicher wäre, weil sie keine Inhalte bereitstellt, die es sich zu hacken lohnen würde. Doch das ist leider nicht richtig. Websites werden oftmals gehackt, um etwa Spam-E-Mails darüber versenden zu können. Oder die Core- und Theme-Dateien werden mit Schadcode gefüllt, um die Rechner deiner Website-Besucher zu verseuchen und zu hacken. Es besteht durchaus die Möglichkeit, dass du den Schaden erst bemerkst, wenn Google dich aus dem Index entfernt hat. Lass es dazu gar nicht erst kommen und beherzige meine heutigen Tipps zur wp-config.php.

Optimiere die wp-config.php für mehr WordPress-Sicherheit

Es existieren viele Möglichkeiten, seine auf WordPress basierende Website davor zu schützen, gehackt zu werden. Als einen wichtigen Teil einer vernünftigen Sicherheitsstrategie kann die Optimierung der wp-config.php Datei angesehen werden. Natürlich ist die Website im Anschluss nicht die Bank von England, jedoch hat man es den Hackern wieder ein wenig erschwert.

Um die wp-config.php zu optimieren, werden sogenannte Konstanten genutzt. WordPress verfügt über sehr viele Konstanten, die genutzt werden können. Doch was ist eigentlich eine Konstante? PHP.net beschreibt die Konstanten folgendermaßen:

Eine Konstante ist ein Bezeichner (Name) für einen einfachen Wert. Wie der Name bereits nahelegt, kann der Wert einer Konstanten zur Laufzeit des Skripts nicht verändert werden (ausgenommen die Magischen Konstanten, die aber keine wirklichen Konstanten sind.) Eine Konstante unterscheidet standardmäßig zwischen Groß- und Kleinschreinbung (case-sensitive). Nach gängiger Konvention werden Konstanten immer in Großbuchstaben geschrieben.

Konstanten sind in die define() Funktion eingebettet und sehen so aus: define('NAME_DER_KONSTANTE', value);

Die wp-config.php ist die Steuerungsdatei für WordPress. Sie wird vor allen anderen Dateien geladen, allein schon deshalb, weil WordPress eine Datenbankverbindung herstellen muss. Die dazu nötigen Angaben finden sich in der Config-Datei. Wenn du den Wert einer Konstante änderst, eine Konstante hinzufügst oder ihren Wert änderst, dann änderst du auch das Verhalten von WordPress.

Vor der Arbeit: Bitte ein Backup anfertigen

Erstens: Fertige vor der Bearbeitung der wp-config.php ein Backup dieser Datei an. Mit falschen oder fehlenden Einträgen wird deine Website nicht mehr funktionieren.

Zweitens: Bitte füge alle benutzerdefinierten Angaben über dem im folgenden Screenshot markierten Bereich ein.

Füge alle selbstdefinierten Konstanten oberhalb dieses Bereichs ein.

Füge alle selbstdefinierten Konstanten oberhalb dieses Bereichs ein.

Wichtig: WordPress und Plugins immer sofort updaten

Du wirst es schon öfter gehört haben. Doch gerade dieser Punkt ist so wichtig, dass man ihn nicht oft genug wiederholen kann. Immer und immer wieder werden Websites gehackt, weil WordPress oder die Plugins nicht auf dem neuesten Stand waren. Updates sind die beste Versicherung gegen Hacking!

Die aktuelle Sicherheitslage:

Die Sicherheitsspezialisten Sucuri warnen gerade vor einer Sicherheitslücke im beliebten Jetpack-Plugin für WordPress. Über die Shortcode-Embed-Funktion kann schadhafter Code eingefügt werden. Automattic wird sicherlich zeitnah reagieren und eine neue Version herausbringen.

So ist die Sicherheitslücke vorerst zu schließen:

Solltest du meine »optimale .htaccess«-Datei verwenden, dann droht dir keine Gefahr. Dort wird die berühmte 6G-Firewall verwendet, die solche Angriffe abzuwehren vermag.

Die Vorbereitung:

Für alle nun folgenden Arbeiten benötigst du ein FTP-Programm und einen HTML-Editor. Die wp-config.php wird auf den Desktop heruntergeladen, im HTML-Editor bearbeitet und im Anschluss wieder auf den Server geladen.

1 – Nutze die Sicherheitsschlüssel

Die Sicherheitsschlüssel in WordPress verschlüsseln zum Beispiel die Anmeldeinformationen in Cookies und sind daher extrem wichtig. Auch wenn deine wp-config.php bereits über eingetragene Sicherheitsschlüssel verfügt, so kann es nicht schaden, sie noch einmal zu ändern. Wenn die Schlüssel abgeändert werden, werden alle noch offenen Anmeldungen deiner Benutzer abgemeldet. Im Anschluss kannst du dich wieder ganz normal mit deinem Benutzernamen und dem vergebenen Passwort anmelden.

Solltest du jedoch bereits gehackt worden sein, dann solltest du zuerst deine Website vom Schadcode bereinigen. Eine entsprechende Anleitung findest du in den weiterführenden Informationen zu diesem Punkt. Danach besuchst du den WordPress Generator für die Sicherheitsschlüssel und kopierst dir einen neuen Satz. Ersetze den alten Teil mit dem Neuen – siehe Screenshot:

Die Sicherheitsschlüssel in der wp-config.php.

Die Sicherheitsschlüssel in der wp-config.php.

Solltest du noch keine Sicherheitsschlüssel eingefügt haben, dann ist nun der richtige Zeitpunkt, um es zu tun.

Weiterführende Informationen:

2 – Erzwinge die Verwendung von HTTPS

Ein SSL-Zertifikat verschlüsselt die Verbindung zwischen deiner Website und dem Browser deines Besuchers. Mit HTTPS wird es den Hackern unmöglich gemacht, persönliche Daten abzufangen und zu stehlen. Wenn du bereits ein SSL-Zertifikat für deine Website besitzt, dann kannst du die Nutzung von HTTPS anstatt HTTP forcieren, also deine Website zwingen, es auch zu nutzen. Das steigert die Sicherheit deiner Website sehr. Solltest du bislang über kein SSL-Zertifikat verfügen, dann denke eingehend darüber nach, eines zu nutzen.

Vor großartigen Kosten musst Du keine Angst haben, SSL gibt es mittlerweile auch kostenlos. Wir hatten bereits darüber geschrieben.

Die folgenden Einträge solltest du verwenden, wenn deine Website bereits SSL verwendet. Der oberste Eintrag ist für das geschützte Einloggen gedacht, der untere Teil zwingt den Browser, auch den Adminbereich von WordPress nur mit SSL nutzbar zu machen.

3 – Ändere das Datenbank-Präfix

Das Datenbankpräfix ist auch unter der Bezeichnung Tabellenpräfix bekannt. Dieses Präfix wird als Ergänzung vor jede von WordPress generierte Datenbank-Tabelle gesetzt. Der Standard ist hierbei wp_. Dieser Standard sollte in irgend etwas anderes abgeändert werden. Je kryptischer der Wert, umso besser. Keine Angst, du musst dir nicht merken, was du hier vergibst. Dieser Wert wird nur ein einziges Mal gesetzt.

Genau betrachtet ist die Möglichkeit einer SQL-Injektion nicht sehr wahrscheinlich. Doch sie ist möglich. Daher ändere den Wert ab, bevor du WordPress installierst. Nutze zum Beispiel etwas wie hdr7rf_.

Achtung: Solltest du den Wert bei einer bereits bestehenden WordPress-Installation ändern, dann ist die Website nicht mehr zugänglich!

Wenn du das Tabellenpräfix bei einer bestehenden WordPress-Website ändern möchtest, dann kann dir das Plugin Acunetix WP Security helfen. Damit kannst du den Wert problemlos ändern und musst dich im Anschluss nur neu einloggen. Trotzdem solltest du vorher ein Backup machen.

4 – Schalte den Plugin- und Theme-Editor ab

In jeder WordPress-Installation kann man Theme- und Plugin-Dateien direkt im Adminbereich bearbeiten. Unter den Menüpunkten »Design« und »Plugins« findet man auch jeweils den Editor für die betreffenden Dateien. Dieser Editor ist sehr gefährlich, wenn er in die Hände eines Hackers gerät. Dateien könnten zerstört und Viren, Trojaner, Spam und andere Malware könnten hinzugefügt werden. Doch auch für dich als Administrator deiner Website ist der Editor gefährlich. Ein einziger Fehler, ein einziges vergessenes Semikolon kann bereits die berühmten weißen Seiten anzeigen und dann geht nichts mehr.

Änderungen an Theme- oder Plugin-Dateien werden grundsätzlich nur über (S)FTP gemacht, das ist wesentlich sicherer. Also müssen die Editoren abgeschaltet werden. Eine einzige Zeile in der wp-config.php schaltet beide Editoren sicher ab:

5 – Verschiebe die wp-config.php

Die wp-config.php ist das Herz deiner Website. Alle relevanten Daten inklusive den Passwörtern für die Datenbank sind dort eingetragen. Daher ist es sehr wichtig, diese Datei so sicher wie möglich zu halten. Hierzu gibt es zwei Ansätze. Der erste Ansatz ist eine Zugriffssperre über die .htaccess-Datei. Der zweite Ansatz verschiebt die Datei an einen anderen Ort, unter dem ein Hacker sie nicht vermuten würde.

  • Problematisch wird es mit dem Verschieben, wenn sich die Website in einem Unterverzeichnis befindet und du ein günstiges Shared-Hosting nutzt.
  • Ebenfalls schwierig werden kann das Verschieben, wenn du sehr viele Websites in eigenen Verzeichnissen hast. Treffen beide Konstellationen nicht auf dich zu, dann kannst du die Datei verschieben.

Wenn du den Pfad zur wp-config.php korrekt angepasst hast, dann sollte deine Website anschliessend funktionieren.

6 – Erzwinge die Nutzung von FTPS

Wenn dein Webhoster das File Transfer Protocol Secure (FTPS) aktiviert hat, dann kannst du die Verwendung von FTPS zur Übertragung von Dateien erzwingen. Das verschlüsselt dann die Verbindung zwischen dem Benutzer und deinem Server. Es ist nun nicht mehr möglich, mit dem unsicheren FTP-Protokoll auf die Daten auf dem Server zuzugreifen. FTP ist unsicher, weil die Zugangsdaten unverschlüsselt und im Klartext an deinen Server übertragen werden. Daher nutze – wenn möglich – nur die sichere Verbindung über FTPS. Dein Webhoster kann dir beantworten, ob eine FTPS-Verbindung möglich ist.

So einfach kannst du die Nutzung von FTPS erzwingen:

Weiterführende Informationen:

Wikipedia: FTP über SSL

7 – Erzwinge die Nutzung von SFTP

Manche Hoster haben anstatt des FTPS-Protokolls das SFTP-Protokoll zur Datenübertragung aktiviert. Auch hier findet eine verschlüsselte Verbindung zwischen dem FTP-Programm des Users und dem Server statt. Mit der folgenden Code-Zeile kann die Nutzung von SFTP erzwungen werden:

Weiterführende Informationen:

Wikipedia: SSH File Transfer Protocol

8 – Den Debug-Modus ausschalten

Solltest du für Entwicklungszwecke den Debug-Modus von WordPress eingeschaltet haben, dann ist es sehr wichtig, ihn wieder abzuschalten. Denn unter Umständen werden mit aktiviertem Debug-Modus sensible Daten weitergegeben, die Hackern bei ihrer Arbeit helfen können. Auf einem Live-System ist ein aktivierter Debug-Modus daher extrem gefährlich. Auch ich habe diesen kleinen und dummen Fehler bereits begangen, der Mensch vergisst zu leicht. Daher solltest du noch mal einen kurzen Kontrollblick darauf werfen. Ausgeschaltet wird der Fehlermodus wie folgt:

9 – Schalte die Anzeige von PHP-Fehlern aus

Solltest du aus irgendeinem Grund den Debug-Modus von WordPress dringend aktiviert benötigen, dann empfehle ich dir, die öffentliche Ausgabe der Fehlermeldungen auszuschalten. Die für dich wichtigen Fehlermeldungen können auch in ein nicht öffentlich zugängliches Log geschrieben werden. Das wäre die wesentlich sichere und elegante Möglichkeit. Um den Fehler-Modus von WordPress aktiviert zu lassen und einfach nur die öffentlich sichtbare Fehlerausgabe zu unterdrücken, benötigst du diese Konstante:

10 – Schalte die automatischen Updates ein

Wie ich bereits weiter oben im Beitrag erwähnte, ist das sofortige Updaten des WordPress-Kerns und aller Plugins sehr wichtig für die Sicherheit des Systems. Bei jedem Release einer neuen WordPress-Version werden auch die Sicherheitslücken in der jeweils vorangegangenen Version öffentlich. Das verschafft einem Hacker eine solide Grundlage, um deine Website hacken zu können. Ergo sollten diese Schwachstellen so schnell wie nur möglich behoben werden.

Seit der WordPress-Version 3.7 werden kleinere Sicherheitsupdates automatisch durchgeführt. Dieses gilt allerdings nicht für Hauptversionen von Core-Updates. Hauptversionen müssen immer noch händisch aktualisiert werden. Doch man kann die automatischen Updates für alle Versionen von WP ganz leicht einschalten:

Es ist übrigens auch möglich, die Plugins automatisch updaten zu lassen. Das ist jedoch mit etwas mehr Arbeit verbunden. Es erfordert die Erstellung eines Plugins:

Dieses Plugin muss in den Ordner /wp-content/mu-plugins/ verschoben werden. Sollte der Ordner nicht existieren, dann lege ihn einfach an. Der Ordner /mu-plugins/ beinhaltet die »must use« Plugins. Sein Inhalt wird vor allen anderen Plugins geladen.

Übrigens kann man auf die gleiche Art auch die Themes automatisch updaten lassen. Dazu muss das Plugin um die folgende Zeile ergänzt werden:

Bitte informiert euch vorher im Codex über diese automatischen Plugins und nutzt den Code nur, wenn ihr genau wisst, was ihr tut. Es versteht sich von selbst, dass die beiden Filter nur Plugins und Themes auf dem neuesten Stand halten können, die auch aus dem offiziellen Verzeichnis von WordPress stammen. Es werden keine Themes und Plugins aktualisiert, die du aus einer anderen Quelle bezogen hast.

Weiterführende Informationen:

WordPress Codex: Must Use Plugins

Fazit

All diese Punkte zusammengenommen steigern die Sicherheit deines WordPress bereits sehr und sollten ein Teil einer guten Sicherheitsstrategie sein. Denn der Umstand, dass WordPress das beliebteste Content Management System der Welt ist, zieht natürlich auch Hacker an. Die Situation ist durchaus vergleichbar mit dem PC-Betriebssystem Windows. Unter Windows installiert man eine Antiviren-Software, unter WordPress ist zumeist Handarbeit angesagt. Doch der Zugewinn an Sicherheit rechtfertigt diesen kleinen Arbeitsaufwand.

(dpe)

Andreas Hecht

Andreas Hecht

entwickelt WordPress-Websites und bietet dir einen Website Sicherheit Service und einen Performance Service für deine Website. Außerdem ist er Spezialist für Onpage SEO und bringt Deine Website in die Top-Suchergebnisse von Google. Auf seinem Blog schreibt er über WordPress, SEO und Content SEO.
Dr. Webs exklusiver Newsletter
Hinweise zum Datenschutz, also dem Einsatz von Double-Opt-In, der Protokollierung der Anmeldung, der Erfolgsmessung, dem Einsatz von MailChimp als Versanddienstleister und deinen Widerrufsrechten findest du in unseren Datenschutzhinweisen.

6 Kommentare

  1. Hallo Andreas,

    1+ für Deinen Beitrag. Mir gefällt daran, dass Du nicht nur schreibst „mache dies und jenes“, sondern auch warum.

    Ich bin gerade dabei, eine Website mit WP aufzubauen. Es soll einen allgemein zugänglichen Bereich geben (unangemeldet) und einen geschützten. Benutze ich .htaccess, sehen nur angemeldete Benutzer Inhalte. Wie soll auch WP das unterscheiden bei nur einem Medienordner (oder ich müßte jede einzelne Datei je nach Bedarf in die .htaccess aufnehmen….).

    Ich habe viele Plugins probiert, das einzige (das ich gefunden habe), welches einen weiteren Ordner anlegt und diesen mit einer weiteren .htaccess – Datei schützt, war der Download Manager. Da die Seite später auch weniger versierte Redakteure pflegen sollen, finde ich das anschliessende Prozedere mit Shortcodes, Rechteverteilung etc. umständlich und störanfällig (weil vom Redakteur abhängig).

    Wie ist das Vorgehen generell bei Websites mit geschützem Bereich?

    Ich bin soweit, zwei Unterordner mit je einer WP-Installation einzurichten und so eine Trennung zu erreichen. Die Folge: Doppelte Redakteure, extra Authentifizierung etc….

    Kann ich z.B. beim Klick auf „Interner Bereich“ (noch auf der öffentlichen Seite) die wp-login.php der sicheren Seite aufrufen, „Benutzer ist angemeldet“ auslesen und anschliessend einen „geheimen“ Benutzer alla https://user:passwort@domain.tld an die .htaccess übergeben, macht man das so? Ist das sicher?

    Beim Programmieren von Maschinensteuerungen kenne ich mich aus, Internet ist ….anders.

    Vielen Dank schon mal für die Mühe, die ich Dir gemacht habe.

    • Hi, Andreas! Ich fürchte, dass, was Du da willst, ist sehr kompliziert und kann nur mit eingehenden Tests gelöst werden. Ein kleiner Rat zwischendurch ist anhand der Problemstellung nicht machbar, sorry…

  2. In dem Code „wp-config-verschieben.php “ muss ein Leerzeichen zwischen require_once und ABSPATH :-)

  3. Danke für die Tipps.
    Vielleicht könnten Sie auch einen solchen Guide für Joomla Sicherheit machen?

    • Danke für die Anfrage! Allerdings kenne ich mich mit Joomla nicht aus, daher wird ein Artikel über die Sicherheit des CMS nicht wirklich viel Substanz haben. Doch sobald ein Joomla-Experte für uns schreiben möchte, kommt der Beitrag.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kennst du schon unseren Newsletter?

Hinweise zum Datenschutz, also dem Einsatz von Double-Opt-In, der Protokollierung der Anmeldung, der Erfolgsmessung, dem Einsatz von MailChimp als Versanddienstleister und deinen Widerrufsrechten findest du in unseren Datenschutzhinweisen.