LUKS (Linux Unified Key Setup) es el método de cifrado estándar de facto que se utiliza en los sistemas basados en Linux. Si bien el instalador de Debian es perfectamente capaz de crear un contenedor LUKS, carece de la capacidad de reconocer y, por lo tanto, reutilizar uno ya existente. En este artículo, vemos cómo podemos solucionar este problema utilizando el instalador "DVD1" y ejecutándolo en modo "avanzado".
Requisitos de software y convenciones de la línea de comandos de Linux Categoría | Requisitos, convenciones o versión de software utilizada |
Sistema | Debian |
Software | No se necesita software específico |
Otro | El instalador de DVD de Debian |
Convenciones | #:requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando $:requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios |
El problema:reutilizar un contenedor LUKS existente
Como ya dijimos, el instalador de Debian es perfectamente capaz de crear e instalar la distribución en un contenedor LUKS (una configuración típica es LVM en LUKS), sin embargo, actualmente no puede reconocer y abrir uno ya existente; ¿Por qué necesitaríamos esta función? Supongamos, por ejemplo, que ya creamos un contenedor LUKS manualmente, con algunas configuraciones de cifrado que no se pueden ajustar desde el instalador de la distribución, o imagina que tenemos un volumen lógico dentro del contenedor que no queremos destruir (quizás contiene algunos datos); al usar el procedimiento estándar del instalador, nos veríamos obligados a crear un nuevo contenedor LUKS y, por lo tanto, a destruir el existente. En este tutorial veremos cómo, con unos pocos pasos adicionales, podemos solucionar este problema.
Descargando el instalador de DVD
Para poder realizar las acciones descritas en este tutorial debemos descargar y utilizar el instalador de DVD de Debian, ya que contiene algunas bibliotecas que no están disponibles en netinstall versión. Para descargar la imagen de instalación vía torrent podemos usar uno de los siguientes enlaces, dependiendo de la arquitectura de nuestra máquina:
Desde los enlaces de arriba podemos descargar los archivos torrent que podemos usar para obtener la imagen del instalador. Lo que tenemos que descargar es el DVD1
expediente. Para obtener la ISO de instalación, debemos usar un cliente torrent como Transmisión . Una vez descargada la imagen, podemos verificarla verificando descargando el SHA256SUM
correspondiente y SHA256SUM.sign
y siga este tutorial sobre cómo verificar la integridad de una imagen iso de distribución de Linux. Cuando esté listo, podemos escribir la imagen en un soporte que puede usarse como dispositivo de arranque:ya sea un (DVD o USB), y arrancar nuestra máquina desde allí.
Uso del modo de instalación avanzada
Cuando arranquemos la máquina usando el dispositivo que preparamos, deberíamos visualizar el siguiente syslinux menú:
Seleccionamos las Opciones avanzadas entrada y, a continuación, instalación experta en gráficos (o Instalación experta si queremos usar el instalador basado en ncurses, que usa menos recursos):
Una vez seleccionemos y confirmemos la entrada del menú, se iniciará el instalador y visualizaremos la lista de los pasos de instalación:
Seguimos los pasos de instalación hasta llegar al menú Cargar componentes del instalador desde CD uno. Aquí tenemos el cambio para seleccionar las bibliotecas adicionales que debe cargar el instalador. El mínimo que queremos seleccionar de la lista es Crypto-dm-modules y modo de rescate (desplácese hacia abajo en la lista para verlo):
Desbloquear manualmente el contenedor LUKS existente y particionar el disco
En este punto podemos proceder como de costumbre hasta que lleguemos a Detectar discos paso. Antes de realizar este paso, debemos cambiar a un tty y abra el contenedor LUKS existente desde la línea de comandos. Para ello, podemos pulsar la tecla Ctrl+Alt+F3 combinación de teclas y presione Enter para obtener un aviso. Desde el indicador, abrimos el dispositivo LUKS ejecutando el siguiente comando:
# cryptsetup luksOpen /dev/vda5 cryptdevice
Enter passphrase for /dev/vda5:
En este caso, el dispositivo LUKS se configuró previamente en /dev/vda5
partición, por supuesto, debe adaptar esto a sus necesidades. Se nos pedirá que ingresemos la contraseña del contenedor para desbloquearlo. El nombre del mapeador de dispositivos que usamos aquí (cryptdevice) es lo que necesitaremos usar más adelante en /etc/crypttab
archivo.
Una vez realizado este paso, podemos volver al instalador (Ctrl+Alt+F5 ) y continúe con Detectar discos y luego con Discos de partición pasos. En los discos de partición menú seleccionamos la entrada “Manual”:
El dispositivo LUKS desbloqueado y los volúmenes lógicos que contiene deberían aparecer en la lista de particiones disponibles, listos para ser utilizados como objetivos para la configuración de nuestro sistema. Una vez estemos listos podemos continuar con la instalación hasta llegar a la página Finalizar la instalación paso. Antes de realizarlo necesitamos crear una entrada en el sistema recién instalado crypttab
para el dispositivo LUKS, ya que no se crea por defecto, y vuelva a crear el sistema initramfs para que el cambio sea efectivo.
Crear una entrada en /etc/crypttab y recrear initramfs
Volvamos a tty usamos antes (Ctrl+Alt+F3 ). Lo que debemos hacer ahora es agregar manualmente una entrada en /etc/crypttab
archivo del sistema recién instalado para el dispositivo LUKS. Para hacer eso, debemos montar la partición raíz del nuevo sistema en algún lugar (utilicemos el /mnt
directorio) y montar algunos pseudo-sistemas de archivos que proporcionan información importante sobre los directorios apropiados dentro de él. En nuestro caso, el sistema de archivos raíz está en /dev/debian-vg/root
volumen lógico:
# mount /dev/debian-vg/root /mnt
# mount /dev /mnt/dev
# mount /sys /mnt/sys
# mount /proc /mnt/proc
Ya que en este caso tenemos una partición de arranque separada (/dev/vda1
), también necesitamos montarlo en /mnt/boot
:
# mount /dev/vda1 /mnt/boot
En este punto debemos chroot en el sistema instalado:
# chroot /mnt
Finalmente, podemos abrir el /etc/crypttab
archivo con uno de los editores de texto disponibles, (vi por ejemplo), y agregue la siguiente entrada:
cryptdevice /dev/vda5 none luks
El primer elemento en la línea de arriba es el nombre del mapeador de dispositivos que usamos arriba cuando desbloqueamos el contenedor LUKS manualmente; se utilizará cada vez que se abra el contenedor durante el arranque del sistema.
El segundo elemento es la partición que se usa como dispositivo LUKS (en este caso lo referenciamos por ruta (/dev/vda5
), pero una mejor idea sería hacer referencia a él a través de UUID
).
El tercer elemento es la ubicación del archivo clave utilizado para abrir el contenedor:aquí ponemos ninguno ya que no usamos uno (siga nuestro tutorial sobre cómo usar un archivo como clave de dispositivo LUKS si quiere saber cómo lograr este tipo de configuración).
El último elemento de la línea alberga las opciones que deben usarse para el dispositivo encriptado:aquí solo usamos luks para especificar que el dispositivo es un contenedor LUKS.
Una vez que actualizamos /etc/crypttab
archivo, podemos continuar y regenerar el initramfs . En Debian y distribuciones basadas en Debian, para realizar esta acción usamos update-initramfs
comando:
# update-initramfs -k all -c
Aquí usamos el -c
opción para indicar al comando que cree un nuevo initramfs en lugar de actualizar uno existente, y -k
para especificar para qué kernel se debe crear initramfs. En este caso pasamos all
como argumento, por lo que se generará uno para cada núcleo existente.
Una vez que se genera initramfs, volvemos al instalador (Ctrl+Alt+F5 ) y continúa con el último paso:Finalizar la instalación . Cuando finalice la instalación se nos pedirá que reiniciemos para acceder al sistema recién instalado. Si todo salió como se esperaba, durante el arranque del sistema, se nos debería solicitar que ingresemos la frase de contraseña para desbloquear el contenedor LUKS:
Conclusiones
En este tutorial, aprendimos cómo solucionar una limitación del instalador de Debian que no es capaz de reconocer y abrir un contenedor LUKS existente para realizar la instalación del sistema dentro de él. Aprendimos a usar el instalador en “Modo avanzado” para poder cargar algunos módulos adicionales que nos permiten desbloquear el contenedor manualmente cambiando a un tty. Una vez abierto el contenedor, el instalador lo reconoce correctamente y se puede utilizar sin problemas. La única parte complicada de esta configuración es que debemos recordar crear una entrada para el contenedor en el sistema recién instalado crypttab
y actualice su archivo initramfs.