Investigando el cifrado del disco duro. la solución parece ser dm-crypt con LUKS usando una contraseña. Trabajo con varios discos duros independientes montados en un grupo de discos para lectura. En este caso, tengo que escribir una contraseña varias veces.
¿Hay alguna manera de cifrar los discos duros con un archivo de clave, tal vez ponerlo en una unidad USB y simplemente conectarlo cuando sea necesario?
Respuesta1
Una de las mejores formas de hacerlo es utilizar una tarjeta inteligente con una clave criptográfica para desbloquear las claves de sus dispositivos de bloque cifrados. Sólo necesitará ingresar la frase de contraseña (llamada "PIN" por las herramientas pero en realidad es una frase de contraseña) una vez, después de lo cual se almacenará en caché. Esto tiene la ventaja adicional de proteger los datos cifrados con algo que usted tiene (la propia tarjeta inteligente, de la cual no se puede extraer la clave privada) y algo que usted sabe (la frase de contraseña).
Formatea tu /etc/crypttab
así:
mapper-name /dev/disk/raw-device /var/lib/filename-containing-encrypted-key \
luks,keyscript=/lib/cryptsetup/scripts/decrypt_opensc
En Debian y derivados, initramfs-tools detectará el script de clave y copiará todas las herramientas y demonios necesarios para acceder a la tarjeta inteligente a initramfs automáticamente.
La información sobre cómo configurar la tarjeta inteligente y crear (y cifrar) las claves se encuentra en /usr/share/doc/cryptsetup/README.opensc.gz
.
Puedes usar unYubikey 4oYubikey NEOentre otros para este fin.
Notas de implementación: Esta característica tiene aspectos irregulares y aparentemente no funciona de fábrica, así que YMMV. La última vez que lo logré con éxito, tuve que agregar los siguientes trucos:
- Desactívelo
systemd
porque intenta desastrosamente hacerse cargo de todo el proceso de configuración de dispositivos cifrados,/etc/crypttab
pero no sabe nada al respecto,keyscript
lo que conduce a un gran FALLO. Afortunadamente, en Debian aún puedes optar por no participarsystemd
. Instale este script de reparación superior porque
/etc/initramfs-tools/hooks/yubipin
la función incorporada no instaló suficiente soporte para que Yubikey se pudiera utilizar desde initramfs. Es posible que necesites ajustar esto.#!/bin/sh PREREQ=cryptroot prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # /scripts/local-top/cryptopensc calls pcscd with the wrong path ln -s ../usr/sbin/pcscd ${DESTDIR}/sbin/pcscd mkdir -p "${DESTDIR}/usr/lib/x86_64-linux-gnu" # opensc-tool wants this dynamically, copy_exec doesn't know that cp -pL /usr/lib/x86_64-linux-gnu/libpcsclite.so.1 "${DESTDIR}/usr/lib/x86_64-linux-gnu/libpcsclite.so.1" mkdir -p "${DESTDIR}/lib/x86_64-linux-gnu" # without this, pcscd aborts with a pthread_cancel error cp -pL /lib/x86_64-linux-gnu/libgcc_s.so.1 "${DESTDIR}/lib/x86_64-linux-gnu/libgcc_s.so.1" # this gets copied as a dangling symlink, fix it rm "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" cp -pL /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" # pcscd needs this to open the reader once it has found it cp -pL /lib/x86_64-linux-gnu/libusb-1.0.so.0 "${DESTDIR}/lib/x86_64-linux-gnu/libusb-1.0.so.0"
Instale otro script para
/etc/initramfs-tools/scripts/local-bottom/killpcscd
limpiar:#!/bin/sh set -e PREREQ=cryptopensc prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # because cryptopensc does not do it properly killall pcscd
Respuesta2
Es posible simplemente almacenar la contraseña de luks en un archivo.
Lo uso en la computadora de mi casa; El sistema de archivos raíz vive en un volumen luks normal que desbloqueo con mi contraseña al arrancar. Una unidad adicional contiene un volumen luks con una contraseña generada.
Este volumen adicional se desbloquea mediante un archivo de contraseña que se encuentra en el sistema de archivos raíz cifrado. Se desbloquea automáticamente durante el arranque si el sistema de archivos raíz está desbloqueado.
Mi /etc/crypttab
aspecto es este:
crypt-root UUID=c5a2cf25-0aae-457e-874f-fca7ea3d5742 none luks
crypt-data UUID=96d79323-246d-49e0-9149-ec3a4cfc1c1e /etc/crypt-data.key luks
El tercer campo es el archivo clave, none
para el sistema de archivos raíz, pero /etc/crypt-data.key
para el sistema de archivos de datos. /etc/crypt-data.key
contiene la contraseña de luks:
Tm90IHJlYWxseSBteSBwYXNzd29yZC4K
Tenga en cuenta que una nueva línea o cualquier otro espacio en blanco se considerará parte de la contraseña. Tenga cuidado de generar este archivo sin una nueva línea al final. Además, asegúrese de que tenga permisos estrictos:
-rw------- 1 root root 59 Sep 14 23:57 /etc/crypt-data.key
Debería poder duplicar este enfoque para múltiples volúmenes (ya sea con contraseñas distintas o una contraseña compartida, su elección).