Secure Shell (SSH) es un protocolo de red criptográfico para iniciar sesión de forma remota y segura, ejecutar comandos y transferir archivos a través de una red no fiable.
Cómo funciona SSH
El investigador finlandés Tatu Ylönen creó SSH en 1995 tras un ataque de captura de contraseñas en la red de su universidad. Sustituyó a protocolos inseguros como Telnet y rlogin, que enviaban las contraseñas en texto claro. La versión actual, SSH-2, se define en los RFC 4251–4254, y OpenSSH, desarrollado por el proyecto OpenBSD desde 1999, es la implementación más extendida. Los servidores SSH suelen escuchar en el puerto TCP 22.
- El cliente verifica la clave de host del servidor y ambas partes acuerdan las claves de sesión mediante intercambio de claves.
- El usuario se autentica con contraseña, con un par de claves basado en criptografía de clave pública (por ejemplo Ed25519) o con certificados SSH.
- El canal cifrado transporta sesiones de shell, transferencias de archivos (SFTP, SCP) y túneles de reenvío de puertos.
Por qué importa SSH para la seguridad
SSH es la forma estándar de administrar servidores Linux, equipos de red e instancias en la nube, lo que lo convierte en un objetivo prioritario:
- Fuerza bruta: las botnets prueban sin cesar contraseñas comunes contra servidores SSH expuestos (véase fuerza bruta).
- Claves robadas: las claves privadas sin protección y los archivos authorized_keys demasiado permisivos facilitan el movimiento lateral entre servidores.
- Vulnerabilidades y puertas traseras: la puerta trasera de xz Utils (CVE-2024-3094), de 2024, apuntaba a servidores OpenSSH de algunas distribuciones Linux mediante una biblioteca comprometida, y regreSSHion (CVE-2024-6387) permitía ejecución remota de código en OpenSSH sobre Linux con glibc.
Buenas prácticas
- Usar autenticación por claves con frase de paso y desactivar el acceso por contraseña y como root.
- No exponer SSH directamente a internet; usar una VPN o un bastión y listas de permitidos.
- Limitar los intentos de inicio de sesión con herramientas como fail2ban y añadir MFA en los hosts críticos.
- Mantener OpenSSH actualizado y revisar periódicamente las claves autorizadas.