Spaces. Smartes Cloud Hosting für anspruchsvolle Webprojekte. Loslegen und Spaces testen. Von Mittwald.
Andreas Hecht 8. Juni 2016

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

Die meis­ten Menschen den­ken, dass ihre WordPress-Website sicher wäre, weil sie kei­ne Inhalte bereit­stellt, die es sich zu hacken loh­nen wür­de. Doch das ist lei­der nicht rich­tig. Websites wer­den oft­mals gehackt, um etwa Spam-E-Mails dar­über ver­sen­den zu kön­nen. Oder die Core- und Theme-Dateien wer­den mit Schadcode gefüllt, um die Rechner dei­ner Website-Besucher zu ver­seu­chen und zu hacken. Es besteht durch­aus die Möglichkeit, dass du den Schaden erst bemerkst, wenn Google dich aus dem Index ent­fernt hat. Lass es dazu gar nicht erst kom­men und beher­zi­ge mei­ne heu­ti­gen Tipps zur wp-config.php.

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

Es exis­tie­ren vie­le Möglichkeiten, sei­ne auf WordPress basie­ren­de Website davor zu schüt­zen, gehackt zu wer­den. Als einen wich­ti­gen Teil einer ver­nünf­ti­gen Sicherheitsstrategie kann die Optimierung der wp-config.php Datei ange­se­hen wer­den. Natürlich ist die Website im Anschluss nicht die Bank von England, jedoch hat man es den Hackern wie­der ein wenig erschwert.

Um die wp-config.php zu opti­mie­ren, wer­den soge­nann­te Konstanten genutzt. WordPress ver­fügt über sehr vie­le Konstanten, die genutzt wer­den kön­nen. Doch was ist eigent­lich eine Konstante? PHP.net beschreibt die Konstanten fol­gen­der­ma­ßen:

Eine Konstante ist ein Bezeichner (Name) für einen ein­fa­chen Wert. Wie der Name bereits nahe­legt, kann der Wert einer Konstanten zur Laufzeit des Skripts nicht ver­än­dert wer­den (aus­ge­nom­men die Magischen Konstanten, die aber kei­ne wirk­li­chen Konstanten sind.) Eine Konstante unter­schei­det stan­dard­mä­ßig zwi­schen Groß- und Kleinschreinbung (case-sen­si­ti­ve). Nach gän­gi­ger Konvention wer­den Konstanten immer in Großbuchstaben geschrie­ben.

Konstanten sind in die defi­ne() Funktion ein­ge­bet­tet und sehen so aus: define('NAME_DER_KONSTANTE', value);

Die wp-config.php ist die Steuerungsdatei für WordPress. Sie wird vor allen ande­ren Dateien gela­den, allein schon des­halb, weil WordPress eine Datenbankverbindung her­stel­len muss. Die dazu nöti­gen Angaben fin­den sich in der Config-Datei. Wenn du den Wert einer Konstante änderst, eine Konstante hin­zu­fü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 die­ser Datei an. Mit fal­schen oder feh­len­den Einträgen wird dei­ne Website nicht mehr funk­tio­nie­ren.

Zweitens: Bitte füge alle benut­zer­de­fi­nier­ten Angaben über dem im fol­gen­den Screenshot mar­kier­ten Bereich ein.

Füge alle selbstdefinierten Konstanten oberhalb dieses Bereichs ein.

Füge alle selbst­de­fi­nier­ten Konstanten ober­halb die­ses Bereichs ein.

Wichtig: WordPress und Plugins immer sofort updaten

Du wirst es schon öfter gehört haben. Doch gera­de die­ser Punkt ist so wich­tig, dass man ihn nicht oft genug wie­der­ho­len kann. Immer und immer wie­der wer­den Websites gehackt, weil WordPress oder die Plugins nicht auf dem neu­es­ten Stand waren. Updates sind die bes­te Versicherung gegen Hacking!

Die aktu­el­le Sicherheitslage:

Die Sicherheitsspezialisten Sucuri war­nen gera­de vor einer Sicherheitslücke im belieb­ten Jetpack-Plugin für WordPress. Über die Shortcode-Embed-Funktion kann schad­haf­ter Code ein­ge­fügt wer­den. Automattic wird sicher­lich zeit­nah reagie­ren und eine neue Version her­aus­brin­gen.

So ist die Sicherheitslücke vor­erst zu schlie­ßen:

Solltest du mei­ne »opti­ma­le .htaccess«-Datei ver­wen­den, dann droht dir kei­ne Gefahr. Dort wird die berühm­te 6G-Firewall ver­wen­det, die sol­che Angriffe abzu­weh­ren ver­mag.

Die Vorbereitung:

Für alle nun fol­gen­den Arbeiten benö­tigst du ein FTP-Programm und einen HTML-Editor. Die wp-config.php wird auf den Desktop her­un­ter­ge­la­den, im HTML-Editor bear­bei­tet und im Anschluss wie­der auf den Server gela­den.

1 – Nutze die Sicherheitsschlüssel

Die Sicherheitsschlüssel in WordPress ver­schlüs­seln zum Beispiel die Anmeldeinformationen in Cookies und sind daher extrem wich­tig. Auch wenn dei­ne wp-config.php bereits über ein­ge­tra­ge­ne Sicherheitsschlüssel ver­fügt, so kann es nicht scha­den, sie noch ein­mal zu ändern. Wenn die Schlüssel abge­än­dert wer­den, wer­den alle noch offe­nen Anmeldungen dei­ner Benutzer abge­mel­det. Im Anschluss kannst du dich wie­der ganz nor­mal mit dei­nem Benutzernamen und dem ver­ge­be­nen Passwort anmel­den.

Solltest du jedoch bereits gehackt wor­den sein, dann soll­test du zuerst dei­ne Website vom Schadcode berei­ni­gen. Eine ent­spre­chen­de Anleitung fin­dest du in den wei­ter­füh­ren­den Informationen zu die­sem Punkt. Danach besuchst du den WordPress Generator für die Sicherheitsschlüssel und kopierst dir einen neu­en Satz. Ersetze den alten Teil mit dem Neuen – sie­he Screenshot:

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

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

Solltest du noch kei­ne Sicherheitsschlüssel ein­ge­fügt haben, dann ist nun der rich­ti­ge Zeitpunkt, um es zu tun.

Weiterführende Informationen:

2 – Erzwinge die Verwendung von HTTPS

Ein SSL-Zertifikat ver­schlüs­selt die Verbindung zwi­schen dei­ner Website und dem Browser dei­nes Besuchers. Mit HTTPS wird es den Hackern unmög­lich gemacht, per­sön­li­che Daten abzu­fan­gen und zu steh­len. Wenn du bereits ein SSL-Zertifikat für dei­ne Website besitzt, dann kannst du die Nutzung von HTTPS anstatt HTTP for­cie­ren, also dei­ne Website zwin­gen, es auch zu nut­zen. Das stei­gert die Sicherheit dei­ner Website sehr. Solltest du bis­lang über kein SSL-Zertifikat ver­fü­gen, dann den­ke ein­ge­hend dar­über nach, eines zu nut­zen.

Vor groß­ar­ti­gen Kosten musst Du kei­ne Angst haben, SSL gibt es mitt­ler­wei­le auch kos­ten­los. Wir hat­ten bereits dar­über geschrie­ben.

Die fol­gen­den Einträge soll­test du ver­wen­den, wenn dei­ne Website bereits SSL ver­wen­det. Der obers­te Eintrag ist für das geschütz­te Einloggen gedacht, der unte­re Teil zwingt den Browser, auch den Adminbereich von WordPress nur mit SSL nutz­bar 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 gene­rier­te Datenbank-Tabelle gesetzt. Der Standard ist hier­bei wp_. Dieser Standard soll­te in irgend etwas ande­res abge­än­dert wer­den. Je kryp­ti­scher der Wert, umso bes­ser. Keine Angst, du musst dir nicht mer­ken, was du hier ver­gibst. Dieser Wert wird nur ein ein­zi­ges Mal gesetzt.

Genau betrach­tet ist die Möglichkeit einer SQL-Injektion nicht sehr wahr­schein­lich. Doch sie ist mög­lich. Daher ände­re den Wert ab, bevor du WordPress instal­lierst. Nutze zum Beispiel etwas wie hdr7rf_.

Achtung: Solltest du den Wert bei einer bereits bestehen­den WordPress-Installation ändern, dann ist die Website nicht mehr zugäng­lich!

Wenn du das Tabellenpräfix bei einer bestehen­den WordPress-Website ändern möch­test, dann kann dir das Plugin Acunetix WP Security hel­fen. Damit kannst du den Wert pro­blem­los ändern und musst dich im Anschluss nur neu ein­log­gen. Trotzdem soll­test du vor­her ein Backup machen.

4 – Schalte den Plugin- und Theme-Editor ab

In jeder WordPress-Installation kann man Theme- und Plugin-Dateien direkt im Adminbereich bear­bei­ten. Unter den Menüpunkten »Design« und »Plugins« fin­det man auch jeweils den Editor für die betref­fen­den Dateien. Dieser Editor ist sehr gefähr­lich, wenn er in die Hände eines Hackers gerät. Dateien könn­ten zer­stört und Viren, Trojaner, Spam und ande­re Malware könn­ten hin­zu­ge­fügt wer­den. Doch auch für dich als Administrator dei­ner Website ist der Editor gefähr­lich. Ein ein­zi­ger Fehler, ein ein­zi­ges ver­ges­se­nes Semikolon kann bereits die berühm­ten wei­ßen Seiten anzei­gen und dann geht nichts mehr.

Änderungen an Theme- oder Plugin-Dateien wer­den grund­sätz­lich nur über (S)FTP gemacht, das ist wesent­lich siche­rer. Also müs­sen die Editoren abge­schal­tet wer­den. Eine ein­zi­ge Zeile in der wp-config.php schal­tet bei­de Editoren sicher ab:

5 – Verschiebe die wp-config.php

Die wp-config.php ist das Herz dei­ner Website. Alle rele­van­ten Daten inklu­si­ve den Passwörtern für die Datenbank sind dort ein­ge­tra­gen. Daher ist es sehr wich­tig, die­se Datei so sicher wie mög­lich zu hal­ten. Hierzu gibt es zwei Ansätze. Der ers­te Ansatz ist eine Zugriffssperre über die .htac­cess-Datei. Der zwei­te Ansatz ver­schiebt die Datei an einen ande­ren Ort, unter dem ein Hacker sie nicht ver­mu­ten wür­de.

  • Problematisch wird es mit dem Verschieben, wenn sich die Website in einem Unterverzeichnis befin­det und du ein güns­ti­ges Shared-Hosting nutzt.
  • Ebenfalls schwie­rig wer­den kann das Verschieben, wenn du sehr vie­le Websites in eige­nen Verzeichnissen hast. Treffen bei­de Konstellationen nicht auf dich zu, dann kannst du die Datei ver­schie­ben.

Wenn du den Pfad zur wp-config.php kor­rekt ange­passt hast, dann soll­te dei­ne Website anschlies­send funk­tio­nie­ren.

6 – Erzwinge die Nutzung von FTPS

Wenn dein Webhoster das File Transfer Protocol Secure (FTPS) akti­viert hat, dann kannst du die Verwendung von FTPS zur Übertragung von Dateien erzwin­gen. Das ver­schlüs­selt dann die Verbindung zwi­schen dem Benutzer und dei­nem Server. Es ist nun nicht mehr mög­lich, mit dem unsi­che­ren FTP-Protokoll auf die Daten auf dem Server zuzu­grei­fen. FTP ist unsi­cher, weil die Zugangsdaten unver­schlüs­selt und im Klartext an dei­nen Server über­tra­gen wer­den. Daher nut­ze – wenn mög­lich – nur die siche­re Verbindung über FTPS. Dein Webhoster kann dir beant­wor­ten, ob eine FTPS-Verbindung mög­lich ist.

So ein­fach kannst du die Nutzung von FTPS erzwin­gen:

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 akti­viert. Auch hier fin­det eine ver­schlüs­sel­te Verbindung zwi­schen dem FTP-Programm des Users und dem Server statt. Mit der fol­gen­den Code-Zeile kann die Nutzung von SFTP erzwun­gen wer­den:

Weiterführende Informationen:

Wikipedia: SSH File Transfer Protocol

8 – Den Debug-Modus ausschalten

Solltest du für Entwicklungszwecke den Debug-Modus von WordPress ein­ge­schal­tet haben, dann ist es sehr wich­tig, ihn wie­der abzu­schal­ten. Denn unter Umständen wer­den mit akti­vier­tem Debug-Modus sen­si­ble Daten wei­ter­ge­ge­ben, die Hackern bei ihrer Arbeit hel­fen kön­nen. Auf einem Live-System ist ein akti­vier­ter Debug-Modus daher extrem gefähr­lich. Auch ich habe die­sen klei­nen und dum­men Fehler bereits began­gen, der Mensch ver­gisst zu leicht. Daher soll­test du noch mal einen kur­zen Kontrollblick dar­auf wer­fen. Ausgeschaltet wird der Fehlermodus wie folgt:

9 – Schalte die Anzeige von PHP-Fehlern aus

Solltest du aus irgend­ei­nem Grund den Debug-Modus von WordPress drin­gend akti­viert benö­ti­gen, dann emp­feh­le ich dir, die öffent­li­che Ausgabe der Fehlermeldungen aus­zu­schal­ten. Die für dich wich­ti­gen Fehlermeldungen kön­nen auch in ein nicht öffent­lich zugäng­li­ches Log geschrie­ben wer­den. Das wäre die wesent­lich siche­re und ele­gan­te Möglichkeit. Um den Fehler-Modus von WordPress akti­viert zu las­sen und ein­fach nur die öffent­lich sicht­ba­re Fehlerausgabe zu unter­drü­cken, benö­tigst du die­se Konstante:

10 – Schalte die automatischen Updates ein

Wie ich bereits wei­ter oben im Beitrag erwähn­te, ist das sofor­ti­ge Updaten des WordPress-Kerns und aller Plugins sehr wich­tig für die Sicherheit des Systems. Bei jedem Release einer neu­en WordPress-Version wer­den auch die Sicherheitslücken in der jeweils vor­an­ge­gan­ge­nen Version öffent­lich. Das ver­schafft einem Hacker eine soli­de Grundlage, um dei­ne Website hacken zu kön­nen. Ergo soll­ten die­se Schwachstellen so schnell wie nur mög­lich beho­ben wer­den.

Seit der WordPress-Version 3.7 wer­den klei­ne­re Sicherheitsupdates auto­ma­tisch durch­ge­führt. Dieses gilt aller­dings nicht für Hauptversionen von Core-Updates. Hauptversionen müs­sen immer noch hän­disch aktua­li­siert wer­den. Doch man kann die auto­ma­ti­schen Updates für alle Versionen von WP ganz leicht ein­schal­ten:

Es ist übri­gens auch mög­lich, die Plugins auto­ma­tisch updaten zu las­sen. Das ist jedoch mit etwas mehr Arbeit ver­bun­den. Es erfor­dert die Erstellung eines Plugins:

Dieses Plugin muss in den Ordner /wp-con­ten­t/­mu-plug­in­s/ ver­scho­ben wer­den. Sollte der Ordner nicht exis­tie­ren, dann lege ihn ein­fach an. Der Ordner /mu-plug­in­s/ beinhal­tet die »must use« Plugins. Sein Inhalt wird vor allen ande­ren Plugins gela­den.

Übrigens kann man auf die glei­che Art auch die Themes auto­ma­tisch updaten las­sen. Dazu muss das Plugin um die fol­gen­de Zeile ergänzt wer­den:

Bitte infor­miert euch vor­her im Codex über die­se auto­ma­ti­schen Plugins und nutzt den Code nur, wenn ihr genau wisst, was ihr tut. Es ver­steht sich von selbst, dass die bei­den Filter nur Plugins und Themes auf dem neu­es­ten Stand hal­ten kön­nen, die auch aus dem offi­zi­el­len Verzeichnis von WordPress stam­men. Es wer­den kei­ne Themes und Plugins aktua­li­siert, die du aus einer ande­ren Quelle bezo­gen hast.

Weiterführende Informationen:

WordPress Codex: Must Use Plugins

Fazit

All die­se Punkte zusam­men­ge­nom­men stei­gern die Sicherheit dei­nes WordPress bereits sehr und soll­ten ein Teil einer guten Sicherheitsstrategie sein. Denn der Umstand, dass WordPress das belieb­tes­te Content Management System der Welt ist, zieht natür­lich auch Hacker an. Die Situation ist durch­aus ver­gleich­bar mit dem PC-Betriebssystem Windows. Unter Windows instal­liert man eine Antiviren-Software, unter WordPress ist zumeist Handarbeit ange­sagt. Doch der Zugewinn an Sicherheit recht­fer­tigt die­sen klei­nen 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.

6 Kommentare

  1. Hallo Andreas,

    1+ für Deinen Beitrag. Mir gefällt dar­an, dass Du nicht nur schreibst “mache dies und jenes”, son­dern auch war­um.

    Ich bin gera­de dabei, eine Website mit WP auf­zu­bau­en. Es soll einen all­ge­mein zugäng­li­chen Bereich geben (unan­ge­mel­det) und einen geschütz­ten. Benutze ich .htac­cess, sehen nur ange­mel­de­te Benutzer Inhalte. Wie soll auch WP das unter­schei­den bei nur einem Medienordner (oder ich müß­te jede ein­zel­ne Datei je nach Bedarf in die .htac­cess auf­neh­men.…).

    Ich habe vie­le Plugins pro­biert, das ein­zi­ge (das ich gefun­den habe), wel­ches einen wei­te­ren Ordner anlegt und die­sen mit einer wei­te­ren .htac­cess – Datei schützt, war der Download Manager. Da die Seite spä­ter auch weni­ger ver­sier­te Redakteure pfle­gen sol­len, fin­de ich das anschlies­sen­de Prozedere mit Shortcodes, Rechteverteilung etc. umständ­lich und stör­an­fäl­lig (weil vom Redakteur abhän­gig).

    Wie ist das Vorgehen gene­rell bei Websites mit geschüt­zem Bereich?

    Ich bin soweit, zwei Unterordner mit je einer WP-Installation ein­zu­rich­ten und so eine Trennung zu errei­chen. Die Folge: Doppelte Redakteure, extra Authentifizierung etc.…

    Kann ich z.B. beim Klick auf “Interner Bereich” (noch auf der öffent­li­chen Seite) die wp-login.php der siche­ren Seite auf­ru­fen, “Benutzer ist ange­mel­det” aus­le­sen und anschlies­send einen “gehei­men” Benutzer alla https://user:passwort@domain.tld an die .htac­cess über­ge­ben, macht man das so? Ist das sicher?

    Beim Programmieren von Maschinensteuerungen ken­ne ich mich aus, Internet ist .…anders.

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

    • Hi, Andreas! Ich fürch­te, dass, was Du da willst, ist sehr kom­pli­ziert und kann nur mit ein­ge­hen­den Tests gelöst wer­den. Ein klei­ner Rat zwi­schen­durch ist anhand der Problemstellung nicht mach­bar, sor­ry…

  2. In dem Code “wp-config-verschieben.php ” muss ein Leerzeichen zwi­schen require_once und ABSPATH :-)

  3. Danke für die Tipps.
    Vielleicht könn­ten Sie auch einen sol­chen Guide für Joomla Sicherheit machen?

    • Danke für die Anfrage! Allerdings ken­ne ich mich mit Joomla nicht aus, daher wird ein Artikel über die Sicherheit des CMS nicht wirk­lich viel Substanz haben. Doch sobald ein Joomla-Experte für uns schrei­ben möch­te, kommt der Beitrag.

Schreibe einen Kommentar zu Ribo Antworten abbrechen

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