====== 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}}