IT-Admin.tech

Backup di unità cifrate: gestione delle chiavi, ordine di ripristino e insidie tipiche

Architekturdiagramm: verschlüsseltes Laufwerk mit gesichertem Header, Key-Repository (Vault/HSM) und Backup-Repository...
Visualisierung: LUKS/BitLocker-Volume, gesicherte Header-Backups und zentrale Schlüsselverwaltung (Vault/HSM) als empfohlene Restore-Reihenfolge.

I backup di dischi cifrati sono la norma nelle infrastrutture moderne: le aziende proteggono i dati a riposo con la cifratura del disco (es. LUKS su Linux, BitLocker su Windows, FileVault su macOS). Questo ha impatti sui workflow di backup, sulla gestione delle chiavi e sull’ordine di ripristino. In questo articolo spiego in modo pratico quali prerequisiti sono necessari, come gestire le chiavi in modo sicuro e quale sequenza di passaggi funziona in modo affidabile durante un RESTore. Il pubblico di riferimento sono amministratori, system engineer e team operativi che devono garantire ripristinabilità e compliance.

Perché i backup di dischi cifrati sono diversi

Negli unità cifrate lo strato di disco (Full-Disk-Encryption, FDE) cifra i dati grezzi. Da ciò derivano tre conseguenze operative:

  • Un backup dei soli bit è inutilizzabile senza la chiave corrispondente: i dati rimangono protetti crittograficamente.
  • I metadati aggiuntivi sono critici: header, keyslot e metadati del KMS devono essere salvati. Gli header sono i metadati del contenitore che contengono riferimenti alle chiavi e parametri.
  • L’ordine di RESTore cambia: le chiavi e gli header devono essere disponibili prima o contemporaneamente ai dati, altrimenti l’immagine rimane illeggibile.

Questi aspetti possono sembrare banali, ma causano numerosi guasti nelle recovery reali se non vengono affrontati in modo sistematico.

Concetti fondamentali: Keys, Header, KMS, HSM

Un breve glossario per riferimento rapido:

  • Keyslot: in LUKS uno spazio nell’header che contiene una chiave crittata (Key). Più keyslot permettono più password o chiavi per lo stesso volume.
  • Header: i metadati del contenitore cifrato (es. LUKS-Header) con parametri, riferimenti ai keyslot e checksum. Senza un header valido l’accesso di norma non è possibile.
  • KMS (Key Management Service): servizio centrale per la gestione delle chiavi, spesso con API, ruoli e audit log. Esempi: HashiCorp Vault, Cloud-KMS dei provider.
  • HSM (Hardware Security Module): hardware fisica per la generazione e conservazione sicura delle chiavi; protegge le chiavi private dall’estrazione.

Gestione delle chiavi: opzioni, vantaggi e svantaggi

La gestione delle chiavi è la leva operativa centrale. Di seguito i principali modelli con i rispettivi impatti operativi:

  • Local key files: chiavi salvate sull’host. Semplice, veloce e rischioso: la perdita dell’host comporta la possibile perdita totale delle chiavi. Non consigliato in ambienti produttivi senza ulteriori misure di hardening.
  • Escrow/Key-Repository (archiviazione centrale): le chiavi sono conservate in un repository protetto (es. HashiCorp Vault). Vantaggi: controllo degli accessi, audit log, replica. Svantaggio: vanno garantiti backup/replica e la disponibilità dello stesso KMS.
  • HSM-Backed Keys: le chiavi vengono generate nell’HSM e vi RESTano; sono memorizzate esternamente solo referenze o wrapped keys. Massima sicurezza, ma costi più elevati e maggior complessità operativa.
  • TPM/Sealed Keys: le chiavi sono legate al TPM/hardware (Trusted Platform Module). Buono per anti-tamper, problematico in caso di sostituzione hardware o RESTore remoto se manca il TPM-Owner/Machine-ID.
  • Out-of-band Recovery Keys (Recovery Tokens): stampe fisiche o file offline con le chiavi di recovery. Utile come ultima risorsa, richiedono però rigidi controlli di accesso e politiche di rotazione.

Importante: qualunque sia la scelta, documentate i processi di accesso, la frequenza di backup del KMS e le procedure di recovery. Un KMS senza backup è un punto singolo di guasto.

LUKS (Linux) – Pratica: backup dell’header, keyslot e ripristino

LUKS (Linux Unified Key Setup) è ampiamente diffuso per FDE su Linux. Componenti rilevanti sono l’header LUKS e i keyslot. Due regole operative: creare un backup dell’header immediatamente dopo la messa in servizio e conservare chiavi/passphrase in un KMS o offline in più posti.

Backup dell’header

Con cryptsetup è possibile esportare l’header LUKS. Questo protegge i metadati, non le chiavi in chiaro (i keyslot rimangono cifrati nell’header):

Shell
sudo cryptsetup luksHeaderBackup /dev/sda1 --header-backup-file /srv/backup/luks-header-sda1.img

Perché funziona? L’esportazione dell’header copia i metadati, in modo che in caso di corruzione dell’header i metadati possano essere ripristinati. Quando può fallire: se il backup dell’header non è sincronizzato con lo stato corrente dei keyslot (per esempio dopo una rotazione delle chiavi), la versione di header ripristinata può fare riferimento a un keyslot non più valido — pertanto effettuare sempre nuovi backup dell’header dopo ogni modifica delle chiavi.

Ripristino dell’header

Se l’header originale è danneggiato, ripristinate il file di header salvato:

Shell
sudo cryptsetup luksHeaderRESTore /dev/sda1 --header-backup-file /srv/backup/luks-header-sda1.img

Dopo il ripristino verificate che i keyslot corrispondano a quanto previsto e che le passphrase note consentano nuovamente l’accesso.

Sequenza completa di ripristino per LUKS (versione breve)

  1. Ripristinate l’header LUKS (se danneggiato).
  2. Assicuratevi che la chiave (o il key-wrap/token) sia disponibile – dal KMS/HSM o dal secret di recovery.
  3. Aprite (decriptate) il dispositivo con cryptsetup o strumenti appropriati.
  4. Riparate LVM/RAID/filesystem (es. vgscan, pvscan, fsck) e mountate il volume.
  5. Verificate applicazioni e configurazioni di avvio.

BitLocker (Windows) – Pratica: Recovery Password, TPM ed export

BitLocker usa frequentemente il TPM (Trusted Platform Module) insieme a un Key Protector. Aspetti critici sono il salvataggio dei Recovery Key (Recovery Password) e la possibilità di ripristinare le protezioni senza TPM.

Salvataggio della chiave di ripristino (esempio PowerShell)

Da fare: archiviate la chiave di ripristino in un keystore sicuro. Esempio PowerShell che legge le Key-Protector-IDs ed esporta in un file/archivio protetto:

Powershell
Get-BitLockerVolume -MountPoint 'C:' | Select-Object -ExpandProperty KeyProtector | Format-List -Property KeyProtectorId,RecoveryPassword | Out-File -FilePath C:secure-backupbitlocker-recovery-C.txt

Perché? In caso di cambio hardware o guasto del TPM il Recovery-Password è l’ultima ancora di salvezza. Conservate questi file cifrati in un KMS o come copia fisica in una cassaforte.

Note sul ripristino di BitLocker

Nei casi di ripristino: ripristinate prima le informazioni di recovery, poi le configurazioni TPM o le policy. Se manca il Recovery-Password, il volume risulta in genere bloccato in modo permanente.

Ordine nel ripristino: procedura dettagliata e perché deve essere così

L’ordine corretto nel ripristino di dischi cifrati riduce i tempi di fermo e il rischio di perdita definitiva dei dati. Di seguito una procedura dettagliata con le motivazioni:

1. Ripristinare l’infrastruttura e il contesto di sicurezza

Prevedere innanzitutto i servizi di management necessari:

  • Disponibilità KMS/HSM: il key-store deve essere raggiungibile. Se il KMS è offline e non esistono chiavi di recupero offline, il ripristino può fallire.
  • Diritti di accesso e audit: assicuratevi che siano presenti i ruoli corretti (p. es. Key-Operator).

2. Ripristinare header e metadati

Perché prima? Gli header contengono le informazioni di struttura che controllano il processo di decrittazione. Senza l’header corrispondente l’unità diventa un blocco inaccessibile.

3. Fornire le chiavi/il materiale chiave

Avete Key-Wraps, riferimenti HSM o password di ripristino? Rendetele disponibili simultaneamente o prima del reale ripristino dei dati, altrimenti il processo di mount fallirà.

4. Aprire l’unità ed eseguire verifiche del filesystem

Dopo l’apertura (es. cryptsetup open) verificate l’integrità di LVM/RAID/filesystem:

Shell
# Beispiel: LUKS öffnen und LVM prüfen
sudo cryptsetup open /dev/sda1 secure_sda1
sudo pvscan
sudo vgscan --mknodes
sudo vgchange -ay
sudo lvscan
sudo fsck -f /dev/mapper/vgname-lvname
sudo mount /dev/mapper/vgname-lvname /mnt/recovery

Perché fsck? Durante un guasto i filesystem possono essere incoerenti; fsck ripara i danni recuperabili e previene danni successivi durante il montaggio.

5. Ripristino delle applicazioni e delle configurazioni

Ripristinate i servizi (database, webserver) in un ordine controllato. I database richiedono spesso backup coerenti o Point-in-Time Recovery (PITR) — assicuratevi di avere i backup DB corrispondenti al momento del backup del volume criptato.

Insidie tipiche e risoluzione dei problemi

Gli errori più frequenti nei ripristini e come evitarli o risolverli:

1. Header obsoleto dopo rotazione delle chiavi

Problema: ripristinate un header che non contiene l’ultimo keyslot utilizzato (es. dopo una rotazione). Conseguenza: accesso negato, poiché il keyslot manca.

Soluzione: dopo ogni rotazione delle chiavi aggiornare immediatamente il backup dell’header e introdurre un controllo di versione per i file header (es. header-sda1.img.vYYYYMMDD).

2. Chiavi legate a TPM senza il contesto macchina

Problema: in caso di sostituzione hardware il contesto TPM è differente; la chiave precedentemente vincolata al TPM non può essere ripristinata.

Soluzione: avere sempre una chiave di recupero fuori banda e documentare i processi di ripristino o di provisioning del TPM. Valutate l’uso di escrow protetto da HSM per server critici.

3. KMS non raggiungibile durante il ripristino

Problema: KMS guasto o rete non raggiungibile; le chiavi non possono essere recuperate.

Soluzione: progettare il KMS ad alta disponibilità, conservare chiavi di emergenza offline e implementare la policy di backup del KMS (esportazioni cifrate, playbook di ripristino).

4. Versioni LUKS incompatibili

Problema: versioni LUKS più recenti usano formati di header o impostazioni di cifratura predefinite diversi; un sistema di recovery obsoleto potrebbe non interpretare l’header.

Soluzione: conservate strumenti e live-image in versioni compatibili oppure documentate il minimo set di tool necessari. Documentate la versione LUKS con ogni backup dell’header.

5. Backup solo del contenitore cifrato invece dei dati decifrati

Problema: alcuni team fanno backup solo dell’immagine del blocco cifrato senza backup dell’header o export delle chiavi. Se si perde l’header, l’immagine è inutilizzabile.

Soluzione: integrate i backup delle immagini di blocco con backup dell’header e conservazione sicura delle chiavi, oppure eseguite anche backup application-aware in chiaro (es. dump del database), se la compliance lo consente.

Basi di dati su volumi cifrati (Basi di dati): garantire la consistenza

Le basi di dati (p.es. PostgreSQL, MySQL, Oracle) reagiscono in modo sensibile a immagini incoerenti del filesystem. Un database dispone di log di transazione interni (WAL/Redo Logs), cruciali per il Point-in-Time-Recovery. Durante il backup di volumi cifrati è necessario garantire che i backup siano consistenti e che i corrispondenti WAL-/Transaction-Logs siano disponibili.

Modelli consigliati per i backup DB

  • Application-aware Dumps: Per DB relazionali preferire un dump logico (pg_dump) o uno strumento di backup interno al DB che rispetti i confini delle transazioni. In questo modo si evita la dipendenza dalla chiave del volume in caso di ripristino a livello di blocco.
  • Quiesce/Freeze per backup di filesystem o snapshot: Quiesce significa portare brevemente il DB in uno stato consistente (checkpoint) prima di creare lo snapshot. Per VM o snapshot di storage verificate se il fornitore dello snapshot supporta l’Application-Awareness.
  • Strategia PITR: Raccogliete e archiviate in modo continuo i WAL/Redo-Logs in un luogo accessibile indipendentemente dalla chiave del volume o cifrato separatamente.

Punto di verifica: In un ripristino è necessario combinare backup del volume, header/chiavi e gli appropriati archivi WAL; altrimenti non è possibile un ripristino coerente del DB.

Controllo di esempio: verificare la disponibilità dei WAL (PostgreSQL)

Shell
# Prüfen, ob alle benötigten WAL-Archive vorhanden sind
ls -1 /srv/backup/postgres/wal | tail -n 20
# Bei RESTore: pg_basebackup einspielen und dann WAL-Archive mit recovery.conf referenzieren

Automazione: playbook di ripristino e integrazione con Vault

Runbook automatizzati riducono gli errori nella sequenza di ripristino. Punti importanti: autenticazione sicura verso il KMS (p.es. Vault), task idempotenti e passaggi di audit visibili.

Vault: recupero delle chiavi (esempio con vault CLI)

Shell
# Annahme: VAULT_ADDR und Token sind vorher sicher bereitgestellt
vault login -method=cert
vault kv get -field=wrapped_key secret/keys/production/sda1 > /tmp/wrapped_key.bin
# Unwrap oder decrypt je nach KMS-Setup
vault write -format=json transit/decrypt/my-key ciphertext=$(cat /tmp/wrapped_key.bin) | jq -r .data.plaintext | base64 --decode > /tmp/luks_key.bin

Perché? I Wrapped Keys consentono di trasportare in modo sicuro il materiale delle chiavi; il materiale chiave reale rimane protetto finché non viene esplicitamente decrittato nel caso di ripristino. Nota: token e credenziali per la CLI di Vault devono a loro volta essere sicuri e soggetti a rotazione.

Esempio: task Ansible per il ripristino dell’header (estratto)

Yaml
- name: RESTore LUKS header
  hosts: recovery-host
  tasks:
    - name: copy header backup
      copy:
        src: /srv/backup/luks-header-sda1.img
        dest: /tmp/luks-header-sda1.img
        mode: '0600'
    - name: RESTore header
      command: sudo cryptsetup luksHeaderRESTore /dev/sda1 --header-backup-file /tmp/luks-header-sda1.img
      become: yes

I task automatizzati devono essere idempotenti e registrati in modo dettagliato. Evitate decrittazioni non supervise in pipeline automatiche senza autorizzazione umana per sistemi critici.

Altre insidie operative

  • Deriva dell’orologio (Clock-Drift): la validazione KMS/certificati può fallire a causa di differenze temporali. Assicuratevi che NTP/chrony sia configurato.
  • Certificati scaduti: le connessioni TLS verso il KMS si interrompono; verificate la scadenza dei certificati nei cicli di controllo.
  • Cifratura dell’Object Storage: Se utilizzate oggetti cifrati lato client, salvate le chiavi separatamente dall’account dell’Object Storage.
  • Retention vs Key-Rotation: La rotazione può rendere i backup più vecchi inaccessibili se le chiavi precedenti non vengono conservate. Definite una retention policy compatibile.
  • Script di verifica pratici e integrazione nel Runbook

    Un breve script di verifica riduce gli errori umani in caso di incidente. Esempio: disponibilità del file header + stato del KMS + Test-Open (dry-run).

    Shell
    #!/bin/bash
    # check-RESTore-prereqs.sh - einfache Prüfungen vor RESTore
    set -euo pipefail
    HEADER=/srv/backup/luks-header-sda1.img
    if [ ! -f "$HEADER" ]; then echo "HEADER MISSING"; exit 2; fi
    # Vault check (nur reachability)
    curl -sf --silent $VAULT_ADDR/v1/sys/health >/dev/null || { echo "VAULT UNREACHABLE"; exit 3; }
    # Test if cryptsetup can read header (dry-run)
    if ! sudo cryptsetup luksDump --header-backup-file "$HEADER" /dev/null >/dev/null 2>&1; then echo "HEADER INVALID"; exit 4; fi
    echo "PREREQS OK"
    

    Questo script non sostituisce test completi, ma è utile come controllo automatico preliminare prima dei passaggi di RESTore manuale.

    Strategie di fallback

    Se tutto va storto, queste strategie funzionano come ultima risorsa:

    • Chiavi di recovery offline in luoghi sicuri (cassaforte fisica, export HSM su supporti write-once).
    • Shamir Secret Sharing: suddivisione di una chiave di recovery in n parti, delle quali k sono necessarie. Utile per responsabilità distribuite.
    • Riconstituzione tramite forense: in casi estremi esperti forensi specializzati possono tentare di ricostruire frammenti di header o keyslot danneggiati — costoso e senza garanzia.

    Conclusione

    I backup di dischi cifrati richiedono sia misure tecniche sia disciplina organizzativa: salvate header e chiavi, pianificate l’alta disponibilità del KMS, testate regolarmente le sequenze di RESTore e documentate processi e responsabilità. Particolare attenzione richiedono i database e gli scenari applicativi in cui è necessario combinare backup consistenti e log di transazione. Playbook automatizzati con processi di autorizzazione chiari riducono gli errori, ma mantenete controlli manuali (gate-checks) per i passaggi critici di decrittazione. Usate chiavi di recovery offline come ultima ancora di salvezza ed eseguite test di RESTore almeno semestralmente. Solo così eviterete che un job di backup riuscito sia inutile in caso di emergenza.

    Se avete bisogno di un piano di RESTore concreto per il vostro ambiente, i passaggi descritti qui possono essere trasformati in un Runbook ripetibile che includa casi di test, responsabilità e tempi di recovery (RTO/RPO).

    Per questo tema sono importanti anche Luks Header Backup e Bitlocker Recovery Key. L’articolo inquadra questi aspetti in modo comprensibile e mostra cosa conta nella pratica quotidiana.

    Weiterfuehrend

    Passende weitere Inhalte