La protección de SSH implica una amplia gama de técnicas posibles, pero no todas son igualmente prácticas para todos los entornos. Las recomendaciones de este artículo son métodos ampliamente reconocidos y de alto impacto que equilibran la facilidad de implementación con una protección sólida. Se extraen de estándares establecidos por organizaciones como NIST, CERT y el proyecto OpenSSH, y reflejan principios básicos que SSL.com también aplica para proteger los certificados digitales: proteger las claves, usar un cifrado sólido y limitar el acceso privilegiado.
Una vez que hayas configurado estas prácticas recomendadas fundamentales, puedes explorar tácticas más avanzadas (como SSH basado en certificados, port knocking o SSH sobre VPN) según sea necesario.
1. Utilice autenticación basada en claves en lugar de contraseñas
Qué es:
Reemplace las contraseñas de inicio de sesión con un par de claves criptográficas pública y privada. La clave pública se almacena en su servidor, mientras que la clave privada permanece en su máquina local.
Por qué es más seguro:
- Las contraseñas son susceptibles a ataques de fuerza bruta
- Un atacante debe obtener físicamente su clave privada para ingresar, lo que es mucho más difícil que adivinar una contraseña.
Cómo implementar:
Generar un par de claves
En Linux o macOS, abra una terminal y ejecute:
ssh-keygen -t ed25519
Para mayor seguridad (si ed25519 no está disponible en su entorno), puede utilizar:
ssh-keygen -t rsa -b 4096
Copiar la clave pública a su servidor
Puede utilizar el comando ssh-copy-id (en Linux/macOS) para transferir fácilmente su clave pública:
ssh-copy-id usuario@dirección_servidor
Si ssh-copy-id no está disponible, agregue manualmente el contenido de su archivo id_ed25519.pub (o id_rsa.pub) al archivo ~/.ssh/authorized_keys del servidor.
Deshabilitar la autenticación de contraseña
En /etc/ssh/sshd_config, configure:
Autenticación de contraseña no
Reinicie el servicio SSH:
sudo systemctl reanudar ssh
Al igual que la gestión de certificados digitales, la autenticación basada en clave SSH garantiza que solo alguien con la clave privada correcta pueda establecer una conexión.
2. Deshabilitar el inicio de sesión root
Qué es:
Evitar que el usuario root inicie sesión directamente a través de SSH.
Por qué es más seguro:
- La cuenta raíz tiene privilegios ilimitados y es un objetivo atractivo para los atacantes.
- Deshabilitar el acceso directo a la raíz obliga a los atacantes a adivinar no solo una clave o contraseña, sino también un nombre de usuario válido.
Cómo implementar:
En /etc/ssh/sshd_config, busque o agregue:
PermitRootLogin no
Reiniciar SSH:
sudo systemctl reanudar ssh
Este paso reduce eficazmente su superficie de ataque al eliminar la cuenta más poderosa de su fácil acceso.
3. Aplicar algoritmos MAC y de cifrado fuertes
Qué es:
SSH le permite especificar qué cifrados y códigos de autenticación de mensajes (MAC) utilizar para cifrar datos y verificar su integridad.
Por qué es más seguro:
- Los algoritmos más antiguos o débiles (por ejemplo, DES, RC4) pueden ser vulnerables a ataques criptográficos.
- El uso de cifrados modernos (como AES-256) y MAC fuertes (como HMAC-SHA2) ayuda a mantener los datos de su sesión confidenciales y a prueba de manipulaciones.
Cómo implementar:
En /etc/ssh/sshd_config, agregue o actualice su lista de cifrado/MAC:
Cifrados aes256-ctr,aes192-ctr,aes128-ctr
MAC hmac-sha2-256, hmac-sha2-512
Reiniciar SSH:
sudo systemctl reanudar ssh
Mantener la criptografía actualizada para SSH es tan vital como garantizar que se utilicen protocolos y cifrados seguros. TLS.
4. Mantenga SSH (y su sistema) actualizado
Qué es:
Asegurarse de que OpenSSH, junto con el resto del sistema operativo, reciba parches de seguridad periódicos.
Por qué es más seguro:
- El software obsoleto con frecuencia contiene vulnerabilidades conocidas
- Los atacantes a menudo apuntan a versiones anteriores con exploits sin parches
Cómo implementar:
En sistemas basados en Debian o Ubuntu:
sudo apt-get actualización && sudo actualización apt-get
En sistemas basados en CentOS, Fedora o RHEL:
sudo yum update
Asegúrese de verificar también si hay actualizaciones de firmware si está ejecutando SSH en dispositivos de red u otro hardware.
5. Implemente la autenticación de dos factores o multifactor (2FA/MFA)
Qué es:
Agrega una capa adicional de seguridad al requerir algo además de una contraseña o clave (por ejemplo, un código de un solo uso en su teléfono).
Por qué es más seguro:
- Incluso si los atacantes obtienen su clave SSH, aún necesitan el segundo factor para iniciar sesión
- Ayuda a defenderse contra el robo de credenciales.
Cómo implementar:
Instalar y configurar una herramienta MFA
Por ejemplo, google Authenticator Se puede instalar en servidores Linux y configurar como módulo PAM (módulos de autenticación conectables). Siga las instrucciones de instalación específicas para su distribución.
Editar /etc/pam.d/sshd y /etc/ssh/sshd_config
- Habilitar Google Authenticator u otro módulo MFA
- Establezca ChallengeResponseAuthentication yes y AuthenticationMethods publickey,keyboard-interactive (o cualquier combinación que se adapte a su entorno)
Reiniciar SSH:
sudo systemctl reanudar ssh
6. Habilitar el registro y la supervisión
Qué es:
Capture eventos de inicio de sesión SSH, realice un seguimiento de la actividad sospechosa y reciba alertas cuando algo anda mal.
Por qué es más seguro:
- Los intentos de intrusión suelen ser visibles en los registros como inicios de sesión fallidos repetidos o acciones no autorizadas.
- La detección temprana significa que puede responder rápidamente, bloqueando direcciones IP o cambiando configuraciones antes de que se produzcan daños.
Cómo implementar:
Aumentar la verbosidad del registro
En /etc/ssh/sshd_config, configure:
Nivel de registro VERBOSE
Registros agregados
- Herramientas como syslog, rsyslogo syslog-ng ayudar a recopilar y centralizar registros
- A Solución SIEM (Gestión de eventos e información de seguridad) Puede ofrecer análisis y alertas avanzadas.
Utilice herramientas de prevención de intrusiones
fail2ban escanea archivos de registro y prohíbe las IP que muestran signos maliciosos, como demasiados errores de contraseña.
7. Implementar controles y restricciones de acceso
Qué es:
Limite quién puede conectarse a SSH y desde dónde, evitando solicitudes entrantes no autorizadas o excesivas.
Formas de hacerlo:
Restricciones del cortafuegos
Permitir SSH únicamente desde direcciones IP conocidas o de confianza. Por ejemplo, en Linux con ufw:
sudo ufw permitir desde 192.168.1.0/24 a cualquier puerto 22
Configuración del puerto
Ejecutar SSH en un puerto no estándar (por ejemplo, 2222) puede reducir los intentos de escaneo automático. No reemplaza las medidas de seguridad reales, pero puede reducir el ruido.
Restricciones de usuarios y grupos
En /etc/ssh/sshd_config, especifique:
Permitir usuarios alice bob
or
sshadmins de AllowGroups
8. Utilice contraseñas de clave SSH y almacenamiento seguro de claves
Qué es:
Cifre su clave privada con una frase de contraseña para que, incluso si su máquina se ve comprometida, la clave en sí no pueda utilizarse inmediatamente.
Por qué es más seguro:
- Un archivo de clave robado sin frase de contraseña puede otorgar acceso instantáneo
- Las frases de contraseña actúan como una capa adicional de cifrado en su clave local.
Cómo implementar:
Establecer una frase de contraseña durante la generación de claves
ssh-keygen -t ed25519
(Se le pedirá que ingrese una contraseña).
Proteja sus archivos clave
Restrinja los permisos a su carpeta .ssh y a los archivos de clave:
chmod 700 ~ / .ssh
chmod 600 ~ / .ssh / id_ed25519
Considere módulos de seguridad de hardware (HSM) o tokens
Para organizaciones más grandes, el uso de hardware dedicado para el almacenamiento de claves puede mitigar los riesgos de robo de software o malware.
Conclusión
La seguridad de SSH se reduce a capas de protección. Al implementar la autenticación basada en claves, deshabilitar el acceso directo a la raíz, usar un cifrado fuerte, mantenerse actualizado, requerir autenticación multifactor, monitorear registros, restringir el acceso y proteger sus claves con frases de contraseña, cubre los riesgos más comunes (y más graves).
Estas medidas se alinean con la misma filosofía de seguridad más amplia que SSL.com defiende para los certificados digitales: proteger las claves criptográficas, utilizar un cifrado sólido, restringir el acceso privilegiado y mantener una vigilancia constante sobre sus sistemas. Una vez que haya establecido estas prácticas recomendadas fundamentales, puede explorar opciones más avanzadas, como las autoridades de certificación SSH, el acceso no autorizado a puertos o la ejecución de SSH a través de una VPN para adaptar aún más su postura de seguridad.