viernes, 9 de mayo de 2008

Sistema de Archivos encriptados en Linux con dm-crypt

Un sistema de archivo encriptado protegerá su disco duro de los ataques a metal descubierto (bare-metal attacks). Para acceder a la información es necesario usar fuerza bruta. Este hecho es un obstáculo sustancial que cualquiera que tenga el disco duro en sus manos tendría que afrontar para acceder a su información.

Windows y Mac OS X proveen sus propias herramientas estándares de encriptación de sistema de archivos. Linux, por su puesto, provee varias herramientas para realizar esta tarea. La herramienta seleccionada por estos días parece ser dm-crypt. Invocada con la utilidad cryptsetup, dm-crypt provee para Linux una herramienta bastante clara y sencilla de usar.

Contenidos

1. Paquetes Necesarios

Antes de comenzar, compruebe que todos los paquetes necesarios han sido instalados:

cryptsetup
device-mapper
util-linux

Es probable que ellos ya estén presentes en su sistema, a menos que usted haya realizado una instalación muy reducida.

2. Creación Inicial del Sistema de Archivos

Generalmente se encriptan ficheros y no particiones completas. De esa forma podemos combinar dm-crypt con la herramienta mantenedora de dispositivos loopback losetup. Estrictamente hablando el lenguaje del shell de Unix, aquí están los pasos para crear y montar un sistema de archivos encriptados.

# Cree un fichero vacío que se ajuste a sus necesidades. El que hemos creado en
# este ejemplo será espandido a un fichero de 8GB, asegurándonos que ningún
# bloque real sea escrito. Debido a que forzaremos la asignación de bloques más
# adelante no tendría mucho sentido que lo hagamos ahora, ya que para ese
# entonces los bloques serán sobrescritos.
dd of=/camino/al/fs_secreto bs=1G count=0 seek=8

# Bloquee el acceso normal al fichero
chmod 600 /camino/al/fs_secreto

# Asocie un dispositivo loopback con el fichero
losetup /dev/loop0 /camino/al/fs_secreto

# Encripte el almacenamiento en el dispositivo. cryptsetup utilizará los
# dispositivos mapeadores (mappers) de Linux para crear, en este caso,
# /dev/mapper/fs_secreto. La opción -y especifíca que usted será preguntado
# para escribir la frase de paso dos veces (una de ella es la de verificación).
cryptsetup -y create fs_secreto /dev/loop0

# Chequee su estado (opcional)
cryptsetup status fs_secreto

# Ahora, escribiremos ceros al nuevo dispositivo encriptado. Esto forzará la
# asiganción de bloques de datos y como los ceros están encriptados, esto se
# verá para todo el mundo como datos aleatorios, convirtiéndolo en bloques de
# datos casi imposible de rastrear en los casos que alguien consiga acceder a
# los ficheros donde está el sistema de archivo encriptado.
dd if=/dev/zero of=/dev/mapper/fs_secreto

# Cree un sistema de archivos y verifique su estado
mke2fs -j -O dir_index /dev/mapper/fs_secreto
tune2fs -l /dev/mapper/fs_secreto

# Monte el sistema de archivos nuevo en una ubicación conveniente
mkdir /mnt/cryptofs/fs_secreto
mount /dev/mapper/fs_secreto /mnt/cryptofs/fs_secreto

3. Desmontando y Asegurando el Sistema de Archivo

Para desmontar y asegurar manualmente el sistema de archivo, usted esencialmente hace la última parte del conjunto de instrucciones al revés.

# Desmonte el sistema de archivo
umount /mnt/cryptofs/fs_secreto

# Elimine el dispositivo de mapeo
cryptsetup remove fs_secreto

# Desasocie al fichero del dispositivo loopback
losetup -d /dev/loop0

4. Remontando el Sistema de Archivos Encriptado

Una vez que usted haya creado un sistema de archivo encriptado, remontarlo es un proceso relativamente corto:

# Asocie el dispositivo loopback al fichero
losetup /dev/loop0 /path/to/fs_secreto

# Encripte el dispositivo mapeado; usted será preguntado para que introduzca una
# contraseña.
cryptsetup create fs_secreto /dev/loop0

# Mount the filesystem
mount /dev/mapper/fs_secreto /mnt/cryptofs/fs_secreto
Observe que si usted se equivoca al escribir la contraseña cryptsetup no devuelve un mensaje de error útil. Todo lo que usted verá de alguna forma útil es un mensaje del comando mount:

mount: you must specify the filesystem type
Si esto sucede, entonces trate de montar el sistema de archivos, ejecutando cryptsetup nuevamente:

# cryptsetup remove fs_secreto
# cryptsetup create fs_secreto /dev/loop0
# mount /dev/mapper/fs_secreto /mnt/cryptofs/fs_secreto

No hay comentarios: