En uno de nuestros artículos anteriores, aprendimos cómo puede cifrar todo su sistema de archivos raíz. en Linux fácilmente.
Sin embargo, en algunos casos, es posible que desee cifrar una partición simple que puede almacenar algunos de sus archivos importantes.
Como ya sabe, cifrar sus discos es crucial . Si le robaran su computadora portátil, probablemente perdería toda su información personal.
Sin embargo, existen algunas formas de solucionar este problema:cifrando las particiones de su disco .
En este tutorial, aprenderá todos los pasos necesarios para cifrar una partición de disco completa , asegúrelo con una frase de contraseña o con un archivo de claves.
Para el ejemplo, el artículo se ilustrará en un sistema operativo RHEL 8, pero no debería haber ninguna diferencia si usa otro.
Requisitos
Para ejecutar la mayoría de los comandos proporcionados en este artículo, debe tener derechos de administrador.
Para comprobar si este es el caso o no, puede ejecutar los “grupos ” y verifica que perteneces al “sudo ” para distribuciones basadas en Debian o “rueda ” para los basados en RedHat.
$ groups
Si no tiene dichos derechos, puede leer uno de nuestros artículos sobre el tema acerca de cómo obtener derechos de sudo para distribuciones de Ubuntu o CentOS.
Cifrar partición usando cryptsetup
Como se especifica en los artículos anteriores, cifrar una partición implica formatear todo el disco .
Como consecuencia, si planea cifrar un disco con datos existentes, debe saber que sus datos se borrarán en el proceso. Para evitar perder nada, debe hacer una copia de seguridad de sus datos en un disco externo o en una nube en línea.
Crear nueva partición en disco
Para encriptar una partición, primero vamos a crear una nueva usando la utilidad "fdisk" . Para el ejemplo, vamos a crear una nueva partición llamada "sdb1" en el disco "sdb".
$ sudo fdisk /dev/sdb
En la utilidad fdisk, puede crear una nueva partición usando la palabra clave “n” y especifique que desea una partición con un tamaño de 5 GB, por ejemplo.
Si no está seguro de cómo usar "fdisk" o cómo crear particiones , tenemos un artículo dedicado a este tema.
Al final del proceso, debe usar la palabra clave “w” para escribir los cambios en el disco.
Impresionante, ahora que se creó su partición, vamos a formatearla como una partición LUKS .
Formatear partición de disco como LUKS
Para cifrar la partición, vamos a utilizar un comando relacionado con el proyecto LUKS .
El proyecto LUKS, abreviatura de Linux Unified Key System , es una especificación utilizada para cifrar todos los dispositivos de almacenamiento utilizando protocolos criptográficos especiales. Como se describe, LUKS es solo una especificación, necesitará un programa que lo implemente.
En este caso, vamos a utilizar la utilidad “cryptsetup” . Como se explica en la sección del manual, cryptsetup tiene como objetivo crear espacios encriptados para dm-crypt.
En primer lugar, asegúrese de tener el "cryptsetup ” usando el comando “cuál”.
$ which cryptsetup
Si no se puede encontrar cryptsetup en su servidor, asegúrese de instalarlo usando uno de los siguientes comandos
$ sudo apt-get install cryptsetup (for Debian distributions)
$ sudo yum install cryptsetup (for RHEL/CentOS distributions)
Para crear su partición LUKS, debe ejecutar "cryptsetup" seguido de "luksFormat" y el nombre de la partición a formatear.
$ sudo cryptsetup luksFormat /dev/sdb1
En primer lugar, se le recuerda que cifrar su disco lo formateará en el proceso.
Después de escribir “SÍ ” en mayúsculas, deberá elegir una frase de contraseña para asegurar su dispositivo.
LUKS admite dos formas de proteger sus medios:usar una frase de contraseña (el que usamos actualmente) y usando claves . Por ahora, puede elegir una contraseña segura y su partición debería formatearse automáticamente.
Ahora que se creó su partición, puede inspeccionarla usando el "lsblk Comando:la partición debe marcarse como “crypto_luks “.
$ lsblk -f
¡Impresionante! Ahora que el volumen está formateado, podemos abrirlo y crear un sistema de archivos ext4 simple en él.
Crear sistema de archivos ext4 en la partición
De forma predeterminada, su volumen cifrado está cerrado, lo que significa que no puede acceder a los datos que están disponibles en él.
Para "abrir", es decir, "desbloquear" su volumen, debe usar el comando "cryptsetup" nuevamente seguido de "luksOpen" y el nombre del volumen.
Al final del comando, proporcione un nombre para su volumen abierto, en este caso vamos a elegir "cryptpart “.
$ sudo cryptsetup luksOpen /dev/sdb1 cryptpart
Como puede adivinar, se le pide que proporcione la frase de contraseña que eligió en la sección anterior.
Al ejecutar el comando "lsblk" nuevamente, probablemente notó que se creó un volumen bajo el volumen cifrado "sdb1" llamado "cryptpart “. El "mapeador de dispositivos" , que es uno de los marcos del Kernel de Linux, lo hizo por usted.
Ahora que su volumen está desbloqueado, es hora de que cree un nuevo sistema de archivos ext4 en él .
Para crear un nuevo sistema de archivos en su partición, use el comando "mkfs" seguido del formato del sistema de archivos, en este caso "ext4".
$ sudo mkfs.ext4 /dev/mapper/cryptpart
Impresionante, se creó el sistema de archivos.
Ahora puede montarlo y agregarle nuevos archivos. Los archivos creados en este volumen se cifrarán automáticamente .
$ mkdir -p /home/devconnected/files
$ sudo mount /dev/mapper/cryptpart /home/devconnected/files
$ sudo chown devconnected:devconnected /home/devconnected/files
Impresionante, ahora que sus datos están seguros en una partición cifrada, veamos cómo puede montar la partición cifrada en el arranque.
Modificar archivos crypttab y fstab
Muchos administradores de sistemas conocen la existencia del archivo fstab que utiliza su proceso de inicio para montar unidades.
Sin embargo, cuando se trata de particiones cifradas, hay otro archivo que entra en juego: /etc/crypttab .
De manera similar al archivo fstab, su proceso de inicio lee crypttab al arrancar. Dada la información proporcionada en él, le pedirá que desbloquee la partición o leerá un archivo clave para hacerlo automáticamente.
Nota :es posible que /etc/crypttab no exista en su sistema. Si no es el caso, es posible que deba crearlo.
Las columnas de la crypttab se describen arriba:
- Nombre del dispositivo :puede dar a su dispositivo descifrado cualquier nombre que desee. Además, el mapeador de dispositivos lo creará automáticamente en la ruta "/dev/mapper". En la sección anterior, elegimos “cryptpart ” para esta columna;
- UUID de dispositivo cifrado :para encontrar qué partición contiene los datos cifrados, su sistema necesita tener su UUID, es decir, su identificador único;
- Método de autenticación :como se explicó, puede elegir “ninguno ” para la frase de contraseña o puede especificar una ruta a la clave. El método clave se explicará en el último capítulo de este artículo;
- Opciones de montaje :usando esta columna, puede especificar el número de intentos para una frase de contraseña, el cifrado, el método de cifrado y muchos otros parámetros. La lista completa de opciones está disponible en la página del manual "crypttab".
$ sudo nano /etc/crypttab
# Content of the crypttab file
cryptpart UUID=<partition_uuid> none luks
Si tiene dudas sobre el UUID de su partición cifrada, puede utilizar el “blkid ” con un simple tubo “grep”.
$ sudo blkid | grep -i luks
Ahora que el "/etc/crypttab ” está modificado, tendrá que modificar el “fstab ” para especificar el punto de montaje.
$ sudo blkid | grep -i ext4
$ sudo nano /etc/fstab
En las columnas fstab, debe especificar:
- El UUID del dispositivo descifrado :para encontrarlo, puede usar el comando "blkid", pero asegúrese de haber abierto el dispositivo antes de continuar. Si el dispositivo está cerrado, no podrá encontrar su UUID;
- El punto de montaje :donde se va a montar el dispositivo descifrado. Si la ruta no existe, se creará automáticamente;
- El tipo de sistema de archivos :en este caso, elegimos usar "ext4" pero puede ser diferente en su sistema;
- Opciones de volcar y pasar :no queremos que el sistema de archivos se verifique en el momento del arranque, por lo que podemos mantenerlo en los valores predeterminados.
Cuando haya terminado, guarde su archivo y debería estar listo para comenzar.
Teniendo en cuenta los pasos que acaba de realizar, su dispositivo está listo y debería montarse automáticamente en el arranque.
Verificar el montaje del dispositivo encriptado en el arranque
Para verificar que el dispositivo está correctamente montado, podemos reiniciar nuestro servidor y esperar a que el módulo initramfs abra el dispositivo encriptado.
$ sudo reboot
Esta es la pantalla que debería ver, al menos en RHEL8, al iniciar su servidor. Si proporciona la frase de contraseña, su máquina debería poder desbloquearla y montarla por usted.
Una vez que haya iniciado sesión en su servidor, puede verificar que la partición cifrada se montó correctamente usando "lsblk" una vez más.
$ lsblk -f | grep sdb1 -A 2
¡Felicitaciones, encriptaste con éxito una partición en Linux usando LUKS!
Crear claves para partición cifrada
Como se explicó anteriormente, LUKS maneja dos métodos de autenticación, a saber, frases de contraseña y archivos clave.
En la sección anterior, usamos frases de contraseña, pero puede resultarle muy útil tener también una clave de autenticación.
En primer lugar, cree un archivo clave y guárdelo en un lugar seguro (en directorios a los que los usuarios normales no puedan navegar, como "/boot ” o “/raíz “).
$ echo "supersecretpass" > volume-key
$ sudo mv volume-key /boot/
Como puede ver, de forma predeterminada, el archivo se creó con las credenciales de usuario y tiene demasiados permisos.
Usando los comandos "chown" y "chmod", podemos establecer "root" como el propietario del archivo y cambiar sus permisos a solo lectura.
$ sudo chown root:root /boot/volume-key
$ sudo chmod 0400 /boot/volume-key
Ahora que el archivo está configurado como de solo lectura, podemos agregarlo como una clave en una de las ranuras de nuestro volumen LUKS.
Agregar clave al volumen de LUKS
Para agregar una clave a su volumen LUKS, debe ejecutar el comando "cryptsetup" seguido de "luksAddKey", el nombre del volumen cifrado y la ruta a la clave.
$ sudo cryptsetup luksAddKey <encrypted_device> <path_to_key>
$ sudo cryptsetup luksAddKey /dev/sdb1 /boot/volume-key
Para realizar esta operación, se le solicitará su contraseña. Cuando se proporcione, la clave se agregará automáticamente a sus ranuras de claves.
Para verificar que la clave se agregó correctamente, puede inspeccionar sus ranuras de claves usando el "luksDump ” comando.
$ sudo cryptsetup luksDump /dev/sdb1
Ahora que se agregó la clave, solo necesita modificar "/etc/crypttab" para que su sistema lo encuentre en el arranque.
$ sudo nano /etc/crypttab
# Content of the crypttab file
cryptpart UUID=<partition_uuid> /boot/volume-key luks
¡Al reiniciar, su partición encriptada se montará automáticamente!
Conclusión
En este artículo, aprendió cómo puede fácilmente cifrar su partición en Linux usando el proyecto LUKS y su implementación llamada cryptsetup.
Puede ver que puede usar un “archivo clave ” para que su partición se desbloquee automáticamente.
Si está interesado en un sistema de cifrado completo, recientemente escribimos un artículo sobre el tema.
Además, si desea leer más sobre Administración del sistema Linux , asegúrese de echar un vistazo a nuestra sección dedicada en el sitio web.