====== Navodilo: Pregled zdravja ====== **Trajanje:** ~5 minut \\ **Vloga:** PKI operater \\ **Pogostost:** Dnevno (priporočeno: zjutraj) ---- ===== Potek dela ===== flowchart LR subgraph CHECKS["PREVERJANJA"] C1[Razpoložljivost CA] C2[Veljavnost CRL] C3[Status OCSP] C4[Iztekajoci certifikati] C5[Prostor na disku] end subgraph STATUS["STATUS"] S1{OK?} S2[Nadzorna plošča] end subgraph ACTION["AKCIJA"] A1[Ustvariti zahtevek] A2[Eskalirati] end C1 --> S1 C2 --> S1 C3 --> S1 C4 --> S1 C5 --> S1 S1 -->|Da| S2 S1 -->|Ne| A1 A1 -->|Kritično| A2 style S1 fill:#fff3e0 style A2 fill:#ffebee ---- ===== Hitro preverjanje (1 ukaz) ===== #!/bin/bash # pki-health-check.sh - Dnevno PKI preverjanje echo "=== Pregled zdravja PKI $(date -Iseconds) ===" # 1. Preverjanje CA certifikatov echo -e "\n[1] CA certifikati:" for ca in /etc/pki/CA/ca-*.pem; do days=$(( ($(openssl x509 -enddate -noout -in "$ca" | cut -d= -f2 | date -f - +%s) - $(date +%s)) / 86400 )) status="OK" [ "$days" -lt 365 ] && status="OPOZORILO" [ "$days" -lt 90 ] && status="KRITICNO" echo " $(basename $ca): $days dni [$status]" done # 2. Veljavnost CRL echo -e "\n[2] Status CRL:" for crl in /var/www/pki/*.crl; do next=$(openssl crl -in "$crl" -nextupdate -noout 2>/dev/null | cut -d= -f2) if [ -n "$next" ]; then days=$(( ($(date -d "$next" +%s) - $(date +%s)) / 86400 )) status="OK" [ "$days" -lt 3 ] && status="OPOZORILO" [ "$days" -lt 1 ] && status="KRITICNO" echo " $(basename $crl): $days dni do posodobitve [$status]" fi done # 3. OCSP odzivnik echo -e "\n[3] OCSP odzivnik:" ocsp_status=$(curl -s -o /dev/null -w "%{http_code}" http://ocsp.example.com/status) [ "$ocsp_status" = "200" ] && echo " Status: OK" || echo " Status: NAPAKA ($ocsp_status)" # 4. Iztekajoci certifikati (30 dni) echo -e "\n[4] Iztekajoci certifikati (<30 dni):" count=$(find /etc/ssl/certs -name "*.pem" -exec openssl x509 -checkend 2592000 -noout -in {} \; 2>/dev/null | grep -c "will expire") echo " Stevilo: $count" # 5. Prostor na disku echo -e "\n[5] Prostor na disku:" df -h /etc/pki /var/log | tail -n +2 echo -e "\n=== Konec pregleda zdravja ===" ---- ===== Podrobna preverjanja ===== ==== 1. CA certifikati ==== # Veljavnost korenskega CA openssl x509 -in /etc/pki/CA/root-ca.pem -enddate -noout # Pricakovan rezultat: > 10 let # Veljavnost vmesnega CA openssl x509 -in /etc/pki/CA/intermediate-ca.pem -enddate -noout # Pricakovan rezultat: > 2 leti # Preverjanje verige certifikatov openssl verify -CAfile /etc/pki/CA/root-ca.pem /etc/pki/CA/intermediate-ca.pem # Pricakovan rezultat: OK **Pragovi:** | Tip CA | Opozorilo | Kritično | |--------|-----------|----------| | Korenski CA | < 5 let | < 2 leti | | Vmesni CA | < 1 leto | < 6 mesecev | ---- ==== 2. Veljavnost CRL ==== # Metapodatki CRL openssl crl -in /var/www/pki/crl.pem -text -noout | head -20 # Preverjanje naslednje posodobitve openssl crl -in /var/www/pki/crl.pem -nextupdate -noout # Pridobitev CRL iz CDP curl -s http://crl.example.com/crl.der | openssl crl -inform DER -text -noout **Pragovi:** | Metrika | Opozorilo | Kritično | |---------|-----------|----------| | Naslednja posodobitev | < 3 dni | < 1 dan | | Velikost CRL | > 10 MB | > 50 MB | ---- ==== 3. OCSP odzivnik ==== # Razpolozljivost OCSP curl -s -o /dev/null -w "HTTP: %{http_code}, Cas: %{time_total}s\n" http://ocsp.example.com/status # OCSP odziv za testni certifikat openssl ocsp \ -issuer /etc/pki/CA/intermediate-ca.pem \ -cert /etc/ssl/certs/test.pem \ -url http://ocsp.example.com \ -resp_text # Pricakovan rezultat: "Cert Status: good" (ali "revoked" ce je preklican) **Pragovi:** | Metrika | Opozorilo | Kritično | |---------|-----------|----------| | Odzivni čas | > 500ms | > 2s | | HTTP status | ≠ 200 | Časovna omejitev | ---- ==== 4. Iztekajoci certifikati ==== # Strezniski certifikati (30 dni) find /etc/ssl/certs -name "*.pem" -exec sh -c ' if openssl x509 -checkend 2592000 -noout -in "$1" 2>/dev/null | grep -q "will expire"; then echo "IZTEKA: $1" fi ' _ {} \; # CA certifikati (1 leto) for ca in /etc/pki/CA/*.pem; do if openssl x509 -checkend 31536000 -noout -in "$ca" 2>/dev/null | grep -q "will expire"; then echo "CA OPOZORILO: $ca" fi done # PowerShell: Iztekajoci certifikati Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.NotAfter -lt (Get-Date).AddDays(30) } | Format-Table Subject, NotAfter, Thumbprint -AutoSize ---- ==== 5. Sistemski viri ==== # Prostor na disku v PKI imenikih df -h /etc/pki /var/log/pki /var/www/pki # Velikost dnevniskih datotek du -sh /var/log/pki/* # Procesi ps aux | grep -E "(ocsp|openssl)" **Pragovi:** | Vir | Opozorilo | Kritično | |-----|-----------|----------| | Zasedenost diska | > 80% | > 95% | | Velikost dnevnikov | > 1 GB | > 5 GB | ---- ===== Avtomatizacija ===== ==== Cron opravilo ==== # /etc/cron.d/pki-health-check # Dnevno ob 08:00 0 8 * * * root /usr/local/bin/pki-health-check.sh | mail -s "Pregled zdravja PKI $(date +%Y-%m-%d)" pki-team@example.com ==== Prometheus Exporter (opcijsko) ==== # prometheus-pki-exporter.yml - job_name: 'pki' static_configs: - targets: ['pki-server:9115'] metrics_path: /probe params: module: [certificate] ---- ===== Predloga nadzorne plošče ===== | Metrika | Status | Vrednost | Prag | |---------|--------|----------|------| | Veljavnost korenskega CA | OK | 15 let | > 5 let | | Veljavnost vmesnega CA | OPOZORILO | 8 mesecev | > 1 leto | | CRL naslednja posodobitev | OK | 5 dni | > 3 dni | | OCSP odziv | OK | 120ms | < 500ms | | Iztekajoci certifikati | OPOZORILO | 3 | 0 | | Disk /etc/pki | OK | 45% | < 80% | **Legenda:** * OK * OPOZORILO * KRITIČNO ---- ===== Matrika eskalacije ===== | Ugotovitev | Akcija | Časovni okvir | |------------|--------|---------------| | CA < 6 mesecev | Načrtovati obnovo CA | 1 teden | | CRL potekel | Takoj obnoviti CRL | 1 ura | | OCSP ni dosegljiv | Ponovno zagnati odzivnik | 30 min | | > 10 iztekajočih certifikatov | Sprint za obnovo | 1 dan | | Disk > 95% | Rotacija/brisanje dnevnikov | Takoj | ---- ===== Povezana navodila ===== * [[.:zertifikat-erneuern|Obnova certifikata]] – Ob iztekajočih certifikatih * [[..:monitoring:ablauf-monitoring|Nadzor izteka]] – Avtomatizirano spremljanje * [[..:monitoring:alerting-setup|Nastavitev opozarjanja]] – Obvestila ---- << [[.:zertifikat-widerrufen|← Preklic certifikata]] | [[..:start|→ Scenariji za operaterje]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional// {{tag>runbook health-check monitoring operator}}