Como usar contraseñas cifradas en Scripts

En esta ocasión veremos como poder cifrar nuestras contraseñas en scripts bajo GNU/Linux mediante OpenSSL. 

Sin más preámbulos comenzamos.

Instalación OpenSSL

apt get openssl sshpass

En primer lugar, vamos a ver cómo cifrar la contraseña ( ‘eBq82d3d3.#232413123ybW0d.-dL8veq8M9’ ) y volcar esta en un archivo de texto.

echo 'eBq82d3d3.#232413123ybW0d.-dL8veq8M9' | openssl enc -aes-256-cbc -md sha512 -a -pbkdf2 -iter 100000 -salt -pass pass:'Fft@8#9xbepF!VFH.-P4JOidx' > .clave.creb

Explicación del comando

  • echo ‘eBq82d3d3.#232413123ybW0d.-dL8veq8M9’: Envio la contraseña
  • enc -aes-256-cbc : el tipo de codificación
  • -md sha512 : Resumen del mensaje (hash)
  • -a : Aplica codificación base-64 después de la fase de cifrado y antes de la fase de descifrado.
  • -pbkdf2 : utiliza el algoritmo algoritmo PBKDF2 (Función de derivación de clave basada en contraseña 2).
  • -iter 100000 : establece el número de cálculos que utilizará PBKDF2.
  • -salt : Empleamos salt para que la salida del hash siempre sea diferente.
  • -pass pass:’Fft@8#9xbepF!VFH.-P4JOidx» : La contraseña que necesitaremos para descifrar la contraseña encriptada (2413123ybW0d.-dL8veq8M9′).
  • > .clave.creb: Guardamos la salida en un archivo de texto.

Si leemos ahora el archivo de texto .clave.creb nos muestra un hash en base-64

U2FsdGVkX18c4alBzI/HqsC/H0Rc8UvY8pIOF2urnyIW3C/JEM0WxD1JsyJzIPhMoi+gNpkBHSx2Y42puQEzwQ==

Para poder descifrar la contraseña lanzamos el siguiente comando

cat clave.cred | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass:'Fft@8#9xbepF!VFH.-P4JOidx'
eBq82d3d3.#232413123ybW0d.-dL8veq8M9

Ejemplo de uso

Configuramos el archivo /root/jobs/clave.creb

user00001
U2FsdGVkX18c4alBzI/HqsC/H0Rc8UvY8pIOF2urnyIW3C/JEM0WxD1JsyJzIPhMoi+gNpkBHSx2Y42puQEzwQ==

Configuramos los permisos de lectura

chown root:root  /root/jobs/.clave.creb
chmod 400 /root/jobs/.clave.creb

Creamos nuestro script /root/jobs/uploadfiles.sh

#!/bin/bash
USER=`head -n 1 /root/jobs/.clave.creb`
PASSWORD=`tail -1 /root/jobs/.clave.creb | openssl enc -aes-256-cbc -md sha512 -a -d -pbkdf2 -iter 100000 -salt -pass pass:'Fft@8#9xbepF!VFH.-P4JOidx'`
IP=192.168.1.100
SRCDIR=/root/jobs/files/*.csv

sshpass -p $PASSWORD sftp $USER@$IP:$SRCDIR

Configuramos los permisos del scrript

chown root:root  /root/jobs/uploadfiles.sh
chmod 500 /root/jobs/uploadfiles.sh

:wq!

Una respuesta a “Como usar contraseñas cifradas en Scripts”

  1. Discupa la posible pregunta absura rokitoh pero… ¿qué ventajas tendría guardarla cifrada?

    Entiendo la utilidad de guardarla en .clave.creb: no hardcodear contraseñas y dar permisos; pero no veo ninguna mejora en guardarla cifrada en el archivo y hardcodear una clave de descifrado en el script. De hecho le veo inconvenientes.

    Muchas gracias, un saludo

Deja una respuesta

Tu dirección de correo electrónico no será publicada.