====== 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 --login --deactivate-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 =====
* [[.:ca-backup-restore|CA Backup/Restore]] – Backup wiederherstellen
* [[.:key-ceremony|Key Ceremony]] – Neue CA erstellen
* [[..:tagesgeschaeft:zertifikat-widerrufen|Zertifikat widerrufen]] – Einzelne Revocation
----
<< [[.:key-ceremony|← Key Ceremony]] | [[..:start|→ Operator-Szenarien]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>notfall emergency revocation kompromittierung incident operator}}