jueves, 25 de septiembre de 2014

Cifrado del home con LUKS.

¿Qué es LUKS?

Linux Unified Key Setup-on-disk-format (LUKS), es un estándar de cifrado para particiones en Linux. Esto hace que además de facilitar la compatibilidad entre las distribuciones, también proporciona una gestión segura de contraseñas para múltiples usuarios (aunque en este caso lo único que haremos será cifrar el /home completamente). 

El tener cifrados nuestros datos es particularmente importante cuando se trata de portatils y medios extraibles (pendrives por ejemplo)

¿Qué hace?
  
  • Cifra los dispositivos por bloques enteros, lo cual lo convierte en idoneo para proteger nuestros dispositivos móviles.
  • Utiliza el subsistema del kernel para mapeo de dispositivos.
  • Proporciona multiples algoritmos de cifrado, y nos provee un fortalecimiento de la password para protegernos contra ataques de diccionario.
  • Los dispositivos cifrados con LUKS contienen múltiples key-slots, lo que nos permite agregar llaves o frases de acceso de respaldo.

 
¿Cómo cifrar el home de manera sencilla?

Lo primero que vamos a hacer es un backup de nuestro home, lo podemos hacer con cp o con cualquier otra herramienta.

  # cp -a /home/* /homebackup

Ahora, vamos a proceder a cifrar el home, para ello usaremos la herramienta cryptsetup, que es con la cual cifraremos la partición donde se encuentra el home, en mi caso es /dev/sda3

  # cryptsetup -v --cipher aes-xts-plain64 -s 256 -h sha1 -i 1000 --use-urandom -y luksFormat /dev/sda3

Donde:
  • --cipher es el tipo de cifrado que usaremos, en este caso usamos el algoritmo AES con el modo de cifrado XTS (XEX-based tweaked-codebook mode with ciphertext stealing)
  • -s es el tamaño de la clave.
  • -h Hash con el cual se almacenará nuestra clave. A día de hoy es seguro usar SHA1. (Aunque en un futuro... https://konklone.com/post/why-google-is-hurrying-the-web-to-kill-sha-1 )
  • -i Número de milisegundos para completar con el procesamiento de la contraseña.  
  • --use-urandom Fuente de aleatoriedad de la llave maestra para cifrar el volumen.
  • -y Modo LUKS.
Una vez tenemos cifrada nuestra partición, ejecutamos el comando:

  # cryptsetup luksOpen /dev/sda3 chome

Con esto haremos que se guarde la configuración. Posteriormente damos formato a nuestra nueva partición cifrada.

  # mkfs.ext4 /dev/mapper/chome

Ya solo nos quedará añadir a crypttab y modificar fstab con nuestra nueva configuración con respecto a nuestro /home.

En /etc/crypttab añadimos (Ojo, eso es en mi caso, vuestra partición puede estar en otra partición):
chome /dev/sda3 none luks,timeout=30 cipher=aes-xts-plain64,size=256

Y en /etc/fstab modificamos el "UUID=..." de la línea que se refiere a nuestro /home por /dev/mapper/chome:

/dev/mapper/chome   /home     ext4    rw,relatime,data=ordered   0 2


Ahora solo nos quedará, o bien reiniciar y probarlo y ver que se monta correctamente una vez descifrada la partición, o por el contrario montar la partición y restaurar el backup.

Por ejemplo, después de reiniciar, entramos con la cuenta de root y hacemos:

  # cp -av /homebackup/* /home/

Evidentemente, una vez tengamos todos nuestros archivos en nuestro /home cifrado y veamos que esta todo OK. Eliminamos /homebackup de forma segura (con la herramienta shred, por ejemplo).