GNU/Linux >> Tutoriales Linux >  >> Debian

Cifrado sin contraseña de la partición raíz de Linux en Debian 8 con una llave USB

La seguridad de los datos críticos en el dispositivo de almacenamiento (disco duro, tarjeta de memoria portátil) es necesaria para que un intruso no pueda robar información confidencial. En este tutorial, nuestro enfoque es la seguridad del sistema de archivos raíz y el área de intercambio de Linux. Se utilizará la función de cifrado predeterminada de Linux "LUKS", que requiere una frase de contraseña en el momento del arranque. Por lo tanto, nuestro próximo objetivo es proporcionar automáticamente la frase de contraseña a un volumen cifrado en el momento del arranque. Ya hay disponibles algunos artículos sobre el mismo tema para versiones anteriores de la distribución Debian. Sin embargo, en este tutorial, la versión Debain 8 (Jessie) está instalada en una VM VirtualBox.

Instalación del sistema operativo Debian 

En este tutorial, Debian Jessie está instalado en una VM y los detalles se muestran en la siguiente figura. El mismo procedimiento también funcionará en un servidor o escritorio "real".

Agregue el archivo iso del instalador de red de Debian en la máquina virtual e inicie la máquina virtual, aparecerá el indicador del instalador. Seleccione la opción "Instalar" para iniciar el proceso de instalación.

Las siguientes pantallas solicitarán la configuración básica de Debian. Seleccione la opción de idioma deseada de la lista dada.

Seleccione el país o área como se muestra en la siguiente figura.

Configura el idioma del teclado.

Después de la configuración básica, el instalador carga más componentes para la configuración.

Nuevamente, se configurarán más configuraciones básicas durante el proceso de instalación.

1. Configuración del nombre de host

2. Configuración del nombre de dominio

3. Establecer una contraseña para el usuario "root".

4. Crear un nuevo usuario que no sea root.

5. configurar la zona horaria

6. Y finalmente, la parte más importante es la partición del disco.

Para este artículo, se requiere la partición manual del disco duro. Por lo tanto, seleccione la opción "Manual" en el mensaje anterior y seleccione el disco duro deseado para iniciar el proceso.

Como se muestra en la figura anterior, Debian se instalará en la máquina virtual. Presione enter para iniciar la partición del disco duro seleccionado que se muestra a continuación.

La siguiente pantalla aparecerá después de aceptar el mensaje anterior. Como se muestra en la siguiente captura de pantalla, actualmente no hay ninguna partición en el disco duro.

Presiona "enter" para crear la primera partición en el disco duro virtual.

La primera partición que creamos en el disco duro es "/dev/sda1" para el punto de montaje "/boot".

Se selecciona el tipo primario o lógico para la partición.

Se selecciona la ubicación de la nueva partición.

El punto de montaje "/boot" se muestra en la siguiente captura de pantalla.

La primera partición se ha creado correctamente en el disco duro. El kernel de Linux se coloca más tarde en la partición "/boot".

La segunda partición creada en el disco duro de la máquina virtual es de intercambio y el tamaño de la partición de intercambio debe ser el doble del tamaño de la RAM. Como se muestra en la siguiente captura de pantalla, el espacio libre restante se selecciona para el intercambio.

Establezca el tamaño de la partición de intercambio.

La siguiente captura de pantalla muestra que la partición está seleccionada como área de intercambio.

También se crea otra partición en la máquina virtual.

La partición central de la plataforma Linux se crea en el espacio restante para / (el punto de montaje "raíz"). La siguiente instantánea muestra el tamaño de la partición "raíz".

Seleccione la opción "volumen físico de cifrado" para la nueva partición en el disco duro.

La opción resaltada en la siguiente captura de pantalla es necesaria para cifrar la partición en la plataforma Linux.

La configuración de la partición después de seleccionar "volumen físico para el cifrado" se muestra en la siguiente figura. El método de cifrado predeterminado es mapeador de dispositivos (dm-crypt), el algoritmo de cifrado es AES con un tamaño de clave de 256.

La creación exitosa de la partición en el disco duro virtual se muestra en la siguiente figura.

Aquí viene la configuración avanzada de volúmenes cifrados en Debian que se selecciona en la siguiente captura de pantalla.

El siguiente mensaje muestra que el esquema de partición actual debe escribirse en el disco duro antes de que podamos comenzar con la configuración del volumen cifrado.

El siguiente aviso muestra la creación del volumen cifrado en la plataforma Debian.

Seleccione los dispositivos para el volumen cifrado. No seleccione el dispositivo de arranque "/dev/sda1" para el volumen cifrado porque no se permite cifrar la partición de arranque.

Como se muestra en la siguiente captura de pantalla, solo se selecciona "/dev/sda3" para el volumen cifrado y esta es la partición raíz del disco.

Después de la configuración del volumen cifrado, seleccione finalizar para aplicar los cambios.

Sin embargo, aparecerá el siguiente error si la partición de intercambio no está seleccionada para el volumen cifrado.

Por lo tanto, seleccionamos ambas particiones para el volumen cifrado.

La configuración de partición para el intercambio de volumen cifrado se muestra a continuación.

El siguiente mensaje muestra que los datos se borrarán en "sda2" (intercambio).

A continuación se muestra el borrado de datos en "sda2" y "sda3".

Una vez finalizado el proceso, introduzca una frase de contraseña para ambas particiones cifradas.

Volviendo a ingresar la misma frase de contraseña.

La tabla de particiones después de la configuración exitosa de los volúmenes cifrados en el disco se muestra a continuación.

Finalice el proceso de partición para comenzar la instalación del sistema operativo Debian. Sin embargo, aparecerá el siguiente mensaje de error porque el punto de montaje "/" aún no está seleccionado para ninguna partición.

Después del mensaje de error anterior, vuelva a configurar los volúmenes cifrados para establecer el punto de montaje. En este artículo, "sda3_crypt" es el sistema de archivos raíz y "sda2_crypt" es el área de intercambio.

Selección del punto de montaje "/" para el volumen cifrado.

Seleccionando el volumen encriptado "sda2_crypt" como área de intercambio.

La siguiente captura de pantalla muestra la tabla de particiones final para volúmenes cifrados.

El formato de las particiones se muestra a continuación.

Después de completar el proceso de formateo, se instalará el sistema base.

La siguiente captura de pantalla muestra la selección del espejo de archivo para los paquetes de Debian.

La configuración del administrador de paquetes se muestra a continuación.

Solo el sistema base o central está instalado todavía y se pueden instalar otros paquetes de la lista que se muestra.

Seleccione el entorno de escritorio y otros paquetes de la lista.

La instalación de los paquetes seleccionados se muestra a continuación.

La instalación del cargador de arranque de Linux "GRUB" se muestra en la siguiente captura de pantalla.

El dispositivo (sda) está seleccionado para la instalación del cargador de arranque.

Finalmente, el proceso de instalación está completo.

Después de reiniciar, ingrese la frase de contraseña para descifrar el disco sda3.

Ingrese la frase de contraseña para descifrar el disco sda2 que es el área de intercambio.

Inicie sesión con éxito en el sistema instalado.

Configuración para sistema de archivos raíz sin contraseña

El proceso de ingresar la frase de contraseña en el momento del arranque ahora se automatizará utilizando una memoria USB. En lugar de usar

una frase de contraseña, la clave secreta en el USB descifrará los volúmenes cifrados. Conecte una memoria USB a la máquina virtual y ubíquela con el comando "dmesg". Se detecta como "/dev/sdb" en mi VM.

La clave secreta de 8192 bytes aleatorios se extrae de la memoria USB con el comando dd.

dd if=/dev/sdb of=/root/secret.key bs=512 skip=4 count=16

La clave secreta generada anteriormente se agrega a los volúmenes cifrados mediante el comando "cryptsetup". De forma predeterminada, la frase de contraseña se mantiene en la ranura 0. Por lo tanto, la ranura 1 se utilizará para la segunda clave secreta.

Ejecute el comando "blkid" para obtener detalles del volumen en el disco.

blkid

En este tutorial, la clave secreta para descifrar el volumen se agrega solo en /dev/sda3. Sin embargo, también se puede agregar a la partición "/dev/sda2" (intercambio).

cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1

Se crea una regla udev simple para el dispositivo USB en el archivo /etc/udev/rules.d/99-custom-usb.rules, el enlace simbólico que usaremos es /dev/usbdevice.

SUBSYSTEMS=="usb", DRIVERS=="usb",SYMLINK+="usbdevice%n"

Vuelva a cargar las reglas usando el siguiente comando.

udevadm control --reload-rules

Inserte el dispositivo USB para verificar la regla personalizada.

Se requiere un script de shell para leer la clave secreta del dispositivo USB y proporcionarla a cryptsetup en el momento del arranque. El script se crea como "/usr/local/sbin/openluksdevices.sh" y se toma del sitio http://www.oxygenimpaired.com/.

#!/bin/sh
############taken from following link#########
###http://www.oxygenimpaired.com/debian-lenny-luks-encrypted-root-hidden-usb-keyfile

TRUE=0
FALSE=1

# flag tracking key-file availability
OPENED=$FALSE

if [ -b /dev/usbdevice ]; then
# if device exists then output the keyfile from the usb key
dd if=/dev/usbdevice bs=512 skip=4 count=16 | cat
OPENED=$TRUE
fi

if [ $OPENED -ne $TRUE ]; then
echo "FAILED to get USB key file ..." >&2
/lib/cryptsetup/askpass "Try LUKS password: "
else
echo "Success loading key file for Root . Moving on." >&2
fi

sleep 2

Configure los permisos del script para que pueda ejecutarse.

 chmod a+x /usr/local/sbin/openluksdevices.sh

Al igual que el archivo de configuración fstab, el archivo crypttab contiene la información sobre los volúmenes cifrados en la plataforma Linux. Agregue un script de shell para la partición cifrada sda3_crypt. El contenido del archivo de configuración "/etc/crypttab" para el volumen cifrado se proporciona a continuación.

sda3_crypt /dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc none luks,keyscript=/usr/local/sbin/openluksdevices.sh

Agregue la siguiente línea en el archivo "/etc/initramfs-tools/conf.d/cryptroot".

CRYPTROOT=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc

Asegúrese de agregar "usb_storage" en el archivo "/etc/initramfs-tools/modules".

El siguiente script de shell (/etc/initramfs-tools/hooks/udevusbkey.sh) también se toma de una fuente externa. Se utiliza para agregar una regla udev personalizada en el sistema de archivos temporales "initrd".

#!/bin/sh
# udev-usbkey script
###taken from
###http://www.oxygenimpaired.com/ubuntu-with-grub2-luks-encrypted-lvm-root-hidden-usb-keyfile
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}

case $1 in
prereqs)
prereqs
exit 0
;;
esac

. /usr/share/initramfs-tools/hook-functions

# Copy across relevant rules

cp /etc/udev/rules.d/99-custom-usb.rules ${DESTDIR}/lib/udev/rules.d/

exit 0

Cambia el permiso del script.

 chmod a+x /etc/initramfs-tools/hooks/udevusbkey.sh

Se requieren algunos cambios en la configuración del cargador de arranque GRUB2. Sin embargo, no se permiten cambios directos en el archivo de configuración "/boot/grub/grub.cfg". Por lo tanto, cambie el parámetro "GRUB_CMDLINE_LINUX_DEFAULT" en el archivo de configuración "/etc/default/grub". Como se muestra a continuación, "rootdelay" y "cryptopts" se incluyen en el parámetro "GRUB_CMDLINE_LINUX_DEFAULT".


GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=20 cryptopts=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc,keyscript=/lib/cryptsetup/scripts/openluksdevices.sh"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtainsConclusion

Ejecute el comando "update-grub" para aplicar los cambios anteriores en el archivo de configuración "/boot/grub/grub.cfg".

Después del comando anterior, se aplicaron los siguientes cambios en el archivo de configuración "/boot/grub/grub.cfg".

echo    'Loading Linux 3.16.0-4-686-pae ...'
linux   /vmlinuz-3.16.0-4-686-pae root=UUID=b30cdb22-8e3c-4ffd-a0c7-af96b90ba016 ro  rootdelay=20 cryptopts=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc,keyscript=/lib/cryptsetup/scripts/openluksdevices.sh
echo    'Loading initial ramdisk ...'
initrd  /initrd.img-3.16.0-4-686-pae

Ejecute "update-initramfs -u"  para actualizar el archivo del sistema de archivos temporal para todos los kernels.

Antes de reiniciar, descomprima el newley generado "initrd.img" y verifique que el script clave se haya copiado en el directorio "lib/cryptsetup/scripts" y la regla udev personalizada en el directorio "lib/udev/rules.d/".

cd /tmp/
zcat /boot/initrd.img-3.16.0-4-686-pae | cpio -iv

Keyscript se incluye con éxito en los scripts de initramfs.

La regla USB personalizada también se incluye en las reglas de udev.

Agregue un dispositivo USB en la configuración de la máquina virtual antes de probar toda la configuración.

Finalmente, la clave secreta se carga con éxito para el volumen cifrado.

Conclusión

En este artículo, se abre una partición cifrada utilizando una clave secreta que se guarda en un dispositivo de memoria USB. Se utiliza un script de shell automático para proporcionar una clave secreta para el volumen cifrado en el momento del arranque.


Debian
  1. ¿Error al firmar Csr con la clave raíz Ca?

  2. Linux:¿cómo cifrar Linux (debian 8) después de la instalación y cuáles son las consecuencias?

  3. Linux:¿hace que la copia de disco/disco sea más lenta?

  4. Debian:¿cambiar el tamaño de la partición raíz sin desinstalar y reinstalar Linux (o perder datos)?

  5. Cómo crear un USB de arranque de Windows 10 en Linux con el nuevo WoeUSB

Introducción a las herramientas de cifrado de línea de comandos en Linux

Cómo clonar discos con el comando dd de Linux

Cree y administre particiones de disco con Parted en Linux

Cómo ajustar el tamaño de la partición raíz en Live Arch Linux

Cómo iniciar el archivo ISO de Debian desde el disco duro con GRUB2

Debian:¿cómo instalar Debian con cifrado de disco completo y un archivo de intercambio de tamaño personalizado?