Directorio cifrado usando encfs. Automatización vía 'pam'.

De GhostWiki
Revisión del 01:55 4 sep 2010 de Angeld (discusión | contribuciones) (Página nueva: {{SecCiones}} == Receta_111 == '''Título''': Directorio cifrado usando [http://www.arg0.net/encfs encfs]. Automatización vía 'pam'. '''Autor:''' AngelD (angeld en froga punto ne...)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar
Secciones

HomePage¿Qué es e-ghost?ProyectosHerramientasDocumentosRecetasCursos ReunionesEnlacesHumorGhostLogAlternativas LibresContactoEuskaraz

Receta_111

Título: Directorio cifrado usando encfs. Automatización vía 'pam'.

Autor: AngelD (angeld en froga punto net)

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 reservado 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.

Sistemas utilizados

Debian Lenny

Debian Squeeze

Requerimientos en Debian

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

http://pam-encfs.googlecode.com/svn/trunk/README