articoli.png
Titolo: Crypto FS, dm_crypt
Autore: debtown

Con Questo How-to vi voglio spiegare, come viene realizzato un Crypto FS.
Per questo io uso dm_crypt che è molto piu sicuro (cosi si dice) di loop-aes.

Questa la guida base che ho utilizzato per questo How-to, ho solo modificato poce piccole cose per debian:

How-to Enrypted Partition http://www.saout.de/tikiwiki/tiki-index.php?page=HOWTO
How-to Enrypted SWAP http://www.saout.de/tikiwiki/tiki-index.php?page=EncryptedSwap

Attenzione: /tmp non viene cryptato. Per questo i files sulla partizione non devono essere usati con dei tools che scrivono temporeamente su /tmp.

Io non sono molto sicuro se la criptazione della partizione SWAP sia veramente così sicura perche non so se /dev/urandum all'avvio lavora abbastanza casualmente. Se qualcuno di voi ne sa di piu, mi faccia sapere oppure scriva nel forum.

Realizzato con debian sarge, Vanilla-kernel-2.6.13.3

Installiamo tutto quello di cui abbiamo bisogno,
$ apt-get install cryptsetup hashalot dmsetup libdevmapper1.01 libgcrypt11-dev libcppopt-dev

Chi usa un kernel preso da kernel.org, lo configuri con queste opzioni:

-----------------------------------------------------------------------------------------------------------------
Code maturity level options ---> <*> Prompt for development and/or incomplete code/drivers
General setup ---> <*> Support for hot-pluggable devices
Device Drivers > *Multi-device support (RAID and LVM).
Device mapper support
Crypt target support
Cryptographic options ---> AES cipher algorithms
-----------------------------------------------------------------------------------------------------------------

Alternative puoi anche installare una kernel-image.
$ apt-get install kernel-image-2.6.x

Dopo il reboot carichiamo questi moduli,
$ modprobe aes
$ modprobe dm_crypt
$ modprobe dm_mod

e controlliamo se il Device Mapper fa bene il suo lavoro:
$ ls -L /dev/mapper/control

deve rispondere cosi:
/dev/mapper/control

Ora controlliamo, se AES viene supportato,
$ cat /proc/crypto

deve rispondere cosi:
name : aes
module : aes
type : cipher
blocksize : 16
min keysize : 16
max keysize : 32

controlliamo ancora se dmsetup è installato per bene,
$ dmsetup targets

deve rispondere cosi:
crypt v1.0.0
striped v1.0.1
linear v1.0.1
error v1.0.1

Ora viene creata una partizione criptata.

Io uso come partizione criptata, hdc6. Voi prendete quella che volete criptare, che non deve essere montata.

ATTENZIONE: tutto quello che avete sulla partizione da criptare andrà perso.

Ora dobbiamo creare un Crypt-Device-Mapper:
$ cryptsetup -y create nome /dev/hdc6

"nome" un bel nome corto. (esempio: crypt, home, data etc...)

Come standard viene creata una Partitione con 256Bit AES.
Questo lo potete fare anche in un altro modo se volete cambiare qualcosa:
$ cryptsetup -yc aes -s 256 create nome /dev/hdc6

Si puo creare anche un keyfile analogico:
$ cryptsetup -yd nome.key -s 256 create nome /dev/hdc6

Ora viene chiesta un password che dovrete dare due volte:
Enter passphrase:
Verify passphrase:

Ricordate al momento di scegliere la password che dovrà essere tanto sicura quanto vorrete che sia sicura la vostra partizione criptata.

Se avete fatto un keyfile, fate ancora un:
$ chmod 600 nome.key

Se finora è andato tutto bene con questo comando:
$ dmsetup ls

dovrà uscire questo:
nome (254, 0)

Ora creiamo un filesystem sulla nostra nuova partitione cryptata:
$ mkfs.ext3 /dev/mapper/nome

e montiamola:
$ mkdir /mnt/nome
$ mount /dev/mapper/nome /mnt/nome

Ok, adesso abbiamo la nostra partizione criptata.

Naturalmente vogliamo la partitione criptata sempre. Configuriamo quindi 3 piccole cose:

In /etc/crypttab aggiungiamo:
nome /dev/hdc6

con keyfile questo:
nome /dev/hdc6 /bla/blub/keyfile

in /etc/fstab aggiungiamo questo:
/dev/mapper/nome /mnt/nome ext3 defaults,user 0 2

e in /etc/modules questo:
aes
dm_crypt
dm_mod

Ok, fatto. Quando farete l'avvio, verrà chiesta la password e la partizione verrà montata.
Pero, cosa ce ne facciamo di una partizione criptata, se ad un Cracker basta a buttare un occhio nella nostra SWAP???
Perchè questo non accada cambiamo una piccola cosa:

Io uso come vedete /dev/hdc2 come partizione di boot, voi la dovrete eventualmente cambiare.

edita la tua /etc/init.d/mountall.sh
metti il codice che vedi sotto prima di questo: swapon -a 2> /dev/null

-------------------------- ------------------------- ----------------------------------------------------
dmsetup remove_all
echo 0 `blockdev --getsize /dev/hdc2` crypt blowfish `dd if=/dev/urandom count=8 bs=1 2> /dev/null | md5sum -- | head -c 16` 0 /dev/hdc2 0 | dmsetup create swap0
mkswap /dev/mapper/swap0
swapon /dev/mapper/swap0
------------------------- --------------------------------------- ---------------------------------------

Cancellate ora in /etc/fstab la vostra riga di SWAP
esempio anche cosi:
#/dev/hdc2 none swap sw 0 0

Ok, ora fate un reboot e siate orgogliosi di avere una partizione criptata dove neanche la CIA & FBI potrà fare qualcosa per i prossimi 300 anni


Linux-Zone.it la zona Linux - Linux, Opensource, informatica libera