5 mejores técnicas para proteger SSH en Ubuntu
12:15, 28.07.2026
Proteger el acceso SSH (Secure Shell) en servidores con distintos sistemas operativos, incluido Ubuntu, es fundamental para evitar el acceso no autorizado y mitigar los riesgos de seguridad. Sin las medidas de seguridad necesarias, SSH puede convertirse en un punto de entrada vulnerable.
En este artículo, describimos las cinco mejores técnicas para proteger SSH en Ubuntu, entre las que se incluyen la implementación de la autenticación multifactorial, la modificación de la configuración de seguridad predeterminada y la aplicación de medidas de seguridad mediante cortafuegos.
1. Configuración de la autenticación de dos factores
Una de las formas más sencillas de mejorar la seguridad de SSH es añadir una capa adicional de autenticación mediante la autenticación de dos factores (2FA). Con la 2FA, incluso si un atacante adivina u obtiene una contraseña, seguirá necesitando una segunda forma de autenticación para obtener acceso. Por lo general, se utiliza una combinación de una contraseña de un solo uso enviada a los dispositivos del usuario y una frase de contraseña.
Al añadir esta segunda capa a la autenticación, los usuarios pueden estar seguros de que cualquier intento de obtener acceso remoto a través de SSH estará sujeto a una autenticación que requiera más de una credencial.
Se pueden integrar herramientas populares como Google Authenticator o Authy en tu proceso de inicio de sesión SSH. Habilitar la autenticación de dos factores (2FA) en SSH puede reducir significativamente el riesgo de acceso no autorizado, especialmente en servidores de acceso público. Al fin y al cabo, dos capas de protección son mejores que una sola.
2. Modificación de la configuración de seguridad predeterminada
Cambiar la configuración predeterminada de SSH puede cerrar los vectores de ataque habituales utilizados por los actores maliciosos.
Las opciones predeterminadas de SSH se encuentran en un archivo de configuración en /etc/ssh/sshd_config. A continuación se indican algunos ajustes clave que conviene modificar para mejorar la seguridad.
Actualización del puerto predeterminado
Por defecto, SSH se ejecuta en el puerto 22. Cambiar este puerto por uno menos habitual (por ejemplo, el 2222) reduce la exposición a escaneos automatizados y ataques de fuerza bruta, ya que lo primero que hacen los atacantes es probar los puertos predeterminados.
Para cambiar el puerto predeterminado, edita el archivo de configuración de SSH /etc/ssh/sshd_config y actualiza la directiva Port con el puerto que hayas elegido. Recuerda actualizar cualquier regla del cortafuegos para reflejar este cambio.
Desactivación del inicio de sesión como root
Permitir el inicio de sesión como root a través de SSH puede ser arriesgado, ya que proporciona acceso directo al usuario root. Los privilegios de root otorgan acceso completo a todo el sistema. Por lo tanto, al desactivar el inicio de sesión como root, puedes revisar y controlar el nivel de acceso que cada usuario tiene al servidor.
Desactivar el inicio de sesión como root garantiza que los atacantes tengan que conocer un nombre de usuario específico, lo que añade una capa adicional de seguridad. Para desactivar el inicio de sesión como root, abre /etc/ssh/sshd_config y configura PermitRootLogin en no.
Puede configurar usuarios con privilegios de «sudo» si los administradores del sistema necesitan privilegios para realizar determinadas tareas.
Desactivación de la autenticación basada en contraseña
La autenticación basada en contraseña predeterminada, aunque cómoda, suele ser la razón por la que los ataques de fuerza bruta tienen éxito.
Según nuestra experiencia, lo óptimo es cambiar a la autenticación basada en claves, ya que, al requerir un par de claves SSH, se elimina el riesgo asociado a las contraseñas débiles.
Para desactivar la autenticación predeterminada basada en contraseña, en /etc/ssh/sshd_config, configura PasswordAuthentication a no, lo que restringe el acceso únicamente a quienes dispongan de una clave SSH válida.
Debería quedar así:
PasswordAuthenticationno
Restricción del acceso con «AllowUsers»
Todos los usuarios del sistema pueden iniciar sesión a través de SSH con sus contraseñas o claves públicas, pero no todos deberían poder hacerlo. La directiva AllowUsers te permite definir qué usuarios pueden conectarse por SSH al servidor. Esta es una forma sencilla de limitar el acceso a usuarios específicos y evitar inicios de sesión no autorizados.
En /etc/ssh/sshd_config, añade AllowUsers seguido de los nombres de usuario a los que se permite el acceso por SSH, lo que refuerza aún más la seguridad.
3. Uso de certificados SSH para la autenticación de clientes
Los certificados SSH son una alternativa a las claves SSH tradicionales y ofrecen un mayor nivel de seguridad. Las claves SSH son, básicamente, cadenas de caracteres que se pueden copiar, por lo que no ofrecen suficiente protección.
La autenticación basada en certificados SSH es una alternativa mejor. Los certificados SSH verifican la identidad de cada clave cuando se utilizan para iniciar sesión. Con los certificados SSH, puedes gestionar el acceso y los plazos de caducidad más fácilmente, lo cual es ideal para entornos de gran tamaño o para accesos temporales. Al configurar tu servidor SSH para que confíe en una autoridad de certificación (CA) que emite certificados a los usuarios, obtienes un mayor control sobre quién tiene acceso al servidor, sin tener que gestionar manualmente las claves individuales.
Puede generar certificados a través de OpenSSH utilizando ssh-keygen.
4. Proteger el acceso con un host bastión
Un host bastión actúa como intermediario seguro entre sus servidores privados y el acceso externo. Al situar el acceso SSH a los servidores internos detrás de un host bastión, se crea un único punto de entrada reforzado que resulta más fácil de supervisar y proteger. Un host bastión se sitúa justo antes del cortafuegos, por lo que constituye el primer punto de protección del sistema.
Para implementar un host bastión, restringe el acceso SSH a los servidores privados de modo que solo el host bastión pueda acceder a ellos, reduciendo así la exposición a amenazas externas.
5. Reforzar la seguridad con cortafuegos
Los cortafuegos añaden una capa esencial de seguridad al controlar el tráfico entrante y saliente; dependiendo de la configuración, los cortafuegos también pueden proteger el tráfico dentro de la red privada. En Ubuntu, UFW (Uncomplicated Firewall) es una herramienta fácil de usar para gestionar las reglas del cortafuegos.
Empieza por permitir únicamente el puerto SSH elegido y denegar otros puertos no autorizados. Además, limitar la velocidad de las conexiones SSH puede mitigar los ataques de fuerza bruta al bloquear los intentos repetidos de conexión desde una misma dirección IP.
Para reforzar la seguridad con cortafuegos:
- Instala UFW: sudo apt install ufw
- Permite únicamente el puerto SSH elegido (por ejemplo, 2222): sudo ufw allow 2222/tcp
- Activa la limitación de frecuencia: sudo ufw limit 2222/tcp
- Activa el cortafuegos: sudo ufw enable
Configurar el cortafuegos de esta manera reduce la superficie de ataque y minimiza el riesgo de acceso no autorizado.
Los usuarios que trabajen en Linux pueden utilizar iptables, donde se pueden definir reglas que regulen el tráfico SSH entrante y clasificarlo por puerto, dirección IP o protocolo. El sistema de iptables es una interfaz del cortafuegos netfilter, por lo que al ajustar su configuración, se ajusta el cortafuegos.
Reflexiones finales
Proteger el SSH en Ubuntu requiere una combinación de medidas, desde ajustar la configuración predeterminada hasta implementar técnicas más avanzadas como certificados SSH y hosts bastión. Cada uno de los métodos descritos aquí desempeña un papel esencial a la hora de proteger el acceso SSH y reforzar la seguridad del servidor. Tomar estas medidas puede reducir significativamente las vulnerabilidades y mejorar el nivel general de seguridad de tu servidor Ubuntu.