Zum Inhalt

Incident Response

Ein klarer Plan für Sicherheitsvorfälle minimiert Schäden und beschleunigt die Wiederherstellung.

Incident-Kategorien

flowchart TD
    subgraph Severity
        S1[Kritisch - Sofort]
        S2[Hoch - <4h]
        S3[Mittel - <24h]
        S4[Niedrig - <1 Woche]
    end

    subgraph Beispiele
        E1[Server kompromittiert]
        E2[Service nicht erreichbar]
        E3[Verdächtige Aktivitäten]
        E4[Performance-Probleme]
    end

    S1 --> E1
    S2 --> E2
    S3 --> E3
    S4 --> E4
Severity Reaktionszeit Beispiele
Kritisch Sofort Kompromittierung, Datenverlust
Hoch < 4 Stunden Service-Ausfall
Mittel < 24 Stunden Verdächtige Aktivitäten
Niedrig < 1 Woche Performance-Probleme

Bei Verdacht auf Kompromittierung

Schritt 1: Situation einschätzen

Ruhe bewahren

Überstürzte Aktionen können Beweise vernichten oder den Schaden vergrößern.

Erste Fragen:

  • Was wurde bemerkt?
  • Wann wurde es bemerkt?
  • Sind Daten betroffen?
  • Sind andere Systeme betroffen?

Schritt 2: Dokumentation starten

Dokumentiere ALLES ab sofort:

# Incident-Log starten
echo "=== INCIDENT LOG ===" > /tmp/incident-$(date +%Y%m%d).log
echo "Start: $(date)" >> /tmp/incident-$(date +%Y%m%d).log
echo "Reporter: DEIN_NAME" >> /tmp/incident-$(date +%Y%m%d).log

Schritt 3: Beweise sichern

BEVOR du etwas änderst:

# Aktuelle Verbindungen
ss -tulpn > /tmp/evidence/connections.txt

# Laufende Prozesse
ps auxf > /tmp/evidence/processes.txt

# Letzte Logins
last > /tmp/evidence/logins.txt

# Auth-Log sichern
cp /var/log/auth.log /tmp/evidence/

# Docker-Container-Status
docker ps -a > /tmp/evidence/containers.txt
docker logs coolify > /tmp/evidence/coolify-logs.txt 2>&1

Schritt 4: Isolierung entscheiden

Option A: Sofortige Isolierung (Bei aktiver Bedrohung)

# Netzwerk trennen (drastisch!)
sudo ufw default deny incoming
sudo ufw default deny outgoing

# Oder: Nur SSH erlauben
sudo ufw reset
sudo ufw allow from DEINE_IP to any port 22
sudo ufw enable

Option B: Überwachte Isolierung (Bei Unklarheit)

# Verdächtige IP-Adressen blockieren
sudo ufw deny from VERDÄCHTIGE_IP

# Traffic loggen
sudo tcpdump -i eth0 -w /tmp/evidence/traffic.pcap &

Schritt 5: Schadensanalyse

# Geänderte Dateien der letzten 24h
find /etc /usr/bin /usr/sbin -mtime -1 -type f

# Ungewöhnliche Cron-Jobs
cat /etc/crontab
ls -la /etc/cron.*

# Ungewöhnliche Benutzer
cat /etc/passwd
cat /etc/shadow

# Rootkit-Check
sudo rkhunter --check

Schritt 6: Bereinigung oder Neuinstallation

Entscheidung treffen

Bereinigung möglich wenn:

  • Einbruchspunkt bekannt
  • Umfang des Schadens klar
  • Alle Änderungen identifiziert

Neuinstallation nötig wenn:

  • Rootkit gefunden
  • Einbruchspunkt unklar
  • Umfang unklar

Bei Neuinstallation:

  1. Neuen Server aufsetzen (diese Dokumentation!)
  2. Daten aus Backup wiederherstellen
  3. Passwörter ÜBERALL ändern
  4. SSH-Keys rotieren

Schritt 7: Post-Incident

  • Incident-Report erstellen
  • Ursache identifizieren
  • Schutzmaßnahmen verbessern
  • Betroffene benachrichtigen (DSGVO!)
  • Lessons Learned dokumentieren

Bei Service-Ausfall

Schnelle Diagnose

# Server erreichbar?
ping DEINE_SERVER_IP

# SSH funktioniert?
ssh DEIN_USERNAME@DEINE_SERVER_IP

# Container laufen?
docker ps

# Coolify-Logs
docker logs coolify --tail 100

# Disk voll?
df -h

# Memory voll?
free -h

# Load zu hoch?
uptime

Häufige Ursachen und Lösungen

Container gestoppt
# Alle Coolify-Container neustarten
cd /data/coolify
docker compose down
docker compose up -d
Disk voll
# Größte Verzeichnisse finden
du -h / | sort -rh | head -20

# Docker aufräumen
docker system prune -a --volumes

# Logs aufräumen
sudo journalctl --vacuum-time=3d
Speicher erschöpft
# Speicherfresser identifizieren
ps aux --sort=-%mem | head -10

# Container-Speicher begrenzen
docker update --memory=512m CONTAINER_NAME
SSL-Zertifikat abgelaufen
# Traefik neustarten
docker restart coolify-proxy

# Falls nötig: Zertifikat-Cache leeren
docker exec coolify-proxy rm -rf /letsencrypt/acme.json
docker restart coolify-proxy

Wiederherstellung aus Backup

Schritt-für-Schritt

  1. Neuen Server aufsetzen
  2. Letzte gute Backups identifizieren
ls -la /backup/databases/
ls -la /backup/coolify/
# Oder aus Offsite-Backup
restic snapshots
  1. Coolify wiederherstellen
# Coolify stoppen
cd /data/coolify && docker compose down

# Konfiguration wiederherstellen
tar -xzf /backup/coolify/coolify_YYYYMMDD.tar.gz -C /

# Datenbank wiederherstellen
gunzip -c /backup/databases/coolify_YYYYMMDD.dump.gz | \
    docker exec -i coolify-db pg_restore -U coolify -d coolify

# Coolify starten
docker compose up -d
  1. Funktionalität testen
# Container prüfen
docker ps

# Web-Interface testen
curl -I https://coolify.fcl-tech.de
  1. Passwörter ändern
  2. Coolify Admin-Passwort
  3. API-Keys
  4. Datenbank-Passwörter

Incident-Report-Vorlage

# Incident Report

## Zusammenfassung

- **Datum/Zeit:** YYYY-MM-DD HH:MM
- **Severity:** Kritisch/Hoch/Mittel/Niedrig
- **Betroffene Systeme:** ...
- **Dauer:** ... Stunden

## Chronologie

- HH:MM - Incident entdeckt durch ...
- HH:MM - Erste Maßnahmen ...
- HH:MM - Ursache identifiziert
- HH:MM - System wiederhergestellt

## Ursache

...

## Maßnahmen

1. ...
2. ...

## Auswirkungen

- Datenverlust: Ja/Nein
- Downtime: ... Minuten
- Betroffene Benutzer: ...

## Verbesserungen

- [ ] Maßnahme 1
- [ ] Maßnahme 2

## Lessons Learned

...

Zusammenfassung

Situation Erste Aktion
Kompromittierung vermutet Beweise sichern, dann isolieren
Service nicht erreichbar Container-Status prüfen
Disk voll Docker aufräumen
Nach Neuinstallation Alle Passwörter ändern