Cifrado de discos con Luks

Luks nos permite cifrar el contenido del disco y trabajar con él de forma transparente. Esto nos protege de ataques offline como por ejemplo en caso de pérdida de un portatil, o si sustituimos un disco ya no nos tenemos que preocupar de borrar la información que contiene.

Podemos crear un dispositivo Luks directamente sobre una partición, un logical volume de LVM, un dispositivo RAID, etc.

Es recomendable limpiar la partición previamente y rellenarla con datos aleatorios. Por ejemplo, para cifrar la partición /dev/sda3 (Se perderán todos los datos que contenga):

# dd if=/dev/urandom of=/dev/sda3 bs=1M
# cryptsetup luksFormat /dev/sda3

Nos pedirá una contraseña, si la olvidamos, nuestros datos serán irrecuperables.

A continuación hay que abrir el dispositivo

# cryptsetup luksOpen /dev/sda3 mi-disco-cifrado

El último parámetro es el nombre que le damos, puede ser cualquier cosa. Se creará un dispositivo en /dev/mapper/mi-disco-cifrado que será nuestro disco descifrado.

# mkfs.ext4 /dev/mapper/mi-disco-cifrado
# mount /dev/mapper/mi-disco-cifrado /mnt/mi-disco-cifrado

Cuando queremos desmontar y cerrar el dispositivo, tenemos que hacer:

# umount /mnt/mi-disco-cifrado
# cryptsetup luksClose mi-disco-cifrado

Para que el proceso sea automático, podemos añadirlo a crypttab y fstab. Para ello vamos a crear un archivo con una nueva contraseña (Luks permite tener hasta 8 contraseñas distintas para el mismo dispositivo). El archivo lo creamos con datos aleatorios:

# touch /etc/keyfile
# chmod 0600 /etc/keyfile
# head -c 4K /dev/urandom > /etc/keyfile
# cryptsetup luksAddKey /dev/sda3 /etc/keyfile

Fichero /etc/crypttab:

mi-disco-cifrado    /dev/sda1    /etc/keyfile
# También podemos usar el UUID de la partición para una mayor robustez, por ejemplo:
# mi-disco-cifrado    UUID=1234234-2354235-23423432-234423    /etc/keyfile

Fichero /etc/fstab:

/dev/mapper/mi-disco-cifrado    /mnt/mi-disco-cifrado  ext4  defaults  1 2

Cabe destacar que a partir de las versiones de kernel >= 3.1, cryptsetup >= 1.4.0 y systemd >= 44-11 (¡hola Beefy Miracle!) es posible pasar los comandos TRIM al dispositivo físico, incluso si estamos usando LVM, por lo que si nuestro disco es un SSD, podemos montar el filesystem con la opción discard en el fstab y la opción allow-discards como cuarta columna en crypttab. Hay que tener en cuenta que esto disminuiría ligeramente la seguridad, ya que daría información sobre el sistema de archivos. Podéis informarios aquí: http://asalor.blogspot.com.es/2011/08/trim-dm-crypt-problems.html

Quedaría del siguiente modo:

Fichero /etc/crypttab:

mi-disco-cifrado    UUID=1234234-2354235-23423432-234423    /etc/keyfile    allow-discards

Fichero /etc/fstab:

/dev/mapper/mi-disco-cifrado    /mnt/mi-disco-cifrado  ext4  defaults,discard  1 2
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s