Montar particiones cifradas según el usuario

Enviado por yikoru el Sáb, 30/12/2017 - 23:28
Montar particiones cifradas según el usuario

A diferencia del uso del archivo /etc/crypttab el cual desbloquea las particiones cifradas al inicio del sistema para TODOS los usuarios este método es más selectivo y descifra la partición solo cuando el usuario configurado inicie sesión en el sistema, esto es ideal para entornos multiusuario con particiones /home/ cifradas

Me imagino que existe la posibilidad de hacer esto solo cuando se haga inicio en la sesión grafica del sistema pero no lo he probado
Para poder realizar esto haremos uso del stack de PAM (Pluggable Authentication Modules) y pam_mount. Para los que no lo sepan PAM proporciona un framework para la autenticación de usuarios en el sistema y cuenta con 4 grupos de administración independientes:
Módulos de cuenta: verifica si la cuenta es válida bajo las condiciones actuales (fecha, hora, día de la semana, etc)
Módulo de autentificación: verifica la identidad del usuario
Módulo de contraseña: sirve para mejorar los requisitos mínimos para una contraseña fuerte
Módulo de sesión: define las acciones al inicio y al fin de una autentificación exitosa
Explicado a grandes rasgos que es PAM, veremos lo que necesitamos para lograr esto:

  1. pam_mount instalado (en debian y derivados libpam-mount)
  2. misma contraseña de usuario y descifrado de la partición
  3. tocar mano a la configuración de pam (se recomienda respaldar las configuraciones actuales) y pam_mount

El paso 1 se explica solo. Para el paso 2, si ya tienen una contraseña en el disco cifrado, pueden cambiar su password de usuario, cambiar la password del disco cifrado o agregar la contraseña de usuario al disco cifrado de la sgte forma:
Cambiar la contraseña de usuario

passwd

Cambiar la contraseña del disco cifrado

cryptsetup luksChangeKey

Agregar una nueva contraseña al disco cifrado

cryptsetup luksAddKey

Teniendo estos 2 pasos listos toca meter mano a la configuración, debo advertir que en caso de colocar algo mal pueden perder la capacidad de iniciar sesión en Linux (tanto por consola como interfaz gráfica, remoto, etc).
Si les llega a pasar tienen que iniciar desde un live cd, hacer un entorno chroot y desde ahí recuperar la configuración (imagino que también podría hacerse modificando un poco grub pero no lo he probado)
Respaldado el archivo /etc/pam.d/system-login procedemos a editar y agregar
auth optional pam_mount.so
password optional pam_mount.so
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet
session optional pam_mount.so

Luego, en el archivo /etc/security/pam_mount.conf.xml agregamos

<volume user="USERNAME" fstype="auto" path="/dev/sdaX" mountpoint="/home" options="fsck,noatime" />
<mkmountpoint enable="1" remove="true" />

</pam_mount>

Ya con estos pasos toca reiniciar el sistema y verificar que efectivamente se monte la partición cuando el usuario inicie sesión

fuentes:
http://www.linux-pam.org/Linux-PAM-html/sag-configuration-file.html
http://www.tuxradar.com/content/how-pam-works
http://www.administrosistemas.com/2016/02/02/cambiar-o-anadir-contrasena-de-cifrado-luks-en-disco-cifrado-de-debian/
https://wiki.archlinux.org/index.php/Pam_mount