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

Facebook
XING
Twitter
Ein schwarzes Schild mit weißem Text - Computersicherheit
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.
. . . Reklame

Möchten Sie ihr Geld in der WordPress-Welt verdienen? Dann bietet sich anstatt eines HTML-Editors der Einsatz eines Page Builders wie Elementor an. Mit diesem Tool werden Sie das Ziel professionelle Websites zu erstellen wesentlich schneller erreichen.

. . .

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.

Anzeige

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!

. . . Reklame

Schnelle Ladezeiten sind absolut wichtig. Google und der Leser honorieren das. Mit GeneratePress machen Sie Ihre WordPress-Website zum Rennboliden. Jetzt kostenlos installieren.

. . .

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.

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.

. . . Reklame

Unzufrieden mit dem Hoster, oder neue Website am Start? Setzen Sie auf Kinsta, dem Managed Hosting Provider. Kostenlose Demo.

. . .

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:

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.

Ä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.

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:

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.

https://gist.github.com/anonymous/faec409f9e620c55f01ce7356b311fec
Wenn du den Pfad zur wp-config.php korrekt angepasst hast, dann sollte deine Website anschliessend funktionieren.

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

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

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:

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:

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:

https://gist.github.com/anonymous/a40a17173a2f2ac1f28b12862f0f8ad5
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:

https://gist.github.com/anonymous/2c5829ebdacdb86935c5e056b56ea552
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:

https://gist.github.com/anonymous/59e2fcf9aa5a73ea4188d4c7c110c57b
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


So schützen Sie Ihre Website vor Hackern

Das beliebte Content Management-System WordPress ist in einer Standard-Installation leider nicht als allzu sicher zu bezeichnen. Es ist für einen Hacker geradezu einfach, in die Webseite einzudringen, sie zu verseuchen, als Spamschleuder zu missbrauchen oder ähnliches. Die Unsicherheit fängt bereits damit an, dass WordPress den Benutzernamen als Klasse verwendet. So müssen potenzielle Hacker nur noch das Passwort herausfinden, um die betreffende Webseite zu kapern. Um das zu verhindern, stelle ich im folgenden Beitrag einige einfach umzusetzende, aber sehr sinnvolle und effiziente Tricks vor.

Vorab: Kann es überhaupt absolute Sicherheit geben?

Der Begriff Sicherheit bezieht sich auf ein bestimmtes Szenario und ist dort binär: Entweder ein System ist gegenüber genau diesem Szenario sicher oder eben nicht. Soll heißen: wenn jemand über mehr als eine Methode, sehr viel Erfahrung und beste Software verfügt, wird er es schaffen, Ihre Webseite zu hacken.

Die gute Nachricht ist jedoch, dass die meisten Angriffe gegen WordPress-Webseiten nicht von erfahrenen Hackern, sondern von Bots oder sogenannten Script-Kiddies durchgeführt werden. Und je mehr Maßnahmen Sie gegen das Gehacktwerden ergreifen, desto geringer werden die Chancen, dass die Hacker oder Bots erfolgreich sind.

1. Sicherheit fängt bei der Installation von WordPress an

Folgende Einstellungen in der wp-config.php dürfen auf keinen Fall fehlen:

Die Sicherheitsschlüssel in der wp-config.php

Die Sicherheitsschlüssel in der wp-config.php


WordPress bietet Ihnen auf https://api.wordpress.org/secret-key/1.1/salt/ den Service, diese Keys zu generieren. Nutzen Sie ihn daher, da diese Schlüssel wirklich zur Sicherheit Ihrer Webseite beitragen.

Tauschen Sie den generierten Zeichenblock einfach gegen den Originalblock in der wp-config.php aus.

Das Tabellenpräfix in der wp-config.php

Das Tabellenpräfix in der wp-config.php


Das Tabellenpräfix sollte auf keinen Fall auf dem Standard „wp_“ gelassen werden. Dieser Wert wird nur einmalig zugewiesen, Sie müssen sich daher nicht merken, was Sie eingeben. Je kryptischer der Wert, desto besser. Beispiel: WdFtVXeeDff_wp_

Zugriff von außen auf die wp-config.php verbieten

Damit erst gar nicht die Chance für Hacker entstehen kann, auf diese wirklich wichtige Datei zugreifen zu können, verbieten wir jetzt per .htaccess den Zugriff von außen.

# Zugriff auf wp-config.php verbieten
<files wp-config.php>
Order deny,allow
deny from all
</files>

Übrigens müssen sich .htaccess und wp-config.php im selben Verzeichnis befinden.

Standard-Administrator löschen

Als nächstes sollten Sie den Standard-Administrator admin, der von WordPress bei der Installation angelegt wird, löschen. Denn vom Standard-Admin mit der von WordPress zugewiesenen ID #1 gehen auch die Bösewichter und Bots aus. Die müssten dann also nur noch Ihr Passwort erraten und dann…
Legen Sie als erstes über Benutzer => Neu hinzufügen einen neuen Administrator an, der nicht Admin oder Administrator heißt. Dann loggen Sie sich aus. Anschließend loggen Sie sich mit den neuen Daten wieder ein und löschen den alten Account.

Wählen Sie ein sicheres Passwort

Je populärer die Webseite ist, desto größer stehen die Chancen, gehackt zu werden. Wenn Sie ein schwaches Passwort wählen, machen Sie es den bösen Buben nur noch leichter.

Das Passwort sollte mindestens 7 Zeichen lang sein. Um es sicherer zu machen, verwenden Sie Groß-/Kleinschreibung, Ziffern und Symbole wie ! ” ? $ % ^ & ).

Ich persönlich bin etwas paranoider, meine Passwörter sind 25 Zeichen lang.

Die Autor CSS-Klasse aus den Kommentaren entfernen

Standardmäßig fügt WordPress den Loginnamen als Klasse zu den Kommentaren hinzu (siehe Bild ganz oben). Um das zu verhindern, fügen Sie einfach folgenden Code in Ihre functions.php ein:

// Security: Hide Usernames from Classes
function andys_remove_comment_author_class( $classes ) {
foreach( $classes as $key => $class ) {
if(strstr($class, "comment-author-")) {
unset( $classes[$key] );
}
}
return $classes;
}
add_filter( 'comment_class' , 'andys_remove_comment_author_class' );

Als nächstes sollte noch die WordPress-Version aus dem Headbereich des HTML-Quelltextes entfernt werden, da anhand der Versionsnummer Sicherheitslücken herausgefunden werden können. Folgenden Codeschnipsel schreiben Sie dazu ebenfalls in die functions.php.

// Security: Hide WordPress Version in Sourcecode Head
remove_action('wp_head','wp_generator');

2. WordPress-Installation und Plugins immer zeitnah updaten

Mit der Veröffentlichung einer neuen WordPress-Version steigen auch die Chancen, dass ältere Versionen gehackt werden. Denn mit jedem neuen Release werden die Schwachstellen beschrieben, die mit eben diesem Release gefixt wurden.

Auch Plugins sind immer wieder das Einfalltor für Angriffe. Deswegen achten Sie bitte darauf, WordPress und alle Plugins immer auf den neuesten Stand zu bringen.

Das Script TimThumb.php zur Bildverkleinerung

Das wirklich nutzbringende Script timthumb.php hatte in letzter Zeit einige Sicherheitslücken, die von Hackern brutal ausgenutzt wurden. Aus diesem Grund ist es extrem wichtig, dieses Script immer auf dem neuesten Stand zu halten. Viele kommerzielle und auch nichtkommerzielle Themes nutzen dieses hervorragende Script. Das ist jedoch dem stolzen Besitzer einer WordPress-getriebenen Webseite meist nicht bewusst. Um herauszufinden, ob auch Ihre Webseite dieses Script nutzt, sollten Sie sich das Plugin Timthumb Vulnerability Scanner installieren. Die jeweils neueste Version von TimThumb.php können Sie sich via Googlecode herunterladen.

3. Sichern Sie den Adminbereich ab

Der Adminbereich ist das Herz einer WordPress-Installation. Ist diese Hürde erst einmal genommen, kann ein Hacker alles mit der Webseite anstellen, was er will. Zum Beispiel alles löschen…

Erst vor kurzem wurde der Premium WordPress-Theme Provider woothemes.com gehackt. Die komplette Datenbank sowie alle Backups wurden von den Hackern auf dem Server gelöscht. Lesen Sie hier, wie es woothemes ergangen ist.

Um eine solche Katastrophe zu verhindern, sind nur einige kleine Schritte notwendig.

Nutzen Sie das Plugin „Limit Login Attempts“

Das Plugin Limit Login Attempts bietet Ihnen gleich mehrere Vorteile. Erstens reduziert es die Anzahl der möglichen Login-Versuche, zweitens ändert es die überdetaillierten Fehlermeldungen (bei nicht-erfolgreichen Loginversuchen) von WordPress ab.

Standardmäßig bietet WordPress Ihnen so viele Loginversuche an, wie Sie benötigen. Bei einem Login-Fehler zeigt es Ihnen akribisch auf, ob Benutzername oder Passwort falsch waren. Limit Login Attempts ändert die Fehlermeldung dahingehend, dass nur noch anzeigt wird, dass die Eingabe fehlerhaft war. Es wird jedoch nicht mehr deutlich, was genau der Fehler war.

Die Einstellungen des Limit Login Attempts Plugins


Ein weiterer Vorteil ist, dass das Plugin jeden Hackversuch mit der IP-Adresse, von der der Angriff ausging, protokolliert. Dies kann man anschließend nutzen, um die betreffenden IP-Adressen per .htaccess zu sperren.

Limit Login Attempts speichert die IP-Adressen, von denen Hackversuche ausgegangen sind


Einen fehlerhaften Loginversuch stellt das Plugin nun wie folgt dar:

Darstellung eines Login-Fehlers mit dem Plugin Limit Login Attempts

Schützen Sie den Adminbereich doppelt

Der Adminbereich einer WordPress-Webseite ist das schwächste Glied in der Kette. Wer diese Hürde nimmt, ist in Ihrer Webseite und kann alles damit anstellen, was er will…
Die Idee ist, den Adminbereich mittels eines vorgeschalteten Passwortes bereits zu schützen, bevor er aufgerufen werden kann.

Der Adminschutz mit .htaccess und .htpasswd


Die Einrichtung eines solchen, zusätzlichen Schutzes geht relativ leicht vonstatten.

Als erstes gilt es eine leere .htpasswd Datei zu erzeugen. Hierzu erstellt man mit einem reinen Texteditor eine leere Datei, nennt sie .htpasswd.txt und lädt sie in das Hauptverzeichnis des Servers. Im Anschluss benennt man sie auf dem Server in .htpasswd um und lädt sie auf den heimischen Rechner runter. Nun erzeugen wir mit dem Htpasswd Generator eine Kombination aus Benutzername und Passwort und speichern sie in die .htpasswd. Sie lässt sich mit dem Editor öffnen und speichern. Diese Datei wird nun in das Hauptverzeichnis des Servers zurück geladen.

Nun ergänzen wir die .htaccess Datei, die ebenfalls im Hauptverzeichnis des Servers liegt, mit einigen wenigen Zeilen Code.

<Files wp-login.php>
  AuthName "Admin-Bereich"
  AuthType Basic
  AuthUserFile /pfad/zu/.htpasswd
  require valid-user
</Files>
<FilesMatch "(.htaccess|.htpasswd|wp-config.php|liesmich.html|readme.html)">
  order deny,allow
  deny from all
</FilesMatch>

Wichtig ist, bei dem obigen Code darauf zu achten, dass der korrekte Pfad zur .htpasswd angegeben wird. Nun ist der Administrationsbereich doppelt gut geschützt.

Codebeispiel und Quelle: „Mehr Sicherheit für WordPress durch den Admin Schutz“ (ebiene.de von Segej Müller nicht mehr online)

Zusammenfassung

Durch die Kombination aller oben aufgeführten Maßnahmen haben wir nun eine recht hohe Sicherheitsschwelle erreicht. Ein Eindringen in die WordPress-Webseite wird nur noch wirklichen Könnern und Spezialisten gelingen. Ich hoffe, durch diesen Artikel meinen Beitrag zu einer verbesserten Sicherheits-Philosophie geleistet zu haben.


WordPress gehackt? Das musst du jetzt tun!

Der Schock ist groß: du stellst fest, dass deine WordPress-Website gehackt wurde. Eine neue Startseite empfängt dich mit den Worten: Hacked by XYZ. Der Schweiß bricht dir aus und dein Herz schlägt schneller. Du kannst nicht mehr klar denken und weißt nicht, was nun zu tun ist. Dabei ist es gar nicht so schwer, eine gehackte WordPress-Seite wieder zu bereinigen. Wir zeigen dir in diesem Artikel, wie es geht.

WordPress gehackt? Das musst du jetzt tun!


Zuerst einmal: atme tief durch und bekomme keine Panik. So schlimm ist das nicht und du befindest dich mit deiner gehackten Seite in guter Gesellschaft. Das ist schon vielen Menschen passiert, unter anderem auch mir. Daher zeige ich dir jetzt, wie einfach du das Problem lösen kannst.

Die einfachste Möglichkeit ist, die Website aus einem früheren Backup wiederherzustellen. Du hast dich doch rechtzeitig um eine Backup-Lösung gekümmert? Wenn ja, kein Problem. Spiele einfach ein etwas jüngeres Backup wieder ein, aus einer Zeit, als deine Website noch nicht gehackt war. Ändere nun noch alle Passwörter und nutze eine Zwei-Faktor-Authentifizierung und dein Problem ist Geschichte. Solltest Du kein Backup besitzen, dann lies weiter. Wir beheben nun Schritt für Schritt das Problem.

Gehackt? Halb so schlimm. Halte dich an die folgende Anleitung

1 – Kontrolliere deinen Computer auf Trojaner

Der erste Schritt mag sich profan anhören, ist jedoch sehr wichtig. Denn ein Trojaner auf deinem Computer kann dafür gesorgt haben, dass einem Angreifer das Passwort für deine Website bekannt wurde. Sorge bei deinem Antivirenprogramm für die neuesten Virendefinitionen und scanne deinen Computer. Wenn nichts gefunden wird, sehr gut. Überprüfe den Rechner trotzdem nochmal mit der Kaspersky Rescue Disc. Findet auch diese nichts, kannst du fortfahren.

2 – Sorge dafür, dass deine Website nicht mehr öffentlich zugänglich ist

Maintannance Mode aktivieren


Dieser Schritt ist sehr wichtig, weil deine Website nun unter Umständen Schadsoftware verbreitet und daher von Google aus dem Index genommen werden kann. Die schnellste Möglichkeit, die Website nicht mehr erreichbar zu machen, ist die Installation eines Plugins für den sogenannten „Maintenance Mode“, den Wartungsmodus. Solltest du dich also noch in dein WordPress einloggen können, installiere das Plugin »WP Quick Maintenance« und aktiviere es. Gehe in die Einstellungen des Plugins und aktiviere dort den Wartungsmodus. Nun sieht jeder Besucher nur noch die Wartungsseite.

Solltest Du keinen Zugriff mehr auf den Adminzugang von WordPress haben, dann setze dein Passwort zurück. Hier findest du eine gute Anleitung zum Zurücksetzen des Passworts.

3 – Ändere alle Passwörter

Ändere sofort alle Passwörter. Mit den Passwörtern auf deinem Computer solltest du anfangen, hast du dort keine vergeben, hole dies nach. Denn niemand anderes sollte Zugriff auf deinen Computer haben. Wenn du dich noch in dein WordPress einloggen kannst, ändere auch dort sofort die Passwörter aller Accounts. Einen recht guten Generator für sichere Passwörter findest du hier. Zudem solltest du auch die Passwörter des (S)FTP-Zugangs und der WordPress-Datenbank ändern. Ebenso das Master-Passwort deines Webhosters.

4 – Mache ein Backup aller WordPress-Dateien und der Datenbank

Logge dich mittels (S)FTP auf deinem Server oder in dein Webhosting-Paket ein und lade sämtliche WordPress-Dateien auf deinen Desktop herunter. Achte ganz besonders auf den Ordner „uploads„. Dieser muss definitiv gesichert werden, denn er enthält alle deine hochgeladenen Dateien und Bilder. Du findest ihn unter »wp-content => uploads«. Lade diesen Ordner extra auf deinen Desktop, denn du wirst ihn später noch benötigen.

Mache nun ein Backup deiner Datenbank. Hierzu musst du dich in die Verwaltungsoberfläche deines Webhosters einloggen und dort „phpMyAdmin“ wählen. Anschließend wählst du deine Datenbank an und gehst auf „Exportieren“. Exportiere die Datenbank als „SQL“ und wenn möglich als .ZIP-Datei. Vergiß nicht, auch die wichtige Datei ».htaccess« zu sichern. Auch diese Datei wird später noch benötigt, da WordPress ohne sie nicht richtig funktioniert.

Solltest du einen Mac statt eines PCs nutzen, musst du die Anzeige der versteckten Dateien aktivieren, denn alle Dateien mit einem Punkt vor dem Dateinamen sind für Mac OS X versteckte Systemdateien.

5 – Alle Plugins und Themes neu besorgen

WordPress-Plugins


Besorge dir alle verwendeten Plugins frisch von WordPress.org oder eben von dem Unternehmen, bei dem du die Plugins gekauft hast. Ebenso besorge dir eine frische Version des von dir verwendeten WordPress-Themes. Plugins und Themes sind sehr beliebte Bereiche, um Schadsoftware und Backdoors (Hintertüren) zu hinterlegen. Damit die Website wirklich bereinigt werden kann, müssen Themes und Plugins frisch installiert werden.

6 – Wichtige Dateien und Ordner überprüfen

wp-config.php


Suche dir aus deinem Backup die Dateien »wp-config.php« und ».htaccess« heraus und überprüfe Sie. Die »wp-content.php« sollte nicht viel mehr als die Zugangsdaten zu deiner WordPress-Datenbank enthalten und die Dinge, die in jeder frischen Version der Datei stehen, wie zum Beispiel die „Authentication Unique Keys and Salts“; also die Sicherheitsschlüssel. Wenn du nicht ganz sicher bis, wie die originale Version der Datei aussieht, hier findest Du sie.
Im Anschluss kontrolliere die ».htaccess«-Datei, ob sich dort Dinge eingeschlichen haben, die dort nicht hingehören. Bist du dir nicht sicher, lösche den Inhalt der Datei einfach. Im WordPress-Codex findest du den Inhalt einer Standard-.htaccess-Datei. Kopiere den Code in die von dir bereinigte Datei hinein und speichere sie ab. Beide Dateien benötigst du für die Wiederherstellung deiner Website.

7 – Ordner »uploads« kontrollieren

Der Ordner »uploads« ist sehr wichtig für den Erfolg der Wiederherstellung, denn er enthält alle hochgeladenen Dateien und Bilder. Wird er gelöscht, dann existiert deine WordPress-Seite nur noch ohne Bilder. Öffne daher den Ordner und suche in ihm und in allen Unterordnern nach .PHP-Dateien. Solltest du fündig werden, lösche sie alle. Sie gehören dort in den meisten Fällen nicht hinein. Sollte ein Plugin in diesem Ordner eine PHP-Datei benötigen, so wird sie später neu angelegt.

8 – Alle Dateien vom Server löschen

Logge dich über den (S)FTP-Zugang auf deinen Webserver oder in dein Webhosting-Paket ein und lösche alle Dateien deiner WordPress-Installation. Wirklich alle Dateien. Lasse keine einzige übrig.

9 – Neues WordPress und wichtige Dateien hochladen

Neues WordPress hochladen


Besorge dir von WordPress.org eine neue WordPress-Version und lade sie mittels (S)FTP-Zugang auf deinen Server oder in dein Webhosting-Paket hoch. Die Sicherheitsschlüssel in der »wp-content.php«-Datei solltest du neu vergeben, der Generator unter der URL „https://api.wordpress.org/secret-key/1.1/salt/“ hilft dir dabei.

Anschließend lädst du die »wp-content.php«- und die ».htaccess«-Datei wieder in das Hauptverzeichnis deiner WordPress-Installation. Öffne nun auf dem Server den Ordner »wp-content« und lade deinen »uploads«-Ordner dort hinein. Jetzt solltest du wieder Zugang zu deinem WordPress haben. Logge dich nun in die Administrator-Oberfläche ein.

10 – Neue Plugins und Themes installieren

Alle Plugins, die du dir frisch besorgt hast, kannst du nun neu installieren. Daran anschließend installierst du eine frische Version deines Themes. Bitte, tue dir selbst einen Gefallen und verwende keine alten Versionen aus deinem Backup. Die Chancen, dass sich darin Schadcode befindet, sind sehr groß. Verwende daher nur neue und frische Versionen.

11 – Datenbank auf neue WordPress-Version aktualisieren

Solltest du immer die neueste Version von WordPress verwendet haben, ist dieser Schritt überflüssig. Wenn du allerdings nicht die neueste Version genutzt hast, dann muss die Datenbank auf die neue Version aktualisiert werden. Gib folgende URL in die Adresszeile deines Browsers ein:

http://www.deinedomain.de/wp-admin/upgrade.php

Folge anschließend den angegebenen Schritten und aktualisiere die Datenbank.

12 – Kontrolliere die richtigen Dateiberechtigungen auf dem Server

Nun muss dafür gesorgt werden, dass die Dateien und Ordner nicht mehr von außen bearbeitet werden können. Denn zu viele Berechtigungen öffnen Hacker Tor und Tür zu deiner WordPress-Installation. Passe daher die Dateiberechtigungen wie folgt an:

Datei-/Ordnername vom Hauptpfad aus gesehenDateiberechtigungvererben*
DAS HAUPTVERZEICHNIS705ja
/.htaccess404nein
/wp-config.php404nein
/index.php404nein
/wp-blog-header.php404nein
/wp-admin/705ja
/wp-includes/705ja
/wp-content/705ja

13 – Scanne deine Website mit dem Exploit Scanner

Exploit Scanner WordPress Plugin


Installiere das WordPress-Plugin »Exploit Scanner« und scanne deine Website damit. Sollte sich nun in der Datenbank noch Schadcode befinden, wird das Plugin diesen Schadcode auch finden. Bedenke eines: Schadcode kann sich nun nur noch in der Datenbank befinden, denn alle anderen Dateien sind frisch und neu installiert oder im Fall des »uploads«-Ordners von schädlichen Dateien bereinigt. Wird in der Datenbank Schadcode gefunden (was relativ unwahrscheinlich ist), dann solltest du einen Profi an die Sache lassen, denn die Datenbank ist das Herz von WordPress. Ein Fehler, und die Website ist Geschichte.

14 – Testen – Testen – Testen

Öffne deine Website im Inkognito-Modus des Browser und teste, ob der Hack verschwunden ist. Teste ebenso, ob sich alle Beiträge und Seiten fehlerfrei aufrufen lassen. Prüfe die Funktionen und die Fehlerfreiheit einmal eingeloggt und einmal nicht eingeloggt, da manche Hacks nur im nicht eingeloggten Zustand sichtbar sind.

Findest du nichts und alles funktioniert wie früher: Freue dich, du hast deine Website wieder!

15 – Deaktiviere den Wartungsmodus

Da nun alles wieder fehlerfrei funktioniert, kannst du den Wartungsmodus wieder deaktivieren und die Website damit live schalten.


Securityheaders.io: Wie sicher ist dein Server wirklich?

Die Sicherheit ist ein bei Website-Betreibern gern vernachlässigtes Thema. Um alles wird sich gekümmert, neue Funktionen implementiert und für ein schickes Design gesorgt. Doch eines Tages ist es vielleicht zu spät und deine Website ist gehackt worden. Um dieses wirklich unschöne Gefühl niemals Realität werden zu lassen, bedarf es einer Strategie und etwas Einsatz. Wenn du zudem noch einen eigenen Server hast, solltest du dich erst recht um seine Sicherheit kümmern. Diese umzusetzen ist oftmals recht einfach. Um dich dabei zu unterstützen, stelle ich dir heute das Online-Tool securityheaders.io vor, das dir die Schwächen deines Servers zeigt und dir Ratschläge gibt, wie du sie abstellst.

Securityheaders: Wie sicher ist dein Server wirklich?

Securityheaders.io – Analyse der HTTP-Header

securityheaders.io


Securityheaders.io heißt der Online-Dienst, der anhand der gesendeten HTTP-Response-Header feststellen kann, wie sicher dein Server ist. Natürlich existieren mittlerweile viele Dienste, welche die HTTP-Response-Header analysieren können. Doch das Besondere an securityheaders ist das Rating-System, in dem die Ergebnisse einsortiert werden. Dieses Rating-System sortiert die Ergebnisse in einen Bereich von A bis F ein. Das A steht hierbei für einen hervorragend abgesicherten Server, das F hingegen steht für einen sehr schlechten Sicherheitszustand.

Der Online-Dienst mit seinem Betreiber Scott Helme möchte zu mehr Sicherheit im Internet beitragen. Denn es werden nicht nur die Response-Header analysiert, sondern auch handfeste Tipps gegeben, wie die Sicherheitsprobleme zu beheben sind. Denn das Senden der richtigen HTTP-Response-Header verspricht ein hohes Maß an zusätzlicher Sicherheit, und sollte daher umgesetzt werden. Der zeitliche Aufwand hierfür ist vergleichsweise gering, der Zuwachs an potenzieller Sicherheit jedoch groß.

Sehr viele Server sind potenziell unsicher

Wer mit dem Online-Tool etwas herum experimentiert, wird schnell feststellen, dass der überwiegende Teil der geprüften Server potenziell unsicher ist. Egal, welche Domain ich eingab und testete, jedes Mal bekam ich ein F zu sehen. Auch bei meinen eigenen Websites. Bisher ging ich davon aus, dass ein Managed-Server oder ein Managed-WordPress-Hosting sicher sei und man sich um diesen Bereich nicht kümmern müsse. Nun weiß ich, dass Managed nicht gleich sicher bedeutet. Auch Shared-Hosting-Systeme sind nicht sicherer, denn auch dort bekam ich ein F zu sehen.

Ein schlechtes Scan-Resultat bei securityheaders


Eine potenziell schlechte Sicherheit wird nicht nur mit einem F im Rating-System versehen, sondern auch noch farblich rot unterlegt, um die Unsicherheit zu visualisieren. Sehr sichere Server hingegen bekommen demzufolge eine grüne Farbe, wie ein Scan der securityheaders-Website zeigte.

Ein gutes Scan-Resultat bei securityheaders

Gute Erklärungen der Ergebnisse und Tipps zum Umsetzen

Jedes (schlechte) Scan-Resultat zeigt genau auf, welche HTTP-Response-Header fehlen. Eine kurze Erklärung erläutert dir, warum diese Header wichtig sind und welche Auswirkungen die fehlenden Header haben können.

Die Erklärungen zu den fehlenden Response-Headern

Die fehlenden Response-Header meiner Website

Die einzelnen Ergebnisse sind mit Links versehen, hinter denen sich gute und fundierte Fachartikel zu den einzelnen Bereichen verbergen. Auf diese Weise lernst du viel über die jeweiligen Header. Und du weißt im Anschluss genau, was du umsetzen solltest und vor allem auch warum. Hinter dem fehlenden Header »Content-Security-Police« verbirgt sich der Artikel „Content Security Policy – An Introduction„. Zudem existieren gute Erklärungen in deutscher Sprache zu diesem Bereich.

Wie HTTP-Response-Header Server sicherer machen

Der »Content-Security-Police-Header« ist ein guter Schutz gegen das Problem des Cross-Site-Scripting. Sogenannte XSS- oder Cross-Site-Scripting-Angriffe gehören zu den größten Sicherheitsproblemen bei Webanwendungen. Hierbei geht es um einen Schutz gegen von außen in die Website eingebrachten Code. Mittels des »Content-Security-Police«-Headers kann genau festgelegt werden, auf welche Scripte von außen zugegriffen werden kann. Die Grundeinstellung soll nur die Ausführung von Scripten erlauben, die auf dem eigenen Server liegen. Zusätzlich definiert man alle externen Scripte, auf die zugegriffen werden muss. Zum Beispiel Google Adsense und Google Analytics Code. Jeder andere – externe – Code wird ignoriert und demzufolge nicht ausgeführt.

Dies gilt auch für Bilder, Frames und Videos. Also für alle Dinge, die nicht auf dem eigenen Server liegen. Diese Ausnahmen festzulegen ist eine mühsame Angelegenheit. Jedoch wird man mit einem erheblichen Zuwachs an Sicherheit belohnt.

Weitere Response-Header

Vier fehlende HTTP-Response-Header ergab der Scan meiner persönlichen Website. Unter anderem der bereits angesprochene »Content-Security-Header«, der »X-Frame-Options-Header«, der »X-XSS-Protection-Header« und der »X-Content-Type-Options-Header«.

Der »X-Frame-Options-Header« schützt deine Website davor, in einem Frame ausgeführt zu werden. Es existieren durchaus Menschen, die sich im Web mit fremden Federn schmücken wollen. Diese Menschen entwickeln einen Rahmen, in dem deine Website dann mittels eines iFrames integriert wird. So kommt man an gute Inhalte, ohne sie selbst verfassen zu müssen.

Der »X-XSS-Protection-Header« konfiguriert den internen „Cross-Site-Scripting-Filter“, der in den meisten Browsern bereits integriert ist. Mit der empfohlenen Konfiguration „X-XSS-Protection: 1; mode=block“ schützt du deine Besucher vor dem Angriff auf ihren Computer. Folgende Browser unterstützen den Filter: Internet Explorer, Chrome und Safari (Webkit).

Der »X-Content-Type-Options-Header« kann nur den Wert „nosniff“ setzen. Dieser Wert verhindert, dass Internet Explorer und Google Chrome nach anderen MIME-Typen suchen, als durch den deklarierten Content-Type (zum Beispiel text/html) vorgegeben wurde. Google Chrome wird dadurch auch am Herunterladen von Erweiterungen gehindert. Somit sind sogenannte Drive-by-Download-Attacken nicht mehr möglich. Euer Rechner kann somit nicht mehr mit Schadcode infiziert werden. Das gilt natürlich nur für die Website, die diesen Response-Header gesetzt hat.

Fazit

Der Online-Dienst securityheaders kann für erheblich mehr Sicherheit sorgen. Wir können durch den Einsatz der richtigen HTTP-Response-Header nicht nur den eigenen Server absichern, sondern auch die Sicherheit unserer Besucher verbessern. Das Online-Tool zeigt dir genau auf, wo Sicherheitslücken bestehen und wie diese geschlossen werden können.

Links zum Beitrag:


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.

6 Antworten

    1. 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.

  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 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.

    1. 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…

Schreibe einen Kommentar

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

On Key

Related Posts

Eine Frau mit Latte

Webdesign für eine erfolgreiche Website

Die Website ist die Visitenkarte Ihres Unternehmens. Doch sie ist noch viel mehr als das. Sie ist zentrales Kommunikationsinstrument und erste Anlaufstelle für potenzielle Neukunden. Diese erwarten aussagekräftige Inhalte und ein nutzerfreundliches Design. Wer bei der Onlinepräsenz Professionalität walten lässt, macht auf sich aufmerksam und gewinnt mehr Kunden.

Eine Fußgängerzone im späten Sonnenschein.

So funktioniert User-Testing für den kleinen Geldbeutel

Ganz ehrlich: Sie wissen schon lange, dass User-Feedback essentiell ist, doch das Testen mit echten Usern kommt aus Zeit- und Kostengründen immer zu kurz? Mit dem Feedback Ihrer Nutzer decken Sie Probleme auf, bevor diese zum Problem werden. Heute zeige ich Ihnen, wie Benutzertests auch ohne großes Budget gelingen.