Búsqueda de sitios web

Cómo proteger y reforzar el servidor OpenSSH


Cuando se trata de acceder a dispositivos remotos como servidores, enrutadores y conmutadores, el protocolo SSH es muy recomendable dada su capacidad para cifrar el tráfico y proteger a cualquiera que intente espiar sus conexiones.

Sea como fuere, la configuración predeterminada de SSH no es infalible y se necesitan ajustes adicionales para que el protocolo sea más seguro. En esta guía, exploramos diferentes formas que puede utilizar para proteger y reforzar la instalación de OpenSSH en el servidor.

1. Configurar la autenticación SSH sin contraseña

De forma predeterminada, SSH requiere que los usuarios proporcionen sus contraseñas al iniciar sesión. Pero aquí está la cuestión: los piratas informáticos pueden adivinar contraseñas o incluso realizar un ataque de fuerza bruta utilizando herramientas de piratería especiales y obtener acceso a su sistema. Para estar seguro, se recomienda encarecidamente el uso de autenticación SSH sin contraseña.

El primer paso es generar un par de claves SSH que consta de una clave pública y una clave privada. La clave privada reside en su sistema host, mientras que la clave pública se copia al servidor remoto.

Una vez que la clave pública se haya copiado correctamente, ahora podrá acceder mediante SSH al servidor remoto sin problemas sin tener que proporcionar una contraseña.

El siguiente paso es deshabilitar la autenticación de contraseña. Para lograr esto, debe modificar el archivo de configuración SSH.

sudo vim /etc/ssh/sshd_config

Dentro del archivo de configuración, desplácese y localice la siguiente directiva. Descomente y cambie la opción 'yes' a 'no'

PasswordAuthentication no

Luego reinicie el demonio SSH.

sudo systemctl restart sshd

En este punto, solo tendrá acceso al servidor remoto mediante la autenticación de clave SSH.

2. Deshabilite las solicitudes de conexión sin contraseña SSH del usuario

Otra forma recomendada de fortalecer la seguridad de su servidor es deshabilitar los inicios de sesión SSH de usuarios sin contraseña. Esto suena un poco extraño, pero a veces los administradores del sistema pueden crear cuentas de usuario y olvidarse de asignar contraseñas, lo cual es una muy mala idea.

Para rechazar solicitudes de usuarios sin contraseña, nuevamente, diríjase al archivo de configuración en /etc/ssh/sshd_config y asegúrese de tener la siguiente directiva:

PermitEmptyPasswords no

Luego reinicie el servicio SSH para que se realice el cambio.

sudo systemctl restart sshd

3. Deshabilite los inicios de sesión raíz SSH

Es una obviedad lo que puede suceder si un hacker logra forzar su contraseña de root. Permitir el inicio de sesión remoto como root es siempre una mala idea que podría poner en peligro la seguridad de su sistema.

Por este motivo, siempre se recomienda desactivar el inicio de sesión raíz remoto SSH y, en su lugar, utilizar un usuario normal que no sea raíz. Una vez más, dirígete al archivo de configuración y modifica esta línea como se muestra.

PermitRootLogin no

Una vez que haya terminado, reinicie el servicio SSH para que se realice el cambio.

sudo systemctl restart sshd

De ahora en adelante, se desactivará el inicio de sesión remoto como root.

4. Utilice el protocolo SSH 2

SSH viene en dos versiones: SSH protocolo 1 y protocolo 2. El protocolo 2 SSH se introdujo en 2006 y es más seguro que el protocolo 1 gracias a sus sólidas comprobaciones criptográficas, cifrado masivo y algoritmos sólidos.

De forma predeterminada, SSH utiliza el protocolo 1. Para cambiar esto al Protocolo 2 más seguro, agregue la siguiente línea al archivo de configuración:

Protocol 2

Como siempre, reinicie SSH para que los cambios entren en vigor.

sudo systemctl restart sshd

En el futuro, SSH utilizará el Protocolo 2 de forma predeterminada.

Para probar si el protocolo 1 SSH ya es compatible, ejecute el comando:

ssh -1 user@remote-IP

Recibirá un error que dice "El protocolo SSH v.1 ya no es compatible".

En este caso el comando fue:

ssh -1 [email 

Además, puede simplemente especificar la etiqueta -2 solo para asegurarse de que Protocol 2 sea el protocolo predeterminado en uso.

ssh -2 [email 

5. Establecer el valor inactivo del tiempo de espera de la conexión SSH

Dejar su PC desatendida durante períodos prolongados con una conexión SSH inactiva puede representar un riesgo para la seguridad. Alguien puede simplemente pasar de largo y hacerse cargo de su sesión SSH y hacer lo que quiera. Por lo tanto, para solucionar el problema, es prudente establecer un límite de tiempo de inactividad que, cuando se excede, se cerrará la sesión SSH.

Una vez más, abra su archivo de configuración SSH y localice la directiva “ClientAliveInterval”. Asigne un valor razonable, por ejemplo, he establecido el límite en 180 segundos.

ClientAliveInterval 180

Esto implica que la sesión SSH se cancelará si no se registra actividad después de 3 minutos, lo que equivale a 180 segundos.

Luego reinicie el demonio SSH para efectuar los cambios realizados.

sudo systemctl restart sshd

6. Limite el acceso SSH a ciertos usuarios

Para una capa de seguridad adicional, puede definir los usuarios que requieren el protocolo SSH para iniciar sesión y realizar tareas remotas en el sistema. Esto mantiene alejados a otros usuarios que puedan intentar acceder a su sistema sin su aprobación.

Como siempre, abra el archivo de configuración y agregue la directiva “AllowUsers” seguida de los nombres de los usuarios que desea otorgar. En el siguiente ejemplo, he permitido a los usuarios 'tecmint' y 'james' tener acceso remoto al sistema a través de SSH. Cualquier otro usuario que intente obtener acceso remoto será bloqueado.

AllowUsers tecmint james

Luego reinicie SSH para que los cambios persistan.

sudo systemctl restart sshd

7. Configure un límite para intentos de contraseña

Otra forma de agregar una capa de seguridad es limitando la cantidad de intentos de inicio de sesión SSH de modo que, después de varios intentos fallidos, la conexión se interrumpa. Así que, una vez más, dirígete al archivo de configuración y localiza la directiva “MaxAuthTries” y define un valor para el número máximo de intentos.

En este ejemplo, el límite se ha establecido en 3 intentos, como se muestra.

MaxAuthTries 3

Y finalmente, reinicie el servicio SSH como en los escenarios anteriores.

También puede que le resulten útiles estos siguientes artículos relacionados con SSH:

  • Cómo instalar el servidor OpenSSH 8.0 desde el código fuente en Linux
  • Cómo instalar Fail2Ban para proteger SSH en CentOS/RHEL 8
  • Cómo cambiar el puerto SSH en Linux
  • Cómo crear un túnel SSH o reenvío de puertos en Linux
  • 4 formas de acelerar las conexiones SSH en Linux
  • Cómo encontrar todos los intentos fallidos de inicio de sesión SSH en Linux
  • Cómo desconectar conexiones SSH inactivas o inactivas en Linux
Conclusión

Este fue un resumen de algunas de las medidas que puede tomar para proteger sus conexiones remotas SSH. Es importante agregar que siempre debes asignar contraseñas seguras a los usuarios que tengan acceso remoto para frustrar ataques de fuerza bruta. Esperamos que esta guía le haya resultado útil. Tus comentarios son muy bienvenidos.