====== Situación: ====== * Portatil con disco duro de 60 Gb sin cdrom. * Queremos instalar una distro con todo nuestro disco cifrado. * Utilizar un sistema flexible que permita cambiar claves y utilizar varias. * Probado con ubuntu edgy y Debian lenny ====== Previo (Instalacion) ====== Al no disponer de unidad óptica y ante la imposibilidad ya reiterada en varias ocasiones de arrancar por usb decidó instalar por red con utilizando pxe ((Existen varios howtos para hacer esto [[https://help.ubuntu.com/community/Installation/LocalNet|1]] [[https://help.ubuntu.com/community/Installation/Netboot|2]] u otros tipos de [[https://help.ubuntu.com/community/Installation|instalacion]])) una manera bastante sencilla y con pocos dolores de cabeza :) De momento no es posible el cifrado durante la instalación, al menos en ubuntu edgy 6.10, en debian testing es posible crear una partición cifrada pero en no utilizar luks ni utilizar es partición como ningún punto de montaje. Para no perder espacio del disco decidí instalar ubuntu en su vesión server para lo que cree una partición de 150 Mb para /boot (la única partición que no podremos cifrar) y 1Gb para la raiz (posteriormente utilizaremos esta partición para usarla como swap) el resto se deja sin particionar. Queda asi: * /dev/hda1 /boot --> 150Mb * /dev/hda2 / --> 1Gb ====== Cifrado ====== ===== Cifrado de la partición raiz ===== Una vez tenemos instalado el sistema base server de ubuntu podemos comenzar con el cifrado para ello deberemos activar la sección universe de los repositorios e instalar lo siguiente **cryptsetup** El paquete de ubuntu edgy trae soporte para [[http://luks.endorphin.org/|LUKS]] en versiones anteriores puede que sea distinto. - Creamos la partición la futura partición raíz ((por el bug del sí con acento utilizaremos el lenguaje ingles si usamos cfdisk. # LC_ALL=en cfdisk )) /dev/hda5 - Podemos rellenarla de datos aleatorios con: sudo dd if=/dev/random of=/dev/hda5 - Cargamos los modulos necesarios para el cifrado: ** dm_crypt sha256 aes-i586** sudo modprobe dm_crypt sha256 aes-i586 - Utilizamos luksformat para crear el sistema de ficheros cifrado en /dev/hda5: sudo luksformat -t reiserfs /dev/hda5 - Creamos el mapper para poder manejar la partición y copiar los archivos del raiz actual: sudo cryptsetup luksOpen /dev/hda5 root (esto nos genera un mapper en /dev/mapper/root que sera el dispositivo con la partición descifrada, el dispositivo con el que podremos trabajar - Montamos la partición raiz nueva para poder copiarle los ficheros: sudo mount /dev/mapper/root /mnt/root - Copiamos los datos a la nueva partición cifrada sudo cp -avx / /mnt/root - Añadimos el cryptroot a ''/etc/crypttab''((para generar bien el initrd ahora)) **y** a ''/mnt/root/etc/crypttab'' para que nos pida contraseña al arrancar y todo funcione correctamente mediante la siguiente linea: cryptroot /dev/hda5 none luks,cipher=aes-cbc-essiv:sha256 - Editamos el fichero ''/etc/fstab'' de la nueva particion raiz, es decir, **editaremos ''/mnt/root/etc/fstab''** para adecuarlo a la nueva configuración, ubuntu nos habra utilizado la notación con UUID pero no es preciso usarlo, podemos poner el dispositivo, que ahora sera /dev/mapper/cryptroot ((Es el nombre que le pone la herramienta del arranque)), quedara algo asi: /dev/mapper/cryptroot / reiserfs defaults 0 1 /dev/hda1 /boot ext3 defaults 0 2 - Borramos basura sudo rm /mnt/root/etc/mtab - Editamos el menu de grub ''/boot/grub/menu.lst'' cambiando en la linea donde esta ''#kopt root=...'' por ''#kopt root=/dev/mapper/cryptroot'' ** no olvidar ''no quitar'' el # ** - Regeneramos el initrd para que quede toda la configuración bien con: sudo update-initramfs -u ALL - Actualizamos los menus de grub: sudo update-grub ===== Cifrado de la home ===== - Creamos una nueva partición para la home con el resto de espacio /dev/hda6 - La formateamos con luksformat sudo luksformat -t reiserfs /dev/hda6 - Creamos el mapper sudo cryptsetup luksOpen /dev/hda6 home - Lo montamos sudo mount /dev/hda6 /mnt/home - Le damos permiso de nuestro usuario sudo chown -R usuario. /mnt/home - Desmontamos sudo umount /mnt/home - Instalamos el siguiente paquete para permitir el automantado al logearnos **libpam-mount** - Editamos el fichero ''/etc/security/pam_mount.conf'' y añadimos al final: volume usuario crypt - /dev/hda6 /home/usuario - - - - Editamos el fichero ''/etc/pam.d/login'' añadiendo al final: @include common-pammount - Reiniciamos ''sudo shutdown -r now'' Si todo ha salido bien se iniciara nuestro sistema sin problemas, ahora podemos instalar ** ubuntu-desktop ** y ya tendremos el sistema de escritorio cuando se instale es importante editar el fichero **''/etc/pam.d/gdm''** y añadirle **''@include common-pammount''** para que al logearnos en GDM nos monte nuestra home. ===== Cifrado de la swap ===== - Mandamos al cuerno todo lo que hay en la partición que usamos para instalar ubuntu server: ''sudo dd if=/dev/random of=/dev/hda2'' - Añadimos la siguiente linea en ''/etc/crypttab'' : cryptswap /dev/sdb2 /dev/random swap - En ''/etc/fstab'' añadimos : /dev/mapper/cryptswap none swap sw 0 0 * Al reiniciar y hacer un ''cat /proc/swap'' podremos verlo ====== Epílogo ====== Resultado: snaker@cornelius:~$ df -h S.ficheros Tamaño Usado Disp Uso% Montado en /dev/mapper/cryptroot 7,5G 2,4G 5,1G 33% / varrun 506M 136K 506M 1% /var/run varlock 506M 0 506M 0% /var/lock procbususb 10M 136K 9,9M 2% /proc/bus/usb udev 10M 136K 9,9M 2% /dev devshm 506M 0 506M 0% /dev/shm lrm 506M 18M 489M 4% /lib/modules/2.6.17-10-generic/volatile /dev/hda1 133M 13M 113M 10% /boot /dev/mapper/_dev_hda6 48G 25G 24G 52% /home/snaker /dev/sda1 126M 2,0K 126M 1% /media/usbdisk snaker@cornelius:~$ cat /proc/swaps Filename Type Size Used Priority /dev/mapper/cryptswap partition 979956 279328 -1