Tutorial: Cifrar $HOME con gocryptfs
En un artículo anterior: Tutorial de fscrypt para cifrar archivos, habíamos visto como cifrar archivos con fscrypt y ext4. Ahora aprenderemos otro método independiente del sistema de archivos utilizado, se trata de una herramienta llamada gocryptfs.
Conocimientos previos necesarios:
- Uso habitual de línea de comandos en Linux (incluyendo entre otros manejo de propietarios y permisos)
- Instalación y desinstalación de paquetes
En el ejemplo en cuestión estoy usando Debian Buster (te recomiendo primero instalarla en una máquina virtual para hacer pruebas), de modo que los pasos a seguir pueden ser un poco diferentes en otras distribuciones, pero los principios generales se mantienen. Todos los pasos hasta que lo pruebes como usuario común deben hacerse con privilegios de superusuario.
Es muy importante contar espacio suficiente para copiar temporalmente los archivos del directorio que se desea cifrar.
He cambiado el shell del usuario sergio que es dash (predeterminado en Debian) por bash, ya que el primero no está pensado para un uso interactivo habitual además de ser menos potente.
Instalar grocryptfs
apt install grocryptfs
Crear el directorio para cifrar
mkdir /home/sergio_cifrado
Inicializar el directorio
Aquí seteamos la misma contraseña que la del usuario
gocryptfs --init /home/sergio_cifrado/ Choose a password for protecting your files. Password: Repeat: Your master key is: 9c43faf4-16a07508-42213628-50a5c55e- e0c17483-c41453a0-6355f9f0-897b3aa9 If the gocryptfs.conf file becomes corrupted or you ever forget your password, there is only one hope for recovery: The master key. Print it to a piece of paper and store it in a drawer. This message is only printed once. The gocryptfs filesystem has been created successfully. You can now mount it using: gocryptfs /home/sergio_cifrado MOUNTPOINT
Montar el directorio
mkdir /home/sergio_montaje_temporario && chmod 750 /home/sergio_montaje_temporario && chown sergio. /home/sergio_temporario && gocryptfs /home/sergio_cifrado/ /home/sergio_temporario/ Password: Decrypting master key Filesystem mounted and ready.
Ajustamos los propietarios y permisos
chown -R sergio. /home/sergio{_cifrado} && chmod 750 /home/sergio_cifrado
Copiar todos los archivos del directorio del usuario al directorio temporal
cp -Tav /home/sergio /home/sergio_temporario
Borrar el contenido del directorio del usuario (por favor realizar previamente un backup)
rm -rf /home/sergio
Desmontar el directorio cifrado
fusermount -u /home/sergio_temporario
Le cambiamos el nombre al directorio temporario por el original
mv /home/sergio_temporario /home/sergio
Todo lo que viene a continuación es necesario cuando queremos que el directorio se monte de manera automática en el momento del login.
Instalamos el módulo de PAM para montaje de volúmenes
apt install -y libpam-mount
Ejecutamos el configurador de pam
pam-auth-update
y presionamos en Aceptar.
En otras distribuciones y configuraciones, puede ser necesario editar otros archivos del directorio /etc/pam.d.
Luego hay que editar el archivo /etc/security/pam_mount.conf.xml
agregando lo siguiente antes de </pam_mount>
:
<volume user="sergio" fstype="fuse" options="nodev,nosuid,quiet,nonempty,allow_other" path="/usr/bin/gocryptfs#/home/%(USER)_cifrado" mountpoint="/home/%(USER)" />
Configuramos FUSE
# /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE) # Set the maximum number of FUSE mounts allowed to non-root users. # The default is 1000. #mount_max = 1000 # Allow non-root users to specify the allow_other or allow_root mount options. # Modificamos aquí: user_allow_other
Eso es todo, felicitaciones si llegaste hasta aquí 😀, podemos reiniciar y probar la configuración:
Para login gráfico:
Conclusión
De esta manera pudiste configurar el cifrado automática de un directorio $HOME de un usuario. Este método es principalmente útil para equipos donde trabaja un solo usuario (podría ser tu laptop de trabajo diario por ejemplo).
Comentarios
Comments powered by Disqus