deje de crypttab pidiendo contraseña para el intercambio

10

Instalé un nuevo sistema 11.04 cuando fue lanzado y configuré el cifrado de disco completo con LUKS. Al principio me pidió una contraseña para mis tres particiones cifradas:

/
/home
swap

Escribir la frase de contraseña tres veces fue frustrante, así que traté de configurar / home y cambiar para descifrar desde un archivo de claves almacenado en /. Creé el archivo de claves y lo habilité en las dos particiones. Mi tabla de cifrado ahora se ve así:

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

Esto funciona bien para / home, que se monta automáticamente sin solicitar una contraseña. Pero cryptsetup todavía pide una contraseña para el espacio de intercambio. Incluso he intentado agregar noauto al espacio de intercambio para que no se configure en absoluto: una vez que se inicia el sistema, puedo habilitarlo sin la frase de contraseña, por lo que pensé en agregar un script de inicio tardío para hacer pero incluso con noauto cryptsetup todavía pide la frase de contraseña.

¡Gracias!

Puntilla
fuente
44
Por esta razón, se recomienda usar LVM + LUKS en caso de particiones múltiples. Crypsetup puede usarse encima o debajo de la capa LVM (arriba -> sistema de archivos, abajo -> disco). Usar cryptsetup debajo de LVM tiene la ventaja de que solo necesita una partición encriptada (la LVM).
Lekensteyn

Respuestas:

10

Tenía la misma pregunta, así es como lo hice en ubuntu 12.04.1 y 12.10,

- antes de comenzar, asegúrese de tener una copia de seguridad y también puede iniciar su sistema con ubuntu cd o usb; como si cometiera un error, es posible que su sistema ya no arranque o que pierda datos. Supongo que tiene un sistema ubuntu encriptado con LUKS, dentro de LUKS tiene 3 particiones, SYSTEM-BOOT (no encriptado), SYSTEM-SWAP (encriptado) y SYSTEM-OS (encriptado) -

necesita ajustar UUID, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS a la variación utilizada en su sistema, por favor vea el enlace de referencia debajo de mi solución para obtener más información

Obtenga UUID:

blkid

Preparar>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

Indique a cryptsetup que calcule la frase de contraseña de la partición de intercambio a partir de la clave de descifrado del volumen que contiene el sistema de archivos raíz>

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

dígale al sistema acerca de la partición de intercambio, edite crypttab>

nano /etc/crypttab

=? asegúrese de que dos líneas coincidan

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

dígale al sistema acerca de la partición de intercambio, edite fstab>

nano /etc/fstab

=? asegúrate de tener esta línea

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

Informe al sistema sobre la partición de intercambio, edite el currículum>

nano /etc/initramfs-tools/conf.d/resume

=? asegúrate de tener esta línea

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

actualizar initramfs en la partición de arranque>

update-initramfs -u -k all

Referencia

La respuesta inspirada en la configuración de un sistema Debian cifrado (enlace archivado):

Si está utilizando un sistema Debian cifrado, es probable que tenga que cumplir algunos requisitos de seguridad. Si ese es el caso, también debe usar una partición de intercambio cifrada.

La partición de intercambio se puede cifrar de dos maneras:

  • se puede recrear en cada arranque, usando una frase de contraseña aleatoria, o
  • se puede crear como los otros volúmenes cifrados con una frase de contraseña persistente

Si desea utilizar suspender a disco, no puede utilizar el primer enfoque, ya que sobrescribiría su huella de memoria almacenada en la partición de intercambio. Además, no puede usar un archivo de clave como las otras particiones, ya que el sistema de archivos raíz no está (y no debe) estar montado para cuando se inicia el proceso de reanudación y necesita leer la partición de intercambio descifrada.

La forma en que resolví esto es diciéndole a cryptsetup que calcule la frase de contraseña de la partición de intercambio a partir de la clave de descifrado del volumen que contiene el sistema de archivos raíz; el paquete cryptsetup implementa esto con /lib/cryptsetup/scripts/decrypt_derived. Por lo tanto, para configurar la partición de intercambio, hago lo siguiente, suponiendo hda2que la partición contiene el intercambio cifrado y el sistema de archivos raíz está en hda5_crypt:

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

Para informar al sistema sobre esta partición de intercambio, debemos agregarla a /etc/crypttaby /etc/fstab; asegúrese de que esos archivos contengan líneas como las siguientes:

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

Con esto en su lugar, tan pronto como configure el sistema para suspender a disco, la partición de intercambio se configurará automáticamente junto con el sistema de archivos raíz muy temprano durante la secuencia de arranque. Para averiguar qué partición de intercambio debe estar disponible en ese momento, cryptsetup verifica lo siguiente: asfasfafs - una línea como RESUME=/dev/mapper/hda2_crypten /etc/initramfs-tools/conf.d/resume - una configuración de reanudar dispositivo en /etc/uswsusp.conf(ver uswsusp.conf(5)) - una entrada en /etc/suspend.conf - a resume=/dev/mapper/hda2_crypten la línea de comando del núcleo

Puede inspeccionar /usr/share/initramfs-tools/hooks/cryptrootsi desea saber más sobre esto.

Príncipe
fuente
Bienvenido a Ask Ubuntu! Habría hecho +1 si no hubiera simplemente copiado / pegado sin ocuparme del formato (que acabo de hacer). Me gusta el enfoque "se puede recrear en cada arranque, usando una frase de contraseña aleatoria" aquí.
gertvdijk
agregué los comandos que realmente utilicé a la respuesta, también lo probaré en la 12.10, actualizaré la respuesta más tarde
Prince
Bueno. Asumí que lo copiaste / pegaste por completo. Modifíquelo para tener claro qué cambios le hizo para que funcione. Sería útil, gracias!
gertvdijk
no lo intente en 12.10 ya que me encontré con un error que impide el arranque, obtengo "cryptsetup lvm no está disponible", los informes de error de búsqueda de Google devuelven. necesita investigarlo más a fondo, pero no tengo tiempo, se lo haré saber más tarde.
Príncipe el
actualicé la respuesta, mi sistema 12.10 ahora es completamente funcional y solo pide una contraseña, no actualicé-initramfs -u -k todo al final que creó el problema que mencioné en el comentario anterior. @gertcdijk formó todo, espero que estés feliz ahora
Prince
4

Esto probablemente indica que se está accediendo a la partición de intercambio durante la initramfsparte del proceso de arranque. En este punto, el sistema de archivos raíz aún no se ha montado, por lo que los archivos de configuración almacenados allí no serán visibles.

Si bien el espacio de intercambio se monta después del sistema de archivos raíz, hay una razón para que el initramfsproceso de inicialización acceda al espacio de intercambio: cuando hiberna su computadora, los contenidos de la memoria y el estado del sistema se escriben para intercambiar. Para reanudar la hibernación, es necesario verificar si el espacio de intercambio contiene una imagen de hibernación que requeriría la frase de contraseña.

Si no le importa perder la capacidad de reanudar la hibernación, puede deshabilitar este comportamiento editando /etc/initramfs-tools/conf.d/resumey comentando la línea que comienza con RESUME=. Después de realizar el cambio, ejecute update-initramfs -upara actualizar la initramfsimagen.

James Henstridge
fuente
¡Ah gracias! No estoy seguro de querer sacrificar la hibernación. No lo uso a menudo, pero cuando la batería se agota sin que me dé cuenta, resulta útil. ¿Sabes si hay una manera de hacer que cryptsetup reutilice la misma contraseña para /?
Brad
No sé de una manera de hacer eso. Y antes de preguntar, no intente poner una copia de su archivo clave en el initramfs. Si bien eliminaría el mensaje de frase de contraseña, también lo pondría a disposición de cualquier persona con acceso físico al disco.
James Henstridge