OffshoreVps
Sicurezza19 ott 20269 min di letturaDi il team di OffshoreVps

Cifra un VPS con LUKS: configurazione e limiti

Configura la cifratura del disco LUKS su un server noleggiato: un volume di dati cifrato, come funziona lo sblocco remoto del disco root e un modello di minaccia onesto.

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.

Finestra del terminale su un VPS che mostra i comandi usati per cifrare un VPS con LUKS, a partire da “sudo apt install -y cryptsetup”
Il tipo di comandi che eseguirai sul tuo server in questa guida.

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.

I passaggi di questa guida in ordine: 1. Decidi da cosa ti stai proteggendo; 2. Opzione 1: un volume di dati cifrato; 3. Opzione 2: un container su file; 4. Opzione 3: il disco root con sblocco remoto; 5. Gestisci correttamente la chiave
I passaggi di questa guida, in ordine.

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.