[glux] Chiave USB criptata
Andrea
aerdan@inventati.org
Mer 15 Feb 2006 11:10:48 CET
---/--- 15 feb 2006 08:33:03 +0100, gigiv scrive: ---/---
> avevo messo da parte l'idea perche' mi sembrava, appunto, "un casino
> bestiale"
Infatti ora sto provando un'altro sistema che mi pare molto più comodo, appena
ho finito posto tutto.
> una cosa non mi e' chiara,
> e' necessario fare una partizione/filesystem apposta, oppure basta fare un
> file da montare in loop ?
Il problema sono i filesystem journaled ma è anche vero che dal nel kernel 2.6.8
(altri non so) è possibile utilizzare anche questi con degli accorgimenti.
Quindi bisogna stare attenti a dove si copia il file.
CONFIG_BLK_DEV_CRYPTOLOOP:
[...]
WARNING: This device is not safe for journaled file systems like
ext3 or Reiserfs. Please use the Device Mapper crypto module
instead, which can be configured to be on-disk compatible with the
cryptoloop device.
Credo che il sistema che sto provando sia compatibile con filesystem journaled
tipo ext3 o Raiserfs.
Allego il file da cui prendo spunto. Quello che voglio fare è utilizzare questo
sitema per creare un filesystem criptato solo per la chiave oppure per un file
da associare ad un loop device e quindi da montare tipo in /mnt/crypto.
Ciao
a
-------------- parte successiva --------------
LICENZA
Copyright (c) 2004 Marco Bertorello
Questo How-To è documentazione libera e come tale può essere utilizzata e
distribuita secondo le regole stabilite dalla licenza GNU GPL versione 2.0 o
successive. Una copia integrale della licenza è reperibile presso il sito della
Free Software Foudation: http://www.gnu.org/licenses/gpl.txt
PREFAZIONE
Alla luce di alcuni recenti avvenimenti che hanno dimostrato una compromissione
a livello fisico di alcune macchine appartenenti ad associazioni con scopi
inerenti temi come anonimato e privacy, ho deciso che non si può più stare
tranquilli neanche a PC spento e così ho cominciato a definire alcune cose che
occorre tenere presente per *aumentare* la propria privacy
(N.B. aumentare si, perchè la certezza assoluta della sicurezza, della privacy e
dell'anonimato non si possono avere MAI).
In questa breve guida vedremo come installare una distribuzione GNU/linux su
partizioni cifrate, in modo da vanificare un'attacco di tipo "fisico" (quale
l'apertura del case e la duplicazione dei dischi o la copia di dati tramite
live-cd)
Questo how-to non è e non vuole essere una guida esaustiva sugli argomenti di
cui tratta: niente può sostituire la documentazione ufficiale dei singoli
"prodotti" che andremo ad utilizzare.
Si tratta semplicemente delle mie, personalissime, esperienze. Spero possano
essere d'aiuto a qualcuno
VANIFICARE ATTACHI FISICI ALLA MACCHINA
Iniziamo, installando una distribuzione GNU/Linux. Personalemte ho fatto queste
cose con una Debian 3.1 stable, ma non dovrebbero esserci limitazioni a farlo
con altre distro.
Assicuratevi di partizionare il disco in questa maniera, per l'installazione:
Device Utilizzo
----------------------------------------------------------------
/dev/hda1 questa partizione sarà lasciata in
chiaro per consentire il boot
In fase di installazione, montatela su
/boot
/dev/hda2 questa partizione sarà la vostra futura
/home, ma per il momento montatela su
/ (root)
/dev/hda3 questa partizione sarà la vostra futura
/ (root), ma per il momento non montatela
Non create nessuna partizione di swap, swapperemo su file su una partizione
crittografata perchè l'area di swap può contenere dati che possono essere
recuperati.
Come potete notare l'unica partizione che resterà in chiaro, è la /boot dove
risiede il kernel. La dimensione di questa partizione non dev'essere enorme,
nella maggior parte dei casi, dovrebbero essere sufficenti ~20 MB.
Le dimensioni delle altre partizioni sono a vostra discrezione.
Una volta conclusa l'installazione della distro, cominciamo a procurarci gli
strumenti che ci servono:
1) un kernel >= 2.6.4 con supporto Multi-device (RAID e LVM), Device Mapper e
Crypt Target (più, ovviamente gli algoritmi che avete intenzione di utilizzare)
2) gli initrd-tools
3) cryptsetup
Quindi, in un sistema Debian procediamo:
apt-get install kernel-image-2.6.8-2-686 initrd-tools cryptsetup
una volta terminata l'installazione, riavviate la macchina per partire con il
nuovo kernel
Andiamo ora ad editare il file /etc/crypttab, inserendo la seguente riga:
root /dev/hda3
e successivamente riavviamo il servizio di cryptsetup
/etc/init.d/cryptdisks start
Vi verrà chiesta una passphrase. Vi consiglio di inserne una:
1) per quanto possibile, complicata (lettere, numeri, caratteri speciali,
maiuscole, minuscole, ecc)
2) che riuscite a ricordare (non è possibile recuperare i dati se la passphrase
è persa)
A questo punto, viene creato il device /dev/mapper/root, che può essere
formattato con il vostro Filesystem preferito:
mkfs.ext3 /dev/mapper/root
montatelo in /mnt
mount /dev/mapper/root /mnt
e versategli dentro la vostra root attuale
cp -axv / /mnt
Dopo qualche minuto (dipende dalla quantità dei dati), avrà finito e potrete
editare il file /mnt/etc/fstab per dirgli dove è la nuova root.
Sostituite, quindi
/dev/hda2 / ext3 defaults,errors=remount-ro 0 1
con
/dev/mapper/root / ext3 defaults,errors=remount-ro 0 1
A questo punto, occorre effettuare un chroot all'interno della nuova root e
ricreare l'initrd:
chroot /mnt /bin/bash
mount sysfs /sys -t sysfs
mount proc /proc -t proc
mount /dev/hda1 /boot
(se avete usato un kernel non-debian, sostituite a dovere :-) )
mkinitrd -o /boot/initrd.img-2.6.8-2-686
A questo punto è necessario modificare la configurazione del boot-loader, nel
mio caso, ho modificato /boot/grub/menu.lst e in tutte le occorrenze dove c'era
/dev/hda2 ho sostituito con /dev/mapper/root.
Se usate lilo, al posto di grub,(e quindi avete modificato /etc/lilo.conf)
ricordatevi di re-installarlo
lilo -v
Smontate i filesystem del chroot e uscite dal chroot:
umount /sys
umount /proc
umount /boot
exit
Reboot! vi verrà chiesta la passphrase: inseritela
Se tutto è andato liscio, vi trovate in un ambiente con la root crittografata,
un buon inizio, non c'è che dire ;-)
Ora recuperiamo lo spazio inutilizzato dalla vecchia root e trasformiamolo nella
nostra /home.
E' inutilmente noioso, però, inserire due o più passphrase ad ogni boot della
macchina, quindi possiamo evitarlo creando un file che contiene la chiave:
mkdir /etc/crypt
head /dev/urandom > /etc/crypt/keyfile
modifichiamo ora il file /etc/crypttab, aggiungendo questa riga:
home /dev/hda2 /etc/crypt/keyfile
Fate partire il nuovo disco criptato
/etc/init.d/cryptdisks start
e createci sopra un filesystem
mkfs.ext3 /dev/mapper/home
ora, montate /dev/mapper/home su /mnt e copiateci la vostra /home
mount /dev/mapper/home /mnt
cp -avx /home/* /mnt/
andate a modificare /etc/fstab inserendo la riga:
/dev/mapper/home /home ext3 defaults 0 1
Effettuate un reboot.
Se tutto è filato liscio, dovreste avere / e /home su filesystem crittografato.
Non basta. Ora pensiamo allo swap.
Creiamo un file di swap:
dd if=/dev/zero of=/enc-swap-file bs=1024k count=100
Questo comando crea un file da 100 MB, ovviamente sostituite count=100 con la
quantità che desiderate.
Invece che crearvi un filesystem, definiremo uno spazio di swap, in questo modo:
mkswap /enc-swap-file
e attiviamolo:
swapon /enc-swap-file
facciamo in modo che parta all'avvio, inserendo in /etc/fstab questa riga:
/enc-swap-file none swap sw
Il file risiede nella root e quindi su una partizione crittografata :-)
Al prossimo reboot troverete: la root crittografata, la /home crittografata e lo
swap su file in una partizione crittografata. Molto bene :-)
In questo modo siamo ragionevolmente sicuri che chiunque tenti di accedere alla
macchina con una distro live per estrarne dati, resterà deluso.
Per utilizzare cifrazioni più robuste, si consultino le pagine di manuale di
cryptsetup.
Maggiori informazioni sulla lista
glux