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 1) 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 LUKS en versiones anteriores puede que sea distinto.

  1. Creamos la partición la futura partición raíz 2) /dev/hda5
  2. Podemos rellenarla de datos aleatorios con:
    sudo dd if=/dev/random of=/dev/hda5
  3. Cargamos los modulos necesarios para el cifrado: dm_crypt sha256 aes-i586
    sudo modprobe dm_crypt sha256 aes-i586
  4. Utilizamos luksformat para crear el sistema de ficheros cifrado en /dev/hda5:
    sudo luksformat -t reiserfs /dev/hda5
  5. 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

  6. Montamos la partición raiz nueva para poder copiarle los ficheros:
    sudo mount /dev/mapper/root /mnt/root
  7. Copiamos los datos a la nueva partición cifrada
    sudo cp -avx / /mnt/root
  8. Añadimos el cryptroot a /etc/crypttab3) 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
  9. 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 4), quedara algo asi:
    /dev/mapper/cryptroot /               reiserfs    defaults 0       1
    /dev/hda1 /boot           ext3    defaults        0       2
  10. Borramos basura
    sudo rm /mnt/root/etc/mtab
  11. 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 #
  12. Regeneramos el initrd para que quede toda la configuración bien con:
    sudo update-initramfs -u ALL
  13. Actualizamos los menus de grub:
    sudo update-grub

Cifrado de la home

  1. Creamos una nueva partición para la home con el resto de espacio /dev/hda6
  2. La formateamos con luksformat
    sudo luksformat -t reiserfs /dev/hda6
  3. Creamos el mapper
    sudo cryptsetup luksOpen /dev/hda6 home
  4. Lo montamos
    sudo mount /dev/hda6 /mnt/home
  5. Le damos permiso de nuestro usuario
    sudo chown -R usuario. /mnt/home
  6. Desmontamos
    sudo umount /mnt/home
  7. Instalamos el siguiente paquete para permitir el automantado al logearnos libpam-mount
  8. Editamos el fichero /etc/security/pam_mount.conf y añadimos al final:
    volume usuario crypt - /dev/hda6 /home/usuario - - -
  9. Editamos el fichero /etc/pam.d/login añadiendo al final:
    @include common-pammount
  10. 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

  1. 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
  2. Añadimos la siguiente linea en /etc/crypttab :
    cryptswap /dev/sdb2 /dev/random swap
  3. En /etc/fstab añadimos :
    /dev/mapper/cryptswap none swap sw 0 0
  • Al reiniciar y hacer un cat /proc/swap podremos verlo

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
1) Existen varios howtos para hacer esto 1 2 u otros tipos de instalacion
2) por el bug del sí con acento utilizaremos el lenguaje ingles si usamos cfdisk. # LC_ALL=en cfdisk
3) para generar bien el initrd ahora
4) Es el nombre que le pone la herramienta del arranque
 
Subir
howto/cifrado_integro_con_luks.txt · Última modificación: 02/10/2007 02:56 por xkill