Thursday, February 6, 2014

Documentos cifrados

Tengo un disco compartido con NFS en el que uno de los directorios tiene documentos personales. El ordenador en el que tengo este disco tiene algunos puertos abiertos en el router desde internet y no me fío demasiado de que alguien pudiera colarse. 
Sería interesante tener el directorio que contiene los ficheros personales cifrado.
Hay muchas opciones diferentes para proteger los datos, como cifrar una partición, un volumen lógico o un espacio en disco sin formato. En este caso quiero montar un sistema de ficheros en el interior de un fichero y  poder copiar el sistema entero a otro sitio sin tener que acceder a su contenido y que siga protegido. Además, no voy a montar el sistema de archivos desde el ordenador que lo contiene, sino por red.
El contenido sería vulnerable sólo cuando el archivo esté montado como un sistema de archivos, pero no se montará en el ordenador desde el que se tiene acceso por internet. Si robaran el archivo, no deberían poder acceder a su contenido.
Es lo mismo que si usáramos truecrypt, pero utilizando únicamente la funcionalidad que lleva GNU/Linux de serie.
Primero hay que crear el archivo, que en mi caso será de 200MB. 
Ojo: Cuando ejecutemos el luksFormat pedirá una contraseña. Es la que nos pedirá más adelante para poder abrir el archivo. Es importante no olvidarla o no podremos acceder a los datos.


head -c 200M /dev/zero > /nfs/luksfile # creamos el archivo contenedor
losetup /dev/loop0 /nfs/luksfile  # lo asignamos a un dispositivo loopback
cryptsetup luksFormat /dev/loop0 # lo inicializamos como dispositivo cifrado
cryptsetup luksOpen /dev/loop0 c1  # contenido plano a /dev/mapper/c1
mkfs.ext4 /dev/mapper/c1 # damos formato al dispositivo plano
mount /dev/mapper/c1 /media/cifrado # montamos el resultado


A partir de ahora solo hay que preocuparse de montarlo y desmontarlo cuando queramos acceder a él.
En mi caso me he creado dos scripts (muy mejorables) que he puesto en /usr/local/bin:

mount_crypt:
#!/bin/sh
losetup /dev/loop0 /nfs/luksfile
cryptsetup luksOpen /dev/loop0 c1
mount /dev/mapper/c1 /media/cifrado

umount_crypt:
#!/bin/sh
umount /media/cifrado
cryptsetup luksClose c1
losetup -d /dev/loop0 

Al ejecutar mount_crypt pedirá la clave para abrir el archivo.

Fuentes:
http://code.google.com/p/cryptsetup/wiki/FrequentlyAskedQuestions


No comments:

Post a Comment