Ho acquistato un nuovo netbook e, nell’installare Ubuntu, ho deciso di utilizzare per i miei dati un filesystem criptato in modo che, in caso di smarrimento o furto, non sia possibile decifrare il contenuto del disco.
In questo articolo descrivo come configurare il filesystem criptato, è necessario avere un po’ di familiarità con la riga di comando di Linux per portare a compimento l’operazione con successo.
L’installazione guidata di Ubuntu 9.04 (nome in codice Jaunty Jackalope) infatti non prevede la configurazione di un filesystem criptato (come invece fanno altre distribuzioni, come Fedora ad esempio). E’ quindi necessario fare qualche operazione a mano. Mi sono quindi documentato facendo qualche ricerca e quelle che seguono sono le istruzioni dettagliate per installare Ubuntu con un filesystem criptato.
Il mio netbook ha un solo disco il cui device è /dev/sda quindi tutti i comandi riportati più avanti fanno riferimento a questo device. Se il device del disco su cui vuoi installare il sistema criptato è diverso devi sostituire a /dev/sda il device corretto.
E’ possibile configurare il sistema per criptare l’intero filesystem ma per questioni di performance ho preferito limitarmi a criptare solo le partizioni di home e swap. Non vedo la necessità di criptare anche la partizione del sistema operativo visto che non contiene dati riservati. Ho deciso di criptare anche la partizione di swap perché può contenere informazioni riservate: documenti e password ad esempio. La partizione di swap inoltre viene utilizzata per salvare l’intero contenuto della RAM in modalità ibernazione.
Ho utilizzato la variante Netbook Remix di Ubuntu 9.04 ma queste istruzioni dovrebbero applicarsi anche alle altre varianti.
E’ necessario innanzitutto preparare una chiavetta usb (o un cd) per l’installazione del sistema operativo. Dal sito di ubuntu si può scaricare il file immagine da copiare sulla chiavetta (o sul cd) seguendo le istruzioni pubblicate sul sito stesso.
All’avvio della macchina istruisci il bios per fare il boot dalla chiavetta o dal cd (la procedura è diversa per ogni pc ed è documentata nel manuale).
All’avvio, ubuntu ti chiederà se lanciare l’installazione o il sistema operativo in modalità live (cioè lanciare ubuntu da chiavetta o cd senza installarlo su disco). E’ necessario avviare in modalità live e NON lanciare l’installazione. Lanceremo l’installazione più avanti, prima dobbiamo preparare il disco per il filesystem criptato visto che la procedura di installazione guidata non è in grado di farlo.
Quando il sistema live sarà avviato avrai di fronte il desktop. Lancia il terminale e digita i seguenti comandi:
Innanzitutto provvediamo a formattare opportunamente il disco. ATTENZIONE: tutto il contenuto del disco andrà perso, regolati di conseguenza.
# sudo -i
# cfdisk /dev/sda
Seguendo le istruzioni di cfdisk crea una prima partizione di tipo 83 (Linux), io ho utilizzato 8 gigabytes. E’ sufficiente la metà per una installazione normale quindi se il tuo pc ha una flash (generalmente di dimensioni ridotte) puoi ridurre questo valore a 4.
Crea una seconda partizione di tipo 8e (Linux LVM). Va benissimo una partizione primaria, questa partizione ospiterà i volumi criptati (ci metteremo la partizione di swap e quella di home).
Il risultato finale sarà una partizione di tipo 83 su /dev/sda1 e una partizione di tipo 8e su /dev/sda2.
Ora configuriamo la partizione criptata. La versione live di ubuntu non contiene gli strumenti per farlo, quindi li installiamo.
# apt-get install lvm2 cryptsetup
# modprobe dm-crypt
# modprobe aes
# cryptsetup -y -s 256 -c aes-cbc-essiv:sha256 luksFormat /dev/sda2
(bisogna confermare scrivendo YES in maiuscolo)
# cryptsetup luksOpen /dev/sda2 sda2_crypt
A questo punto ti verrà chiesta la password, inseriscila. Scegli una password robusta. Questa password serve per decrittare il volume criptato, ad installazione ultimata ti verrà chiesta durante l’avvio del sistema. Inutile dire che se la dimentichi non avrai più accesso ai tuoi dati.
A questo punto abbiamo preparato un volume criptato, ora lo usiamo per i volumi logici di swap e home.
# pvcreate /dev/mapper/sda2_crypt
# vgcreate vg /dev/mapper/sda2_crypt
# vgchange -a y vg
# lvcreate -L 2G -n swap vg
# lvcreate -l 100%FREE -n home vg
Abbiamo creato una partizione di swap da 2 gigabytes (la dimensione della RAM del mio netbook). Se ne hai bisogno puoi configurare una swap più grande oppure più piccola in base alle tue esigenze. Puoi anche fare a meno della swap (anzi, lo consiglierei) se il tuo disco è allo stato solido. Se vuoi poter utilizzare la modalità ibernazione comunque la partizione di swap deve essere almeno pari alla quantità di ram installata.
Alla partizione di home abbiamo dato tutto lo spazio restante.
Ora formattiamo tutti i volumi per consentire all’installazione guidata di ubuntu di riconoscerli. Non avremo bisogno di formattarli nuovamente durante l’installazione.
# mkfs.ext3 -L root -M / /dev/sda1
# mkfs.ext3 -L home -M /home /dev/vg/home
# mkswap /dev/vg/swap
Io ho scelto ext3 come filesystem perché su questo netbook ho un disco tradizionale. Su un netbook con disco allo stato solido ho scelto ext2 per ridurre il numero di accessi al disco e prolungarne la vita. C’è chi comunque preferisce usare ext3 anche su dischi allo stato solido per privilegiare l’affidabilità (con ext2 in caso di crash rischi di perdere un po’ di dati), è questione di preferenze (e di backup). Fai le tue valutazioni e scegli.
Ora possiamo lanciare l’installazione di ubuntu, basta cliccare sull’apposita icona che trovi sul desktop.
Quando arrivi alla schermata per il partizionamento del disco scegli di eseguire il partizionamento manuale (l’ultima voce in basso). Ti verranno presentate le partizioni che abbiamo creato.
Seleziona vg-home, clicca su “edit” e imposta ext3 per il filesystem (oppure ext2 se hai formattato il disco con questo filesystem), scegli /home come mountpoint.
Seleziona sda1, imposta il filesystem a ext3 (o ext2) e imposta il mountpoint a /.
Non è necessario riformattare le partizioni, lo abbiamo già fatto prima.
Quando avrai terminato il processo di installazione NON FARE IL REBOOT. Se per caso lo hai fatto accidentalmente, lancia di nuovo il sistema live senza avviare il setup. Dobbiamo finire di configurare alcune cose perché nel sistema appena installato manca il supporto per i filesystem criptati quindi non è ancora in grado di avviarsi.
Torniamo al terminale e digitiamo i seguenti comandi per installare i pacchetti necessari per gestire il volume criptato.
# sudo -i
# mount /dev/sda1 /mnt
# chroot /mnt
# mount -t proc proc /proc
# mount -t sysfs sys /sys
# apt-get install lvm2 cryptsetup
con un editor di tuo gradimento (io uso vi, se non lo conosci puoi usare pico o nano) edita /etc/crypttab aggiungendo:
sda2_crypt /dev/sda2 none luks
Ora edita il file /etc/initramfs-tools/modules aggiungendo.
aes-i586
dm-crypt
dm-mod
sha256
Infine edita /etc/fstab. Qui devi commentare o cancellare l’UUID associato ai volumi criptati e sostituirlo con il percorso del volume.
Esempio: nel file troverai un commento che dice qualcosa del genere “Was on /dev/mapper/VolGroup00-LogVol00 during installation.” Devi rimpiazzare lo UUID con /dev/mapper/VolGroup00-LogVol00. Devi farlo sia per il volume di home che per il volume di swap. Non è necessario farlo per altre partizioni.
Ti allego le parti rilevanti del mio fstab a titolo di esempio:
# /home was on /dev/mapper/vg-home during installation
#UUID=739d119d-f10b-442b-ba59-9484d5bc0a5d /home          ext3   relatime       0      2
/dev/mapper/vg-home /home          ext3   relatime       0      2
# swap was on /dev/mapper/vg-swap during installation
#UUID=e35dc846-e893-4337-a987-8b81fc719e54 none           swap   sw             0      0
/dev/mapper/vg-swap none           swap   sw             0      0
Come puoi vedere per ogni volume ho commentato la riga originale con lo UUID e ho aggiunto la riga con il percorso.
Abbiamo quasi finito, l’ultimo comando per rendere operative le modifiche è il seguente:
# update-initramfs -k all -c
Ora fai pure il reboot, togli la chiavetta o il cd e partirai con il sistema operativo installato sul disco.
Durante l’avvio, quando viene visualizzato il logo di ubuntu con la barra, ti verrà richiesta la password per decrittare il volume criptato. Inseriscila e la procedura di avvio proseguirà come al solito.
Visto che il disco è criptato e il sistema non si avvia se non inserisci la password, puoi tranquillamente configurare la tua utenza per il login automatico.
Buon proseguimento
[AGGIUNTA]
Due note sulle performance. Ho provato sul mio netbook a scrivere 100MB di dati su disco sia sulla partizione non crittografata che su quella crittografata.
Senza crittografia la scrittura impiega circa 3 secondi, con la crittografia ci vogliono circa 6 secondi, il doppio. Questo conferma che è meglio lasciare la partizione del sistema operativo in chiaro e criptare solo le partizioni contenenti dati sensibili.
Come termine di paragone encfs, un filesystem crittografato in userspace, con crittografia analoga (aes 256bit) impiega circa 15 secondi.
[AGGIUNTA ULTERIORE]
Visto che al boot ti viene richiesta la password per sbloccare la tua home, potresti decidere di configurare il pc per avere il login automatico. Ecco come fare (istruzioni per Ubuntu 9.04 in inglese):
System / Administration / Login Window
Vai al tab Security e seleziona “Enable automatic login” se vuoi il login automatico immediato (non verrà mostrata la schermata di login) oppure abilita “Enable timed login” se vuoi il login automatico solo dopo un certo numero di secondi (verrà mostrata la schermata di login e, se non inserisci nulla, dopo qualche secondo verrà fatto il login automatico).
Potresti anche voler disabilitare la password del keyring di default (quello che devi sbloccare inserendo la password ad esempio per consentire al network manager di accedere alle password per le connessioni wifi). Per disabilitare la password del keyring di default:
Accessories / Passwords and encryption keys
Vai al tab “Passwords”, clicca con il pulsante destro su “Passwords: default” e seleziona “Change password”. Ti verrà chiesta la vecchia password e la nuova, che lascerai vuota. Al momento di salvare la nuova password vuota ti verrà chiesta conferma.