viernes, 30 de marzo de 2007

Sistemas de ficheros cifrados con Debian GNU/Linux

Una funcionalidad muy útil para asegurar la confidencialidad de nuestros datos es poder cifrar un sistema de ficheros completo.

En este breve artículo describo cómo hacerlo en Linux (Debian Etch, para ser más exactos). El procedimiento es similar para otras distribuciones...

En realidad, adapto aquí -con permiso de su autor- un mensaje incluido en la lista de correo de Debian (desarrolladores)...

Descripción general

La funcionalidad que deseamos utilizar viene dada por los siguientes paquetes:

loop-aes-utils
loop-aes-modules-2.6.18-4-686 (o el que corresponda para nuestra versión del kernel).

Básicamente se trata de un módulo para el núcleo -con sus utilidades de gestión correspondientes- que permite trabajar con sistemas de ficheros cifrados. Los paquetes anteriores instalan una versión especializada del típico "mount", que nos pedirá una contraseña cuando intentemos montar el sistema cifrado en cuestión.

Para trabajar con estas herramientes es conveniente también instalar los siguientes paquetes, si no los tenemos:

pwgen
gnupg

Mini "cómo"

A continuación mostraremos un ejemplo de uso: crearemos un sistema de ficheros dentro de un fichero regular (a un usuario de Windows a lo mejor esto le sorprendería), lo montaremos en modo "cifrado", lo "formatearemos" y escribiremos datos dentro.

1) Instalamos los paquetes necesarios:

# apt-get install ...

2) Creamos un fichero que almacenará un sistema de ficheros en su interior (de 100MB, para probar). Podemos usar la ubicación y nombre que más nos gusten (en nuestro caso /mnt/testfs):

# dd if=/dev/zero of=/mnt/testfs bs=1k count=102400

3) Creamos un fichero (cifrado con gnupg) de contraseñas para acceder al sistema de ficheros cifrado:

#  pwgen -cns 30 65 | gpg -aco /mnt/testkey

(gpg nos pedirá introducir una clave, que utilizaremos posteriormente para acceder al sistema de ficheros)

4) Asociamos un "loop device" a nuestro sistema de ficheros y establecemos el tipo de cifrado. Es recomendable la versión más potente de AES (existen otros tipos de cifrado descritos en la documentación del paquete).

# losetup -e AES256 -K /mnt/testkey /dev/loop0 /mnt/testfs 

5) Creamos la estructura del sistema de ficheros (lo "formateamos"). Elegimos un sistema habitual en Linux: ext3.

# mkfs -t ext3 /dev/loop0 

6) Creamos el directorio de montaje:

# mkdir /mnt/test

7) Deshacemos la asociación entre el "loop device" /dev/loop0 y nuestro sistema de ficheros:

# losetup -d /dev/loop0

8) Añadimos al fichero /etc/fstab una entrada como la siguiente: (a continuación se muestra la línea a añadir; aunque aquí pueda aparecer partida, es una sola línea)

/mnt/testfs /mnt/test ext3 defaults,rw,user,noauto,loop=/dev/loop0,encryption=AES256,gpgkey=/mnt/testkey 0 0

9) Ahora podremos montar nuestro sistema de ficheros cifrado, incluso como usuario normal:

$ mount /mnt/testfs
Contraseña:

Nos pedirá la contraseña que habíamos introducido en el punto 3). Si la introducimos bien, volverá a establecer la asociación entre el "loop device" y el sistema de ficheros, y podremos acceder a este último. A partir de ahora, todos los datos que escribamos en el sistema de ficheros se guardarán cifrados.

Podemos acceder y ver lo que tiene (inicialmente vacío):

$ cd /mnt/testfs
$ ls -l
total 12
drwx------ 2 root root 12288 2007-01-31 17:38 lost+found
$

Para poner a buen recaudo el sistema de ficheros, después de trabajar con él, simplemente lo desmontamos:

$ umount /mnt/testfs

Obviamente, también podemos cifrar una partición "real" como /dev/hda1, /dev/hda5, etc.

Para más información, consultar la documentación oficial del paquete en cuestión. La página oficial es: http://loop-aes.sourceforge.net

 

Visitante número:
ContactosPensionesTiendasCampingPracticas