====== Hitni opoziv ====== **SEV-1 Incident:** Trenutna reakcija pri kompromitaciji CA! \\ **RTO:** 1 sat | **Donositelj odluke:** CISO + PKI-Lead Postupak za masovni opoziv certifikata pri kompromitaciji CA. ---- ===== Kada hitni opoziv? ===== | Okidač | Primjer | Akcija | |--------|---------|--------| | **Root-CA kompromitiran** | Ukraden privatni ključ | Potpuna rekonstrukcija PKI | | **Intermediate kompromitiran** | Procurio Signing-Key | Sub-CA + svi certifikati | | **Masovna kompromitacija** | Ransomware na CA serveru | Svi pogođeni certifikati | | **Kritična ranjivost** | Algoritam slomljen | Svi pogođeni certifikati | ---- ===== Stablo odlučivanja ===== flowchart TD A[Kompromitacija otkrivena] --> B{Koja razina?} B -->|Root-CA| C[KRITIČNO: Cijela PKI] B -->|Intermediate| D[VISOKO: Sub-hijerarhija] B -->|End-Entity| E[SREDNJE: Pojedinačni certifikati] C --> F[1. Svi CA offline] C --> G[2. Hitni CRL] C --> H[3. Izgradnja nove PKI] D --> I[1. Opoziv Sub-CA] D --> J[2. Opoziv svih certifikata Sub-CA] D --> K[3. Novi Intermediate] E --> L[1. Identificirati pogođene certifikate] E --> M[2. Ažurirati CRL] E --> N[3. Ponovno izdavanje] style C fill:#ffebee style D fill:#fff3e0 ---- ===== Faza 1: Trijaža (15 Min) ===== #!/bin/bash # emergency-triage.sh echo "=== HITNA TRIJAŽA ===" echo "Vrijeme: $(date -Iseconds)" # 1. Koji CA je pogođen? echo "" echo "Pogođeni CA:" read -p "Root/Intermediate/End-Entity: " CA_LEVEL # 2. Vrsta kompromitacije echo "" echo "Vrsta kompromitacije:" echo " 1. Ukraden privatni ključ" echo " 2. Neovlašteno izdavanje certifikata" echo " 3. Kompromitacija sustava" echo " 4. Ranjivost algoritma" read -p "Odabir: " COMPROMISE_TYPE # 3. Utvrđivanje opsega echo "" echo "Utvrđivanje opsega..." case "$CA_LEVEL" in root|Root|ROOT) echo "KRITIČNO: Svi certifikati cijele PKI pogođeni!" SCOPE=$(grep -c "^V" /etc/pki/CA/index.txt) ;; intermediate|Intermediate|INTERMEDIATE) read -p "Koji Intermediate-CA? " INT_CA SCOPE=$(grep -c "$INT_CA" /etc/pki/CA/index.txt) ;; *) read -p "Broj pogođenih certifikata: " SCOPE ;; esac echo "" echo "=== SAŽETAK ===" echo "CA razina: $CA_LEVEL" echo "Tip kompromitacije: $COMPROMISE_TYPE" echo "Pogođeni certifikati: $SCOPE" echo "" # Eskalacija if [ "$CA_LEVEL" = "Root" ] || [ "$CA_LEVEL" = "root" ]; then echo "ESKALACIJA: Obavijestiti CISO i upravu!" echo "Aktivirati komunikacijski plan!" fi ---- ===== Faza 2: Hitne mjere (30 Min) ===== ==== Isključivanje CA ==== #!/bin/bash # emergency-ca-offline.sh echo "=== CA OFFLINE ===" # 1. Zaustavljanje CA servisa systemctl stop pki-ca systemctl stop ocsp-responder # 2. Blokiranje mrežnog pristupa iptables -A INPUT -p tcp --dport 443 -j DROP iptables -A INPUT -p tcp --dport 80 -j DROP # 3. Blokiranje Signing ključeva (HSM) # pkcs11-tool --module --login --deactivate-key --id # 4. Forenzičko kopiranje echo "Stvaram forenzičku sliku..." dd if=/dev/sda of=/backup/forensic/ca-server-$(date +%Y%m%d%H%M%S).img bs=4M echo "CA offline. Novi certifikati nisu mogući." ==== Generiranje hitnog CRL-a ==== #!/bin/bash # emergency-crl.sh echo "=== HITNI CRL ===" # Opoziv svih certifikata pogođenog CA # UPOZORENJE: Ovo je destruktivno! read -p "UPOZORENJE: Opozvati sve certifikate? (OPOZOVI/prekini): " confirm [ "$confirm" != "OPOZOVI" ] && exit 1 # Backup trenutne baze podataka cp /etc/pki/CA/index.txt /etc/pki/CA/index.txt.pre-emergency-$(date +%Y%m%d%H%M%S) # Opoziv svih valjanih certifikata grep "^V" /etc/pki/CA/index.txt | while IFS=$'\t' read status expiry revoke serial unknown subject; do echo "Opozivam: $serial - $subject" openssl ca -config /etc/pki/CA/openssl.cnf \ -revoke "/etc/pki/CA/newcerts/${serial}.pem" \ -crl_reason keyCompromise \ -batch done # Generiranje novog CRL-a (kratka valjanost!) openssl ca -config /etc/pki/CA/openssl.cnf \ -gencrl \ -crlhours 1 \ -out /var/www/pki/emergency.crl # Distribucija CRL-a echo "Distribuiram hitni 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 "Hitni CRL distribuiran." echo "CRL-URL: http://crl.example.com/crl/emergency.crl" ---- ===== Faza 3: Komunikacija ===== ==== Interna komunikacija ==== HITNA OBAVIJEST: PKI kompromitacija Prima: IT-Security, IT-Operations, Uprava Od: PKI tim Vrijeme: [TIMESTAMP] STATUS: SEV-1 INCIDENT SAŽETAK: [Root/Intermediate] CA je kompromitiran. Svi izdani certifikati se opozivaju. UTJECAJ: - Pogođeni certifikati: [BROJ] - Pogođeni sustavi: [LISTA] - Procijenjeni prekid rada: [SATI] HITNE MJERE: 1. CA isključen 2. Hitni CRL generiran 3. Komunikacija prema pogođenim sustavima SLJEDEĆI KORACI: 1. Forenzička analiza 2. Izgradnja novog CA 3. Ponovno izdavanje svih certifikata KONTAKT: PKI tim: pki-emergency@example.com Security: security@example.com Hotline: +385 xxx xxxxx ==== Vanjska komunikacija (ako je potrebno) ==== SIGURNOSNA OBAVIJEST [ORGANIZACIJA] je utvrdila da [OPIS]. Pogođeni servisi su preventivno isključeni. Radimo na rješenju i obavijestit ćemo vas o ažuriranjima. Za pitanja: security@example.com ---- ===== Faza 4: Oporavak ===== #!/bin/bash # emergency-recovery.sh echo "=== OPORAVAK ===" # 1. Novi Root-CA (ako je kompromitiran) echo "Opcija 1: Novi Root-CA" echo " -> Provesti Key Ceremony" echo " -> Vidi: key-ceremony.sh" # 2. Novi Intermediate-CA echo "" echo "Opcija 2: Novi Intermediate-CA" echo " -> Potpisati od Root-a" # 3. Ponovno izdavanje svih certifikata echo "" echo "Opcija 3: Ponovno izdavanje certifikata" SERVERS_FILE="/etc/pki/inventory/all-servers.txt" if [ -f "$SERVERS_FILE" ]; then total=$(wc -l < "$SERVERS_FILE") echo "Ponovno izdavanje za $total servera..." cat "$SERVERS_FILE" | while read server; do echo "Ponovno izdavanje: $server" # Zatražiti CSR od servera ssh "$server" "openssl req -new -key /etc/ssl/private/server.key -out /tmp/emergency.csr -subj \"/CN=$server\"" # Dohvatiti CSR scp "$server:/tmp/emergency.csr" "/tmp/reissue/${server}.csr" # Izdati novi certifikat openssl ca -config /etc/pki/CA/openssl.cnf \ -in "/tmp/reissue/${server}.csr" \ -out "/tmp/reissue/${server}.pem" \ -days 365 -batch # Deployati certifikat scp "/tmp/reissue/${server}.pem" "$server:/etc/ssl/certs/server.pem" ssh "$server" "systemctl reload nginx || systemctl reload apache2" done fi echo "Oporavak završen." ---- ===== Naknadne aktivnosti ===== | Faza | Zadatak | Vremenski okvir | |------|---------|-----------------| | Post-Incident | Forenzičko izvješće | +24h | | Post-Incident | Root-Cause-Analysis | +48h | | Post-Incident | Lessons Learned | +1 tjedan | | Prevencija | Poboljšanje kontrola | +2 tjedna | | Usklađenost | Obavještavanje vlasti (ako KRITIS) | Prema zakonu | ---- ===== Kontrolna lista ===== | # | Točka provjere | Vrijeme | Gotovo | |---|----------------|---------|--------| | 1 | Trijaža završena | +15m | ☐ | | 2 | CA offline | +20m | ☐ | | 3 | Uprava obaviještena | +25m | ☐ | | 4 | Hitni CRL generiran | +30m | ☐ | | 5 | CRL distribuiran | +35m | ☐ | | 6 | Interna komunikacija | +40m | ☐ | | 7 | Vanjska komunikacija (ako potrebno) | +45m | ☐ | | 8 | Plan oporavka aktiviran | +60m | ☐ | ---- ===== Povezana dokumentacija ===== * [[.:ca-backup-restore|CA Backup/Restore]] - Vraćanje sigurnosne kopije * [[.:key-ceremony|Key Ceremony]] - Stvaranje novog CA * [[..:tagesgeschaeft:zertifikat-widerrufen|Opoziv certifikata]] - Pojedinačni opoziv ---- << [[.:key-ceremony|<- Key Ceremony]] | [[..:start|-> Operatorski scenariji]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>hitno emergency revocation kompromitacija incident operator}}