Dieser detaillierte Leitfaden soll helfen, nach einem erfolgreichen Hacker-Angriff auf ein WordPress den Überblick zu behalten und eine kompromittierte Installation wiederherzustellen sowie zu sichern. Dieser Leitfaden führt Schritt für Schritt durch den gesamten Prozess, von der ersten Schadensbegrenzung bis hin zur präventiven Absicherung der Website.
Schritt 1: Schadensbegrenzung
1.1. Server von Internet isolieren
Um weiteren Schaden, Zugriff durch Hacker und Datendiebstahl zu verhindern, sollte der Server vorübergehend vom Internet getrennt werden. Dafür gibt es verschiedene Möglichkeiten:
- Server herunterfahren und in ein Rescue-Live System booten (sicherste Herangehensweise)
- Netzwerkadapter deaktivieren und über die (virtuelle) KVM-Konsole zugreifen
- Traffic über Firewall-Regeln unterbinden, um externen Zugriff (ein UND ausgehend!) zu unterbinden
1.2. Wartungsmodus aktivieren
Falls die Website online bleiben muss, sollte der Wartungsmodus aktiviert werden. Dies kann durch eine manuelle Bearbeitung der .htaccess-Datei geschehen. Legen Sie dafür eine Wartungsseite namens wartungs.html in den Webroot des Servers und erstellen Sie die folgenden Regeln in der .htaccess Datei. Ersetzen Sie dafür die Beispiel IP 1.1.1.1 mit der IP Adresse Ihres Internet-Anschlusses, welche Sie zum Beispiel auf der Webseite whatismyipaddress.com einsehen können. Damit wird die Wartungsseite nur für Ihre Adresse nicht angezeigt, sodass nur Sie weiterhin zugriff auf die WordPress-Installation haben.
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^Ihre.IP.Adresse$
RewriteRule .* /wartung.html [R=302,L]
Schritt 2: Voruntersuchung
2.1. Beteiligte benachrichtigen
Alle Stakeholder sollten über den Vorfall informiert werden, insbesondere dann, wenn personenbezogene Daten betroffen sein könnten. Dies war bei unserer Website nicht der Fall, da die Datenbank des Servers keine personenbezogenen Kundendaten speichert.
2.2. Aktuellen Zustand sichern
Ein Backup der aktuellen, kompromitierten Installation sollte für spätere forensische Untersuchungen erstellt werden. Im Idealfall sollte dies auf einem Live-System erstellt werden, um eine Manipulation der Backup-Dateien durch Schadsoftware zu unterbinden.
tar -cvpzf wordpress-backup.tgz /pfad/zur/wordpress-installation
mysqldump -u root -p datenbankname > wordpress-db-backup.sql
2.3. Geänderte Dateien erkennen
Die WordPress-Installation sollte auf kürzlich geänderte Dateien überprüft werden. Das find Argument -mtime steht hier für Stunden.
find /pfad/zur/wordpress-installation -type f -mtime -5
Schritt 3: Entfernen des Schadcodes
3.1. WordPress-Kern-Dateien ersetzen
Die WordPress-Kern-Dateien sollten von der WordPress.org Download Seite neu heruntergeladen und die kompromittierten Dateien (mit Ausnahme von wp-config.php und wp-content) ersetzt werden. Achten Sie dabei unbedingt darauf, die identische WordPress Version herunterzuladen!
wget https://wordpress.org/wordpress-6.5.3.zip
unzip latest.zip
cp -r wordpress/* /pfad/zur/wordpress-installation/
3.2. wp-config.php überprüfen
Die wp-config.php-Datei sollte auf verdächtige Änderungen überprüft werden. Besondere Aufmerksamkeit gilt:
- Datenbankverbindungsinformationen
- Zugriffsschlüssel und Sicherheitstoken
3.3. Plugins und Themes überprüfen
Alle Plugins und Themes sollten vorübergehend deaktiviert und einzeln wieder aktiviert werden, um potenziell bösartige Erweiterungen zu identifizieren.
# Alle Plugins deaktivieren
wp plugin deactivate --all
# Themes einzeln aktivieren
wp theme activate twentytwentyfour
Alternative Tools zur Überprüfung:
Die Folgenden WordPress Plugins eignen sich zum Scannen nach Malware. Im Idealfall installieren Sie eines der folgenden Plugins vor einem erfolgreichen Angriff:
3.4. Datenbank bereinigen
- Die Tabellen wp_options, wp_users und andere sollten auf verdächtige Einträge überprüft werden.
- Setzen Sie potenziell kompromittierte Datenbank-Tabellen zurück!
- Nutzen Sie den folgenden SQL Query, um nach unerwarteten Administrator-Accounts suchen:
SELECT ID, user_login FROM wp_users WHERE user_level = 10;
Schritt 4: Aktualisieren und Patchen
4.1. WordPress aktualisieren
Falls Ihre WordPress Version nicht “latest“ war, sollten Sie die WordPress-Installation umgehend auf die neueste Version aktualisieren! Stellen Sie sicher, dass Sie Ihr WordPress IMMER auf die neuste Version upgraden, am besten vollautomatisch!
wp core update
4.2. Plugins und Themes aktualisieren
Alle Plugins und Themes sollten ebenfalls auf ihre neueste Version aktualisiert werden.
wp plugin update --all
wp theme update --all
4.3. Anmeldedaten ändern
Alle relevanten Anmeldedaten sollten geändert werden:
- WordPress-Admin-Passwörter
- Datenbank-Passwörter
- FTP-Zugangsdaten
- Server-Zugangsdaten
Schritt 5: Sicherheit erhöhen
5.1. Dateiberechtigungen setzen
Setzen Sie die korrekten Dateiberechtigungen auf Ihrem Server mit den folgenden BASH-Befehlen. Diese stellen sicher, dass nur die Linux-Eigentümer sowie alle Mitglieder ihrer Gruppe auf die Dateien zugreifen können. Auch erhält damit nur der Linux-Nutzer, welcher Eigentümer der Dateien ist, Schreibzugriff auf die Dateien:
find /pfad/zur/wordpress-installation -type d -exec chmod 750 {} \;
find /pfad/zur/wordpress-installation -type f -exec chmod 640 {} \;
5.2. Datei-Bearbeitung deaktivieren
In der wp-config.php-Datei sollte die Datei-Bearbeitung deaktiviert werden (nährere Informationen dazu finden Sie in diesem Blogpost).
define('DISALLOW_FILE_EDIT', true);
5.3. Directory Listing deaktivieren
Das Directory Listing sollte in .htaccess deaktiviert werden. Dies verhindert, dass Verzeichnisse und Dateien direkt über den Webserver gelistet werden können.
Options -Indexes
5.4. Login-Versuche begrenzen
Ein Plugin sollte verwendet werden, um die Anzahl der Login-Versuche zu begrenzen. Im Idealfall sollten Sie für wp-login.php eine Zwei-Faktor-Authentifizierung aktiviert werden. Das Plugin Fluent-Security bietet diese Möglichkeiten.
5.5. Regelmäßige Backups einrichten
Plugins wie UpdraftPlus können für regelmäßige Backups verwendet werden. Alternativ können Sie eigene Backup-Scripte über Cron-Jobs nutzen.
Schritt 6: Überwachung und Überprüfung
6.1. Überwachung aktivieren
- Server-Logs sollten eingerichtet und regelmäßig überprüft werden.
- WordPress-Sicherheitsaudit-Logs aktivieren, z.B. über das Plugin WP Activity Log.
6.2. Regelmäßige Sicherheitsüberprüfungen
Regelmäßige Schwachstellen-Scans und Penetrationstests sollten durchgeführt werden, z.B. mit wpsec.com.
Sofortige Befehle
Die folgenden Befehle können sofort ausgeführt werden, um Informationen über mögliche unbefugte Zugriffe zu sammeln.
# Überprüfen Sie das System auf unbefugte Benutzer
awk -F':' '{ print $1}' /etc/passwd
# Liste der laufenden Prozesse auf verdächtige Aktivitäten prüfen
ps aux
# Crontab auf unerwartete Jobs überprüfen
crontab -l
Schlusswort
Nach der unmittelbaren Reaktion ist es wichtig, eine umfassende Überprüfung des Vorfalls durchzuführen, um die Sicherheitsmaßnahmen zu verbessern und die Wahrscheinlichkeit zukünftiger Angriffe zu verringern.
Ein herzliches Dankeschön geht an die Firma Blunix GmbH aus Berlin für den schnellen und professionellen Linux-Support bei der Wiederherstellung unserer Website nach einem Hackerangriff. Dank des Fachwissens und der zügigen Reaktionen durch Blunix konnten wir unsere Website schnell wieder online bringen. Ihre Hilfe war entscheidend, um unsere Seite für zukünftige Angriffe besser abzusichern.