Cómo asegurar y endurecer el servidor OpenSsh

Cómo asegurar y endurecer el servidor OpenSsh

Cuando se trata de acceder a dispositivos remotos, como servidores, enrutadores e interruptores, el protocolo SSH es muy recomendable dada su capacidad de cifrar el tráfico y evitar a cualquiera que pueda intentar espiar sus conexiones.

Sea como fuere, la configuración predeterminada de Ssh no son infalibles y se necesitan ajustes adicionales para hacer que el protocolo sea más seguro. En esta guía, exploramos diferentes formas que puede usar para asegurar y endurecer la instalación de OpenSsh en el servidor.

1. Configuración de autenticación sin contraseña SSH

Por defecto, Ssh requiere que los usuarios proporcionen sus contraseñas al iniciar sesión. Pero aquí está la cosa: 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 en el lado seguro, se recomienda altamente el uso de la autenticación sin contraseña SSH.

El primer paso es generar un par de teclas SSH que consiste en un Llave pública y un llave privada. El llave privada reside en su sistema de host mientras el Llave pública Luego se copia al servidor remoto.

Una vez el Llave pública se copia con éxito, ahora puede SSH en el 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 de SSH.

$ sudo vim/etc/ssh/sshd_config 

Dentro del archivo de configuración, desplácese y localice la siguiente directiva. Descomnación y cambiar la opción 'Sí' a 'No'

Contraseña Autenticación no 
Desactivar la autenticación de contraseña de SSH

Luego reinicie el demonio ssh.

# sudo systemctl reiniciar sshd 

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

2. Deshabilitar solicitudes de conexión sin contraseña SSH SSH

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

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

PermenTemptyPasswords No 
Desactivar inicios de sesión sin contraseña de SSH de usuario

Luego reinicie el servicio SSH para que el cambio sea efectuado.

$ sudo systemctl reiniciar sshd 

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

Es una obvia lo que puede suceder si un hacker logra forzar su contraseña de root. Permitir el inicio de sesión de raíz remota es invariablemente una mala idea que podría poner en peligro la seguridad de su sistema.

Por esta razón, siempre se recomienda que desactive el inicio de sesión de raíz remota SSH y, en su lugar, se mantenga a un usuario regular no raíz. Una vez más, diríjase al archivo de configuración y modifique esta línea como se muestra.

Permitrootlogin no 
Deshabilitar los inicios de sesión de la raíz SSH

Una vez que haya terminado, reinicie el servicio SSH para que el cambio se efectúe.

$ sudo systemctl reiniciar sshd 

En adelante, el inicio de sesión de raíz remota se desactivará.

4. Use el protocolo SSH 2

SSH viene en dos versiones: SSH Protocolo 1 y protocolo 2. Ssh protocolo 2 se introdujo en 2006 y es más seguro que Protocolo 1 Gracias a sus fuertes comprobaciones criptográficas, cifrado masivo y algoritmos robustos.

Por defecto, SSH usa Protocolo 1. Para cambiar esto a los más seguros Protocolo 2, Agregue la línea a continuación al archivo de configuración:

Protocolo 2 
Use el protocolo SSH 2

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

$ sudo systemctl reiniciar sshd 

En el futuro, SSH usará Protocolo 2 por defecto.

Para probar si ssh Protocolo 1 ya es compatible, ejecute el comando:

$ ssh -1 [correo electrónico protegido] 

Recibirá un error que lee "Protocolo SSH V.1 ya no es compatible".

En este caso, el comando fue:

$ ssh -1 [correo electrónico protegido] 
Verifique el protocolo SSH

Además, simplemente puede especificar el -2 Etiqueta solo para estar seguro de que Protocolo 2 es el protocolo predeterminado en uso.

$ ssh -2 [correo electrónico protegido] 
Use el protocolo SSH 2

5. Establecer Tiempo de espera de conexión SSH Valor inactivo

Dejar su PC desatendida por períodos prolongados de tiempo con una conexión SSH inactiva puede representar un riesgo de seguridad. Alguien simplemente puede pasar y hacerse cargo de su sesión de SSH y hacer lo que sea por favor. Para abordar el problema, es prudente, por lo tanto, establecer un límite de tiempo de espera inactivo que, cuando se exceda, la sesión de SSH se cerrará.

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

ClientaliveInterval 180 

Esto implica que la sesión SSH se eliminará si no se registra ninguna actividad después de 3 minutos, que es el equivalente de 180 segundos.

Establecer el valor de tiempo de espera de la conexión SSH

Luego reinicie el demonio ssh para efectuar los cambios realizados.

$ sudo systemctl reiniciar 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 evita a cualquier otro usuario que pueda intentar ingresar a su sistema sin su aprobación.

Como siempre, abra el archivo de configuración y agregue la directiva "Permisadores"Seguido de los nombres de los usuarios que desea otorgar. En el ejemplo a continuación, he permitido que los usuariostecmenta' y 'Jaime'Tener acceso remoto al sistema a través de SSH. Cualquier otro usuario que intente obtener acceso remoto será bloqueado.

Permisores Tecmint James 
Límite de inicios de sesión del usuario de SSH

A partir de entonces reinicie SSH para que los cambios persistan.

$ sudo systemctl reiniciar sshd 

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

Otra forma en que puede agregar una capa de seguridad es limitar el número de intentos de inicio de sesión de SSH de modo que después de varios intentos fallidos, la conexión cae. Entonces, una vez más, dirígete al archivo de configuración y localice el "Maxauthtries"Directiva y defina 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 
Limite los intentos de contraseña de SSH

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

También puede encontrar estos siguientes artículos relacionados con SSH útil:

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

Ese fue un resumen de algunas de las medidas que puede tomar para asegurar sus conexiones remotas SSH. Es importante agregar que siempre debe asignar contraseñas seguras a los usuarios que tienen acceso remoto a los ataques de fuerza bruta. Es nuestra esperanza que hayas encontrado esta guía perspicaz. Tus comentarios son muy bienvenidos.