eCryptfs è un filesystem crittografico impilato di classe enterprise conforme a POSIX per Linux. Puoi usarlo per crittografare partizioni e anche directory che non utilizzano una propria partizione, indipendentemente dal filesystem sottostante, dal tipo di partizione, ecc. Questo tutorial mostra come utilizzare eCryptfs per crittografare una directory su Debian Squeeze.
Non garantisco che questo funzionerà per te!
1 Nota preliminare
In questo tutorial crittograferò la mia directory home, /home/falko/, che si trova sulla partizione / (cioè, /home/falko/ è una directory normale e non usa una partizione propria).
2 Installazione di eCryptfs
eCryptfs può essere facilmente installato come segue:
apt-get install ecryptfs-utils
3 Crittografia di una directory
Ora crittograferò la mia home directory /home/falko/. Poiché ci sono già file (non crittografati) in quella directory, devo eseguirne un backup in modo da poterli ripristinare nella directory /home/falko/ crittografata in seguito (altrimenti non è possibile accedere/leggere questi file mentre la directory è crittografato):
cp -pfr /home/falko/ /tmp/
Ora posso crittografare la directory /home/falko/ montandola con il tipo di file system ecryptfs:
mount -t ecryptfs /home/falko /home/falko
Quando lo fai per la prima volta, dovrai rispondere ad alcune domande:
[email protetta]:~# mount -t ecryptfs /home/falko /home/falko
Passphrase: <-- some_passphrase
Seleziona cifra:
1) aes: blocksize = 16; dimensione minima della chiave = 16; max keysize = 32 (non caricato)
2) blowfish: blocksize = 16; dimensione minima della chiave = 16; max keysize = 56 (non caricato)
3) des3_ede: blocksize = 8; dimensione minima della chiave = 24; max keysize = 24 (non caricato)
4) twofish: blocksize = 16; dimensione minima della chiave = 16; max keysize = 32 (non caricato)
5) cast6: blocksize = 16; dimensione minima della chiave = 16; max keysize = 32 (non caricato)
6) cast5: blocksize = 8; dimensione minima della chiave = 5; max keysize = 16 (non caricato)
Selezione [aes]: <-- ENTER
Seleziona byte chiave:
1) 16
2) 32
3) 24
Selezione [16]: <-- ENTER
Abilita passthrough testo normale (s/n) [n]: <-- ENTER
Abilita crittografia nome file (s/n) [n]: <-- ENTER
Tentativo di montare con le seguenti opzioni:
ecryptfs_unlink_sigs
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=bd28c38da9fc938b
AVVERTENZA: basato su contenuto di [/root/.ecryptfs/sig-cache.txt],
sembra che tu non abbia mai montato con questa chiave
prima. Ciò potrebbe significare che hai digitato la tua
passphrase errata.
Vuoi procedere con il mount (sì/no)? : <-- sì
Desideri aggiungere sig [bd28c38da9fc938b] a
[/root/.ecryptfs/sig-cache.txt]
per evitare questo avviso in futuro ( si No)? : <-- sì
Aggiunto nuovo sig al file cache user sig
eCryptfs montate
[email protette]:~#
Dai un'occhiata all'output di
mount
e dovresti vedere che /home/falko/ è ora crittografato:
[email protected]:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/home/falko on /home/falko type ecryptfs (rw,ecryptfs_sig=bd28c38da9fc938b,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
[email protected]:~#
Ripristiniamo il nostro backup nella directory ora crittografata /home/falko/ ed eliminiamo il backup in seguito:
cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/
A scopo di test, copiamo qualche altro file, ad es. /etc/hosts, su /home/falko/ per verificare se viene davvero crittografato:
cp /etc/hosts /home/falko
Mentre /home/falko/ è montato con il tipo di file system ecryptfs, dovrebbe essere possibile leggere il contenuto di /home/falko/hosts:
cat /home/falko/hosts
Ora smonta /home/falko/...
umount /home/falko
... e riprova a leggere /home/falko/hosts, e dovresti ottenere qualcosa di criptico:
cat /home/falko/hosts
?æËÊÀû5)í}Ó`§wʽ.ÂçµÔyiIezz°Ñd¦R,`Ëi,0ñ*úÐ%^-']YÑj÷#6÷¨Y-]«é²ùô<f$øRø'<Ö·"íó®9ÛQ¨yÂsçOÂ@%Ⱦ®ý?VÔCx'Ųز(t±õÓ´XÏxïhÌ3pé±t S[Tåj´0KhóÖÄ IÚYçàÉü~ZA#æ;mâ²Îí]úÞþ d#ß÷ݹ¥ùªeÐðº¦%ÎmK+÷ý)ôÞGįÁ© <na_Yý1ZÂ+ðú¶RE}´ !¥ð_(-)ÇzÃسÒÜ¿¦´«ºÀH=Üï´ Hú.`{ðßâËw qü Ç(½©V¿òÀѳE¾T%Ë9»¯v¡óÐ5S ©9¶è- |
4 Come montare automaticamente un partiton crittografato all'avvio
Ovviamente, non vogliamo montare /home/falko/ manualmente ogni volta:sarebbe meglio se potesse essere montato automaticamente all'avvio. Per fare ciò abbiamo bisogno di un file di passphrase e, per motivi di sicurezza, voglio che questo file di passphrase si trovi su una chiave USB.
Collega una chiave USB ed esegui
fdisk -l
per scoprire il nome del dispositivo e il tipo di file system:
[email protected]:~# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00035e35
Device Boot Start End Blocks Id System
/dev/sda1 * 1 3793 30461952 83 Linux
/dev/sda2 3793 3917 992257 5 Extended
/dev/sda5 3793 3917 992256 82 Linux swap / Solaris
Disk /dev/sdb: 8086 MB, 8086617600 bytes
255 heads, 63 sectors/track, 983 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e439f
Device Boot Start End Blocks Id System
/dev/sdb1 1 983 7895916 b W95 FAT32
[email protected]:~#
Nel mio caso il nome del dispositivo è /dev/sdb1 e utilizza un file system FAT32.
Montiamo la chiavetta USB su /mnt/usb:
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
Dai un'occhiata all'output di
mount
... e dovresti vedere che è stato montato con il tipo di file system vfat (FAT32) - avremo bisogno di queste informazioni in seguito per il nostro file /etc/fstab:
[email protected]:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /mnt/usb type vfat (rw)
[email protected]:~#
Ora dai un'occhiata al contenuto di /root/.ecryptfs/sig-cache.txt:
cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b |
Abbiamo bisogno di questa firma per il file /root/.ecryptfsrc che creiamo come segue:
vi /root/.ecryptfsrc
Assicurati di utilizzare la firma del file /root/.ecryptfs/sig-cache.txt nella riga ecryptfs_sig:
key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txt ecryptfs_sig=bd28c38da9fc938b ecryptfs_cipher=aes ecryptfs_key_bytes=16 ecryptfs_passthrough=n ecryptfs_enable_filename_crypto=n |
Ora creiamo il file passphrase sulla nostra chiavetta USB:
vi /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase |
Assicurati di utilizzare la passphrase corretta, ovvero la passphrase che useresti se montassi la directory manualmente.
Quindi apri /etc/fstab...
vi /etc/fstab
... e aggiungi le seguenti due righe (assicurati di utilizzare il tipo di file system corretto per la tua chiavetta USB - vfat nel mio caso):
[...] /dev/sdb1 /mnt/usb vfat ro 0 0 /home/falko /home/falko ecryptfs defaults 0 0 |
(È importante che la riga per la chiave USB venga prima della riga per la partizione crittografata perché la chiave USB deve essere montata prima che la partizione crittografata possa essere montata!)
Quindi riavvia il sistema:
reboot
Se tutto va bene, la partizione crittografata dovrebbe essere montata automaticamente dopo il riavvio. Tuttavia, è possibile che il tuo sistema non riesca a montare la tua chiave USB durante l'avvio, il che significa che nemmeno la tua partizione crittografata può essere montata. Se ciò accade, modifica /etc/rc.local (questo script viene eseguito alla fine del processo di avvio)...
vi /etc/rc.local
... e aggiungi la riga /bin/mount -a prima della riga di uscita 0:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /bin/mount -a exit 0 |
Questo (ri)monterà tutte le partizioni (inclusa la tua chiave USB e la partizione crittografata) alla fine del processo di avvio.
5 link
- eCryptfs:https://launchpad.net/ecryptfs
- Debian:http://www.debian.org/