
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