Montaje Automático de Recurso CIFS con Credenciales Cifradas usando GPG

Montaje Automático de Recurso CIFS con Credenciales Cifradas usando GPG

En este artículo te explico cómo montar un recurso compartido de red (CIFS/SMB) de forma automática y segura, sin guardar contraseñas en texto plano, utilizando GPG (GNU Privacy Guard). También te muestro cómo automatizar el proceso sin intervención del usuario, ideal para tareas programadas como cron.

Objetivo

Montar el recurso de red:

//servidor.ejemplo.com/CarpetaCompartida/

En el directorio local:

/mnt/compartido/

Con las credenciales:

  • Usuario: usuario_red
  • Dominio: dominio_local
  • Contraseña: ContraseñaSegura123

Sin dejar la contraseña expuesta y sin intervención humana.

Pasos a seguir

1. Crear archivo de credenciales

Primero, creamos un archivo temporal con las credenciales necesarias para el montaje:

echo -e "username=usuario_red\npassword=ContraseñaSegura123\ndomain=dominio_local" > ~/.smbcred

2. Generar una clave GPG sin frase de seguridad

Para que el proceso sea completamente automático (sin tener que ingresar la frase), se recomienda crear una clave GPG sin passphrase exclusiva para este montaje:

gpg --quick-generate-key "Montaje Automático <auto@ejemplo.com>" default default never

Puedes verificar que se creó con:

gpg --list-keys

3. Cifrar el archivo de credenciales

Ahora ciframos el archivo utilizando la clave recién creada:

gpg -e -r "Montaje Automático <auto@ejemplo.com>" ~/.smbcred

Esto generará un archivo ~/.smbcred.gpg, que es el que usaremos en el script.

Luego, eliminamos de forma segura el archivo original:

shred -u ~/.smbcred

Script de montaje automático

Guarda el siguiente script como montar_recurso.sh en una ubicación segura (por ejemplo, /usr/local/bin/montar_recurso.sh):

#!/bin/bash

# Variables
CRED_GPG="$HOME/.smbcred.gpg"
CRED_TMP="/tmp/.smbcred_mount"
DESTINO="/mnt/compartido"
RECURSO="//servidor.ejemplo.com/CarpetaCompartida/"

# Verifica si existe el archivo cifrado
if [ ! -f "$CRED_GPG" ]; then
    echo "❌ Archivo de credenciales cifrado no encontrado: $CRED_GPG"
    exit 1
fi

# Descifra a archivo temporal (no requiere passphrase si la clave no la tiene)
gpg -q -d "$CRED_GPG" > "$CRED_TMP"
if [ $? -ne 0 ]; then
    echo "❌ Error al descifrar el archivo."
    exit 1
fi

# Monta el recurso compartido
mount -t cifs "$RECURSO" "$DESTINO" -o credentials="$CRED_TMP",vers=3.0

# Elimina el archivo temporal de credenciales
shred -u "$CRED_TMP"

Permisos y ejecución

  1. Haz el script ejecutable:
chmod +x /usr/local/bin/montar_recurso.sh

2. Prueba su funcionamiento:

sudo /usr/local/bin/montar_recurso.sh

Automatizar con cron

Agrega la siguiente línea en el crontab del sistema o del usuario root para ejecutarlo automáticamente:

0 2 * * *   root  /usr/local/bin/montar_recurso.sh

Esto lo ejecutará todos los días a las 2:00 am.

Conclusión

Este método permite montar unidades de red de forma segura, automatizada y sin exponer contraseñas. Al usar GPG con una clave sin passphrase exclusiva para esta tarea, mantenemos un equilibrio adecuado entre seguridad y automatización.

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *