Es sensato que si tiene algún tipo de cifrado de dispositivo de bloque implementado en su sistema GNU / Linux, también cifre su partición de intercambio, ya que cualquier dato descifrado puede escribirse en texto claro en cualquier momento en el intercambio.
Al mirar la página de manual de Debian para "crypttab" veo un ejemplo de creación de una partición de intercambio con clave aleatoria en el arranque, por lo que la clave se establece aleatoriamente a medida que avanza el arranque y solo el sistema lo conoce:
# Encrypted swap device
cswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap
En este ejemplo, se hace referencia al dispositivo de intercambio mediante una ruta de desarrollo convencional, es decir /dev/sda6
Las rutas absolutas de los dispositivos están sujetas a cambios y se reasignan en el arranque si, por ejemplo, se conecta una unidad usb. ¡Un usuario sería muy infeliz si /dev/sda6
fuera una partición diferente a la esperada y posteriormente se sobrescribiera con datos de intercambio aleatorio!
Entonces, la solución parece ser: use un UUID en lugar de una ruta de dispositivo (ya que un UUID no debería cambiar), reemplazando /dev/sda6
con/dev/disk/by-uuid/<whatever the uuid of dev/sda6 is>
PERO ... aquí está el problema: ¡cada vez que cryptsetup recrea la partición de intercambio cifrada en el momento del arranque, genera un nuevo UUID! Doh!
Por lo tanto, debemos preservar el UUID de este sistema de archivos cifrado de alguna manera. Creo que cryptsetup puede hacer esto con su --offset
interruptor, lo que permite la preservación del encabezado LUKS y, por lo tanto, el UUID.
He encontrado esta URL: https://wiki.archlinux.org/index.php/System_Encryption_with_LUKS#Using_UUIDs_with_encrypted_swap_partitions
¿Alguien sabe cómo implementar la solución descrita para Arch Linux en el sistema operativo Debian? Las secuencias de comandos de inicio mencionadas en el documento parecen no existir en el sistema operativo Debian
¡Gracias!
EDITAR
Uno podría usar ecryptfs para lograr los mismos fines (espacio de intercambio encriptado) usando el comando:
ecryptfs-setup-swap
Sin los problemas que acosan el cifrado de dispositivos de bloque. Echa un vistazo a esta consulta de AskUbuntu
ecryptfs-setup-swap
es solo un ayudante que configuradm-crypt
/crypttab
para ti. Comoecryptfs
es un controlador de nivel de archivo, no maneja particiones enteras, por lo que lo agilizadm-crypt
. Puede encontrar este método más fácil de usar, pero finalmente no está logrando nada diferente. En todo caso, las peculiaridades de este método (incluido el UUID) probablemente me confundieron más que si lo hubiera hecho yo mismo desde los primeros principios ... aunque aprendí más.Respuestas:
En / etc / crypttab, use / dev / disk / by-id en lugar de / dev / disk / by-UUID para referirse a su partición de intercambio. Por ejemplo, su entrada / etc / fstab para intercambio podría ser
Entonces la entrada correspondiente correcta en / etc / crypttab sería algo así como
Tenga en cuenta que el dispositivo anterior se refiere a / dev / disk / by-id que puede encontrar para su unidad escribiendo lo siguiente en la CLI:
fuente
/dev/sdaN
luego conectar otro disco algún día y descubrir que su orden de nomenclatura del núcleo se ha cambiado y una de sus particiones no intercambiables ha sido rechazada. El UUID también sería bueno, pero creo que el problema clave es que está almacenado en los primeros bytes de la partición, por lo que obtenemos el escenario insoluble de huevo y gallina que se discute aquí.En mi / etc / crypttab, tengo
Aquí / dev / mapper / cswap es un volumen lógico creado por LVM, que se encarga de asignar correctamente los nombres de volúmenes lógicos independientemente de los nombres de las letras de unidad. También me permite cambiar fácilmente el tamaño de mi partición de intercambio.
fuente
Intente implementar el resto de la solución, ignorando el archivo init. Parece que ese fragmento de script de inicio solo está ahí para protegerte. O Debian no lo protege de esa manera, o le dará un mensaje de error cuando intente arrancar con él que, con suerte, lo llevará al lugar correcto.
También tendría cuidado de que IIRC Debian y ArchLinux tengan diferentes formatos para / etc / crypttab (loco, lo sé, pero me mudé de Ubuntu a Arch hace un par de años y finalmente decidí usar bash directo en lugar de entrometerse con crypttabs).
fuente
Ejecute ecryptfs-setup-swap o manualmente:
¡Esta configuración utiliza claves generadas aleatoriamente en el arranque y no admitirá la hibernación en el disco duro! ¡Debe deshabilitar la hibernación a través de su respetable DE Power Management Utility y configurarlo en Shutdown on Critical para evitar la pérdida de datos!
Cambiar a una cuenta de administrador / root
su root o sudo para cada comando
Deshabilitar intercambio
intercambio -a
Localice la partición de intercambio existente
lsblk
ejemplo: sda3 8: 3 0 8G 0 parte [SWAP]
Sobrescribir intercambio antiguo
dd if = / dev / zero bs = 1024000 of = / dev / sda <#>
ejemplo: dd if = / dev / zero bs = 1024000 of = / dev / sda3
Configuración de FSTAB
vim / etc / fstab
Reemplace el antiguo dispositivo SWAP con el nombre del mapeador crypttab: / dev / mapper / cswap
OLID UUID = d03f3d8e-7888-48a5-b3cc-41de8dbbcfdc swap swap default 0 0
NUEVO
/ dev / mapper / cswap none swap pri = 1, por defecto 0 0
Configuración criptográfica
ls -lF / dev / disk / by-id
Ejemplo: ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3
vim / etc / crypttab
cswap / dev / disk / by-id / ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 / dev / urandom swap, cipher = aes-cbc-essiv: sha256, size = 256
Intercambio cifrado activo
Reinicia la computadora
Verifique las operaciones de intercambio cifradas
dmsetup -C info
Ejemplo: cswap 253 0 L - w 2 1 0 CRYPT-PLAIN-cswap
lsblk
Ejemplo ├─sda3 8: 3 0 8G 0 parte
│ └─cswap 253: 0 0 8G 0 cripta [SWAP]
cat / proc / swaps
ejemplo: Nombre de archivo Tipo Tamaño Utilizado Prioridad / dev / dm-0 partición 8385532 0 -1
fuente