La cifratura del disco protegge i dati a riposo. Su un VPS l’host controlla l’hypervisor, quindi non può impedire a un provider determinato di leggere la memoria. Ciò che fa bene è proteggere da backup persi, dischi riciclati e storage rubato o sequestrato. Sappi da quale di questi ti stai difendendo prima di dedicarci tempo.
Decidi da cosa ti stai proteggendo
- Dischi dismessi o copiati: la cifratura aiuta molto.
- Snapshot trapelati: la cifratura aiuta se la chiave non è conservata insieme allo snapshot.
- Un attaccante attivo sul sistema in esecuzione: la cifratura non aiuta, perché il volume è sbloccato.
- Un hypervisor malevolo: la cifratura non aiuta su un VPS. Un server dedicato con pieno controllo dell’hardware è l’opzione più forte.
Opzione 1: un volume di dati cifrato
È il posto più sicuro da cui iniziare. Collega un secondo disco o crea un file loop e tieni lì i dati sensibili. L’esempio usa un dispositivo vuoto chiamato /dev/vdb. Ricontrolla il nome del dispositivo, perché la formattazione ne distrugge il contenuto.
sudo apt install -y cryptsetup
sudo cryptsetup luksFormat /dev/vdb
sudo cryptsetup open /dev/vdb secure
sudo mkfs.ext4 /dev/mapper/secure
sudo mkdir -p /srv/secure
sudo mount /dev/mapper/secure /srv/secure
Per chiuderlo di nuovo: sudo umount /srv/secure && sudo cryptsetup close secure.
Opzione 2: un container su file
Quando non hai un disco di riserva, usa un file come container.
sudo fallocate -l 20G /root/vault.img
sudo cryptsetup luksFormat /root/vault.img
sudo cryptsetup open /root/vault.img vault
sudo mkfs.ext4 /dev/mapper/vault
sudo mount /dev/mapper/vault /srv/vault
Opzione 3: il disco root con sblocco remoto
Cifrare il disco root richiede un modo per inserire la passphrase all’avvio, prima che la rete sia attiva. La risposta abituale è un piccolo server SSH (dropbear) dentro l’initramfs. Dipende dal fatto che il tuo provider ti lasci installare un’immagine personalizzata o reinstallare con un partizionamento tuo, quindi controlla prima. Molti pannelli VPS non lo consentono e un errore può lasciare il server non avviabile, quindi tieni pronta un’opzione di rescue.
In sintesi: installa con un root cifrato, aggiungi dropbear-initramfs, metti la tua chiave pubblica SSH in /etc/dropbear/initramfs/authorized_keys, rigenera l’initramfs, poi riavvia e sblocca via SSH con cryptroot-unlock.
Gestisci correttamente la chiave
- Usa una passphrase lunga e tienila in un password manager, non sul server.
- Fai il backup dell’header LUKS:
sudo cryptsetup luksHeaderBackup /dev/vdb --header-backup-file header.img. Conservalo offline. - Non sbloccare automaticamente con un file chiave salvato sullo stesso disco. Vanificherebbe lo scopo.
- Ricorda che sbloccare all’avvio significa che un riavvio richiede la tua presenza.
Abbina la cifratura a solidi backup cifrati e alle basi dell’hardening in 15 minuti.