GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo cifrar el sistema de archivos raíz en Linux

Como administrador del sistema, probablemente ya sepa lo importante que es cifrar sus discos .

Si le robaran su computadora portátil, incluso un pirata informático novato podría extraer la información contenida en los discos.

Todo lo que se necesita es una simple memoria USB con un LiveCD y todo será robado.

Afortunadamente para usted, existen formas de evitar que esto suceda:encriptando los datos almacenados en sus discos.

En este tutorial, vamos a ver los pasos necesarios para realizar un cifrado completo del sistema . Puede encontrar otros tutoriales en línea centrados en cifrar solo un archivo o particiones domésticas, por ejemplo.

En este caso, estamos cifrando todo el sistema es decir, toda la partición raíz y la carpeta de arranque. Vamos a cifrar una parte del gestor de arranque.

¿Listo?

Requisitos

Para realizar todas las operaciones detalladas en esta guía, obviamente necesita tener derechos de administrador del sistema.

Para comprobar que este es el caso, asegúrese de que pertenece a la “sudo “ grupo (para distribuciones basadas en Debian) o “rueda “ (en los basados ​​en RedHat).

Si ve el siguiente resultado, debería estar listo para continuar.

Antes de continuar, es importante que sepa que el cifrado de discos no está exento de riesgos.

El proceso implica formatear todo el disco lo que significa que perderá datos si no lo respalda. Como consecuencia, puede ser una buena idea que haga una copia de seguridad de sus archivos, ya sea que elija hacerlo en una unidad externa o en una nube en línea.

Si no está seguro de los pasos necesarios para hacer una copia de seguridad de todo su sistema, le recomiendo que lea el siguiente tutorial que lo explica en términos claros.

Ahora que todo está configurado, podemos comenzar a cifrar todo nuestro sistema.

Identifica tu situación actual

Este tutorial se divide en tres partes:una para cada escenario al que te puedas enfrentar.

Después de identificar su situación actual, puede navegar directamente al capítulo que le interesa.

Si desea cifrar un sistema que ya contiene datos sin cifrar, tiene dos opciones:

  • Puede agregar un disco adicional a su computadora o servidor y configurarlo para que se convierta en el disco de arranque :puedes ir a la primera parte.
  • Usted no puede agregar un disco adicional a su computadora (una computadora portátil en garantía, por ejemplo):encontrará la información necesaria en la segunda parte.

Si está instalando un sistema completamente nuevo, lo que significa que instala la distribución desde cero, puede encriptar todo su disco directamente desde el instalador gráfico . Como consecuencia, puede pasar a la tercera parte.

Diseño del diseño del disco duro

Siempre que esté creando nuevas particiones, encriptadas o no, es muy importante elegir el diseño del disco duro antes de tiempo.

En este caso, vamos a diseñar nuestro disco utilizando un diseño MBR :los primeros 512 bytes del disco de arranque se reservarán para la primera etapa de GRUB (así como metadatos para nuestras particiones).

La primera partición será una partición vacía reservada para sistemas que usan EFI (o UEFI) como el firmware de arranque. Si elige instalar Windows 10 en el futuro, ya tendrá una partición disponible para eso.

La segunda partición de nuestro disco se formateará como LUKS-LVM partición que contiene un volumen físico (la propia partición del disco), así como un grupo de volúmenes que contiene dos volúmenes lógicos:uno para el sistema de archivos raíz y otro para una pequeña partición de intercambio.

Como puede ver, la segunda etapa de GRUB también se cifrará:esto se debe a que elegimos tener la carpeta de arranque almacenada en la misma partición.

Por supuesto, no está limitado al diseño proporcionado aquí, puede agregar volúmenes lógicos adicionales para sus registros, por ejemplo.

Este diseño será nuestra hoja de ruta para este tutorial:vamos a comenzar desde un disco nuevo e implementar todas las partes juntas.

Cifrado de datos en reposo

Este tutorial se centra en el cifrado de datos en reposo . Como su nombre lo indica, cifrado de datos en reposo significa que su sistema está encriptado, es decir, nadie puede leerlo, cuando está en reposo o apagado.

Este cifrado es bastante útil si le robaran su computadora, los piratas informáticos no podrían leer los datos en el disco a menos que conozcan la frase de contraseña que elegirá en las siguientes secciones.

Sin embargo, aún existiría el riesgo de que sus datos se borren para siempre:no tener acceso de lectura a un disco no significa que no puedan simplemente eliminar particiones en él.

Como consecuencia, asegúrese de mantener una copia de seguridad de sus archivos importantes en un lugar seguro.

Cifrado del sistema de archivos raíz en un disco nuevo

Como se detalló durante la introducción, vamos a cifrar el sistema de archivos raíz de un nuevo disco que no contiene ningún dato en absoluto. Esto es muy importante porque el disco cifrado se formateará en el proceso.

Dirígete al sistema que deseas cifrar y conecta el nuevo disco. En primer lugar, identifique su disco actual , que probablemente se llame “/dev/sda” y el disco que acaba de conectar (probablemente se llame “/dev/sdb”).

Si tiene alguna duda sobre la correspondencia entre nombres y números de serie del disco, puede agregar proveedores y números de serie con la opción "-o" de lsblk.

$ lsblk -do +VENDOR,SERIAL

En este caso, el disco con datos se llama “/dev/sda” y el nuevo se llama “/dev/sdb”.

En primer lugar, debemos crear el diseño que especificamos en la introducción, es decir, una partición que será un EFI uno y uno LUKS-LVM partición.

Creación de un diseño de disco básico

El primer paso en nuestro viaje hacia el cifrado de disco completo comienza con dos particiones simples:una EFI (incluso si usamos MBR, en caso de que quiera cambiar en el futuro) y uno para nuestro LVM .

Para crear nuevas particiones en su disco, use el comando “fdisk” y especifique el disco a formatear.

$ sudo fdisk /dev/sdb

Como se explicó en la introducción, la primera partición será de 512 Mb uno y el otro ocupará el espacio restante en el disco.

En la utilidad "fdisk", puede crear una nueva partición con la opción "n" y especificar un tamaño de 512 megabytes con "+512M “.

Asegúrate de cambiar el tipo de partición a W95 FAT32 usando la opción "t" y especificando "b" como el tipo.

Impresionante, ahora que tiene su primera partición, vamos a crear la que nos interesa.

Crear la segunda partición es aún más simple.

En la utilidad fdisk, use “n ” para crear una nueva partición y mantener los valores predeterminados, lo que significa que puede presionar “Enter ” en cada paso.

Cuando haya terminado, puede simplemente presionar “w” para escribir los cambios en el disco.

Ahora, ejecutar el comando "fdisk" nuevamente le dará una buena idea de los cambios que realizó en el disco.

$ sudo fdisk -l /dev/sdb

¡Genial!

Su segunda partición está lista para ser formateada, así que vayamos a ella.

Creación de particiones LUKS y LVM en disco

Para encriptar discos, vamos a usar LUKS , abreviatura de Configuración de clave unificada de Linux proyecto.

LUKS es una especificación para varios backends implementados en algunas versiones del kernel de Linux.

En este caso, vamos a utilizar el submódulo “dm-crypt” e de la pila de almacenamiento de Linux.

Como su nombre indica, “dm-crypt” es parte del módulo mapeador de dispositivos que tiene como objetivo crear una capa de abstracción entre sus discos físicos y la forma en que elige diseñar su pila de almacenamiento.

Esta información es muy importante porque significa que puede encriptar casi todos los dispositivos usando “dm-crypt” back-end

En este caso, vamos a cifrar un disco que contiene un conjunto de particiones LVM, pero puede optar por cifrar una memoria USB o un disquete.

Para interactuar con el módulo “dm-crypt”, vamos a utilizar el “cryptsetup " dominio.

Obviamente, es posible que deba instalarlo en su servidor si aún no lo tiene.

$ sudo apt-get instal cryptsetup

$ which cryptsetup

Ahora que cryptsetup está disponible en su computadora, creará su primera partición con formato LUKS .

Para crear una partición LUKS, va a utilizar el "cryptsetup ” seguido del comando “luksFormat ” comando que formatea la partición (o disco) especificada.

 $ sudo cryptsetup luksFormat --type luks1 /dev/sdb2

Nota :entonces, ¿por qué estamos especificando el LUKS1 tipo de formato? A partir de enero de 2021, GRUB (nuestro gestor de arranque) no admite el cifrado LUKS2. Asegúrese de dejar un comentario si observa que LUKS2 ahora se lanzó para el cargador de arranque GRUB.

Como puede ver, se le notifica que esta operación borrará todos los datos almacenados en el disco. Verifique el disco que está formateando por última vez y escriba " ” cuando esté listo.

Inmediatamente después, se le solicita una frase de contraseña. LUKS utiliza dos métodos de autenticación:una frase de contraseña basado en uno que es esencialmente una contraseña que ingresa en el descifrado.

LUKS también puede usar teclas . Uso de teclas , puede, por ejemplo, almacenarlo en una parte de su disco y su sistema podrá cuidarlo automáticamente.

Elija una frase de contraseña segura, ingrésela nuevamente y espere a que se complete el cifrado del disco.

Cuando haya terminado, puede verificar con el "lsblk ” ordene que su partición ahora esté encriptada como LUKS.

Impresionante ! Ahora tiene una partición cifrada.

$ lsblk -f

Para verificar que su partición esté formateada correctamente, puede usar el “cryptsetup ” seguido del comando “luksDump ” y especifique el nombre del dispositivo cifrado .

$ sudo cryptsetup luksDump /dev/sdb2

Su versión debe establecerse en "1" para el "LUKS1 ” y debería ver debajo de la frase de contraseña cifrada en una de las ranuras de claves.

Creación de LVM cifrado en disco

Ahora que su partición cifrada LUKS está lista, puede "abrirla". "Abrir" una partición cifrada simplemente significa que accederá a los datos del disco.

Para abrir su dispositivo encriptado, use el comando "cryptsetup" seguido de "luksOpen", el nombre del dispositivo encriptado y un nombre.

$ sudo cryptsetup luksOpen <encrypted_device> <name>

En este caso, elegimos nombrar el dispositivo "cryptlvm “.

Como consecuencia, el uso de “lsblk ” nuevamente, puede ver que se agregó un nuevo dispositivo a la lista de dispositivos existentes. La segunda partición ahora contiene un dispositivo llamado "cryptlvm", que es su partición descifrada.

Ahora que todo está listo, podemos comenzar a crear nuestros dos LVM:uno para nuestra partición raíz y otro para el intercambio.

En primer lugar, vamos a crear un volumen físico para nuestro nuevo disco usando el “pvcreate ” comando.

# Optional, if you don't have LVM commands : sudo apt-get install lvm2

$ sudo pvcreate /dev/mapper/cryptlvm

Ahora que su volumen físico está listo, puede usarlo para crear un grupo de volúmenes llamado "cryptvg “.

$ sudo vgcreate cryptvg /dev/mapper/cryptlvm

Ahora que su grupo de volúmenes está listo, puede crear sus dos volúmenes lógicos.

En este caso, la primera partición es de 13 Gb y la partición de intercambio ocupará el espacio restante. Asegúrese de modificar esos números para su caso específico.

Para alojar nuestro sistema de archivos raíz, vamos a crear un sistema de archivos EXT4 en el volumen lógico.

$ sudo lvcreate -n lvroot -L 13G cryptvg

$ sudo mkfs.ext4 /dev/mapper/cryptvg-lvroot

Creación de la partición de intercambio se puede lograr usando los mismos pasos, usando el "lvcreate" y el "mkswap".

$ sudo lvcreate -n lvswap -l 100%FREE cryptvg

$ sudo mkswap /dev/mapper/cryptvg-lvswap

¡Impresionante! Ahora que se crearon sus particiones, es hora de que transfiera su sistema de archivos raíz existente al recién creado.

Transferir todo el sistema de archivos a un disco cifrado

Antes de transferir todo su sistema de archivos, podría ser una buena idea comprobar que tiene suficiente espacio en la unidad de destino.

$ df -h 

Para transferir todo su sistema de archivos a su partición recién creada, utilizará el "rsync ” comando.

Monte su volumen lógico recién creado y comience a copiar sus archivos y carpetas recursivamente a la unidad de destino.

$ sudo mount /dev/mapper/cryptvg-lvroot /mnt

$ sudo rsync -aAXv / --exclude="mnt" /mnt --progress

Este proceso puede llevar bastante tiempo dependiendo de la cantidad de datos que tengas que transferir.

Después de un tiempo, todo su sistema de archivos debería copiarse en su unidad cifrada. Ahora que el “/boot” está encriptado, deberá volver a instalar la etapa 1 de GRUB en consecuencia.

Instalar y configurar el cargador de arranque GRUB

Entonces, ¿por qué necesitaría reinstalar y reconfigurar su GRUB en consecuencia?

Para responder a esta pregunta, debe tener una idea básica de la forma en que su sistema arranca cuando utiliza un proceso de arranque convencional de BIOS/MBR.

Como se explica en la introducción, GRUB se divide en dos (a veces tres) partes:GRUB etapa 1 y GRUB etapa 2 . La etapa 1 solo buscará la ubicación de la etapa 2, a menudo ubicada en el “/boot” carpeta de su sistema de archivos.

La etapa 2 es responsable de muchas tareas:cargar los módulos necesarios, cargar el núcleo en la memoria e iniciar el proceso initramfs.

Como entendió, la etapa 2 está cifrada aquí, por lo que debemos decirle a la etapa 1 (ubicada en los primeros 512 bytes de su disco) que primero debe descifrarse.

Vuelva a instalar GRUB Etapa 1 y 2

Para reinstalar la primera etapa de GRUB, primero debe habilitar el "cryptomount ” que permite el acceso a dispositivos cifrados en el entorno GRUB.

Para lograrlo, debe editar el “/etc/default/grub” y agregue el “GRUB_ENABLE_CRYPTODISK=y” opción.

Sin embargo, actualmente está sentado en el sistema que está tratando de cifrar. Como consecuencia, deberá hacer chroot en su nueva unidad para ejecutar los comandos correctamente.

Chroot en unidad cifrada

Para hacer chroot en su disco encriptado, deberá ejecutar los siguientes comandos.

$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /run /mnt/run

$ sudo chroot /mnt/

$ sudo mount --types=proc proc /proc
$ sudo mount --types=sysfs sys /sys

Ahora que ejecutó esos comandos, ahora debería estar en el contexto de su disco encriptado.

$ vi /etc/default/grub
GRUB_ENABLE_CRYPTODISK=y

Como se indica en la documentación de GRUB, esta opción configurará GRUB para buscar dispositivos cifrados y agregar comandos adicionales para descifrarlos.

Ahora que la etapa 1 está configurada, puede instalarla en su MBR usando el comando grub-install .

$ grub-install --boot-directory=/boot /dev/sdb

Nota :tenga cuidado, debe especificar "/dev/sdb ” y no “/dev/sdb1”.

Como probablemente haya notado, cuando no proporciona opciones para la instalación de GRUB, tiene por defecto un "i386-pc ” (que está diseñado para un firmware basado en BIOS).

Vuelva a instalar GRUB Etapa 2

Siguiendo los pasos detallados anteriormente, la etapa 1 se actualizó, pero también debemos decirle a la etapa 2 que se trata de un disco encriptado.

Para lograrlo, diríjase a "/etc/default/grub" y agregue otra línea para su etapa 2 de GRUB.

GRUB_CMDLINE_LINUX="cryptdevice=UUID=<encrypted_device_uuid> root=UUID=<root_fs_uuid>"

Esta es una línea importante porque le dice a la segunda etapa de GRUB dónde está la unidad cifrada y dónde se encuentra la partición raíz.

Para identificar los UUID necesarios, puede usar el comando "lsblk" con la opción "-f".

$ lsblk -f 

Usando esos UUID, agregaríamos la siguiente línea al archivo de configuración de GRUB.

GRUB_CMDLINE_LINUX="cryptdevice=UUID=1b9a0045-93d5-4560-a6f7-78c07e1e15c4 root=UUID=dd2bfc7f-3da2-4dc8-b4f0-405a758f548e"

Para actualizar su instalación actual de GRUB, puede usar el "update-grub2 comando ” en su entorno chroot.

$ sudo update-grub2

Ahora que actualizó su instalación de GRUB, su menú de GRUB (es decir, la etapa 2) debería modificarse y debería ver el siguiente contenido cuando inspeccione “/boot/grub/grub.cfg” archivo.

Como puede ver, el archivo de configuración de GRUB se modificó y su sistema ahora usa "cryptomount" para ubicar la unidad cifrada.

Para que su sistema arranque correctamente, debe comprobar que:

  • Estás cargando los módulos correctos como cryptodisk, luks, lvm y otros;
  • El “criptomontaje la instrucción ” está configurada correctamente;
  • El kernel se carga mediante el “cryptdevice ” instrucción que acabamos de establecer en la sección anterior.
  • Los UUID especificados son correctos:el "cryptdevice uno apunta a la partición cifrada LUKS2 y el "raíz" al sistema de archivos raíz ext4.

Modificar archivos crypttab y fstab

Uno de los primeros pasos de initramfs será montar sus volúmenes usando “/etc/crypttab” y “/etc/fstab” archivos en el sistema de archivos.

Como consecuencia, y debido a que está creando nuevos volúmenes, es posible que deba modificar esos archivos para colocarles el UUID correcto.

En primer lugar, dirígete a “/etc/crypttab” archivo (puede crearlo si aún no existe) y agregue el siguiente contenido

$ nano /etc/crypttab

# <target name>   <source device>        <key file> <options>
  cryptlvm        UUID=<luks_uuid>       none       luks

Si no está seguro del UUID de su dispositivo encriptado, puede usar el "blkid ” para obtener la información.

$ blkid | grep -i LUKS 

Ahora que la crypttab se modifica el archivo, solo necesita modificar fstab en consecuencia.

$ nano /etc/fstab

# <file system>       <mount point>   <type>  <options>             <dump>    <pass>
UUID=<ext4 uuid>      /               ext4    errors=remount-ro     0         1

Nuevamente, si no está seguro acerca del UUID de su sistema de archivos ext4, puede usar el “blkid ” comando de nuevo.

$ blkid | grep -i ext4

¡Casi listo!

Ahora que su GRUB y los archivos de configuración están configurados correctamente, solo necesitamos configurar la imagen initramfs.

Reconfigurar la imagen de initramfs

Entre todos los scripts de arranque, initramfs buscará el sistema de archivos raíz que especificó en el capítulo anterior.

Sin embargo, para descifrar el sistema de archivos raíz, deberá invocar los módulos initramfs correctos, a saber, el "cryptsetup-initramfs " uno. En su entorno chroot, puede ejecutar el siguiente comando:

$ apt-get install cryptsetup-initramfs 

Para incluir los módulos cryptsetup en su imagen de initramfs, asegúrese de ejecutar “update-initramfs ” comando.

$ update-initramfs -u -k all

¡Eso es todo!

Ha ensamblado con éxito todas las piezas necesarias para crear un disco totalmente encriptado en su sistema. Ahora puede reiniciar su computadora y echar un vistazo a su nuevo proceso de arranque.

Iniciar en dispositivo cifrado

Al arrancar, la primera pantalla que verá es la primera etapa de GRUB intentando descifrar la segunda etapa de GRUB.

Si ve esta solicitud de contraseña, significa que no tiene ningún error en su configuración de etapa 1.

Nota :tenga en cuenta que es posible que esta pantalla no siga su diseño de teclado habitual . Como consecuencia, si tiene una solicitud de contraseña incorrecta, debe intentar fingir que tiene un teclado de EE. UU. o uno de AZERTY, por ejemplo.

Al proporcionar la contraseña correcta, se le presentará el menú de GRUB.

Si ve esta pantalla, significa que su etapa 1 pudo abrir la etapa 2. Puede seleccionar la opción "Ubuntu" y arrancar en su sistema.

En la siguiente pantalla, se le pedirá que proporcione la frase de contraseña nuevamente.

Esto es bastante normal porque su partición de arranque está encriptada. Como consecuencia, necesita una frase de contraseña para desbloquear la etapa 2 y otra para desbloquear todo el sistema de archivos raíz.

Afortunadamente, hay una manera de evitar eso: al tener un archivo clave incrustado en la imagen de initramfs. Para ello, los colaboradores de ArchLinux escribieron un excelente tutorial sobre el tema .

En este caso, solo proporcionaremos la frase de contraseña y presionaremos Enter.

Después de un tiempo, cuando finalice el proceso de inicio, ¡debería aparecer la pantalla de bloqueo de su interfaz de usuario!

¡Felicitaciones, encriptaste con éxito un sistema completo en Linux!

Cifrado del sistema de archivos raíz en un disco existente

En algunos casos, es posible que deba cifrar un disco existente sin la capacidad de eliminar uno de los discos de su computadora. Este caso puede darse si tienes un disco en garantía por ejemplo.

En este caso, el proceso es bastante simple:

  • Crear un USB de arranque (o dispositivo extraíble) que contenga una ISO de la distribución de su elección;
  • Use el dispositivo para arrancar e iniciar sesión en un LiveCD de su distribución;
  • Desde el LiveCD, identifique el disco duro que contiene su distribución raíz y haga una copia de seguridad;
  • Monte la partición primaria en la carpeta de su elección y siga las instrucciones del capítulo anterior;

Entonces, ¿por qué necesita usar un LiveCD si desea cifrar un disco no extraíble?

Si tuviera que cifrar su disco principal principal, tendría que desmontarlo. Sin embargo, como es la partición raíz de su sistema, no podrá desmontarla , como consecuencia tienes que usar un LiveCD.

Cifrado del sistema de archivos raíz desde el asistente de instalación

En algunos casos, algunos distribuidores integran el proceso de encriptación directamente en el asistente de instalación.

Si no desea transferir un sistema de archivos existente de un sistema a otro, puede sentirse tentado a utilizar esta opción.

Tomando Ubuntu 20.04 como ejemplo, el proceso de instalación sugiere el cifrado del disco en el asistente de configuración del disco.

Si selecciona esta opción, tendrá una configuración similar a la realizada en las secciones anteriores. Sin embargo, la mayoría de las distribuciones optan por no cifrar el “/boot” carpeta.

Si desea cifrar la carpeta “/boot”, le recomendamos que lea la primera sección de este tutorial.

Resolución de problemas

Como el código abierto cambia constantemente, existe la posibilidad de que no pueda iniciar su sistema, incluso si siguió los pasos de este tutorial cuidadosamente.

Sin embargo, dado que las fuentes de error son probablemente infinitas y específicas para cada usuario, no tendría sentido enumerar todos los problemas que pueda encontrar.

Sin embargo, la mayoría de las veces, es muy importante saber en qué paso del proceso de arranque está fallando.

Si ve una pantalla con un mensaje de "rescate de grub", probablemente significa que está atascado en la etapa 1, por lo que el cargador de arranque no pudo ubicar el disco que contiene la segunda etapa.

Si está en un aviso de initramfs , probablemente significa que sucedió algo incorrecto durante el proceso de inicio:

  • ¿Está seguro de haber especificado los sistemas de archivos para montar en los archivos crypttab y fstab?
  • ¿Está seguro de que todos los módulos estaban actualmente cargados en su imagen de initramfs? ¿No echas de menos los módulos cryptsetup o lvm, por ejemplo?

A continuación hay algunos recursos que encontramos interesantes durante la redacción de este tutorial, pueden tener algunas respuestas a sus problemas:

  • Cifrar un sistema completo:un tutorial similar para ArchLinux;
  • Cifrado manual del sistema en Ubuntu:pasos utilizados para hacer chroot en un sistema de archivos raíz.

Conclusión

En este tutorial, aprendió cómo puede cifrar un sistema de archivos raíz completo, con la carpeta "/boot", utilizando la especificación LUKS.

También aprendió sobre el proceso de arranque de Linux y los diferentes pasos que sigue su sistema para iniciar su sistema operativo.

Lograr un cifrado de sistema completo es bastante largo pero es muy interesante para los usuarios que están dispuestos a profundizar en el mundo de Linux y código abierto.

Si está interesado en Administración del sistema Linux , asegúrese de leer nuestros otros tutoriales y navegar a nuestra sección dedicada.


Linux
  1. Cómo usar systemd-nspawn para la recuperación del sistema Linux

  2. Cómo cambiar el nombre de host en Linux

  3. Cómo cifrar un solo sistema de archivos Linux

  4. Cómo encontrar la utilización de inodos del sistema de archivos en Linux

  5. ¿Cómo encontrar el número de modelo de la unidad de disco Linux?

Cómo enumerar particiones de disco en Linux

Cómo montar un sistema de archivos Linux remoto usando SSHFS

Cómo cifrar la partición en Linux

Cómo cifrar archivos en Linux

Cómo enumerar servicios en Linux

Cómo formatear particiones de disco en Linux