Sistema de archivos raíz encriptado
Puedes ir más allá de encriptar solo la partición /home y proteger todas las particiones de Slackware, incluyendo la raíz (/). Para esto, hay que hacer algunos ajustes adicionales después de la instalación, antes de reiniciar el sistema.
Nota: Este método crea varias particiones encriptadas de forma independiente, por lo que podrías tener que ingresar varias frases de acceso al arrancar. Si prefieres desbloquear todo el sistema con una sola frase y no te incomoda usar LVM, revisa la sección “Combinando LUKS y LVM”.
Primero, crea una pequeña partición sin encriptar y dile al instalador que la monte en /boot. Aquí irán el kernel y la imagen initrd (con cryptsetup y los módulos necesarios). Si Slackware es el único sistema operativo, instala lilo en el MBR. Si tienes Windows, también puedes usar el MBR. Si hay otras distribuciones de Linux, instala lilo en la partición /boot.
Instala Slackware como siempre, creando las particiones encriptadas y asignando nombres apropiados. Por ejemplo, mapea la raíz encriptada /dev/sdx2 como lukssdx2. Cuando configures lilo, indica que la raíz es /dev/mapper/lukssdx2. Si lilo falla al instalarse, no te preocupes: habrá generado el archivo lilo.conf para que lo edites después. Termina la instalación y, al salir de setup, no reinicies aún.
De vuelta al prompt, haz chroot a la nueva instalación. Los sistemas de archivos ya están montados y el instalador preparó /sys y /proc:
# chroot /mnt
Ahora, dentro del chroot, crea la imagen initrd con soporte para LVM (si usaste volúmenes lógicos) y CRYPT. El initrd contiene las herramientas para desbloquear la raíz antes de arrancar el sistema. Por ejemplo, si la raíz es ext4, el dispositivo mapeado es cryptroot en /dev/sdx1, y usas el kernel 4.4.14-smp:
# mkinitrd -c -k 4.4.14-smp -m ext4 -f ext4 -r lukssdx2 -C /dev/sdx2
La imagen initrd.gz se guarda en /boot por defecto. Ahora edita /etc/lilo.conf con vi o pico. Busca la sección “Linux bootable partition config” y agrega la línea para initrd. Cambia el kernel a uno genérico, ya que lilo no puede usar los kernels “huge” con initrd. El bloque debe verse así:
image = /boot/vmlinuz-generic-smp-4.4.14-smp initrd = /boot/initrd.gz root = /dev/mapper/lukssdx2 label = linux read-only
Si agregas este bloque como extra, asegúrate de que el label sea único.
Si tienes otro sistema operativo y no puedes instalar lilo en el MBR, selecciona “Install to superblock (Root)”. Busca la línea boot = /dev/mapper/lukssdx2 y cámbiala por el nombre de la partición sin encriptar (/dev/sdx1):
boot = /dev/sdx1
Guarda los cambios, sal del editor y ejecuta:
# lilo
lilo puede mostrar advertencias sobre diferencias entre /proc/partitions y lo que detecta, pero puedes ignorarlas. Reinicia y verás el mensaje “Enter passphrase:”. Al ingresar la frase de acceso, Slackware arrancará normalmente. Si tienes otras particiones encriptadas, se te pedirán sus frases también.
Configurar un sistema completamente cifrado requiere comprender a fondo los riesgos y las capas de seguridad. El libro Mastering Linux Security and Hardening (en inglés) es una referencia excelente para profundizar en estas técnicas y asegurar tu entorno de producción.