El entorno empresarial se está transformando. Las empresas se han embarcado en un viaje de transformación digital adoptando tecnologías emergentes que les permiten moverse con rapidez y cambiar su forma de colaborar, reduciendo costes y aumentando la productividad. Sin embargo, estas tecnologías han hecho desaparecer el perímetro tradicional y la identidad se ha convertido en la nueva línea de defensa.
Los retos modernos requieren planteamientos de seguridad modernos. El uso de contraseñas para autenticar el acceso privilegiado a activos de misión crítica ya no es aceptable. Las contraseñas son tristemente célebres por ser inseguras, crear fatiga y una falsa sensación de seguridad. Las empresas necesitan adoptar soluciones sin contraseñas: aquí es donde resulta útil la autenticación basada en claves SSH.
¿Qué es el protocolo SSH?
Creado en 1995 por Tatu Ylönen, el protocolo SSH, conocido también como Secure Shell o Secure Socket Shell, es un protocolo de red que ofrece a los administradores de sistemas una forma segura de acceder a activos remotos a través de una red no segura.
SSH proporciona autenticación mediante contraseña o clave pública y cifra las conexiones entre dos extremos de la red. Es una alternativa segura a los protocolos de inicio de sesión heredados (como telnet o rlogin) y a los métodos inseguros de transferencia de archivos (como FTP).
Además de proporcionar un cifrado potente, SSH es muy utilizado por los administradores de red para gestionar sistemas y aplicaciones a distancia, enviar parches a software o ejecutar comandos y mover archivos.
Cómo funciona el protocolo SSH
Autenticación del servidor (host)
El protocolo SSH está integrado en los servidores Unix y Linux para permitir conexiones seguras entre sistemas. La conexión la establece un cliente SSH que pretende conectarse a un servidor SSH. El cliente SSH inicia
el proceso de establecimiento de la conexión y utiliza criptografía de clave pública para verificar la identidad del servidor SSH. Después de la fase de configuración, el protocolo SSH utiliza un cifrado simétrico fuerte y algoritmos hash para garantizar la privacidad y la integridad de los datos que se intercambian entre el cliente y el servidor.
La imagen siguiente, adaptada de NIST IR 7966, presenta un flujo simplificado de una conexión SSH:
1. El cliente inicia la conexión con el servidor SSH.
2. El servidor envía su clave pública al cliente.
3. La clave pública del servidor se guarda en el archivo de hosts conocidos del cliente.
4. El cliente y el servidor negocian los parámetros de conexión y establecen la conexión.
Cifrado e integridad
Durante el establecimiento de la conexión, el cliente y el servidor negocian y acuerdan el algoritmo de cifrado simétrico que se utilizará para su comunicación y generan la clave de cifrado que se utilizará.
El protocolo SSH utiliza algoritmos de cifrado estándar, como AES, para proteger la comunicación entre las partes implicadas. Además, el protocolo utiliza algoritmos hash, como SHA-2, para garantizar la integridad de los datos transmitidos.
Autenticación de clientes (usuarios)
El protocolo SSH permite la autenticación de clientes mediante contraseñas tradicionales o autenticación de clave pública. Sin embargo, dados los riesgos y la ineficacia del uso de contraseñas, la autenticación de clave pública está más extendida. Las claves SSH no sólo son mucho más fuertes que las contraseñas, sino que también permiten a los administradores del sistema evitar la necesidad de un inicio de sesión manual basado en contraseñas.
¿Cómo se autentica un usuario con claves SSH? Generan un par de claves pública-privada con un cliente SSH (por ejemplo, OpenSSH) utilizando el ssh-keygen command. Una vez creada, el usuario coloca su clave autorizada (clave pública) en el archivo authorized_keys del servidor al que necesita conectarse.
Cuando el usuario inicia sesión de forma remota utilizando la autenticación basada en claves, el servidor OpenSSH busca claves autorizadas y el usuario se autentica en el servidor con su clave privada correspondiente.
Dado que no requiere autenticación manual, la autenticación basada en claves se utiliza a menudo para proteger casos de uso de automatización de procesos informáticos, como transferencias de archivos automatizadas seguras, procesos de copia de seguridad o herramientas de gestión de la configuración (es decir, Ansible, Terraform, Chef o Puppet).
Casos de uso comunes para el protocolo SSH
Las conexiones SSH se han utilizado principalmente para asegurar diferentes tipos de comunicaciones entre una máquina local y un host remoto, incluyendo:
- Acceso remoto seguro a los recursos
- Ejecución remota de comandos
- Envío de parches y actualizaciones a software
- Transferencias de archivos interactivas y automatizadas
Además de crear un canal seguro entre ordenadores locales y remotos, el protocolo SSH se utiliza para gestionar infraestructuras corporativas críticas como routers, servidores hardware, plataformas de virtualización y sistemas operativos.
Las claves SSH se utilizan para automatizar el acceso a los servidores y suelen emplearse en scripts, sistemas de copia de seguridad y herramientas de gestión de la configuración. Gracias a su diseño, que permite la conectividad a través de los límites de la organización, las claves SSH proporcionan capacidades de inicio de sesión único (SSO) que permiten a los usuarios moverse entre sus cuentas sin tener que escribir una contraseña cada vez.
SSH en un entorno sin perímetro
Los avances tecnológicos y las situaciones de emergencia, como la crisis de salud pública COVID-19, han renovado el interés por la SSH y su adopción.
Las empresas no sólo se están trasladando a la nube, sino que utilizan una plétora de plataformas PaaS, IaaS y SaaS basadas en la nube. Al mismo tiempo, siguen teniendo muchas aplicaciones heredadas orientadas al negocio alojadas en las instalaciones. En este entorno híbrido y multicloud, el mayor reto es cómo mantener un sistema de gestión de identidades y accesos (IAM) sólido y eficaz.
Los mecanismos tradicionales de autenticación basados en contraseñas ya no funcionan y, allí donde están presentes, son fuente de niebla y fricción, lo que provoca numerosas violaciones de datos o incidentes por abuso de credenciales.
Por otro lado, DevOps aprovecha herramientas y procesos nativos y bien conocidos de forma ágil e iterativa en equipos autosuficientes y capaces de lanzar código con rapidez y frecuencia, incluso diaria. A pesar de
las ventajas obvias de un ciclo de liberación altamente automatizado y de alta frecuencia, hay retos que afrontar, especialmente con la seguridad de los software que se liberan. Las empresas deben garantizar la entrega de aplicaciones y actualizaciones que no hayan sido manipuladas o alteradas por agentes maliciosos para que sirvan de caballos de Troya cuando se instalen en los dispositivos de los usuarios finales.
Por último, la crisis del COVID-19 ha obligado a millones de empleados a trabajar desde casa, utilizando sus propios dispositivos y accediendo a los activos corporativos a través de sus Wi-Fis domésticas. Los equipos de seguridad informática se enfrentan a numerosos retos nuevos: ¿cómo imponer un esquema de autenticación fuerte para garantizar que solo las personas y dispositivos autorizados accedan a los activos sensibles de la misión?
Para todos estos retos modernos, el protocolo SSH es la solución moderna. En DevOps, SSH es el bloque de construcción seguro fundamental que permite el proceso de creación y lanzamiento rápido, frecuente y altamente automatizado favorecido por DevOps. En entornos de trabajo remotos y de múltiples nubes, el protocolo SSH ofrece la solución para una gestión de acceso sin contraseña, capaz de una experiencia sin fricciones de inicio de sesión único (SSO). SSH también puede utilizarse para emitir certificados efímeros "justo a tiempo", que caducan cuando finaliza la autorización.
Utilizando SSH junto con plataformas de automatización IAM, las organizaciones pueden reforzar sus esquemas de autenticación no sólo para los usuarios privilegiados (PAM), sino para cada empleado y/o dispositivo que solicite acceso a los activos corporativos.
Los riesgos del abuso de claves SSH
Los casos de uso anteriores ponen de manifiesto la importancia de las claves SSH y de su gestión segura y eficaz. El problema es que la mayoría de las organizaciones no son conscientes del gran número de claves SSH que poseen y, por lo tanto, estas claves se dejan sin rastrear y sin gestionar. Las claves no gestionadas exponen a las organizaciones a riesgos significativos que, en el peor de los casos, podrían provocar la caída de sistemas de información críticos durante meses.
Las claves SSH proporcionan el mismo acceso que los nombres de usuario y las contraseñas. Además, a menudo conceden acceso root a cuentas privilegiadas en el nivel del sistema operativo, dando una línea command . También conceden acceso a recursos: servidores de producción, bases de datos, enrutadores, cortafuegos, sistemas de recuperación de desastres, datos financieros, sistemas de pago, propiedad intelectual e información sobre pacientes.
Si un atacante consigue acceso root, puede hacer cualquier cosa en el servidor, como inyectar datos fraudulentos, subvertir el cifrado software, instalar malware persistente o destruir directamente el sistema. La confidencialidad, la integridad y la continuidad de las operaciones se ven comprometidas. Incluso si la clave da acceso no root, las vulnerabilidades locales de escalada de privilegios a menudo pueden dar lugar a que el atacante obtenga acceso root.
He aquí algunos ejemplos:
- Originalmente un troyano bancario que apareció por primera vez en 2016, TrickBot ha evolucionado hasta convertirse en una solución de crimeware universal que ahora se dirige principalmente a entornos empresariales. En 2019, TrickBot añadió capacidades de captura de claves SSH tanto para PuTTY (cliente SSH para Microsoft) como para OpenSSH.
- Campaña de minería criptográfica CryptoSink dirigida a sistemas Elasticsearch, con puertas traseras en los servidores objetivo añadiendo las claves SSH del atacante.
- El malware Kaji se dirige a dispositivos IoT que han dejado su puerto SSH expuesto en Internet. Según los investigadores que descubrieron este malware, una vez que obtiene acceso a la cuenta raíz de un dispositivo, Kaiji lo utilizará de tres formas. En primer lugar, para realizar ataques DDoS. Segundo, para llevar a cabo más ataques de fuerza bruta SSH contra otros dispositivos. En tercer lugar, para robar cualquier clave SSH local y propagarse a otros dispositivos que la cuenta raíz haya gestionado en el pasado.
- En 2016, el grupo de cibercriminales BlackEnergy, que atacó a empresas eléctricas y medios de comunicación ucranianos, utilizó un servidor SSH oculto llamado Dropbear. Según los investigadores de ESET, los atacantes desplegaron una variante de este software en máquinas comprometidas que habían sido preconfiguradas para aceptar una contraseña y una clave codificadas para la autenticación SSH. Al ejecutar SSH en el servidor de una red comprometida, los atacantes pueden volver a la red cuando lo deseen.
Conclusión
Para aprovechar las ventajas del protocolo SSH y defenderse contra el abuso de claves SSH, debe garantizar una visibilidad e inteligencia completas sobre todas las claves SSH autorizadas utilizadas por la empresa en las instalaciones y en la nube.
Sin embargo, dado que los atacantes también pueden insertar sus propias claves SSH en los entornos objetivo, es importante centrarse no sólo en las claves conocidas, sino en descubrir y analizar todas las claves que se están utilizando en toda la organización.
Para obtener más información sobre los retos de la proliferación de claves SSH y cómo puede empezar a recuperar el control, únase a nuestro próximo seminario web, Caza fantasma: cómo encontrar y proteger claves SSH en su red.