Tema: crypto-filesytems (loop-aes) Autores: Sha0 y Hidark 1) bajar y descomprimir loop-aes version acorde con nuestro kernel medusa:/usr/src# wget http://loop-aes.sourceforge.net/loop-AES/ medusa:/usr/src# tar zxvf debemor mirar si la version de loop-aes k bajamos tiene un .diff para el kernel nuestro medusa:/usr/src/loop-AES-v3.0a# ls kernel*.diff kernel-2.4.28.diff kernel-2.6.9.diff Fantastico, mi kernel es 2.4.28 parcheado con openwall y grsec, no hay problema, un parche mas ;) medusa:/usr/src/linux-2.4.28# mv include/linux/loop.h include/linux/loop.h.old medusa:/usr/src/linux-2.4.28# mv drivers/block/loop.c drivers/block/loop.c.old medusa:/usr/src/linux-2.4.28# patch -p1 < ../loop-AES-v3.0a/kernel-2.4.28.diff He quitado la loop.c porque el parche pondra una mejor :) deberemos permitir lkm's en el kernel y deberemos meter loop.o (ya lo veremos) 2) bajamos los fuentes de util-linux ftp ftp.kernel.org cd /pub/linux/utils/util-linux/ veremos varias versiones de util-linux, bajaremos la version que tengamos diff en loop-aes medusa:/usr/src/loop-AES-v3.0a# ls util*diff util-linux-2.12i.diff pues bajamos la 2.12i la bajaremos dentro de: medusa:/usr/src/loop-AES-v3.0a medusa:/usr/src/loop-AES-v3.0a# tar zxvf util-linux-2.12i.tar.gz aplicamos el parche loop-aes para las util-linux medusa:/usr/src/loop-AES-v3.0a/util-linux-2.12i# patch -p1 < ../util-linux-2.12i.diff 3) Opciones de kernel medusa:/usr/src/linux-2.4.28# dumpkeys | loadkeys -m - > drivers/char/defkeymap.c medusa:/usr/src/linux-2.4.28# make menuconfig Activar el cryptoloopback con algoritmo aes block devices -> loopback device support -> aes encrypted loop -> ram disk support -> initial ramdisk (para podermontar incluso la / como crypto) filesystems -> minix filesystem (sisi hay k activarlo se basa en minix) 4) Compilando medusa:/usr/src/loop-AES-v3.0a# make clean rm -f *.o *.ko *.orig *.rej *.mod.c patched-loop.[ch] test-file[1234] rm -f -r test-dir1 tmp-d-kbuild medusa:/usr/src/loop-AES-v3.0a# make ... Al itual nos da la tabarra diciendo k no tenermos un kernel bueno, engañaremos el Makefile asi:A KR:=2.4.28 (primera linea del makefile) el makefile comprueba la version k pone ahi en KR con el directorio /usr/src/linux-$KR si teneis grsec, el kernel en realidad pasa a llamarse 2.4.28-grsec pues el directorio lo debereis llamar asi, /usr/src/linux-2.4.28-grsec y KR debera ser igual a 2.4.28-grsec y todo cuadrara :) Compilemos nuestro util-linux parcheado con aes, medusa:/usr/src/loop-AES-v3.0a/util-linux-2.12i# make clean medusa:/usr/src/loop-AES-v3.0a/util-linux-2.12i# make medusa:/usr/src/loop-AES-v3.0a/util-linux-2.12i# make install esto nos metera en nuestro sistema un mount mejor y un losetup mejor preparados para el algoritmo aes. y ahora lo mas importante, el kernel medusa:/usr/src/linux-2.4.28-grsec# make dep bzImage medusa:/usr/src/linux-2.4.28-grsec# make install medusa:/usr/src/linux-2.4.28-grsec# make modules (importante k el loop.c que borramos y pusimos uno mejor) medusa:/usr/src/linux-2.4.28-grsec# make modules_install (sean compilados) medusa:/usr/src/linux-2.4.28-grsec# cp medusa:/usr/src/linux-2.4.28-grsec# cp arch/i386/boot/bzImage /boot/2.4.28-crypt (en fin cambiar la conf de lilo o gurb y ..) 5) Accion importante meter ese loop.o nuevo :) hemos arrancado con esa imagen nueva de kernel: medusa:/opt# insmod loop medusa:/opt# medusa:/home/shao# lsmod Module Size Used by Not tainted loop 46640 1 Creamos la imagen donde se guardaran realmente los datos, urandom es lento pero nos dara mas seguridad que zero medusa:/opt# dd if=/dev/urandom of=/opt/sec.img bs=1024000 count=100 bs=1024000 indica cuantos bytes leeremos y escribiremos de golpe 1024000 bytes son 1000kb count indica cuanta veces leeremos y escribiremos, por tanto crearemos un archivo de 100000kb aproximadamente son 100mb (si se pone mucho puede ir lento) ahora aosciamos el loop que queramos con la imagen losetup -e aes /dev/loop0 /opt/sec.img (clave mas larga: -e aes-256) Nos pedira una contraseña de 20 caracteres minimo. Si nos da un error del estilo: "ioctl: LOOP_SET_STATUS: Argumento inválido", es que nos falta el módulo o nos dejamos en el kernel el soporte minix filesystem o algo de kernel. Ya podemos crear una particion de verdad, podemos usar la que queramos ( preferiblemente sin Journaling ) medusa:/opt# mkfs.ext2 /dev/loop0 ¡¡ Tachan !!, ahora nada mas que tendremos que montarla donde queramos de esta forma: mount -t ext2 /opt/sec.img /mnt/crypto -o loop,encryption=aes (ahora te pide el pass de mas de 20 chars) o si lo prefieres automaticamente en fstab: /opt/sec.img /mnt/crypto ext2 loop,encryption=aes, 0 0 Y ya esta, listo para usar.