SEV-1 incident: Takojšnji odziv ob kompromitaciji CA!
RTO: 1 ura | Odločevalec: CISO + vodja PKI
Postopek za množični preklic certifikatov ob kompromitaciji CA.
| Sprožilec | Primer | Akcija |
| ———– | ——– | ——– |
| Root-CA kompromitiran | Zasebni ključ ukraden | Celotno PKI obnoviti na novo |
| Intermediate kompromitiran | Podpisovalni ključ razkrit | Sub-CA + vsi certifikati |
| Množična kompromitacija | Izsiljevalska programska oprema na CA strežniku | Vsi prizadeti certifikati |
| Kritična ranljivost | Algoritem zlomljen | Vsi prizadeti certifikati |
#!/bin/bash # emergency-triage.sh echo "=== TRIAŽA V SILI ===" echo "Čas: $(date -Iseconds)" # 1. Kateri CA je prizadet? echo "" echo "Prizadeti CA:" read -p "Root/Intermediate/End-Entity: " CA_LEVEL # 2. Vrsta kompromitacije echo "" echo "Vrsta kompromitacije:" echo " 1. Zasebni ključ ukraden" echo " 2. Nepooblaščena izdaja certifikatov" echo " 3. Sistemska kompromitacija" echo " 4. Ranljivost algoritma" read -p "Izbira: " COMPROMISE_TYPE # 3. Določitev obsega echo "" echo "Določanje obsega..." case "$CA_LEVEL" in root|Root|ROOT) echo "KRITIČNO: Prizadeti vsi certifikati celotnega PKI!" SCOPE=$(grep -c "^V" /etc/pki/CA/index.txt) ;; intermediate|Intermediate|INTERMEDIATE) read -p "Kateri Intermediate-CA? " INT_CA SCOPE=$(grep -c "$INT_CA" /etc/pki/CA/index.txt) ;; *) read -p "Število prizadetih certifikatov: " SCOPE ;; esac echo "" echo "=== POVZETEK ===" echo "Raven CA: $CA_LEVEL" echo "Vrsta kompromitacije: $COMPROMISE_TYPE" echo "Prizadeti certifikati: $SCOPE" echo "" # Eskalacija if [ "$CA_LEVEL" = "Root" ] || [ "$CA_LEVEL" = "root" ]; then echo "ESKALACIJA: Obvestiti CISO in vodstvo!" echo "Aktivirati komunikacijski načrt!" fi
#!/bin/bash # emergency-ca-offline.sh echo "=== CA BREZ POVEZAVE ===" # 1. Ustavitev CA storitev systemctl stop pki-ca systemctl stop ocsp-responder # 2. Blokiranje omrežnega dostopa iptables -A INPUT -p tcp --dport 443 -j DROP iptables -A INPUT -p tcp --dport 80 -j DROP # 3. Blokiranje podpisovalnih ključev (HSM) # pkcs11-tool --module <hsm> --login --deactivate-key --id <key-id> # 4. Forenzična zaščita echo "Ustvarjam forenzično sliko..." dd if=/dev/sda of=/backup/forensic/ca-server-$(date +%Y%m%d%H%M%S).img bs=4M echo "CA brez povezave. Novi certifikati niso možni."
#!/bin/bash # emergency-crl.sh echo "=== CRL V SILI ===" # Preklic vseh certifikatov prizadetega CA # POZOR: To je destruktivno! read -p "OPOZORILO: Preklicati vse certifikate? (REVOKE/abort): " confirm [ "$confirm" != "REVOKE" ] && exit 1 # Varnostna kopija trenutne baze podatkov cp /etc/pki/CA/index.txt /etc/pki/CA/index.txt.pre-emergency-$(date +%Y%m%d%H%M%S) # Preklic vseh veljavnih certifikatov grep "^V" /etc/pki/CA/index.txt | while IFS=$'\t' read status expiry revoke serial unknown subject; do echo "Preklicujem: $serial - $subject" openssl ca -config /etc/pki/CA/openssl.cnf \ -revoke "/etc/pki/CA/newcerts/${serial}.pem" \ -crl_reason keyCompromise \ -batch done # Generacija novega CRL (kratka veljavnost!) openssl ca -config /etc/pki/CA/openssl.cnf \ -gencrl \ -crlhours 1 \ -out /var/www/pki/emergency.crl # Takojšnja distribucija CRL echo "Distribucija CRL v sili..." scp /var/www/pki/emergency.crl crl-server:/var/www/html/crl/ scp /var/www/pki/emergency.crl cdn-origin:/var/www/crl/ echo "CRL v sili distribuiran." echo "CRL-URL: http://crl.example.com/crl/emergency.crl"
SPOROČILO V SILI: PKI kompromitacija Za: IT-Varnost, IT-Operacije, Vodstvo Od: PKI ekipa Čas: [ČASOVNI ŽIG] STATUS: SEV-1 INCIDENT POVZETEK: [Root/Intermediate] CA je bil kompromitiran. Vsi izdani certifikati bodo preklicani. VPLIVI: - Prizadeti certifikati: [ŠTEVILO] - Prizadeti sistemi: [SEZNAM] - Ocenjeni izpad: [URE] TAKOJŠNJI UKREPI: 1. CA brez povezave 2. CRL v sili generiran 3. Komunikacija s prizadetimi sistemi NASLEDNJI KORAKI: 1. Forenzična analiza 2. Gradnja novega CA 3. Ponovna izdaja vseh certifikatov KONTAKT: PKI ekipa: pki-emergency@example.com Varnost: security@example.com Telefonska linija: +386 xxx xxxxx
VARNOSTNO OBVESTILO [ORGANIZACIJA] je ugotovila, da [OPIS]. Prizadete storitve so bile preventivno izključene. Delamo na rešitvi in vas bomo obveščali o posodobitvah. Za vprašanja: security@example.com
#!/bin/bash # emergency-recovery.sh echo "=== OBNOVITEV ===" # 1. Nov Root-CA (če kompromitiran) echo "Možnost 1: Nov Root-CA" echo " → Izvedba ceremonije ključev" echo " → Glejte: key-ceremony.sh" # 2. Nov Intermediate-CA echo "" echo "Možnost 2: Nov Intermediate-CA" echo " → Podpis s strani Root" # 3. Ponovna izdaja vseh certifikatov echo "" echo "Možnost 3: Ponovna izdaja certifikatov" # Seznam strežnikov iz CMDB/Inventory SERVERS_FILE="/etc/pki/inventory/all-servers.txt" if [ -f "$SERVERS_FILE" ]; then total=$(wc -l < "$SERVERS_FILE") echo "Ponovna izdaja za $total strežnikov..." cat "$SERVERS_FILE" | while read server; do echo "Ponovna izdaja: $server" # Zahteva CSR od strežnika ssh "$server" "openssl req -new -key /etc/ssl/private/server.key -out /tmp/emergency.csr -subj \"/CN=$server\"" # Prevzem CSR scp "$server:/tmp/emergency.csr" "/tmp/reissue/${server}.csr" # Izdaja novega certifikata openssl ca -config /etc/pki/CA/openssl.cnf \ -in "/tmp/reissue/${server}.csr" \ -out "/tmp/reissue/${server}.pem" \ -days 365 -batch # Namestitev certifikata scp "/tmp/reissue/${server}.pem" "$server:/etc/ssl/certs/server.pem" ssh "$server" "systemctl reload nginx || systemctl reload apache2" done fi echo "Obnovitev končana."
| Faza | Naloga | Časovni okvir |
| —— | ——– | ————— |
| Po incidentu | Forenzično poročilo | +24h |
| Po incidentu | Analiza temeljnega vzroka | +48h |
| Po incidentu | Naučene lekcije | +1 teden |
| Prevencija | Izboljšanje kontrol | +2 tedna |
| Skladnost | Obvestilo regulatorjev (če KRITIS) | Po zakonu |
| # | Kontrolna točka | Čas | |
| — | —————– | —– | — |
| 1 | Triaža končana | +15m | |
| 2 | CA brez povezave | +20m | |
| 3 | Vodstvo obveščeno | +25m | |
| 4 | CRL v sili generiran | +30m | |
| 5 | CRL distribuiran | +35m | |
| 6 | Notranja komunikacija | +40m | |
| 7 | Zunanja komunikacija (če potrebno) | +45m | |
| 8 | Načrt obnovitve aktiviran | +60m |
« ← Ceremonija ključev | → Scenariji za operaterje »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional