[HACK] Cryptoloop AES + LVM
aramosf
aramosf at unsec.net
Thu Jan 29 15:43:25 CET 2004
Hola,
Siguiendo el consejo de jcea, envio el mail nuevamente, pero en vez de
adjuntar el archivo, copio su contenido.
Seguramente el formato sea incorrecto, podreis ver su ultima version en:
http://www.unsec.net/doc/lvm.txt
Todo comentario al privado sera bienvenido.
+---------------------------------------------------------------+
| Guia rapida de Cryptoloop + LVM aramosf @ unsec . net |
| 19/Ene/2004 v1.0 bladi-sec @ novasec . es |
| http://www.unsec.net |
+---------------------------------------------------------------+
Lo Necesario:
+-------------+
El proposito de esta mini guia es crear un volumen logico con LVM2
(Logical Volume Manager) y este a su vez cifrado con el algoritmo AES-128.
Usando dos discos; uno de ellos de sistema, y el otro completamente. Conside-
ramos que ya se tiene el concepto claro de que es un LVM y Cryptoloop.
Toda la documentacion y pruebas se han realizado en un Linux Fedora 1,
con kernel 2.6.1 y lvm version 2.
Partimos de la base de que utilizamos un sistema con un kernel con soporte
loop_aes; 2.6 o 2.4 parcheado, y tiene instalado los paquetes necesarios lvm2
(y su soporte en el kernel). Tambien es necesario la ultima version de mount
y util-linux: 2.12
Las opciones necesarias para LVM en el kernel son:
Device Drivers --->
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
...
<*> Device mapper support
Opciones necesarias para CryptoLoop AES:
Cryptographic options --->
<*> AES cipher algorithms
En este ejemplo suponemos que hda2 es el directorio raiz, y hdb un disco
duro adicional (ambos tienen un tamaño de 40Gbs):
hda hdb
.··---··. .··---··.
·..___..· ·..___..·
hda1 | swap | ] 256Mb | | -+
|-------| -+ | | |
| | | | hdb | | 40Gbs
hda2 | / | | 39Gb | | |
| | | | | |
·..___..· -+ ·..___..· -+
Configuracion
+-------------+
A continuacion, se presentan todos los comandos que son necesarios y su
significado:
Creamos un archivo de 35gbs para el lvm, el resto se dejara para el sistema
operativo:
# dd if=/dev/zero of=datos1 bs=1M count=35000
Con este comando se crea un fichero lleno de ceros, de un tamaño de 35000Mb
y de nombre "datos1". Para mayor seguridad se recomienda hacerlo con
/dev/urandom en vez de /dev/zero.
Asignamos a /dev/loop1 nuestro fichero:
# losetup /dev/loop1 datos1
Creamos el PV:
# lvm pvcreate /dev/loop1
No physical volume label read from /dev/loop1
Physical volume "/dev/loop1" successfully created
Ahora vamos con el segundo disco: eliminamos la tabla de particiones de
hdb:
# dd if=/dev/zero of=/dev/hdb bs=1k count=1
# blockdev --rereadpt /dev/hdb
Un metodo alternativo a este, y mas paranoico seria utilizar:
# shred -n 1 -v /dev/hdb
Creamos el PV para el disco duro hdb:
# lvm pvcreate /dev/hdb
No physical volume label read from /dev/hdb
Physical volume "/dev/hdb" successfully created
Creamos un volumen llamado "PN":
# lvm vgcreate PN /dev/loop1 /dev/hdb
Volume group "PN" successfully created
Comprobamos que vamos bien, y averiguamos el tamaño de nuestro futuro
volumen:
# lvm pvdisplay
--- Physical volume ---
PV Name /dev/loop1
VG Name PN
PV Size 34.17 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 8748
Free PE 8748
Allocated PE 0
PV UUID SHMmrX-tZy5-2bKV-J2JQ-a6NU-5YOx-xJF1hr
--- Physical volume ---
PV Name /dev/hdb
VG Name PN
PV Size 55.89 GB / not usable 0
Allocatable yes
PE Size (KByte) 4096
Total PE 14308
Free PE 14308
Allocated PE 0
PV UUID dDBCGR-swNs-6oS3-Be2t-TGnf-nFxs-hRJkr6
Creamos el volumen logico de 89G (sumas de los PV SIZE 34.17+55.89)
# lvm lvcreate -n DURO PN -L89G
Logical volume "DURO" created
Configuramos con AES a 128 el loop2 con nuestro nuevo volumen:
# losetup -e aes-128 /dev/loop2 /dev/PN/DURO
Password:
NOTA: pueden usarse otros algoritmos o un tamaño mas grande (256), pero el
rendimiento se vera afectado en torno al 20%. Nos pedira una contraseña que
tendremos que introducir cada vez que montemos el volumen:
Para añadir mayor seguridad, podemos utilizar la opcion -S xxxxxxxxxx,
donde "xxxxxxxxxx", es un seed al azar tecleado por nosotros mismos, esto
ayudara a preveer ataques de diccionario.
Formateamos el volumen:
# mke2fs -j /dev/loop2
mke2fs 1.34 (25-Jul-2003)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
....
Finalizacion
+------------+
YA ESTA TERMINADO !!
Para montar:
# mount -t ext3 -oencryption=aes-128 /dev/PN/DURO /mnt
Password:
Si meteis mal la password, mostrara este error:
# mount -t ext3 -oencryption=aes-128 /dev/PN/DURO /mnt
Password:
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
or too many mounted file systems
(could this be the IDE device where you in fact use
ide-scsi so that sr0 or sda or so is needed?)
Comprobaciones
+--------------+
# df -h
/dev/mapper/PN-DURO 88G 33M 84G 1% /mnt
Cada vez que se desmonte, recuerda que hay que hacer "attach" antes de
montar:
# losetup -e aes-128 /dev/loop2 /dev/PN/DURO
# mount -t ext3 -oencryption=aes-128 /dev/PN/DURO /mnt
Y si quieres que cuando se reinicie la maquina este todo correcto:
# lvm vgchange -an
# lvm lvchange /dev/TaKe-It/Hard -ay
Si quereis comprobar la velocidad del volumen creado, lo mejor es utilizar
bonnie++,
http://www.coker.com.au/bonnie++/.
Documentacion y referencia
+--------------------------+
http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-
formats/html_single/Cryptoloop-HOWTO.html
http://tldp.org/HOWTO/LVM-HOWTO/
http://lists.sistina.com/pipermail/linux-lvm/2002-October/012541.html
http://vware.hypermart.net/howto_filesystem_encryption.htm
CREDITOS: idea,soporte,guru: bladi / dardhal
--
A. Ramos <aramosf at unsec.net>
http://www.unsec.net
More information about the hacking
mailing list