Server gehackt: Notfallreaktion und Wiederherstellung
Notfallmaßnahmen bei einem gehackten Server: Erkennung, Isolierung, forensische Analyse und Bereinigung.
Inhaltsverzeichnis
Einführung
Die Entdeckung, dass Ihr Server gehackt wurde, ist eine stressige Situation. Durch Befolgen der richtigen Schritte können Sie den Schaden minimieren und Ihr System wiederherstellen. In dieser Anleitung behandeln wir den gesamten Prozess von der Hack-Erkennung bis zur Bereinigung und Sicherheitshärtung.
Anzeichen eines Hacks
Häufige Indikatoren für einen kompromittierten Server:
- Unbekannte Prozesse oder Dienste laufen
- Abnormale CPU/RAM-Nutzung (Kryptowährungs-Mining)
- Unbekannte Benutzerkonten erstellt
- Unbekannte Schlüssel in SSH authorized_keys
- Unbekannte Aufgaben in crontab
- Modifizierte Systemdateien
- Abnormaler ausgehender Netzwerkverkehr
- Website-Defacement oder Weiterleitungen
- Spam-E-Mail-Versand
Schritt 1: Keine Panik und Dokumentieren
Der erste und wichtigste Schritt ist, ruhig zu bleiben und alles zu dokumentieren:
# Aktuellen Zustand speichern
date > /tmp/incident_$(date +%Y%m%d_%H%M%S).log
who >> /tmp/incident_*.log
w >> /tmp/incident_*.log
last -20 >> /tmp/incident_*.log
ps auxf >> /tmp/incident_*.log
netstat -tlnp >> /tmp/incident_*.log
ss -tlnp >> /tmp/incident_*.log
Fahren Sie den Server nicht sofort herunter oder starten Sie ihn nicht neu! Forensische Beweise könnten verloren gehen. Dokumentieren Sie zuerst den aktuellen Zustand.
Schritt 2: Isolierung
Isolieren Sie den Server, um weiteren Schaden zu verhindern:
Netzwerk-Isolierung
# Alle ausgehenden Verbindungen blockieren (außer SSH)
sudo iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A OUTPUT -j DROP
Aktive Sitzungen beenden
# Aktive SSH-Sitzungen prüfen
who
w
# Verdächtige Sitzungen beenden
sudo pkill -u verdaechtiger_benutzer
Schritt 3: Forensische Analyse
Benutzerkonten-Prüfung
# Alle Benutzer auflisten
cat /etc/passwd | grep -v nologin | grep -v false
# UID 0 (Root-Berechtigung) Benutzer prüfen
awk -F: '($3 == 0) {print}' /etc/passwd
# Kürzlich erstellte Benutzer prüfen
ls -lt /home/
# Sudo-berechtigte Benutzer
grep -v '^#' /etc/sudoers
ls -la /etc/sudoers.d/
# SSH authorized_keys Prüfung
for user_home in /home/*; do
if [ -f "$user_home/.ssh/authorized_keys" ]; then
echo "=== $user_home ==="
cat "$user_home/.ssh/authorized_keys"
fi
done
cat /root/.ssh/authorized_keys
Prozessanalyse
# Alle laufenden Prozesse in Baumstruktur anzeigen
ps auxf
# Nach verdächtigen Prozessen suchen
ps aux | grep -E '(mine|xmr|crypto|kinsing|kdevtmpfsi)'
# Prozesse mit hoher CPU-Nutzung
top -b -n 1 | head -20
# Versteckte Prozesse prüfen
ls -la /proc/*/exe 2>/dev/null | grep deleted
# Prozess-Dateipfade prüfen
ls -la /proc/[0-9]*/exe 2>/dev/null | grep -v '/usr\|/bin\|/sbin\|/lib'
Crontab-Prüfung
# Root-Crontab
crontab -l
# Crontabs aller Benutzer
for user in $(cut -f1 -d: /etc/passwd); do
crontab -l -u $user 2>/dev/null | grep -v '^#'
done
# System-Cron-Verzeichnisse
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/
cat /etc/crontab
# Systemd-Timer
systemctl list-timers --all
Netzwerkverbindungsanalyse
# Aktive Verbindungen prüfen
ss -tanp
netstat -tanp
# Ausgehende Verbindungen
ss -tanp | grep ESTABLISHED | grep -v '127.0.0.1'
# Lauschende Ports
ss -tlnp
Dateisystemanalyse
# In den letzten 24 Stunden geänderte Dateien
find / -mtime -1 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null
# In den letzten 7 Tagen erstellte Dateien
find / -ctime -7 -type f -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null
# SUID/SGID-Dateien prüfen
find / -perm -4000 -type f 2>/dev/null
# Verdächtige Dateien in /tmp
ls -la /tmp/
ls -la /var/tmp/
ls -la /dev/shm/
Log-Analyse
# SSH-Anmeldeversuche
grep 'Failed password' /var/log/auth.log | tail -50
grep 'Accepted' /var/log/auth.log | tail -50
# Erfolgreiche SSH-Anmeldungen
last -20
lastlog
# Systemprotokolle
journalctl --since "24 hours ago" | grep -i -E '(error|warning|fail|denied)'
Schritt 4: Bereinigung
Schädliche Prozesse stoppen
# Verdächtige Prozesse beenden
sudo kill -9 <PID>
# Krypto-Miner finden und beenden
sudo pkill -9 -f 'xmr\|mine\|crypto\|kinsing'
# Verdächtige Dienste deaktivieren
sudo systemctl stop verdaechtiger_dienst
sudo systemctl disable verdaechtiger_dienst
Schädliche Benutzer entfernen
# Verdächtigen Benutzer sperren
sudo usermod -L verdaechtiger_benutzer
# Benutzer löschen
sudo userdel -r verdaechtiger_benutzer
# Root-Passwort ändern
sudo passwd root
Schritt 5: Sicherheitshärtung
SSH-Sicherheit
# /etc/ssh/sshd_config
Port 2222
PermitRootLogin prohibit-password
PasswordAuthentication no
MaxAuthTries 3
AllowUsers benutzername
sudo systemctl restart sshd
Fail2ban installieren
sudo apt install fail2ban -y
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
System-Update
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt install unattended-upgrades -y
Schritt 6: Wiederherstellung aus Backup
Wenn die Bereinigung nicht ausreicht, ist eine Neuinstallation erforderlich:
# 1. Wichtige Daten sichern
tar -czf /tmp/backup_data.tar.gz /var/www/ /home/
# 2. OS über REXE-Panel neu installieren
# my.rexe.tr > Dienste > OS-Neuinstallation
# 3. Sicherheitshärtung nach sauberer Installation
# 4. Nur Datendateien aus Backup wiederherstellen (KEINE Konfigurationsdateien)
Stellen Sie bei der Wiederherstellung aus einem Backup KEINE Konfigurationsdateien wieder her! Der Angreifer könnte Hintertüren hinzugefügt haben.
Fazit
Bei Server-Hack-Vorfällen ist eine schnelle und systematische Reaktion entscheidend. Befolgen Sie die Schritte Dokumentation, Isolierung, forensische Analyse, Bereinigung und Sicherheitshärtung in der richtigen Reihenfolge. Um ähnliche Vorfälle in Zukunft zu verhindern, führen Sie regelmäßige Sicherheitsaudits durch und implementieren Sie starke Zugriffskontrollen.
Verwandte Artikel
SSH-Verbindungsproblem: Keine Verbindung zum Server möglich
Anleitung zur Behebung von SSH-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für SSH-Port erstellen und Fehlerbehebungsschritte.
RDP-Verbindungsproblem: Keine Verbindung zu Windows Server
Anleitung zur Behebung von RDP-Verbindungsproblemen: Path.net Firewall-Regeln, Default Block, Filterregel für RDP-Port erstellen und Fehlerbehebungsschritte.
MTR-Test durchführen und Ergebnisse an Support senden
Anleitung zum Netzwerktest mit WinMTR und Linux MTR, ICMP-Filterregel erstellen und Ergebnisse an das Support-Team senden. Paketverlust und Latenz diagnostizieren.