Cifrado con encfs y pam-encfs
26/08/2013
Contents
- 1 Directorio cifrado usando encfs. Automatización vía 'pam'.
- 2 encfs
- 3 Sistemas utilizados
- 4 Requerimientos en Debian
- 5 Creación del volumen cifrado
- 6 Montaje de un volumen cifrado
- 7 Desmontaje de un volumen cifrado
- 8 Automatización a base de '.bashrc' y '.bash_logout'
- 9 pam y gdm
- 10 pam y login por consola
- 11 pam y password iguales para el usuario y el sistema cifrado
- 12 TODO
- 13 Referencias
Directorio cifrado usando encfs. Automatización vía 'pam'.
Una forma rápida y sencilla de cifrar información, ya sea en máquinas locales o remotas. También se trata como implementar el módulo pam para estos menesteres.
encfs
Encfs es un sistema de cifrado de directorios en "espacio de usuario", utilizando fuse.
ventajas
- Muy fácil de implementar y utilizar.
- No necesitas tener espacio ni particiones reservadas para estos menesteres. Ocupa lo que utilizas
deventajas
- No es realmente un sistema de ficheros. Hereda las características del sistema de ficheros donde se aloja.
- Un usuario con permisos de lectura puede ver la fecha de modificación, el tamaño y los permisos de los ficheros cifrados.
- No conserva la totalidad de los atributos de los ficheros, pudiendo provocar algunos problemas con aplicaciones (¿gnupg?).
Sistemas utilizados
- Debian Lenny
- Debian Squeeze
- Debian Wheezy
Requerimientos en Debian
- encfs
- libfuse2 > 2.6
- fuse-utils
- libpam-encfs (en de querer configurar la autenticación pam)
- El usuario debe formar parte del grupo 'fuse'
Creación del volumen cifrado
cd mkdir .cifrado.encfs cifrado encfs /home/usuario/.cifrado.encfs /home/usuario/cifrado
Al realizarse esta acción, se realizan unas preguntas (tipo de cifrado, tamaño de las claves, ...) antes de pedir la contrasña de cifrado. Para este ejemplo hemos usado el modo pre-configurado 'paranoia'.
Montaje de un volumen cifrado
encfs /home/usuario/.cifrado.encfs /home/usuario/cifrado
Tras esto pide la contraseña y monta el volumen
Desmontaje de un volumen cifrado
/usr/bin/fusermount -u /home/usuario/cifrado
Automatización a base de '.bashrc' y '.bash_logout'
Esto puede ser útil para máquinas remotas, donde no queramos instalar el módulo pam, o simplemnte no queramos conplicarnos la vida. Basta con añadir las lineas indicadas al final de los archivos.
.bashrc
/usr/bin/encfs -i 10 /home/usuario/.cifrado.encfs /home/usuario/cifrado
El parámetro '-i 10' es el tiempo de espera para desmontar el sistema, si no se utiliza.
.bash_logout
/usr/bin/fusermount -u /home/usuario/cifrado
pam y gdm
Para configurar la entrada vía 'pam', con todo el "home" del usuario cifrado, se requiere el módulo 'libpam-encfs'. En este ejemplo suponemos que tenemos creado, y con los permisos 'usuario:usuario' el directorio cifrado '/home/.usuario.enfs' y lo queremos montar en '/home/usuario'
/etc/fuse.conf
Autorizamos a los usuarios a montar directorios:
user_allow_other
/etc/security/pam_encfs.conf
Permitimos el montaje de el directorio cifrado de usuario sito en /home/.enc, en:
- /home/.enc - -v allow_other
/etc/pam.d/gdm
Añadimos justo antes de "@include common-auth":
session required pam_encfs.so # Para que desmonte automaticamete auth required pam_encfs.so
Ponemos "required" en vez de "requisite", para que si introducimos mal la password de la unidad comprimida, no te loguees sobre el directorio vacío.
Con todo esto conseguimos que gdm nos pregunte dos veces por la password, una para la unidad comprimida, y otra para la password del sistema. Si un usuario no tiene unidad comprimida, puede ignorar la primera password.
pam y login por consola
Si deseamos que funcione todo esto al logearnos por consola, hay que realizar los mismos pasos en '/etc/fuse.conf' y '/etc/security/pam_encfs.conf', ademas de:
/etc/pam.d/login
Añadimos justo antes de "@include common-auth":
session required pam_encfs.so # Para que desmonte automaticamete auth required pam_encfs.so
pam y password iguales para el usuario y el sistema cifrado
Si deseamos tener la misma password para el usuario y el sistema de cifrado, o lo que es lo mismo, para sólo teclear una password, si esta coincide:
/etc/pam.d/common-auth
Añadir a la linea 'pam_unix.so', el parámetro 'try_first_pass'.
Con esto conseguimos que las password del primer módulo pam (pam_encfs.so) se reutilice en el segundo (pam_unix.so), por lo que las password de cifrado y sistema TIENEN que ser iguales. Los usuarios sin directorio cifrado no se ven afectados.
TODO
Posiblemente se pueda automatizar el cambio de contraseña del usuario y sistema cifrado simultanemente con '/etc/pam.d/passwd' y '/etc/pam.d/common-password', pero creo que por hoy es suficiente.
Referencias
https://help.ubuntu.com/community/EncryptedHomeDirectoryHowto