Este documento tiene el paso a paso para crear un disco virtual encriptado en Ubuntu 20.04, es una actualización del procedimiento que documenté en el 2012 (Disco Virtual Encriptado), que en el 2020 tuvo que recibir varias actualizaciones para que funcione.
En este procedimiento creo el disco virtual dentro de un archivo en un dispositivo USB.
Procedimiento para crear un disco virtual encriptado en Ubuntu 20.04:
Preparando el dispositivo USB:
El primer paso a realizar es identificar el dispositivo asignado a nuestro pendrive USB.
Esto se efectúa ejecutando el comando:
sudo fdisk -l /dev/sd?
En este caso es un pendrive de 32gb que lo identifico por la capacidad y el modelo del pendrive. En este caso la partición a formatear es el /dev/sda1.
Para poder crear el archivo que va a ser nuestra unidad virtual necesitamos un sistema de archivos que soporte archivos grandes. En este caso opte por formatear en ext4 (fat32 no permite tener archivos de más de 2gb). El parámetro -L es para definir el nombre de la unidad, esto después nos simplifica la vida a la hora de operar con el pendrive.
Revisar bien la línea antes de copiar y pegar, porque pueden borrar el disco interno del equipo. Puse un ‘-‘ que no va para evitar errores.
sudo mkfs.ext4 -L 'HP x795w' /dev/-sda1
Así se ve el pendrive cuando se lo formatea definiendo el Label de la partición. (Si mantengo el disco rígido con el que vino la máquina y el sistema operativo de las ventanas)
Creando el dispositivo virtual encriptado.
El primer paso es ingresar al punto de montaje de nuestra unidad USB.
cd /media/user/6aaca98f-0c84-46ab-92a5-2c55db55c07c/
A continuación procedo a crear el archivo que voy utilizar de unidad virtual. En este caso con un tamaño de 10Gb.
sudo dd if=/dev/zero of=./encrypted.fs bs=1G count=10
El siguiente paso es asociar este archivo a una unidad virtual ( /dev/loopX)
sudo losetup -f -L /media/user/6aaca98f-0c84-46ab-92a5-2c55db55c07c/encrypted.fs
Con el siguiente comando obtenemos la unidad asignada a este archivo.
losetup -l |grep encrypted.fs | awk '{ print $1 }'
En este caso el dispositivo loop asignado es el 29.
A continuación deben adaptar los comandos que incluyan el dispositivo /dev/loop29 por el asignado a la unidad de ustedes.
Instalamos el paquete de software necesario para trabajar con unidades encriptadas.
sudo apt-get install cryptsetup
Ahora por fín vamos encriptar la unidad.
sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/loop29
Ahora vamos a abrir la unidad encriptada con el siguiente comando. Nos va a solicitar la contraseña que ingresamos en el paso anterior.
sudo cryptsetup luksOpen /dev/loop29 encryptedfs0
Para poder utilizarla debemos ahora formatear el sistema de archivos interno de nuestra unidad encryptada.
sudo mkfs.ext4 /dev/mapper/encryptedfs0
Con la unidad encriptada y formateada podemos proceder a montarla. En este caso lo hago en el /tmp para que después del reinicio no queden estructuras en mi equipo ya que a esta unidad no la voy a usar en forma permanente.
sudo mkdir -p /tmp/encryptedfs0 sudo mount /dev/mapper/encryptedfs0 /tmp/encryptedfs0/
Verificando el disco virtual encriptado en ubuntu 20.04:
Con el siguiente comando verificamos que el dispositivo esté montado y mostramos que capacidad tiene disponible.
df -h | grep encrypted
Desmontar unidad encriptada:
Para desmontar la unidad se deben ejecutar los siguientes comandos. Nunca remueva la unidad sin desmontarla correctamente porque pueden generar una falla catastrófica y perdida de datos.
sudo umount /dev/mapper/encryptedfs0 && sudo cryptsetup luksClose encryptedfs0 && sudo rm -r /tmp/encryptedfs0 LOOP=$(losetup -l |grep encrypted.fs | awk '{ print $1 }') sudo losetup -d $LOOP
Montar unidad encriptada:
Para montar la unidad encriptada se debe ejecutar la siguiente secuenica de comandos. Durante este procedimiento se va a solicitar la contraseña con la que se encriptó la unidad.
sudo losetup -f -L /media/usuario/usddrive/encrypted.fs LOOP=$(losetup -l |grep encrypted.fs | awk '{ print $1 }') sudo cryptsetup luksOpen $LOOP encryptedfs0 sudo mkdir -p /tmp/encryptedfs0 sudo mount /dev/mapper/encryptedfs0 /tmp/encryptedfs0/