
Vault y SSH OTP: El mejor guardián contra hackers
En la era digital actual, donde las amenazas cibernéticas acechan en cada esquina, proteger tus sistemas y datos sensibles es más crucial que nunca. ¿Estás buscando una solución robusta y confiable para blindar tus accesos SSH? Vault y SSH OTP es lo que buscas.
Descubre cómo la combinación de HashiCorp Vault y la autenticación de un solo uso (OTP) puede convertirse en tu mejor aliado contra los hackers. Este artículo te guiará a través de los beneficios y la implementación de esta poderosa herramienta de seguridad, garantizando que tus credenciales permanezcan inexpugnables. ¡Prepárate para fortalecer tu postura de seguridad y dormir con la tranquilidad de saber que tus activos están a salvo!
1. Introducción
Hashicorp Vault es una plataforma de seguridad conocida usualmente como bóveda digital. Es una excelente herramienta para la gestión de secretos en organizaciones, no solo los de naturaleza estática, sino también tiene capacidad de generar secretos de forma dinámica a demanda.
Si eres nuevo en el tema, te recomiendo primero leer Qué es Hashicorp Vault y también Instalación de Hashicorp Vault para que te vayas familiarizando con esta tecnología.
En esta oportunidad, voy a mostrar cómo Vault y SSH OTP -un motor de secretos dinámicos- permiten proteger los servidores SSH gracias a las contraseñas de uso único (OTP – One-time Password).
2. Problemática
La administración de servidores Linux se realiza casi siempre a través de SSH, protocolo de conexión remota. Si bien el protocolo en sí es seguro, pues los datos están cifrados, aún presenta algunos riesgos:
- Múltiples usuarios que requieren acceder al servidor
- Acceso requerido desde múltiples redes, a veces desde Internet
- Falta de control sobre la compartición de credenciales SSH
- Conexiones y/o clientes SSH que podrían estar siendo interceptados
Mientras más criterios de riesgo se presenten, existe una mayor posibilidad de que las credenciales de usuarios SSH puedan ser capturadas o secuestradas por terceros no autorizados.
De este modo, un potencial atacante podría acceder a un servidor SSH con credenciales que previamente ha obtenido aprovechando alguna vulnerabilidad o los riesgos mencionados anteriormente.
Esto puede traer graves consecuencias como la exposición de datos de servidores, captura de información privada en la red, acceso a archivos sensibles, infección de sistemas o la red con malware, eliminación de datos, afección de los servicios, y un largo etcétera de posibilidades.
3. Solución con Vault y SSH OTP
Hashicorp Vault tiene un motor de secretos dinámicos conocido como SSH OTP. Este permite configurar una integración entre Vault y servidores SSH para que la autenticación de usuarios se haga a través de contraseñas aleatorias que son válidas por única vez, siempre generadas a demanda de forma automática.

Este flujo describe la forma en la que trabajan el servidor Vault, el servidor y cliente SSH, respecto a las contraseñas de uso único OTP. Estos pasos ocurren de forma dinámica y automática.
Previamente, se ha realizado una configuración de integración entre el servidor SSH, en el cual se instala una herramienta de tipo Helper SSH que interactúa con un motor de secretos SSH OTP en el servidor Vault. Estos son los pasos que explicaré en este artículo.
De esta manera, el servidor SSH ya no aceptará los passwords configurados a los usuarios del sistema operativo. Incluso si una persona intenta autenticarse con su usuario y password válido (asignado con el comando passwd), este no funcionará. Solo se validará que el password ingresado sea igual a uno de tipo OTP generado y validado por el servidor Vault.
4. Implementación
4.1. Configuraciones en el servidor SSH
Antes de configurar Vault y SSH OTP, es necesario hacer configuraciones de preparación en cada uno de los servidores cuyas conexiones SSH serán gestionadas por Vault.
4.1.1. Instalar vault-ssh-helper
Lo primero que se requiere es instalar vault-ssh-helper. Este es un utilitario que permite que una máquina utilice contraseñas de un solo uso (OTP) creadas por los servidores de Vault, utilizándolas como credenciales de autenticación del cliente al conectarse por SSH.
Descargar la versión más reciente desde https://releases.hashicorp.com/vault-ssh-helper y extraer el contenido del zip:
wget https://releases.hashicorp.com/vault-ssh-helper/0.2.1/vault-ssh-helper_0.2.1_linux_amd64.zip unzip vault-ssh-helper_0.2.1_linux_amd64.zip
Instalar el binario en una ruta apropiada, como /usr/local/bin
:
sudo install vault-ssh-helper /usr/local/bin
4.1.2. Configurar vault-ssh-helper
Crear un directorio para vault-ssh-helper
en /etc
:
sudo mkdir /etc/vault-ssh-helper.d
Crear un archivo de configuración, config.hcl
, en el directorio creado:
sudo vim /etc/vault-ssh-helper.d/config.hcl
Los contenidos del archivo config.hcl deberían ser como sigue:
vault_addr = "https://vault.miempresa.com:8200" ssh_mount_point = "ssh" allowed_roles = "*" ca_cert = "/etc/vault-ssh-helper.d/vault.crt" tls_skip_verify = false
Importante:
- En
/etc/vault-ssh-helper.d/vault.crt
está el certificado TLS de la CA que firmó el certificado devault.miempresa.com
. - Sin esta configuración, vault-ssh-helper no podrá confiar en el servidor Vault y fallará en su funcionamiento.
4.1.3. Configuración PAM
Explicación basada en Ubuntu Server. Se debe realizar una configuración similar para otras distribuciones de Linux.
Asegurarse que /etc/pam.d/sshd
esté configurado como sigue:
# Comentar la siguiente línea # @include common-auth # Agregar estas dos líneas auth requisite pam_exec.so quiet expose_authtok log=/tmp/vaultssh.log /usr/local/bin/vault-ssh-helper -config=/etc/vault-ssh-helper.d/config.hcl auth optional pam_unix.so use_first_pass nodelay
4.1.4. Configuración de SSHD
Editar /etc/ssh/sshd_config
y asegurarse que las siguientes directivas estén configuradas con los valores que se indican debajo:
KbdInteractiveAuthentication yes ChallengeResponseAuthentication yes UsePAM yes PasswordAuthentication no # Opcional si queremos deshabilitar la autenticación SSH con claves privadas/públicas. # y asegurarnos de que solo se permita SSH OTP (vault-ssh-helper). # PubkeyAuthentication no
Importante:
- Si
PubkeyAuthentication
no se configura enno
, entonces los usuarios aún podrán conectarse por SSH usando sus llaves privadas, sin utilizar los passwords OTP de Vault.
4.2. Configuración de Vault y SSH OTP
Se debe habilitar el motor de secretos SSH en Vault:
vault secrets enable ssh
Crear un rol que defina qué usuario por defecto (linux-operador
) se usará cuando se pida credenciales SSH. Este rol solo funcionará para clientes que estén dentro de ciertos rangos CIDR.
vault write ssh/roles/rol-ssh-otp\ key_type=otp \ default_user=linux-operador \ cidr_list=192.168.0.0/24,172.0.1.0/24
4.3. Uso del motor SSH OTP como cliente
Una vez configurado Vault y SSH OTP como motor de secretos, se requiere que un cliente pida al servidor Vault una credencial SSH de uso único y la use para conectarse a un servidor gestionado.
4.3.1. Autenticación de cliente
En este caso, se trata de un cliente de Vault. Es decir, un equipo cliente que tiene instalado el binario de Vault y con el cual se autenticará al servidor Vault de esta manera:
export VAULT_ADDR=https://vault.miempresa.com:8200 vault login
Se asume que ya existe un método de autenticación configurado de Vault, tal como userpass
, ldap
o algún otro. Además, el cliente tener tener acceso a una política de Vault que por lo menos brinde un permiso como este:
path "/ssh/creds/rol-ssh-otp" { capabilities = ["post"] }
Esta configuración se asume que ya está lista y no es materia de este post.
4.3.2. Pedir un password OTP a Vault
Pedir un password a Vault para el usuario linux-operador
en el servidor SSH con IP 192.168.0.33
:
vault write ssh/creds/rol-ssh-otp username=linux-operador ip=192.168.0.33
Este comando devolverá un password OTP que debemos copiar y utilizar el próximo paso.
Importante:
- Se entiende que 192.168.0.33 es la IP de un servidor SSH que ya ha sido configurado con
vault-ssh-helper
como se describió líneas arriba.
4.3.3. Conexión con password OTP
Este último paso es lo más simple: conectarse por SSH con el password OTP que Vault nos devolvió.
ssh -l linux-operador 192.168.0.33
¿Te pudiste conectar sin problemas? Ahora haz la prueba conectándote de nuevo con el mismo password y verás que ya no funciona. También, podrías probar conectarte con el password del usuario linux-operador
asignado en el sistema operativo con la herramienta passwd.
5. Conclusión
¿Qué te pareció esta configuración de Vault y SSH OTP? ¿Pensaste cómo sacarle el máximo provecho?
Como lo expliqué en este artículo, este caso de uso de Hashicorp Vault se enfoca en la seguridad que brinda el uso de contraseñas descartables, de uso único. Con esto se reduce enormemente los riesgos por ataques de fuerza bruta a los servidores SSH, algo que es muy común en equipos expuestos a Internet. Y si te tomas en serio la seguridad con un enfoque ZeroTrust, no solo debes cuidarte de potenciales atacantes externos desde Internet, sino desde todo lugar, incluida de tu propia red interna.
Espero que este artículo te haya sido de utilidad y se convierta en una pieza infaltable como medida de aseguramiento de tu infraestructura.
No dudes en dejarme tus comentarios y compartir este post con quienes creas que les puede ser de utilidad.
¡Hasta la próxima!
Deja un comentario