Blog

Cifrado de datos con eCryptfs

En el artículo anterior, vimos cómo cifrar nuestros datos con EncFS. Además de esa herramienta, podemos utilizar eCryptfs, que forma parte de núcleo y, en principio, debería ser más rápida.

Esta utilidad, al igual que la anterior, nos permite cifrar datos a nivel de sistema de archivos. Aunque las herramientas para su utilización fueron diseñadas pensando en Ubuntu, podemos utilizarla en otras distribuciones, por ejemplo, en ArchLinux.

Lo primero que vamos a hacer, es instalar las utilidades para manejar los contenedores eCryptfs:

sudo pacman -Syu ecryptfs-utils

Hay que tener en cuenta que sólo podremos crear un contenedor, que  se llamará .Private. Será montado en Private, aunque esto puede ser cambiado. Además, se creará el directorio .ecryptfs, que contiene la configuración para poder ser montado. Por defecto, los parámetros de cifrado son AES con 128 Bits. Dentro de .ecryptfs vamos a encontrar los siguientes archivos:

  • Private.mnt <- contiene el directorio en el que se montará el contenedor.
  • Private.sig <- contiene la firma utilizada para identificar la “frase de paso” de montaje.
  • wrapped-passphrase<- la frase de paso, cifrada con la clave del login.
  • auto-mount y auto-umount <- están vacíos e indican si deben automontarse/autodesmontarse, en caso de que existan.

Bien, vamos a crear un contenedor:

ecryptfs-setup-private

Nos pedirá la contraseña del login, además, si queremos, la frase de paso para montar. Si no se especifica, creará una aleatoria.

Hecho esto, nos habrá generado la estructura .ecryptfs, el contenedor .Private y el directorio Private. Dentro de este último, tendremos un archivo .desktop para que, al pinchar sobre él desde el navegador de archivos, nos monte el contendor, pidiendo la clave del usuario. Si queremos montarlo manualmente desde línea de comandos, bastará ejecutar:

ecryptfs-mount-private ~/Private

Para que se automonte al autenticarnos en el sistema, deberemos hacer unas modificaciones en el archivo /etc/pam.d/system-auth. Básicamente, deberemos especificar que se utilice el módulo pam_ecryptfs.so. Debería quedar similar a:

#%PAM-1.0
auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so
auth	  required  pam_ecryptfs.so unwrap

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so
password  optional  pam_ecryptfs.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so
session   optional  pam_ecryptfs.so unwrap

Ahora, al abrir la sesión del usuario, se montará automáticamente el directorio Private.

Si queremos que, en lugar de Private, se utilice otro directorio, desmontamos primero:

ecryptfs-umount-private ~/Private/

Lo movemos con el nuevo nombre:

mv ~/Private ~/nombre_nuevo

Y lo indicamos en el archivo correspondiente:

echo /ruta_completa/nombre_nuevo > ~/.ecryptfs/Private.mnt

Para cifrar el home completo, podemos utilizar, desde una sesión de root, el siguiente comando:

ecryptfs-migrate-home -u usuario

Un pequeño inconveniente que nos vamos a encontrar es que los contenedores no se desmontan automáticamente. Podemos utilizar un pequeño truco, que será, en el archivo ~/.bash_logout, incluir la línea:

ecryptfs-umount-private ~/Private/

Como podemos ver, al estar las utilidades pensadas para un sistema en particular, Ubuntu, nos encontramos con alguna limitación. Además, no es tan versátil como EncFS. La ventaja que posee es que, al estar incorporado en el núcleo de sistema, el proceso de cifrado/descifrado va a ser más rápido, con lo que, si no nos es necesario una herramienta multiplataforma, ésta puede ser una buena opción.

¡Espero que os haya gustado! 😉

Un saludo!!

Mª José Montes – mjose@highsec.es – @MMontesDiaz

  1. Christian ramirez
    Christian ramirez03-24-2014

    Desde Peru: excelente aporte

  1. Resumen XVI03-25-14

Leave a Reply

*

    No Twitter Messages