En el presente documento describimos cómo encriptar la carpeta personal de un usuario en home con eCryptfs y montar/desmontar automáticamente el módulo eCryptfs a través de PAM (método flexible de autenticación del usuario) al iniciar/cerrar sesión:
El método es muy sencillo y nos permite configurar automáticamente la carpeta personal del usuario con el algoritmo de cifrado AES y una clave de 16 byte.
Comenzamos...
1. Instalar paquetes:
Código: Seleccionar todo
# pacman -S ecryptfs-utils keyutils rsync lsof
- 2.1. Creamos un grupo «ecryptfs»:
2.2. Agregamos nuestro usuario a dicho grupo:
Código: Seleccionar todo
# groupadd ecryptfs
Código: Seleccionar todo
# usermod -aG ecryptfs nombredeusuario
Código: Seleccionar todo
# modprobe ecryptfs
- 4.1. Archivo del sistema «/etc/pam.d/system-auth», añadiendole:
4.2. Archivo del gestor de inicio de sesión que utilicemos:
Código: Seleccionar todo
auth required pam_ecryptfs.so unwrap password required pam_ecryptfs.so session required pam_ecryptfs.so unwrap
«/etc/pam.d/gdm-password» (para gnome);
«/etc/pam.d/kde» (para kde);
«/etc/pam.d/lxdm» (para lxdm); o
«/etc/pam.d/lightdm» ( para lightdm),
añadiéndole:Ambos archivos deben quedar así aproximadamente (obviamente, omitimos: « ← Poner aquí »):Código: Seleccionar todo
auth optional pam_ecryptfs.so unwrap password optional pam_ecryptfs.so session optional pam_ecryptfs.so unwrap
(Para el archivo del sistema):(A modo de ejemplo, para el archivo gdm de Gnome -el resto de ejemplos podemos verlos en https://wiki.archlinux.org/index.php/EC ... tfs_module -):Código: Seleccionar todo
# nano /etc/pam.d/system-auth: #%PAM-1.0 auth required pam_env.so auth required pam_unix.so try_first_pass nullok auth required pam_ecryptfs.so unwrap ← Poner aquí auth optional pam_permit.so account required pam_unix.so account optional pam_permit.so account required pam_time.so password required pam_ecryptfs.so ← Poner aquí password required pam_unix.so try_first_pass nullok sha512 shadow password optional pam_permit.so session required pam_ecryptfs.so unwrap ← Poner aquí session required pam_limits.so session required pam_env.so session required pam_unix.so session optional pam_permit.so
Código: Seleccionar todo
# nano /etc/pam.d/gdm-password: #%PAM-1.0 auth requisite pam_nologin.so auth required pam_env.so auth requisite pam_unix.so nullok auth optional pam_ecryptfs.so unwrap ← Poner aquí auth optional pam_gnome_keyring.so auth sufficient pam_succeed_if.so uid >= 1000 quiet auth required pam_deny.so account required pam_unix.so password required pam_unix.so password optional pam_ecryptfs.so ← Poner aquí session required pam_loginuid.so -session optional pam_systemd.so session optional pam_keyinit.so force revoke session required pam_limits.so session required pam_unix.so session optional pam_ecryptfs.so unwrap ← Poner aquí session optional pam_gnome_keyring.so auto_start
6. Una vez reiniciado, cuando aparezca la pantalla de inicio de sesión y antes de ingresar en el entorno gráfico, accedemos a tty2 (Ctrl+Alt+F2), iniciaremos una sesión como root y ejecutaremos la orden de abajo (esto lo he hecho así, antes de ingresar en el escritorio, como medida de precaución, porque si ingresamos en el escritorio podría ejecutarse algún programa en segundo plano, como por ejemplo dropbox, que utiliza /home, lo que impediría completar la migración y, consiguientemente, el proceso de encriptado):
Código: Seleccionar todo
# ecryptfs-migrate-home -u nombredeusuario
(Advertencia: al pedirnos la passphrase, introduciremos la contraseña de usuario utilizada para iniciar nuestra sesión de usuario, ambas, contraseña de usuario y passphrase de eCryptfs, deben coincidir)
(Nota: si no se inicia la migración advirtiéndonos que no tenemos iniciado el módulo eCryptfs, ejecutamos: modprobe ecryptfs, y volvemos a intentarlo. También puede darnos error al iniciar la migración si no tenemos suficiente espacio en disco para hacer el backup del directorio personal, con lo cual tendríamos que hacer un poco de limpieza de nuestra carpeta personal para dejar el espacio requerido -2.5x-).
7. Una vez terminada la migración, hay que generar la passphrase para eCryptfs, lo cual hay que hacerlo como usuario sin privilegios. Para ello, en la misma tty2, saldremos de la sesión de root (con la orden exit) e iniciaremos una sesión como usuario normal (con el nombre de usuario cuya carpeta personal queremos encriptar). Una vez abierta la sesión de usuario normal escribimos:
Código: Seleccionar todo
$ ecryptfs-unwrap-passphrase
8. Para finalizar el proceso, realizaremos tres acciones consecutivas: (1) salir de la sesión de usuario normal iniciada en la tty2 escribiendo «exit», (2) volver a la pantalla gráfica de inicio de sessión (pulsando Ctrl+Alt+F1) e ingresar en el escritorio para completar el proceso, y, (3) para comprobar que todo ha salido bien, reiniciar el equipo.
Hemos terminado. Ya tenemos nuestra carpeta personal encriptada.
Nota: si todo ha salido bien, habrá un archivo de respaldo de nuestro directorio personal, llamado «nombredeusuario.XXXXX», en /home/nombredeusuario.XXXXX, que podemos eliminar (en caso contrario, nos servirá para restaurar dicho directorio).
Sugerencias:
- i. La encriptación afecta solamente a la carpeta personal del usuario especificado, sin que suponga ninguna alteración en las carpetas personales de otros usuarios, si es que existen en el sistema. Si en el futuro queremos encriptar otras carpetas personales de otros usuarios existentes en el sistema, bastará tan solo seguir los puntos 2.2, 6, 7 y 8 anteriores.
ii. Si cambiamos la contraseña de usuario (# passwd nombredeusuario), no debemos olvidarnos de cambiar también la passphrase de eCryptfs, de lo contrario, no podremos iniciar sesión (creándose una especie de bucle que nos devolverá siempre a la pantalla de inicio de sesión) ya que no se podrá montar nuestro directorio personal.
- ii.a. Para cambiar la passphrase de eCryptfs, cuando se cambia la contraseña de usuario (recordar que ambas deben coincidir), escribimos en consola (como usuario normal):
(seguimos las instrucciones, que son: introducir contraseña actual, introducir contraseña nueva, repetir contraseña nueva)
Código: Seleccionar todo
$ ecryptfs-rewrap-passphrase /home/$USER/.ecryptfs/wrapped-passphrase
Y luego:(para generar la passphrase de eCryptfs)Código: Seleccionar todo
$ ecryptfs-unwrap-passphrase
ii.b. Si por error hemos ejecutado estas órdenes como root, tampoco podremos iniciar sesión porque PAM no tendrá permisos para acceder al archivo «wrapped-passphrase». Para subsanar este error debemos darle permisos de lectura y escritura a dicho archivo (como root, desde una tty -por ejemplo, Ctrl+Alt+F2-):Código: Seleccionar todo
# chmod 777 /home/nombredeusuario/.ecryptfs/wrapped-passphrase
- ii.a. Para cambiar la passphrase de eCryptfs, cuando se cambia la contraseña de usuario (recordar que ambas deben coincidir), escribimos en consola (como usuario normal):