"Se ci sono due o più modi di fare una cosa,
e uno di questi modi può condurre a una catastrofe,
allora qualcuno la farà in quel modo.

(Edward Murphy)

Video How to linux - Come impostare la partizione home crittografata su una macchina virtuale KVM

Mar, 08/04/2014 - 02:26 -- arturu
Disc LUKS

Recentemente Canonical ha annunciato la fine del servizio "Ubuntu One", questo è un servizio che permette di tenere sincronizzati più computer con Ubuntu (oltre che fornire un sistema di backup online), Canonincal rilascierà il software sotto licenza Open Source. La prima cosa che mi è venuta in mente è che potrei farmi un mio server per tenere sincronizzato il portatile con gli altri computer che uso, un server virtuale può fare al caso mio. La prima problematica da affrontare è la riservatezza dei dati (anche usando Ubuntu One andava fatta questa consideazione, ma è un discorso lungo), una buona soluzione è la costruzione di una partizione crittografata utilizzando LUKS. Per questa guida useremo CentOS. Questa volta, per i pigroni della lettura ho preparato anche un video, si trova alla fine dell'articolo.

LUKS (Linux Unified Key Setup) è lo standard per la crittografia del disco rigido su Linux, esso fornisce uno standard per i dischi crittografati, non facilita non solo la compatibilità tra le distribuzioni, ma fornisce anche la gestione sicura delle password per utenti multipli. LUKS memorizza tutte le informazioni di configurazione necessarie nell'intestazione partizione, consentendo all'utente di trasportare o migrare i propri dati senza soluzione di continuità, in parole povere, terra terra, chiede la pssword di sblocco quando viene montato il disco e se la password corrisponde il disco viene decifrato.

Installazione

Per utilizzare LUKS installiano cryptsetup:

yum install cryptsetup

successivamente dobbiamo inserire il nostro disco, non dobbiamo formattare e non attivare l'automout, e lanciamo il seguente comando per individuare il nostro disco:

fdisk -l

in questo caso è "/dev/vdc", successivamente formattiamo il disco con cryptsetup e inseriamo la nostra password di sblocco:

cryptsetup luksFormat /dev/vdc

successivamente sblocchiamo il disco e gli assegnamo un nome in modo che sia mappato dal sistema:

cryptsetup luksOpen /dev/vdc CryptedPart1

creiamo una partizione sul disco appena sbloccato

mkfs.ext4 /dev/mapper/CryptedPart1

aggiungiamo un punto di montaggio in fstab (di solito, ma non è certo, nei server virtuali la home non è montata su un disco, ma se così non fosse bisogna sostituire la riga invece di aggiungerla), e all'avvio verrà richiesta la password di sblocco per completare il boot (in genere dal monitor kvm si può osservare la sequenza di boot e inserire la password di sblocco),

echo "/dev/mapper/CryptedPart1 /home ext4 defaults 1 2" >> /etc/fstab

Sblocco automatico

Possiamo anche optare per lo sblocco automatico, cosa che in una macchina virtuale è auspicabile (dovrebbe essere sempre accesa), i maggiori sforzi dovrebbero essere incentrati nella sicurezza della macchina, ma questo è un altro discorso, come prima cosa dobbiamo costruirci un'altra password casuale e salvarla in un file a cui ci può accedere solo root (permessi 400), possiamo usare /dev/urandom

dd if=/dev/urandom of=/root/keyfile1 bs=1024 count=4

aggiungiamo la chiave di sblocco al disco crittografato (all'inizio abbiamo detto che le chiavi sono contenute nel disco stesso):

cryptsetup luksAddKey /dev/vdc /root/keyfile1

inseriamo la coppia chiave=>disco dentro crypttab in modo che all'avvio il disco possa essere decifrato:

echo "CryptedPart1 /dev/vdc /root/keyfile1 luks" >> /etc/crypttab

Conclusioni

Se lanciate

mount -a

il disco verrà montato nella posizione "/home", se avete eseguito le istruzioni per l'automount il disco verrà montanto anche all'avvio. La comodità sta che attraverso l'interfaccia di gestione della macchina virtuale si può gestire a piacimento la dimensione del disco, molto più comodo che usare il vecchio modo: cotruisci file dentro la vm, crea filesystem sul file, monta file come disco, ecc...

Saluti