Utente:Leot/BlogEntry: 2008 November 26 21:37:36 CET

Da Wiki di NetBSD Italia.

Gli utenti NetBSD, soprattutto gli utenti che utilizzano NetBSD su dispositivi portatili, hanno spesso l'esigenza che, per ragioni di privacy, i loro dati rimangano loro.

Da poco tempo ho avuto questa esigenza anche io, nella /home non ho nulla di personale, eccetto dei file di configurazione che hanno password in chiaro (vedere mail/msmtp, wip/fdm e probabilmente molti altri programmi). Chiunque abbia accesso alla macchina, basta che avvii in single-user mode (senza sapere nessuna password) e diventa padrone della macchina (e dei dati).

Perciò ho deciso di fare una piccola /home (600MB circa) criptata, mentre i miei documenti (non personali) /home/leot/documents non criptati (8GB circa).

Per criptare la /home su NetBSD abbiamo diverse alternative, o utilizziamo filesystem in user-space come filesystems/fuse-cryptofs o filesystems/fuse-encfs tramite refuse(3) (presente dalla 5.0) oppure il nativo cgd(4).

Dato che cgd(4) è presete dalla 2.0, abilitato anche in GENERIC (e quindi parte integrante del sistema operativo) e ben documentato ho scelto quest'ultimo.

La configurazione non è stata difficile grazie all'ottima documentazione ed alla semplicità di cgdconfig(8).

Prima di tutto tramite disklabel(8) individuo la partizione da criptare (che verrà ovviamente sovrascritta, quindi prima di provare cgd(4) effettuate sempre un backup):

# disklabel wd0

La partizione da criptare è la wd0h, siccome è vuota (prima di cgd(4) la partizione da 8GB era montata come /home, mentre quella da 600MB non era neache montata) inizio subito a preparare la partizione criptata, come tipo di filesystem impostiamo ccd in modo tale da distinguerla facilmente dalle altre non criptate:

 # disklabel -i wd0
 partition> h
 Filesystem type [?] [4.2BSD]: ccd
 Start offset ('x' to start after partition 'x') [30008.1c, 30248127s, 14769.6M]: 
 Partition size ('$' for all remaining) [1263.94c, 1274049s, 622.094M]: 
 partition> W
 Label disk [n]? y
 partition> Q
 

Il risultato sarà la seguente partizione:

# disklabel wd0 | grep " h:"
 h:   1274049  30248127        ccd                     # (Cyl.  30008*- 31271)

Ora tramite cgdconfig(8) creiamo il file di configurazione necessario (tramite il flag -g) e impostiamo la password che cripterà la nostra wd0h:

# cgdconfig -g -V disklabel -o /etc/cgd/wd0h aes-cbc 256
# cgdconfig -V re-enter cgd0 /dev/wd0h

Infine creiamo la partizione cgd0h tramite disklabel(8), questa partizione dovrà avere le stesse dimensioni di wd0h:

# disklabel -e -I cgd0
# /dev/rcgd0d:
type: cgd
disk: cgd
label: fictitious
[...]
#        size    offset     fstype [fsize bsize cpg/sgs]
d:   1274049         0     unused      0     0        # (Cyl.      0 - 622*)
h:   1274049         0     4.2BSD      0     0     0  # (Cyl.      0 - 622*)

Ecco fatto, ora gli ultimi ritocchi: fstab(5) e rc.conf(5).

# ${EDITOR} /etc/fstab
[...]
/dev/cgd0h  /home                 ffs  rw,softdep        1 2
/dev/wd0g   /home/leot/documents  ffs  rw,softdep,union  1 2
[...]
# ${EDITOR} /etc/rc.conf
[...]
cgd=YES
[...]

Perfetto! Al prossimo riavvio avremo la /home criptata mentre la /home/leot/documents non criptata. Quindi tutti i file presenti su /home/leot saranno criptati (eccetto quelli nella subdirectory documents/).

Ora ad ogni riavvio ci verrà chiesta la password per montare automaticamente le partizioni cgd(4).

Buon divertimento con cgd(4)!

Strumenti personali