Hola, una de mis preocupaciones es mantener la información del disco duro del portátil de forma cifrada, y tras investigar explico como lo he realizado con éxito. Puede ser que utilizar Luks sobre Btfrs sea más avanzado y seguro para todo el disco, pero en principio con la partición home me sirve para este propósito.
He utilizado FSCRYPT es un cifrado actual desde el kernel para cifrar particiones (no disco) o directorios. Es el sistema de cifrado predeterminado también para Android y funciona a nivel de kernel. El inconveniente es que sólo funciona para ext4, f2fs, no para btrfs.
En mi caso tengo la partición formateada con ext4.
También tenemos la opción de ecryptfs, pero está menos mantenida y es menos actual, aunque si es compatible con btfrs ya que el tipo de cifrado es diferente.
Lo he realizado sobre una máquina con SlowRoll, aunque entiendo que con Tumbleweed debería funcionar perfectamente, Sobre todo, tener copias de seguridad por si hubiera cualquier problema.
En primer lugar, nos aseguramos que el kernel tenga activada la opción de cifrado a nivel de fichero.
zgrep -h CONFIG_FS_ENCRYPTION /proc/config.gz /boot/config-$(uname -r) | sort | uniq
Se debería ver CONFIG_FS_ENCRYPTION=y.
Después habilitamos encrypt en la partición home, la podemos localizar con lsblk -fs. Supongamos sdaX.
sudo tune2fs -O encrypt /dev/sdaX
Instalamos fscrypt y libpam-fscrypt para el uso con el inicio de sesión.
sudo zypper install fscrypt libpam-fscrypt
Iniciamos su configuración:
sudo fscrypt setup
Nos preguntará si / sea escribible solo por root, decimos que N porque no vamos a cifrar la raíz.
Configuramos un punto de montaje de fscrypt para home
sudo fscrypt setup /home
Nos preguntará si queremos que sea escribible por el resto de usuarios, decimos que sí
Cerramos la sesión del usuario para preparar el nuevo directorio, y accedemos a una TTY con Ctrl+Alt+F2. Iniciamos sesión como root.
Podemos copiar el directorio del usuario a un directorio temporal si queremos conservar los archivos.
sudo mv /home/miusuario /home/miusuario_bak
Crear el nuevo directorio cifrado para el usuario, otorgándole los permisos necesarios.
sudo mkdir /home/usuario
sudo chown usuario:usuario /home/usuario
sudo chmod go-rwx /home/usuario
Ahora, ciframos el nuevo directorio /home/usuario
sudo fscrypt encrypt /home/usuario --user=usuario
Preguntará como queremos proteger el directorio, seleccionamos la opción 1 - Your login passphrase (pam_passphrase)). Con esto se debería desbloquear de forma automática
Copiamos los datos al directorio cifrado
sudo rsync -avH /home/usuario_bak/ /home/usuario/
Podemos verificar el estado del cifrado con
fscrypt status /home/usuario
En el directorio habrá un fichero fscrypt_recovery_readme.txt con la clave de recuperación, guardarla en un lugar seguro por si tenemos que hacer uso de ella, esperemos que no !
Aquí es donde he tenido el único problema, al reiniciar e iniciar sesión, no se ha descifrado el directorio home automáticamente mostrándome una sesión vacía, He vuelto a salir al TTY, y para comprobar que el cifrado es correcto, ejecuto :
fscrypt unlock /home/usuario --user=usuario
Y veo que lo descifra correctamente, mostrando el contenido del directorio. por lo que suponqo que es debido a como openSuse maneja los datos de inicio de sesión. Tras investigarlo, he encontrado los ficheros que hay que configurar.
Los ficheros afectados para el arranque en mi caso han sido los siguientes,
/etc/pam.d/common-auth
/etc/pam.d/common-session
y añadir las lineas tal que así, para indicar que utilice fscrypt para desbloquear al loguearse, la señalo en el comentario.
auth required pam_env.so
auth sufficient pam_fprintd.so
auth optional pam_kwallet5.so
auth required pam_fscrypt.so ## añadir esta línea
auth required pam_unix.so try_first_pass
Por último, si todo ha ido correcto, podemos eliminar la copia de seguridad.
sudo rm -rf /home/usuario_bak
Con esto ya me ha reiniciado con éxito y con el directorio home perfectamente habilitado.
Se agradece cualquier aclaración o ampliación por si hay un modo mejor o más seguro de hacerlo y por supuesto cualquier corrección de algún fallo por mi parte.
Saludos!