viernes, 29 de agosto de 2008

Copias de respaldo cifradas con GELI

Con frecuencia surge la necesidad de realizar una copia de seguridad de datos sensibles de nuestro ordenador, que no puede ser directamente almacenada en un DVD, ya que pondría en riesgo la confidencialidad de tales datos. Por ejemplo, certificados de usuario en claro, fotos comprometidas (je je) o simplemente expedientes confidenciales de nuestra compañía. ¿Cómo podemos almacenar una copia de seguridad en un lugar seguro, de modo que sea sencillo de recuperar y garantice a su vez la confidencialidad en caso de extravío o robo del soporte? Veamos una solución sencilla mediante la magnífica herramienta GELI que ofrece FreeBSD, de la cual se puede encontrar más información en el handbook, (es necesario dar soporte al núcleo mediante el device crypto):

Las posibilidades de GELI son amplísimas; aquí nos reduciremos a la gestión de DVDs cifrados.

La idea es crear un archivo con una imagen UFS, convenientemente cifrada, y luego quemar esa imagen directamente al DVD.

La imagen que vamos a crear se llamará backupCifrado.img, de tamaño 4480 M, que es la capacidad de un DVD normal. Nos ayudaremos del comando dd, rellenando la imagen de datos aleatorios procedentes de /dev/random:

# dd if=/dev/random of=backupCifrado.img bs=1m count=4480
4480+0 records in
4480+0 records out
4697620480 bytes transferred in 482.075108 secs (9753215 bytes/sec)

A continuación, mediante mdconfig, le asociamos a esta imagen un dispositivo que pueda ser montado:

# mdconfig -a -t vnode -S 2048 -f backupCifrado.img
md0

Es de especial importancia el argumento -S 2048, que indica el tamaño, en bytes, de cada sector de la imagen. Fijaos que no se elige 2048 aleatoriamente, sino que coincide con el de los soportes ópticos como el DVD o el CD. La respuesta del comando será un escueto md0, dependiendo del número de dispositivos de este tipo que hayamos montado.

A continuación, iniciamos GELI sobre el /dev/md0 recién creado, donde se nos preguntará la contraseña de cifrado:

# geli init -s 2048 /dev/md0
Enter new passphrase:
Reenter new passphrase:
# geli attach /dev/md0
Enter passphrase:

El sistema creará un nuevo dispositivo /dev/md0.eli, y la infraestructura de GELI quedará lista para cifrar cualquier dato grabado o leído en el dispositivo /dev/md0.eli (el cifrado por defecto es AES, aunque Blowfish puede ser más potente, ver geli (8) ).
Procedemos a formatear md0.eli con un UFS convencional, pero con la flag -m 0, para aprovechar al máximo el espacio destinado al backup (sí, ya sé que esto tiene consecuencias en el rendimiento, pero para respaldos de sólo lectura es perfectamente válido).


# newfs -m 0 /dev/md0.eli
..........
super-block backups (for fsck -b #) at:

160, 22688, 45216, 67744
..............

Bien, ahora montamos nuestro sistema de ficheros sobre /mnt, por ejemplo:

# mount /dev/md0.eli /mnt

Ya podemos colocar en /mnt la copia de seguridad o los archivos confidenciales que deseemos, y cuando acabemos desmontamos /mnt y paramos GELI:

# umount /mnt
# geli detach /dev/md0

Por ultimo, grabamos a un DVD la imagen backupCifrado.img (que es, es última instancia, donde reside nuestro respaldo). Pero ojo, lo grabamos como una imagen directamente, no como archivo de un sistema de ficheros cd9660:

# growisofs -dvd-compat -Z /dev/cd0=
backupCifrado.img

Si no tenemos configurada la grabadora, tiramos del handbook; viene perfectamente explicado (en inglés, claro, aunque hay traducción al español).

Ahora llega la hora de la verdad, la prueba de fuego: intentaremos montar nuestro DVD cifrado:

# geli attach -r /dev/cd0
Enter new passphrase:

Introducimos la contraseña correcta, y voilá, se crea el dispositivo /dev/cd0.eli, que podemos montar en /cdrom:

# mount -o ro /dev/cd0.eli /cdrom

No se nos debe olvidar desmontar todo cuando terminemos de examinar nuestro DVD cifrado:

# umount /cdrom
# geli detach /dev/cd0.eli
# eject

¡ A disfrutar !

1 comentario:

pesatd dijo...

Genial! Un saludo

Datos personales

Madrid, Madrid, Spain