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.
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
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
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
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
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 gesehen | Dateiberechtigung | vererben* |
---|---|---|
DAS HAUPTVERZEICHNIS | 705 | ja |
/.htaccess | 404 | nein |
/wp-config.php | 404 | nein |
/index.php | 404 | nein |
/wp-blog-header.php | 404 | nein |
/wp-admin/ | 705 | ja |
/wp-includes/ | 705 | ja |
/wp-content/ | 705 | ja |
13 – Scanne deine Website mit dem Exploit Scanner
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.
Fazit
Eine gehackte WordPress-Website wiederherzustellen ist nicht total einfach, aber mit unserer Anleitung auch halb so wild. Wichtig ist nur, dass du einen ruhigen Kopf bewahrst und systematisch vorgehst. Dann kann fast nichts passieren.
So schützt du deine 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
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 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.
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.
Einen fehlerhaften Loginversuch stellt das Plugin nun wie folgt dar:
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.
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.
Links zum Beitrag:
- Dr. Web: Nervenschonende WordPress Backup-Strategien für jedermann
- Dr. Web: WordPress: 10 Dinge, auf die du vor dem Launch deiner Website achten solltest
- Dr. Web: WordPress-Sicherheit: So schützt du deine WordPress Website
- WordPress Codex – Standard .htaccess-Datei
- WordPress Codex: Resetting your password
- Generator für sichere Passwörter
(dpe)
Ich hatte auch schon einmal das Problem das meine Seite gehackt wurde, daher kann ich aus eigener Erfahrung sagen das die Tipps hier sehr hilfreich sind. Man betreibt ja keine Seite mit dem Gedanken das sie gekapert wird, vor allem als Technik-Laie und so wird man meist unvorbereitet getroffen. Ich habe damals die Gelegenheit genutzt um gleich einmal komplett in die Überarbeitung zu gehen und auszumisten was echt gut war. Allerdings ist dann der „Maintenance-Mode“ für eine etwas längere Unterbrechung unsexy.
Ich hatte damals nach eine eleganteren Lösung als den Maintenance-Mode gesucht, die besser zu verwalten ist aber dennoch die komplette Seite nur über einen Login erreichbar macht (auch die Suchmaschinen aussperrt), leider ohne Erfolg. Klar es gibt 1000de WordPressplugin, aber in der Situation ist man dann vorsichtiger bei kostenlosen oder fremdsprachigen angeboten.. die meist auch schon viel zu komplex waren.
Ich würde eher zu einem anderen CMS wie NEOS, Joomla oder Drupal umsteigen.
Alles schön ausführlich beschrieben, aber neben dem Wiederherstellen der Site ist doch die Ursachenforschung etwas zu kurz gekommen. Habe ich das Sicherheitsloch nicht gestopft, kann ich die Seite so oft und so frisch hochziehen, wie ich will – sie wird innerhalb von Minuten oder Stunden wieder gekapert.
Gut zusammengefasst, danke! Da ist glaub ich noch ein Typo drin:
„Die »wp-content.php« sollte nicht viel mehr als die Zugangsdaten zu deiner WordPress-Datenbank enthalten…“ Sollte wp-config.php heißen.
Hallo, der Artikel ist interessant und schon in ähnlicher Form öfter publiziert. Ich frage mich aber wieso immer noch 705 statt 750 als Dateiberechtigung angegeben wird. Ist das ein Zahlendreher?
Hallo,
Diesen Artikel bookmarke ich mir. Gute Auflistung. Meine erste Reaktion wäre bei so einer Situation, den Hoster anzurufen um zu fragen ob er mir ein komplettes Backup einspielen kann von vor einer Woche z.B. Danach würde ich dann die Passwörter ändern. Ist das komplett daneben, oder doch auch ne (einfachere) Möglichkeit?
Vieel Grüße,
Sacha
Ich denke, dass es für ungeübtere Anwender evtl. schwierig sein könnte, festzustellen, wann der Hack tatsächlich stattgefunden hat, um das dem Hoster mitzuteilen (falls er überhaupt ältere Backups vorrätig hat). Muss ja nicht gleich sichtbar sein. Geübtere können das anhand von log-Dateien eher feststellen, aber wenn man´s nicht ganz genau weiß, ist die manuelle Methode wahrscheinlich sicherer.