Guia rapida de Cryptoloop + LVM +---------------------------------------------------------------+ | Guia rapida de Cryptoloop + LVM aramosf @ unsec . net | | 19/Ene/2004 v1.0 bladi-sec @ novasec . es | | http://www.digitalsec.es | +---------------------------------------------------------------+ 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/PN/DURO -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