Criptare una partizione in Ubuntu

18-08-2007

Dopo aver letto questo chiaro e utile post di Christer Edwards, e dopo aver gentilmente chiesto il suo permesso, vi traduco in italiano una comoda mini-guida per creare una partizione criptata in Ubuntu.
Considerate che ho tradotto liberamente il suo post, tagliando o infoltendo ove ritenevo necessario.
Effettivamente era da molto che non mi cimentavo in una qualche guida “tecnica”!

GUIDA: Come criptare una partizione locale o un dispositivo rimovibile (come una chiavetta USB).

ATTENZIONE: Seguire queste istruzioni implica la perdita totale dei dati contenuti nella partizione da criptare, quindi… occhio a cosa state cancellando! In grassetto trovate i comandi da digitare nel terminale.

<> <> <> <> <> <> <> <>
PASSO 1:
Installiamo una utility per criptare:
$ sudo aptitude install cryptsetup

<> <> <> <> <> <> <> <>
PASSO 2:

Ora è il momento di preparare la partizione; se non siete sicuri su come si chiami, lanciate questo comando:
$ sudo fdisk -l

Vi verranno mostrate tutte le partizioni disponibili, con il dettaglio del nome del dispositivo.
Lanciandolo sul mio laptop, ad esempio, viene fuori questo risultato:

encryption_1

Ora che siete sicuri sul nome del device (nel mio caso sto facendo una prova sulla mia chiavetta USB, ovvero /dev/sdb1, come vedete nella figura sopra), potete lanciare il seguente comando per creare la partizione da criptare (volendo avreste anche potuto usare un tool grafico come gparted):

$ sudo fdisk /dev/[dispositivo]

(ovviamente dovete sostituire [dispositivo] con il nome del dispositivo in cui c’è (o ci sarà) la partizione che vi interessa criptare; nel mio caso, sdb è il dispositivo, e sdb1 è la partizione (già esistente) che intendo criptare)

Vi verrà proposto il menu di fdisk; è sufficiente creare la partizione (con il tasto n(ew), createla primaria o estesa a seconda delle necessità), e poi rendere permanenti le modifiche della tabella delle partizioni con il tasto w(rite).

<> <> <> <> <> <> <> <>
PASSO 3:

Per essere sicuri che il proprio kernel sia aggiornato sulla nuova tabella delle partizioni, potete lanciare il comando:
$ sudo partprobe

Nel mio caso, ad esempio, Ubuntu erroneamente mi lancia una finestra di Nautilus sulla root della chiavetta USB, e il terminale mi dice che il dispositivo è occupato. Potrebbe quindi essere necessario un reboot.
<> <> <> <> <> <> <> <>
PASSO 4:

Ora vedremo come criptare la nuova partizione; ci sono differenti opzioni, e non ne esiste una “migliore” per tutto, dipende molto dalle vostre esigenze di sicurezza. La prima opzione è per chi ha poco tempo ed esigenze basiche, mentre la terza richiede molto tempo ma è a prova di bomba. La seconda opzione è un buon compromesso.

Prima di criptare, scriveremo dei dati nella nuova partizione, per evitare “attacchi” che cercano pattern esistenti nei dati “sparsi” ancora presenti nella partizione; potete usare uno dei seguenti tre comandi (l’ultimo è il più sicuro ma richiede molto tempo):
$ sudo dd if=/dev/zero of=/dev/[dispositivo] bs=4k
$ sudo badblocks -vfw /dev/[dispositivo] [block-size-del-dispositivo]
$ sudo dd if=/dev/random of=/dev/[dispositivo] bs=4k

Per migliorare la sicurezza di queste operazioni, potete effettuare delle operazioni col vostro PC (muovere il mouse, lanciare applicazioni, ecc) per rendere la casualità più efficace possibile.

<> <> <> <> <> <> <> <>
PASSO 5:

A questo punto la partizione è pronta per essere criptata. Il metodo usato in questo tutorial si chiama LUKS, con dei valori di mio gusto per ciò che riguarda lunghezza della stringa, hash e cifratura (potete cambiarli a piacimento, se sapete cosa state facendo).
Con questo comando vi verrà anche chiesta la passphrase (frase segreta) per accedere alla vostra partizione.
Non dimenticatevi la passphrase, altrimenti è molto probabile che non potrete più accedere ai dati della vostra partizione!

$ sudo cryptsetup luksFormat /dev/[dispositivo] -c aes -s 256 -h sha256

<> <> <> <> <> <> <> <>
PASSO 6:

Ora che abbiamo creato l’impostazione di base per la cifratura, dobbiamo aprire la partizione per usarla (il [nome] può essere qualsiasi cosa a vostro piacimento, ma evitate gli spazi ed eventualmente anche le lettere accentate):

$ sudo cryptsetup luksOpen /dev/[dispositivo] [nome]

<> <> <> <> <> <> <> <>
PASSO 7:

Ora che il dispositivo è aperto ed aggiunto al device mapper, possiamo creare dentro esso un filesystem, ed usarlo. Ecco l’ultimo comando da lanciare (name è il [nome] dato sopra, e label è l’etichetta da dare al dispositivo):

$ sudo mke2fs -j /dev/mapper/name -L label

Questo comando crea un filesystem di tipo ext3. Per altri tipi di filesystem sono necessari comandi diversi.

<> <> <> <> <> <> <> <>
COSE AGGIUNTIVE:

Se volete che questa partizione venga automaticamente montata all’avvio, aggiungetela nel file /etc/fstab, assicurandovi di specificare la locazione /dev/mapper/[name] e NON il nome della partizione originaria.
In questo caso, durante il boot vi verrà chiesta la passphrase.
Questo è un esempio di come inserire la partizione in /etc/fstab:
/dev/mapper/name     /data     ext3     defaults     0  0

Se invece avete criptato un dispositivo rimovibile, il vostro Gnome lo riconoscerà e vi chiederà la passphrase in ambiente grafico.

Terza cosa: sempre nel caso di un disco rimovibile, può essere giusto cambiare il proprietario del percorso di mount, e mettere l’id di gruppo nella directory, in modo che il vostro utente abbia pieni permessi (user.user deve essere sostituito col vostro username nel sistema, e [nome] è il punto di mount del file system):
$ sudo chown -R user.user /media/[nome]
$ sudo chmod g+s /media/[nome]

Potete aggiungere più passphrase per accedere alla partizione (utile se più persone ci devono lavorare):
$ sudo cryptsetup luksAddKey /dev/[dispositivo]

Potete ovviamente anche rimuovere una passphrase precedentemente utilizzata:
$ sudo cryptsetup luksDelKey /dev/[dispositivo] [slot #]

Per avere informazioni sulla vostra partizione criptata e sugli “slot” assegnati per le chiavi:
$ sudo cryptsetup status name
$ sudo cryptsetup luksDump /dev/[dispositivo]

Bene, per ora è tutto!

Fatemi sapere se funziona :-)

12 Responses to “Criptare una partizione in Ubuntu”

  1. LuNa Says:

    stavolta hai esagerato :-) ottimissimo ! tra l’altro è un po che cercavo un howto così, e ne ho trovati, ma cosi ben fatto è il primo. grazzzie grazzzie

  2. ubuntista Says:

    de nada :-)

  3. sly Says:

    finalmente ti dai ai post smanettoni cribbio! ;P


  4. […] possa criptare una partizione con Linux e Ubuntista, grazie hai suoi poteri di precog (:))  oggi mi ha fornito subito la risposta: quindi, […]

  5. qwert Says:

    ancora piu’ forte:

    criptare l’intero sistema!

    http://news.softpedia.com/news/Encrypted-Ubuntu-7-04-61312.shtml

    testato in vmware. aggiunta anche il swapp crypt. ottimo!

    qwert

  6. nos-nitrous Says:

    Ottima guida, ne approfitto per aggiungere che è anche possibile sbloccare la partizione tramite keyfile salvato, per esempio, su una penna usb..
    Io l’ho fatto per i miei server, password o keyfile, in modo da non complicare le cose per i niubbi… si infila la pennetta, si accende il server e voilà… partizioni montate senza password…

    Per fare ciò basta inserire in /etc/default/cryptdisks alla voce CRYPTDISKS_MOUNT=”[mount_point]” il punto di mount che contiene la passkey che avete definito in /etc/crypttab.

    Inoltre se non ti dispiace, prenderei spunto dalla tua guida per inserirne una simile sul mio blog (http://s2l.no-ip.info)

  7. ubuntista Says:

    ottimo, nos-nitrous :-)
    procedi pure!

  8. paolo Says:

    Ciao!

    guida molto interessante!

    mi pare che manchi solo sudo modprobe dm-crypt al passo 6, senza il quale a me da errore!

    Ciao,

    Paolo

  9. Nicola Says:

    Guida molto buona!

    Ne ho pubblicata una partendo da questa (naturalmente citando in testa la paternità derivata da questo post) sul mio sito, http://esperienzelinux.blogspot.com/ con la piccola variante che le partizioni sono 2, NTFS ed in quella in chiaro è presente il programma freeOTFE portable per utilizzare la partizione criptata sotto windows.

    Se il mio post non fosse gradito lo rimuovo naturalmente!

  10. sbnz Says:

    Ciao volevo solo avvertirti che credo ti sia scappato un pezzo dell’articolo che hai tradotto. Infatti il secondo metodo di cancellazione del dispositivo predeve due passaggi. Non c’è solo il comando dei badblocks ma anche questo:
    sudo dd if=/dev/urandom of=/dev/[your device] bs=4K

    che fa comunque parte del secondo metodo, mentre il terzo metodo prevede la stessa stringa ma senza la “u” di urandom.

    se invece lo hai omesso intenzionalmente sto zitto ;)
    ciao!

  11. (A)lle Says:

    salve a tutti,
    complimenti intanto per la guida! leggo spesso con entusiasmo gli articoli su ubuntuista

    ho un problemino…
    ho installato Ubuntu 8.10 su una partizione criptata con aes256 lasciando una partizione in chiaro per il boot.
    Ho utilizzato la procedura che si trova durante l’installazione nella sezione “partizionamento manuale” di alternate. Tutto è andato a buon fine e ho usato il sistema per svariati mesi, il problema ora è che la scheda madre del portatile si è rotta, ho tolto l’HD e l’ho collegato ad un connettore usb per poterlo montare su un altro linux…

    ho provato su Ubuntu e su Debian… tutti e due i sistemi con installato cryptsetup: il disco viene rilevato, viene ovviamente montata automaticamente la partizione di boot, mi viene chiesta la password (quindi il sistema rileva correttamente la partizione criptata), la inserisco, non ricevo nessun errore, ma poi la partizione che ho chiamato “root” non viene montata.

    in /dev/mapper trovo dopo aver inserito l’usb:

    brw-rw—- 1 root disk 254, 0 2009-02-20 20:16 luks_crypto_9087f713-c234-478e-b220-d20daa72dc77

    come faccio a montare questa partizione?
    seguendo qualche guida ho letto che devo assegnare un nome alla partizione criptata (come ho fatto durante l’installazione) con:

    ~# cryptsetup create root /dev/sdb5

    mi viene chiesta la password, poi la devo montare manualmente, ad esempio:

    ~# mount /dev/mapper/root /media/disco
    in questa maniera mi viene chiesto di specificare il file system, ridò il comando:

    ~# mount -t ext3 /dev/mapper/root /media/disco

    ma poi ricevo “mount: wrong fs type, bad option, bad superblock on /dev/mapper/root”

    potete aiutarmi?
    tempo fa ho fatto delle prove con delle chiavette usb criptandole da riga di comando con cryptsetup e non ho avuto problemi a farle vedere automaticamente al sistema una volta inserita la password.
    qualcuno ha dei suggerimenti?

    grazie mille!


I commenti sono chiusi.