Meine Website wurde gehackt: was jetzt zu tun ist¶
Fremde Inhalte auf der Startseite, eine Warnung von Google, Besucher, die auf Werbeseiten landen, oder eine Mail von uns über Schadcode: Diese Seite führt dich der Reihe nach durch, was zu tun ist.
Das war fast sicher kein Angriff auf dich persönlich
Dahinter steckt in aller Regel kein Mensch, der es auf dich abgesehen hat, sondern ein Programm, das ununterbrochen das halbe Internet nach bekannten Lücken absucht. Ob deine Seite ein Verein, ein Shop oder ein Blog ist, spielt dabei keine Rolle.
Das ist die gute Nachricht: Gefunden wurde eine offene Tür, nicht du. Und offene Türen lassen sich schließen.
Woran du es erkennst¶
| Anzeichen | Was dahintersteckt |
|---|---|
| Du hast Post von uns bekommen | der häufigste Fall. Unsere Server prüfen laufend auf Schadsoftware, wir melden uns mit einer Liste der Funde |
| Fremde Inhalte, Werbung oder eine ganz andere Seite | die sichtbarste Form, oft nur für Besucher von Suchmaschinen |
| Google zeigt eine rote Warnseite | Google hat Schadcode entdeckt und schützt seine Nutzer |
| Besucher werden woanders hingeleitet | eine Umleitung wurde eingebaut, oft nur für Handys |
| Deine Seite taucht mit fremden Suchbegriffen auf | versteckte Seiten wurden angelegt, etwa für Pillen oder Glücksspiel |
| Über deine Domain wird Spam verschickt | ein Skript verschickt in deinem Namen |
| Der Speicherplatz wächst ohne Grund | fremde Dateien wurden abgelegt |
| Die Seite ist plötzlich sehr langsam | häufig ein Programm, das im Hintergrund Rechenleistung abzweigt |
Meistens merken wir es zuerst
Die wenigsten Einbrüche fallen dem Betreiber selbst auf, denn eine befallene Seite sieht für ihn oft völlig normal aus. Umleitungen greifen häufig nur bei Besuchern von Suchmaschinen oder nur auf Handys, und ein Skript, das Spam verschickt, hinterlässt auf der Seite gar keine Spur.
Deshalb prüfen unsere Server laufend. Wenn du von uns eine Nachricht mit einer Dateiliste bekommen hast, ist das der Ausgangspunkt: Die Liste sagt dir, wo etwas gefunden wurde. Sie sagt dir aber nicht, ob es alles war, und genau darum geht es auf dieser Seite.
Nicht jede Auffälligkeit ist ein Einbruch
Eine weiße Seite oder ein Fehler 500 kommt viel häufiger von einem missglückten Update als von einem Einbruch. Sieh deshalb zuerst dort nach. → WordPress zeigt eine weiße Seite oder Fehler 500
Zuerst: was du nicht tun solltest¶
Nicht sofort alles löschen. Es ist verständlich, aber es zerstört die Spuren. Ohne die weißt du hinterher nicht, wie jemand hereingekommen ist, und schließt die Lücke nicht.
Die Seite nicht ausgiebig im Browser ansehen. Solange Schadcode aktiv ist, kann sie versuchen, auch deinen Rechner anzugreifen. Zum Aufräumen musst du sie nicht öffnen.
Nicht nur die gemeldeten Dateien löschen. Das ist der häufigste und teuerste Fehler. Wer eingebrochen ist, legt fast immer mehrere Hintertüren an unabhängigen Stellen an. Löschst du nur die eine, die auffiel, bist du in wenigen Tagen wieder da, wo du warst.
Nicht hektisch ein Backup einspielen. Erst muss klar sein, ob das Backup älter ist als der Einbruch. Sonst holst du dir den Schadcode zurück und hast zusätzlich deine neueren Inhalte verloren.
Schritt 1: Sichern, was da ist¶
So merkwürdig es klingt: Zieh zuerst eine Sicherung des befallenen Zustands.
Sie ist deine Rückversicherung, falls beim Aufräumen etwas kaputtgeht, und sie enthält die Spuren, mit denen sich der Weg des Einbruchs nachvollziehen lässt. Beschrifte sie deutlich, damit niemand sie später versehentlich einspielt. → Sicherung anlegen und wiederherstellen
Schritt 2: Alle Zugangsdaten wechseln¶
Geh davon aus, dass alles gelesen werden konnte, was auf dem Webspace liegt. Dazu gehören auch die Datenbank-Zugangsdaten, die im Klartext in den Konfigurationsdateien deines CMS stehen.
Wechsle deshalb alle davon:
- Kundenportal und cPanel
- FTP-Zugänge, auch die längst vergessenen
- Datenbank-Benutzer
- E-Mail-Postfächer, jedes einzeln
- Zugänge im CMS selbst, allen voran der WordPress-Administrator
- SSH, falls du es nutzt, siehe unten
Wichtiger noch: lösche, was du nicht kennst
Passwörter zu wechseln reicht nicht, wenn sich jemand einen eigenen Zugang angelegt hat. Genau das passiert fast immer, denn ein zusätzliches Konto überlebt jeden Passwortwechsel und fällt niemandem auf.
Geh deshalb diese vier Listen durch und lösche jeden Eintrag, den du nicht zuordnen kannst:
| Wo nachsehen | Worauf achten |
|---|---|
| WordPress → Benutzer | Administratoren, die du nicht angelegt hast. Oft mit unauffälligem Namen wie admin, wpuser oder support |
| cPanel → E-Mail Konten | Postfächer, die niemand im Haus nutzt |
| cPanel → FTP-Konten | Zugänge ohne erkennbaren Zweck |
| cPanel → Weiterleitungen | stille Kopien an fremde Adressen |
Im Zweifel löschen. Ein versehentlich entferntes Konto legst du in zwei Minuten neu an. Ein übersehenes fremdes Konto bedeutet, dass der Einbrecher jederzeit zurückkommen kann, ganz gleich wie oft du deine Passwörter änderst.
Sieh im CMS auch nach dem Datum der letzten Anmeldung. Ein Konto, das gestern aktiv war, obwohl niemand daran gearbeitet hat, ist ein eindeutiger Fund.
Wenn du SSH nutzt¶
Für SSH gilt dasselbe Passwort wie fürs cPanel. Wenn du das gewechselt hast, ist der Zugang per Passwort damit schon erledigt, ein zusätzlicher Schritt ist nicht nötig.
Anders ist es bei hinterlegten Schlüsseln. Ein Schlüssel funktioniert unabhängig vom Passwort weiter. Wer einen eingetragen hat, kommt also weiter herein, ganz gleich wie oft du das Passwort änderst.
Im cPanel: Sicherheit → SSH-Zugriff → SSH-Schlüssel verwalten — wie das geht
Dort stehen die hinterlegten Schlüssel. Geh die Liste durch:
Fremde Schlüssel entfernen. Das ist der wichtige Teil. Steht dort einer, den du nicht selbst eingetragen hast, gehört er sofort weg. Das ist eine Hintertür, die sonst dauerhaft offen bleibt.
Deinen eigenen Schlüssel wechseln? Nur, wenn der Rechner betroffen sein könnte, auf dem der private Teil liegt. Auf dem Server steht nämlich nur der öffentliche Teil, und mit dem allein kann niemand etwas anfangen.
Eine Ausnahme, die du prüfen solltest
Manche legen ihren privaten Schlüssel versehentlich auf dem Webspace ab, etwa beim Einrichten einer Übertragung. Wenn das bei dir der Fall ist, muss der Schlüssel ersetzt werden, denn dann konnte er mitgelesen werden.
Erkennbar an Dateien wie id_rsa oder id_ed25519 ohne die Endung .pub. Solche
Dateien gehören nie auf einen Webserver.
Und gleich die Anmeldung in zwei Schritten einschalten¶
Ein neues Passwort allein reicht nicht, wenn es auf demselben Weg wieder abhandenkommt. Mit der Anmeldung in zwei Schritten braucht es zusätzlich einen Code vom Handy, und ein gestohlenes Passwort nützt niemandem mehr.
Schalte sie an diesen drei Stellen ein:
| Wo | Wofür |
|---|---|
| Kundenportal | Verträge, Domains, Kündigungen |
| cPanel | die gesamte technische Verwaltung |
| Webmail | jedes Postfach einzeln, unter Sicherheit |
Nutzt du Zimbra, geht es dort ebenfalls, in den Sicherheitseinstellungen deines Kontos. Für Mailprogramme, die keinen Code abfragen können, legst du dort ein eigenes Anwendungspasswort an. → Zugänge absichern · Zimbra
Dich benachrichtigen lassen, wenn sich jemand anmeldet¶
Diese Einstellung ist gut versteckt, aber sie ist genau das, was du nach einem Einbruch haben willst: eine Nachricht, sobald sich jemand an deinem cPanel anmeldet.
Im cPanel: Einstellungen → Kontaktinformationen
Scroll dort zu Benachrichtigungseinstellungen und setz die Haken so:
- „Jemand meldet sich an meinem Konto an." → anhaken
- „Die Benachrichtigungen bei erfolgreicher Anmeldung deaktivieren." → Haken entfernen
Danach unten auf Speichern.
Die Option ist ab Werk ausgeschaltet
Standardmäßig ist der obere Haken nicht gesetzt und der untere doch — also genau andersherum als oben. Du bekommst also von Haus aus keine Meldung, wenn sich jemand anmeldet.
Die mittlere Zeile lässt du bewusst frei. Mit ihr bekämst du auch bei jeder eigenen Anmeldung aus dem gewohnten Netz eine Nachricht, und nach einer Woche liest sie niemand mehr. Ohne sie meldet sich das System nur, wenn die Anmeldung von woanders herkommt, und das ist genau der Fall, der dich interessiert.
Trag dort eine Adresse ein, die woanders liegt
Auf derselben Seite steht oben die Adresse, an die diese Nachrichten gehen. Nimm dafür kein Postfach aus diesem Tarif. Wer sich Zugang verschafft hat, könnte sonst die Warnung mitlesen und löschen, bevor du sie siehst.
cPanel weist an dieser Stelle selbst darauf hin.
Danach an alle Geräte denken
Nach dem Wechsel der Postfach-Passwörter musst du sie auf jedem Gerät nachziehen, auch beim Kopierer mit Scan-Funktion. Sonst probieren die es weiter mit dem alten und sperren deine Internetadresse aus. → Passwort geändert, und jetzt geht gar nichts mehr
Schritt 3: Den richtigen Weg zur Bereinigung wählen¶
Es gibt drei, und sie taugen unterschiedlich viel:
| Weg | Wann sinnvoll | Ehrliche Bewertung |
|---|---|---|
| Aufräumen | wenige Funde, du kennst die Installation gut | Verlockend, aber unsicher. Eine übersehene Hintertür genügt |
| Backup einspielen | du kennst den Einbruchszeitpunkt und hast eine Sicherung von davor | Meist der schnellste Weg. Wir bewahren zwölf Wochen auf, frag uns nach dem Zeitpunkt |
| Sauber neu aufbauen | im Zweifel immer | Der einzige Weg mit Gewissheit. Aufwendiger, aber danach ist Ruhe |
Das Backup ist oft der schnellste Weg, wenn der Zeitpunkt stimmt¶
Der entscheidende Satz dazu: Die Sicherung muss älter sein als der Einbruch. Spielst du eine neuere ein, holst du dir den Schadcode zurück und hast obendrein deine Arbeit der letzten Tage verloren.
Die gute Nachricht: Wir bewahren die Sicherungen zwölf Wochen lang auf. Du kannst also weit zurückgehen, auch wenn der Einbruch schon eine Weile zurückliegt und erst jetzt aufgefallen ist. Genau das ist der häufige Fall, denn viele Einbrüche bleiben wochenlang unbemerkt.
Woher weißt du, wann es passiert ist? Meist gar nicht selbst. Frag uns: Wir sehen in den Protokollen nach, wann die ersten auffälligen Dateien angelegt wurden, und nennen dir ein Datum. Erst damit kannst du die richtige Sicherung auswählen.
So gehst du vor:
- Uns nach dem Einbruchszeitpunkt fragen, bevor du etwas einspielst
- Eine Sicherung wählen, die deutlich davor liegt, im Zweifel ein paar Tage mehr
- Dateien und Datenbank gemeinsam zurückspielen, aus demselben Stand
- Vorher den aktuellen Stand sichern, siehe Schritt 1, damit neuere Inhalte nicht verloren sind
- Einspielen und danach sofort die Lücke schließen, siehe Schritt 5
Im Zweifel: nimm einfach die älteste
Wenn sich der Zeitpunkt nicht sicher eingrenzen lässt, geh lieber zu weit zurück als zu wenig. Bei den meisten Websites verlierst du dabei fast nichts.
Eine typische Firmen- oder Vereinsseite ändert sich über Wochen praktisch nicht: Leistungen, Impressum, Kontakt und Anfahrt stehen oft seit Jahren unverändert da. Eine Sicherung von vor zehn Wochen ist dann inhaltlich dieselbe Seite wie die von gestern, nur eben ohne den Schadcode.
Anders sieht es aus, wenn deine Seite laufend neue Inhalte bekommt: ein Shop mit Bestellungen, ein Blog mit regelmäßigen Beiträgen, ein Buchungssystem oder ein Forum. Dort steckt der Wert in der Datenbank, und da lohnt es sich, den Zeitpunkt genauer einzugrenzen.
Die Abwägung in einem Satz: Ein paar Wochen alte Inhalte kannst du nachtragen, eine übersehene Hintertür kostet dich die ganze Arbeit noch einmal.
Dateien und Datenbank zurückspielen, aus demselben Stand
Der Fehler, der jede zweite Bereinigung scheitern lässt: Es werden nur die Dateien zurückgespielt, die Datenbank bleibt, wie sie ist.
Damit ist der Einbruch nicht behoben, denn in der Datenbank steckt oft genauso viel:
- zusätzliche Administratoren, die sich jederzeit wieder anmelden können
- eingeschleuster Code in Beiträgen und Seiten, der bei jedem Aufruf mitläuft
- veränderte Einstellungen, etwa eine fremde Adresse für Systemmails oder eine eingebaute Umleitung
- versteckte Seiten, die für Suchmaschinen angelegt wurden
Nimm deshalb beides aus demselben Sicherungsstand. Eine alte Datei-Sicherung mit einer neuen Datenbank zu kombinieren führt außerdem oft dazu, dass die Seite gar nicht mehr läuft, weil die Versionsstände nicht zusammenpassen.
Und danach im CMS nachsehen, ob die Liste der Benutzer wirklich nur die enthält, die du kennst.
Das Backup allein löst gar nichts
Ein eingespieltes Backup bringt genau den Zustand zurück, in dem die Lücke noch offen war. Ohne den nächsten Schritt bist du in wenigen Tagen wieder da, wo du warst, manchmal schon in Stunden.
Deshalb gehören diese beiden Dinge unmittelbar zusammen: erst einspielen, dann sofort aktualisieren. Trenne die Seite dafür notfalls kurz vom Netz, indem du sie mit einem Passwortschutz versiehst, bis du fertig bist. → Verzeichnis mit Passwort schützen
Was tun mit Inhalten von nach dem Einbruch?
Beiträge, Bestellungen oder Bilder, die nach dem Einbruch dazugekommen sind, fehlen nach dem Einspielen. Hol sie einzeln aus der Sicherung, die du in Schritt 1 gezogen hast.
Aber nur die Inhalte, nicht ganze Ordner oder Programmdateien. Sonst kommt der Schadcode genau auf diesem Weg zurück.
Der sichere Weg im Detail¶
- CMS, Themes und Plugins frisch herunterladen und neu einspielen, nicht die vorhandenen Dateien behalten
- Nur Inhalte übernehmen, also Bilder, Dokumente, Uploads. Diese Ordner vorher auf PHP-Dateien durchsehen, dort gehört keine einzige hinein
- Die Datenbank prüfen, bevor du sie übernimmst. Auch dort wird Schadcode abgelegt, etwa in Beiträgen oder Einstellungen
- Alles, was du nicht zuordnen kannst, weglassen. Ein Plugin, das du seit Jahren nicht nutzt, kommt nicht wieder mit
Schritt 4: Nachsehen, wo sonst noch etwas steckt¶
Der Punkt, an dem die meisten Bereinigungen scheitern. Es reicht nicht, die Website-Dateien anzusehen:
Geplante Aufgaben. Ein Cronjob, der stündlich eine Datei neu anlegt, macht jede Bereinigung zunichte. Prüfe im cPanel unter Erweitert → Cron-Jobs, ob dort etwas steht, das du nicht selbst eingerichtet hast. → Cronjobs einrichten
Zusätzliche Zugänge. Sieh nach, ob im CMS neue Administratoren angelegt wurden, und im cPanel unter FTP-Konten, ob dort ein Konto steht, das du nicht kennst.
E-Mail-Weiterleitungen. Eine stille Weiterleitung, die alle Nachrichten mitkopiert, ist ein beliebtes Mitbringsel. Im cPanel unter E-Mail → Weiterleitungen und bei der Standardadresse nachsehen. → Über mein Postfach wurde Spam verschickt
Die Datei .htaccess. Dort werden gern Umleitungen eingebaut, die nur bei Besuchern von
Suchmaschinen oder nur auf Handys greifen. Deshalb fällt es dir selbst oft nicht auf.
→ .htaccess Grundlagen
Ungewöhnliche Dateien in Upload-Ordnern. In wp-content/uploads und vergleichbaren
Verzeichnissen gehören Bilder und Dokumente hin, niemals ausführbarer Programmcode.
Wenn du Git nutzt: das Repository gehört mit geprüft
Das ist die unangenehmste Falle überhaupt, weil sie nach der Bereinigung zuschlägt: Du räumst sauber auf, spielst das nächste Mal deine Änderungen ein, und der Schadcode ist zurück. Nicht weil du etwas übersehen hast, sondern weil er im Repository liegt.
Im cPanel: Dateien → Git™ Verwaltung
Drei Stellen sind zu prüfen:
| Was | Worauf achten |
|---|---|
| Der Inhalt des Repositorys | Wurde dort hineingeschrieben? Sieh dir die letzten Änderungen an, besonders solche, die du nicht selbst gemacht hast |
Die Datei .cpanel.yml |
Sie steuert, was beim Einspielen ausgeführt wird. Steht dort ein Befehl, den du nicht kennst, wird er bei jedem Deploy ausgeführt |
| Die Zugänge zum Repository | Liegt es bei einem Anbieter wie GitHub, prüf dort die Mitarbeiter und die hinterlegten Deploy-Schlüssel |
Behandle das Repository wie den Webspace selbst. Wenn es befallen ist, hilft es nicht, nur den Server zu bereinigen: Beim nächsten Einspielen wäre alles wieder da.
Bei Zweifeln lohnt der Blick in die Änderungshistorie. Git zeichnet auf, wann was von wem geändert wurde, und genau das macht die Suche hier einfacher als auf dem Webspace.
Schritt 5: Die Lücke schließen¶
Ohne diesen Schritt wiederholt sich alles. Der Einbruch lief fast immer über eine veraltete Version, und zwar meist nicht über das CMS selbst, sondern über ein Plugin oder ein Theme.
- Alles auf den aktuellen Stand bringen, CMS, Plugins, Themes
- Ungenutztes löschen. Ein deaktiviertes Plugin ist trotzdem angreifbar, denn seine Dateien liegen weiter auf dem Server
- Automatische Updates einschalten. Der wirksamste einzelne Schritt überhaupt
- Aufgegebene Erweiterungen ersetzen. Wird ein Plugin vom Entwickler nicht mehr gepflegt, bleibt seine Lücke für immer offen
→ Die schlimmsten Dinge, die du tun kannst · Website sicher und schnell betreiben
Schritt 6: Bei Google die Warnung entfernen lassen¶
Wenn Google eine Warnung anzeigt, verschwindet sie nicht von selbst. Nach der Bereinigung meldest du die Seite über die Google Search Console zur erneuten Prüfung an. Das dauert meist ein bis drei Tage.
Solange die Warnung steht, kommen praktisch keine Besucher mehr. Setz diesen Schritt also nicht ans Ende der Liste.
Was wir dabei tun und was nicht¶
Was wir tun:
- Einen erneuten Suchlauf anstoßen, damit du eine vollständige und aktuelle Liste der Funde hast
- Dir sagen, wann der Einbruch stattgefunden hat, soweit sich das aus den Protokollen ergibt
- Prüfen und bestätigen, ob nach deiner Bereinigung wirklich alles weg ist
- Bei Bedarf eine ältere Sicherung heraussuchen
Was wir nicht tun: Wir bereinigen fremde Webinhalte nicht eigenmächtig. Wir wissen nicht, welche Datei zu deiner Seite gehört und welche nicht, und ein falsch gelöschtes Theme legt deine Website lahm. Dafür brauchst du jemanden, der deine Website betreut.
Wenn nichts geschieht, müssen wir die Seite sperren
Reagiert niemand, versehen wir die Website mit einem Passwortschutz. Für Besucher ist sie dann nicht mehr erreichbar, für dich weiterhin.
Das ist keine Strafe. Solange Schadcode ausgeliefert wird, gefährdet die Seite ihre eigenen Besucher, und Google trägt die Domain als schädlich ein. So ein Eintrag kostet weit mehr Zeit als die Bereinigung selbst. Sobald du fertig bist, prüfen wir und schalten wieder frei.
Damit es nicht wieder passiert¶
Drei Dinge, die zusammen den größten Teil abdecken:
- Automatische Updates, im CMS und für Plugins und Themes
- Für jeden Zugang ein eigenes, langes Passwort, dazu die Anmeldung in zwei Schritten
- Aufräumen. Was du nicht brauchst, gehört gelöscht, nicht deaktiviert
→ Gut starten: die Einrichtungs-Checkliste · Zugänge absichern
Das könnte auch weiterhelfen¶
- Schadcode im Webspace gefunden: wenn die Meldung von uns kam
- Wir haben eine Sicherheitslücke in deiner Website gemeldet: wenn es noch nicht passiert ist, sondern nur passieren könnte
- Über mein Postfach wurde Spam verschickt
- Mein Kontaktformular verschickt Spam
- Sicherung wiederherstellen
- Die schlimmsten Dinge, die du tun kannst
