Inhaltsverzeichnis

Notfall-Revocation

SEV-1 Incident: Sofortige Reaktion bei CA-Kompromittierung!
RTO: 1 Stunde | Entscheidungsträger: CISO + PKI-Lead

Verfahren zur massenhaften Sperrung von Zertifikaten bei Kompromittierung einer CA.


Wann Notfall-Revocation?

Trigger Beispiel Aktion
——————-——–
Root-CA kompromittiert Private Key gestohlen Komplette PKI neu aufbauen
Intermediate kompromittiert Signatur-Key geleakt Sub-CA + alle Zertifikate
Mass-Compromise Ransomware auf CA-Server Alle betroffenen Zertifikate
Kritische Schwachstelle Algorithmus gebrochen Alle betroffenen Zertifikate

Entscheidungsbaum

flowchart TD A[Kompromittierung erkannt] --> B{Welche Ebene?} B -->|Root-CA| C[KRITISCH: Komplette PKI] B -->|Intermediate| D[HOCH: Sub-Hierarchie] B -->|End-Entity| E[MITTEL: Einzelne Zertifikate] C --> F[1. Alle CAs offline] C --> G[2. Notfall-CRL] C --> H[3. Neue PKI aufbauen] D --> I[1. Sub-CA widerrufen] D --> J[2. Alle Certs der Sub-CA widerrufen] D --> K[3. Neue Intermediate] E --> L[1. Betroffene Certs identifizieren] E --> M[2. CRL aktualisieren] E --> N[3. Re-Issue] style C fill:#ffebee style D fill:#fff3e0


Phase 1: Triage (15 Min)

#!/bin/bash
# emergency-triage.sh
 
echo "=== NOTFALL-TRIAGE ==="
echo "Zeit: $(date -Iseconds)"
 
# 1. Welche CA ist betroffen?
echo ""
echo "Betroffene CA:"
read -p "Root/Intermediate/End-Entity: " CA_LEVEL
 
# 2. Art der Kompromittierung
echo ""
echo "Art der Kompromittierung:"
echo "  1. Private Key gestohlen"
echo "  2. Unbefugte Zertifikatsausstellung"
echo "  3. System-Kompromittierung"
echo "  4. Algorithmus-Schwachstelle"
read -p "Auswahl: " COMPROMISE_TYPE
 
# 3. Scope ermitteln
echo ""
echo "Scope ermitteln..."
case "$CA_LEVEL" in
    root|Root|ROOT)
        echo "KRITISCH: Alle Zertifikate der gesamten PKI betroffen!"
        SCOPE=$(grep -c "^V" /etc/pki/CA/index.txt)
        ;;
    intermediate|Intermediate|INTERMEDIATE)
        read -p "Welche Intermediate-CA? " INT_CA
        SCOPE=$(grep -c "$INT_CA" /etc/pki/CA/index.txt)
        ;;
    *)
        read -p "Anzahl betroffener Zertifikate: " SCOPE
        ;;
esac
 
echo ""
echo "=== ZUSAMMENFASSUNG ==="
echo "CA-Ebene: $CA_LEVEL"
echo "Kompromittierungstyp: $COMPROMISE_TYPE"
echo "Betroffene Zertifikate: $SCOPE"
echo ""
 
# Eskalation
if [ "$CA_LEVEL" = "Root" ] || [ "$CA_LEVEL" = "root" ]; then
    echo "ESKALATION: CISO und Management benachrichtigen!"
    echo "Kommunikationsplan aktivieren!"
fi

Phase 2: Sofortmaßnahmen (30 Min)

CA Offline nehmen

#!/bin/bash
# emergency-ca-offline.sh
 
echo "=== CA OFFLINE ==="
 
# 1. CA-Services stoppen
systemctl stop pki-ca
systemctl stop ocsp-responder
 
# 2. Netzwerkzugang sperren
iptables -A INPUT -p tcp --dport 443 -j DROP
iptables -A INPUT -p tcp --dport 80 -j DROP
 
# 3. Signing-Keys sperren (HSM)
# pkcs11-tool --module <hsm> --login --deactivate-key --id <key-id>
 
# 4. Forensik-Sicherung
echo "Erstelle Forensik-Image..."
dd if=/dev/sda of=/backup/forensic/ca-server-$(date +%Y%m%d%H%M%S).img bs=4M
 
echo "CA offline. Keine neuen Zertifikate möglich."

Notfall-CRL generieren

#!/bin/bash
# emergency-crl.sh
 
echo "=== NOTFALL-CRL ==="
 
# Alle Zertifikate der betroffenen CA widerrufen
# ACHTUNG: Dies ist destruktiv!
 
read -p "WARNUNG: Alle Zertifikate widerrufen? (REVOKE/abort): " confirm
[ "$confirm" != "REVOKE" ] && exit 1
 
# Backup der aktuellen Datenbank
cp /etc/pki/CA/index.txt /etc/pki/CA/index.txt.pre-emergency-$(date +%Y%m%d%H%M%S)
 
# Alle gültigen Zertifikate widerrufen
grep "^V" /etc/pki/CA/index.txt | while IFS=$'\t' read status expiry revoke serial unknown subject; do
    echo "Widerrufe: $serial - $subject"
    openssl ca -config /etc/pki/CA/openssl.cnf \
        -revoke "/etc/pki/CA/newcerts/${serial}.pem" \
        -crl_reason keyCompromise \
        -batch
done
 
# Neue CRL generieren (kurze Gültigkeit!)
openssl ca -config /etc/pki/CA/openssl.cnf \
    -gencrl \
    -crlhours 1 \
    -out /var/www/pki/emergency.crl
 
# CRL sofort verteilen
echo "Verteile Notfall-CRL..."
scp /var/www/pki/emergency.crl crl-server:/var/www/html/crl/
scp /var/www/pki/emergency.crl cdn-origin:/var/www/crl/
 
echo "Notfall-CRL verteilt."
echo "CRL-URL: http://crl.example.com/crl/emergency.crl"

Phase 3: Kommunikation

Interne Kommunikation

NOTFALL-MELDUNG: PKI-Kompromittierung

An: IT-Security, IT-Operations, Management
Von: PKI-Team
Zeit: [TIMESTAMP]

STATUS: SEV-1 INCIDENT

ZUSAMMENFASSUNG:
Die [Root/Intermediate] CA wurde kompromittiert.
Alle ausgestellten Zertifikate werden widerrufen.

AUSWIRKUNGEN:
- Betroffene Zertifikate: [ANZAHL]
- Betroffene Systeme: [LISTE]
- Geschätzte Downtime: [STUNDEN]

SOFORTMASSNAHMEN:
1. CA offline genommen
2. Notfall-CRL generiert
3. Kommunikation an betroffene Systeme

NÄCHSTE SCHRITTE:
1. Forensik-Analyse
2. Neue CA aufbauen
3. Re-Issue aller Zertifikate

KONTAKT:
PKI-Team: pki-emergency@example.com
Security: security@example.com
Hotline: +49 xxx xxxxx

Externe Kommunikation (falls nötig)

SICHERHEITSMITTEILUNG

[ORGANISATION] hat festgestellt, dass [BESCHREIBUNG].

Betroffene Dienste wurden vorsorglich offline genommen.
Wir arbeiten an einer Lösung und informieren Sie über Updates.

Bei Fragen: security@example.com

Phase 4: Wiederherstellung

#!/bin/bash
# emergency-recovery.sh
 
echo "=== WIEDERHERSTELLUNG ==="
 
# 1. Neue Root-CA (falls kompromittiert)
echo "Option 1: Neue Root-CA"
echo "  → Key Ceremony durchführen"
echo "  → Siehe: key-ceremony.sh"
 
# 2. Neue Intermediate-CA
echo ""
echo "Option 2: Neue Intermediate-CA"
echo "  → Von Root signieren lassen"
 
# 3. Re-Issue aller Zertifikate
echo ""
echo "Option 3: Re-Issue Zertifikate"
 
# Server-Liste aus CMDB/Inventory
SERVERS_FILE="/etc/pki/inventory/all-servers.txt"
 
if [ -f "$SERVERS_FILE" ]; then
    total=$(wc -l < "$SERVERS_FILE")
    echo "Re-Issue für $total Server..."
 
    cat "$SERVERS_FILE" | while read server; do
        echo "Re-Issue: $server"
        # CSR vom Server anfordern
        ssh "$server" "openssl req -new -key /etc/ssl/private/server.key -out /tmp/emergency.csr -subj \"/CN=$server\""
 
        # CSR abholen
        scp "$server:/tmp/emergency.csr" "/tmp/reissue/${server}.csr"
 
        # Neues Zertifikat ausstellen
        openssl ca -config /etc/pki/CA/openssl.cnf \
            -in "/tmp/reissue/${server}.csr" \
            -out "/tmp/reissue/${server}.pem" \
            -days 365 -batch
 
        # Zertifikat deployen
        scp "/tmp/reissue/${server}.pem" "$server:/etc/ssl/certs/server.pem"
        ssh "$server" "systemctl reload nginx || systemctl reload apache2"
    done
fi
 
echo "Wiederherstellung abgeschlossen."

Nachbereitung

Phase Aufgabe Zeitrahmen
——-———————
Post-Incident Forensik-Bericht +24h
Post-Incident Root-Cause-Analysis +48h
Post-Incident Lessons Learned +1 Woche
Prävention Kontrollen verbessern +2 Wochen
Compliance Behörden informieren (falls KRITIS) Gemäß Gesetz

Checkliste

# Prüfpunkt Zeit
———–——
1 Triage abgeschlossen +15m
2 CA offline +20m
3 Management informiert +25m
4 Notfall-CRL generiert +30m
5 CRL verteilt +35m
6 Interne Kommunikation +40m
7 Externe Kommunikation (falls nötig) +45m
8 Wiederherstellungsplan aktiviert +60m

Verwandte Dokumentation


« ← Key Ceremony | → Operator-Szenarien »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional