marqueta.org

You can't always apt-get what you want
Infosec - Cycling - Estudiantes
RHCE / RHCSA
Once a sysadmin, always a sysadmin


Crear un contenedor cifrado

En determinadas ocasiones es posible que queramos crear un disco “virtual” cifrado para almacenar cierta información sensible; podemos hacerlo con LUKS.

Para empezar nos aseguramos de que cryptsetup esté instalado:

% sudo apt-get update
% sudo apt-get install cryptsetup

Ya podemos crear el fichero del tamaño deseado que alojará el contenedor. En este caso crearemos un fichero de 2 GB:

% dd if=/dev/zero of=container.img bs=1M count=2048

Es posible usar como input /dev/random o /dev/urandom si queremos que el disco esté inicializado con valores “seguros”. No es necesario en nuestro caso, en que /dev/zero es válido (y, por supuesto, mucho más rápido).

En este momento ya podemos crear el contenedor LUKS. Ojo que hay que contestar YES a la pregunta y proporcionar la clave de cifrado que necesitaremos más adelante para leer el disco:

% cryptsetup -y luksFormat ~/container.img

WARNING!
========
This will overwrite data on /home/user/container.img irrevocably.

Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /home/user/container.img: 
Verify passphrase: 

% file container.img 
container.img: LUKS encrypted file, ver 2 [, , sha256] UUID: 78e3ed0c-613d-48f7-8f6e-4a2324a6ae51

Bien, vamos a abrir el contenedor. Necesitamos ser root:

sudo cryptsetup luksOpen container.img secret
[sudo] password for user: 
Enter passphrase for container.img:

Veremos que tenemos un nuevo objeto en el device mapper:

% ls -l /dev/mapper/
total 0
crw------- 1 root root 10, 236 oct 18 10:58 control
lrwxrwxrwx 1 root root       7 oct 18 14:11 secret -> ../dm-0

Pues bien, ese es el que vamos a formatear:

% sudo mkfs.ext4 /dev/mapper/secret

…y ya podemos montarlo en el punto de montaje de nuestra elección:

% sudo mount /dev/mapper/secret work
% $ ls -l work/
total 16
drwx------ 2 root root 16384 oct 18 14:23 lost+found

Ojo con los permisos que queremos dar al punto de montaje. Y listo, ya podemos trabajar con el disco cifrado.

Al terminar seguiremos dos pasos: desmontarlo y “cerrar” el contenedor:

% sudo umount work
% sudo cryptsetup luksClose secret

En un siguiente artículo veremos cómo:

  1. Montarlo automáticamente en el arranque (esperando la contraseña)
  2. Ampliar el tamaño del disco