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. Los campos obligatorios están marcados con *