EncFS (Español)
EncFS es un sistema de archivos criptográfico apilable ejecutado en el espacio de usuario similar a eCryptfs, y tiene como objetivo asegurar los datos con las mínimas complicaciones. Utiliza FUSE para montar un directorio encriptado en otro directorio especificado por el usuario. No utiliza un sistema loopback como algunos otros sistemas comparables como TrueCrypt y dm-crypt.
Definitivamente EncFS es el software más simple si desea probar el cifrado de disco en Linux.
Esto tiene una serie de ventajas y desventajas en comparación con otros sistemas. En primer lugar, no requiere ningún privilegio de root para implementarlo; cualquier usuario puede crear un repositorio de archivos cifrados. En segundo lugar, no necesita crear un único archivo ni un sistema de archivos dentro de ese; funciona en el sistema de archivos existente sin modificaciones.
Sin embargo, esto implica algunas desventajas; debido a que los archivos cifrados no se almacenan en su propio archivo, alguien que tuviere acceso al sistema (a pesar del cifrado) podría ver la estructura de los directorios subyacentes, la cantidad de archivos, sus tamaños y cuándo se modificaron. Sin embargo, no podrían ver los contenidos.
Este método de asegurar los datos en particular, obviamente no es perfecto, pero hay situaciones en las que es útil.
Para obtener más detalles sobre EncFS en comparación con otras soluciones de cifrado de disco, consulte Data-at-rest encryption (Español)#Cuadro comparativo.
Comparación con eCryptFS
ECryptfs se implementa en el espacio del kernel y, por lo tanto, es un poco más difícil de configurar. Con este método se deben recordar varias opciones de cifrado (algoritmo de cifrado usado, tipo de clave, etc.). No es el caso con EncFS, porque este almacena la información de metadatos de cifrado en un archivo de configuración por directorio (.encfs6.xml
). Por lo tanto, no tiene que recordar nada (excepto la frase de contraseña).
El rendimiento de ambos depende del tipo de actividad del disco. Si bien eCryptFS puede funcionar más rápido en algunos casos porque hay menos sobrecarga por el contexto en el que opera (entre el kernel y el espacio de usuario). EncFS tiene ventajas en otros aspectos, porque los metadatos de cifrado están centralizados y no almacenados en los encabezados de los archivos individuales. Para obtener más información, el proyecto EncFS proporciona ejemplos de referencia.
Instalación
Utilización
Para crear un repositorio seguro, escriba la orden siguiente:
$ encfs ~/.cifrado ~/original
Tenga en cuenta que se deben utilizar rutas absolutas. Esta orden vendrá seguida por un mensaje preguntándole sobre si desea optar por las opciones predeterminadas o por una configuración experta. La configuración predeterminada es bastante segura. La experta permite especificar algoritmos y otras opciones. Después de ingresar una clave para el cifrado, se creará y montará el sistema de archivos codificado. Los archivos codificados se almacenarán, en este ejemplo, en ~/.cifrado
, y sus versiones no cifradas en ~/original
.
Para desmontar el sistema de archivos, escriba:
$ fusermount -u ~/nombre
Para volver a montar el sistema de archivos, emita la primera orden e ingrese la clave utilizada para codificarlo. Una vez ingresada la clave, el sistema de archivos se volverá a montar.
Cambiar la contraseña
Para cambiar la contraseña de un directorio cifrado por EncFS se puede usar la siguiente orden:
$ encfsctl passwd ~/.nombre
En este ejemplo, ~/.nombre
es la ruta al directorio que contiene los archivos codificados. El programa le pedirá su contraseña actual y luego podrá establecer una nueva.
Herramientas para facilitar el montaje
Gnome Encfs Manager
Gnome Encfs Manager es un administrador y montador de encfs fácil de usar, con una configuración predefinida, con soporte para Gnome Keyring, con un menú de bandeja inspirado en Cryptkeeper pero usando la API AppIndicator y otras características propias.
Tiene disponible tanto el paquete gnome-encfs-manager-binAUR como el más actualizado gnome-encfs-manager-bzrAUR.
Montar utilizando gnome-encfs
gnome-encfs integra las carpetas EncFS en el escritorio de GNOME, almacenando sus contraseñas en el depósito de claves y, opcionalmente, montándo dichas carpetas al iniciar sesión utilizando el mecanismo de inicio automático de GNOME. Este método tiene la ventaja de que se puede montar y automatizar, y la contraseña no tiene que ser la misma que su contraseña de usuario.
Montar utilizando el icono CryptKeeper
Aplicación bastante simple, basta instalar cryptkeeperAUR y añadirla a su sesión X.
Montar utilizando encfsui
El script de bash encfsui proporciona una interfaz gráfica de usuario simple diseñada con zenity, creada en torno de la utilidad de línea de órdenes de EncFS, para montar y desmontar un directorio cifrado. Incluye un lanzador de escritorio. Instálelo con encfsuiAUR.
Montar con fstab
Añadir una entrada en /etc/fstab
le permitirá montar el volumen encfs con un simple mount /ruta/destino
y luego se le pedirá su contraseña.
/etc/fstab
encfs#/ruta/a/datos/encfs /mnt/decrypted fuse noauto,user 0 0
La opción noauto
evita el intento de montar el volumen en el arranque, lo que podría retrasar el proceso de arranque mientras el sistema espera que se ingrese una contraseña. Se puede omitir user
si se quiere que solo el usuario root
pueda montar el volumen.
Montar al iniciar sesión utilizando pam_encfs
Instale pam_encfsAUR. Véase también:
Contraseña única
/etc/shadow
al que un atacante podría acceder con el fin de obtener su contraseña de encfs (porque es la misma que su contraseña de inicio de sesión normal de Unix)./etc/pam.d/
Tenga en cuenta que cuando utilice el parámetro try_first_pass en pam_unix.so, deberá configurar EncFS para que use la misma contraseña que está utilizando para iniciar sesión (o viceversa) y bastará ingresar una única contraseña. Sin este parámetro, deberá ingresar dos contraseñas.
configurar pam_encfs para todos los métodos de inicio de sesión
Coloque la línea encfs en /etc/pam.d/system-login como sigue:
... auth sufficient pam_encfs.so ...
inicio de sesión
En esta sección se explica cómo hacer que encfs se monte automáticamente cuando inicie sesión con un terminal virtual.
Edite el archivo /etc/pam.d/login
:
#%PAM-1.0 auth required pam_securetty.so auth requisite pam_nologin.so auth sufficient pam_encfs.so auth required pam_unix.so nullok try_first_pass #auth required pam_unix.so nullok auth required pam_tally.so onerr=succeed file=/var/log/faillog # use this to lockout accounts for 10 minutes after 3 failed attempts #auth required pam_tally.so deny=2 unlock_time=600 onerr=succeed file=/var/log/faillog account required pam_access.so account required pam_time.so account required pam_unix.so #password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 #password required pam_unix.so md5 shadow use_authtok session required pam_unix.so session required pam_env.so session required pam_motd.so session required pam_limits.so session optional pam_mail.so dir=/var/spool/mail standard session optional pam_lastlog.so session optional pam_loginuid.so -session optional pam_ck_connector.so nox11 #Automatic unmount (optional): #session required pam_encfs.so
gdm
Esta sección explica cómo hacer que encfs se monte automáticamente al iniciar sesión con GDM (GNOME Display Manager).
Edite el archivo /etc/pam.d/gdm-password
.
Inserte (no sobrescriba) lo siguiente en la parte inferior de gdm-password:
#%PAM-1.0 auth requisite pam_nologin.so auth required pam_env.so auth sufficient pam_encfs.so auth required pam_unix.so try_first_pass auth optional pam_gnome_keyring.so account required pam_unix.so session required pam_limits.so session required pam_unix.so session optional pam_gnome_keyring.so auto_start password required pam_unix.so session required pam_encfs.so
Guarde y salga.
Configuración
Edite /etc/security/pam_encfs.conf
:
Recomendado: comente la línea:
encfs_default --idle=1
Este indicador desmontará su carpeta cifrada después de 1 minuto de inactividad. No obstante, si la carpeta se ha montando automáticamente al iniciar sesión, probablemente deseará mantenerla montada durante el tiempo que esté conectado.
En la parte inferior, comente las entradas de demostración existentes y añada:
#USERNAME SOURCE TARGET PATH ENCFS Options FUSE Options foo /home/foo/EncryptedFolder /home/foo/DecryptedFolder -v allow_other
pam_encfs
. Si se especifican varias entradas en /etc/security/pam_encfs.conf
, solo se montará la primera y el resto se ignorarán. Para montar múltiples carpetas EncFS al iniciar sesión es necesario usar pam_mount. Vea #Montar al iniciar sesión utilizando pam_mount para más detalles.Además, si ve la línea de abajo, elimine allow_root
de las opciones. De lo contrario, entrará en conflicto con allow_other
definido anteriormente.
fuse_default allow_root,nonempty
A continuación, edite /etc/fuse.conf
y descomente:
user_allow_other
Para probar su configuración, abra una nueva terminal virtual (por ejemplo con Ctrl+Alt+F4
) e inicie sesión. Debería comprobar que pam monta con éxito su carpeta EncFS.
Montar al iniciar sesión utilizando pam_mount
Instale y configure pam_mount como se explica en su página wiki. Los montajes de EncFS se pueden especificar en el archivo de configuración de pam_mount de la siguiente manera:
/etc/security/pam_mount.conf.xml
<volume fstype="fuse" path="encfs#/ruta/a/datos/cifrados/con/encfs" mountpoint="/ruta/a/puntodemontaje/de/datos/descifrados" options="nonempty" />
Los montajes de EncFS deben tener la misma contraseña que su cuenta de usuario. La opción nonempty
hace posible montar el sistema de archivos cifrados incluso cuando el punto de montaje no está vacío. Puede eliminar esta opción si este no es el comportamiento deseado.
Es posible montar múltiples carpetas EncFS al iniciar sesión especificando múltiples entradas <volume>
consecutivas en el archivo de configuración.
Montar cuando se inserta una unidad USB con carpetas EncFS utilizando fsniper
Este es un método simple para montar automáticamente encfs (solicitando contraseña) cuando se inserta una unidad USB con una o más carpetas cifradas con EncFS en su raíz. Usaremos fsniperAUR (sistema de archivos que explora utilizando el demonio inotify) y git (para pedir contraseñas binarias).
Para conocer más, consulte https://github.com/Harvie/Programs/tree/master/bash/encfs/automount (última versión de los archivos utilizados en #Cómo hacerlo).
Cómo hacerlo
1. Necesitará un montaje automático de USB que funcione para esto, como lo hace Thunar o Gnome Files.
2. Cree una carpeta cifrada en su unidad extraible, por ejemplo: encfs /media/USB/somename /media/USB/somename.plain
(y luego desmonte todo).
3. Cree un archivo en su unidad local ~/.config/fsniper/config
:
watch { /etc/ { mtab { # %% is replaced with the filename of the new file handler = encfs-automount.sh %%; } } }
4. Instale el script de ayuda:
#!/bin/sh # ~/.config/fsniper/scripts/encfs-automount.sh # Quick & dirty script for automounting EncFS USB drives # TODO: # - Unmounting!!! # ASKPASS="/usr/lib/git-core/git-gui--askpass" lock=/tmp/fsniper_encfs.lock lpid=$(cat "$lock" 2>/dev/null) && ps "$lpid" | grep "$lpid" >/dev/null && { echo "Another instance of fsniper_encfs is running" exit; } echo $BASHPID > "$lock"; sleep 2; echo echo ==== EncFS automount script for fsniper ==== list_mounts() { cat /proc/mounts | cut -d ' ' -f 2 } list_mounts | while read mount; do config="$mount"'/*/.encfs*'; echo Looking for "$config" config="$(echo $config)" [ -r "$config" ] && { cyphertext="$(dirname "$config")"; plaintext="$cyphertext".plain echo Found config: "$config"; echo Trying to mount: "$cyphertext to $plaintext"; list_mounts | grep "$plaintext" >/dev/null && { echo Already mounted: "$plaintext" } || { echo Will mount "$cyphertext to $plaintext" "$ASKPASS" "EncFS $cyphertext to $plaintext" | encfs --stdinpass "$cyphertext" "$plaintext" } } done echo rm "$lock" 2>/dev/null
5. Asegúrese de que /usr/lib/git-core/git-gui--askpass funciona (es por eso que necesita el paquete git, aunque también podría reajustar el script de ayuda).
6. Pruebe fsniper --log-to-stdout
en la terminal (la petición de contraseña debe aparecer cuando se inserte la unidad USB).
7. Agregue fsniper --daemon
a su sesión.
8. No olvide desmontar encfs antes de quitar la unidad extraible.
Montar utilizando KDE KWallet
Esto se puede hacer en KDE con el script kdeencfs. También deberá instalar los paquetes kdialog, kdebase-runtimeAUR[enlace roto: package not found], qt5-tools y kwallet-pam desde los repositorios oficiales. kwallet-pam tiene que comenzar con la sesión por defecto (si no es así, agregue /usr/lib/pam_kwallet_init al inicio de sesión). El script se puede usar llamandolo con kdeencfs carpeta-cifrada carpeta-descifrada.
Copia de seguridad cifrada
Copia de seguridad del directorio cifrado
Se puede hacer una copia de seguridad de un directorio cifrado y restaurarlo en otra ubicación. Esto es posible porque el archivo de configuración con las opciones de cifrado/metadatos se almacena en el propio directorio en texto sin formato en el archivo oculto .encfs6.xml
. Esto no compromete la seguridad, porque la contraseña no está en él.
Sin embargo, si, por ejemplo, almacena la copia de seguridad en una ubicación remota (por ejemplo, en la nube) o en un dispositivo portátil, puede sentirse incómodo al respecto. En este caso, tampoco es un problema mover manualmente el archivo oculto fuera del directorio antes de crear la copia de seguridad. Incluso puede moverlo permanentemente y aún montar y acceder a los archivos cifrados, si pasa su ubicación a encfs a través de la variable de entorno ENCFS6_CONFIG
. Para el ejemplo anterior dado en #Utilización:
$ mv ~/.nombre/.encfs6.xml ~/. $ ENCFS6_CONFIG=~/.encfs6.xml encfs ~/.nombre ~/nombre
Copia de seguridad del directorio de texto sin formato
El siguiente ejemplo supone que desea crear una copia de seguridad cifrada del directorio de texto sin formato existente ~/mythesis
que contiene el archivo thesis.txt
.
Primero, creamos la copia de seguridad cifrada del directorio de texto sin formato existente:
$ encfs --reverse ~/mythesis /tmp/thesisbackup
Tenga en cuenta que en este caso el orden del directorio se invierte respecto al uso normal. El uso de la opción --reverse
tiene dos efectos: en primer lugar, el archivo de configuración ahora se almacena en el directorio de texto sin formato y /tmp/thesisbackup
solo lo contiene en forma cifrada. En segundo lugar, los archivos en /tmp/thesisbackup
no son persistentes. Se eliminarán una vez que se desmonte (no, esto no se debe al uso del punto de montaje en /tmp
).
En segundo lugar, ahora es el momento de copiar los archivos cifrados en la ubicación deseada antes de desmontar nuevamente el directorio temporal encfs:
$ cp -R /tmp/thesisbackup/* /mnt/usbstick/ $ fusermount -u /tmp/thesisbackup
y hecho.
Para restaurar (o ver) la copia de seguridad, necesitamos acceso a las opciones de cifrado en texto sin formato, que debe pasarse a encfs con la variable de entorno ENCFS6_CONFIG
(utilizamos un directorio diferente para no estropear el archivo ~/mythesis
existente):
$ ENCFS6_CONFIG=~/mythesis/.encfs6.xml encfs ~/mnt/usbstick/thesisbackup ~/restoremythesis
Si ahora lista el contenido restaurado, contendrá dos archivos:
$ ls -la ~/restoremythesis ... -rw-r--r-- 1 student student 1078 3. Jan 12:33 .encfs6.xml -rw-r--r-- 1 student student 42 3. Jan 12:33 thesis.txt ...
Véase también
- EncFS - página de inicio del proyecto.
- Auditoría de seguridad de EncFS por Taylor Hornby (14 de enero de 2014).