arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

5 Tips para mejorar la seguridad SSH

Eduardo Ismael Garcia

Full Stack Developer at Código Facilito.

av_timer 2 Min. de lectura

remove_red_eye 11367 visitas

calendar_today 29 Junio 2020

SSH (Secure SHell) es, desde mi punto de vista, el protocolo ideal para nosotros poder administrar servidores de forma remota.

Si bien es cierto en el mercado existen otras alternativas, creo que la facilidad, seguridad y flexibilidad que SSH no permite no tiene comparación

Es por ello que, para este vídeo, me gustaría listas 5 tips los cuales considero no serán de mucha utilidad al nosotros trabajar con servidores remotos. Esto principalmente en el área de seguridad.

Para poder implementar estos tips será necesario trabajar el archivo /etc/ssh/sshd_config, ya que modificaremos las configuraciones por default de SSH.

Si no te encuentras familiarizado con este protocolo, no te preocupes, te comparto un link a un post en donde te enseñamos como poder autenticarte con servidores remotos de una forma segura.

Antes de comenzar me gustaría recalcar que el protocolo SSH es sin duda uno de los protocolo más seguros en la actualidad, y esté listo tiene como objetivo reforzar la seguridad ya existente.

Bien, sin más que decir comencemos. 🤖

Autenticación solo con contraseña

Por si no lo sabías SSH nos permite autenticarnos con servidores remotos sin la necesidad de utilizar una contraseña, sí, así como lo lees. Si este es tu caso, lo que debes hacer, de forma inmediata, es deshabilitar esta opción.

PermitEmptyPasswords no

Así, siempre que un usuarios desee autenticarse deberá hacerlo utilizando una contraseña. 🔓

Con esto agregamos nuestro primer filtro de seguridad.😃

Puerto por default

Por default el protocolo SSH utiliza el puerto 22. Tú, yo y los atacantes lo sabemos. Es por ello que una muy buena idea es modificar el puerto con el cual nos conectaremos de forma remota.

Para ello es bastante sencillo, basta con seleccionar un puerto que solo nosotros y nuestro equipo de trabajo conozcamos.

Port 5001

Root Login

Al nosotros autenticarnos con servidores remotos, una excelente idea es nunca hacerlo utilizando el usuario root y para ello hay que hacer un par de cosas.

1.- Crear un nuevo usuario.

adduser <username>

2.- Asignar permisos de administrador a este nuevo usuario.

usermod -aG sudo username

3.- Modificamos el archivo sshd_config (Esto con el usuario root) negar la autenticación

PermitRootLogin no

4.- Antes de cerrar sesión con root será necesario probar que podemos autenticarnos con el nuevo usuario.

ssh <useranme>@<IP>

Si esto es posible, listo, ya solo podremos autenticarnos con nuestro nuevo usuario admin. 🤠

Usuarios autorizados

Siguiendo con el tema de usuarios, otra muy buena idea es solo permitir a ciertos número de usuarios, usuarios muy específicos, poder autenticarse de forma remota.

Esto nos viene perfecto cuando en nuestro sistema existen una gran cantidad de usuarios y no deseamos que todos puedan tomar control del servidor.

Para ello basta con modificar el parámetro AllowUsers y agregar todos los usuarios permitidos.

AllowUsers User1 User2

Timeout ⏰

Ya para finalizar hay que recordar que el tiempo de sesión es de suma importancia. Si un usuario autenticado permanece una lapso considerado de tiempo sin actividad, puede suponer un riesgo a la seguridad.

Para ello debemos configurar un timeout máximo por usuarios. Así, si un usuario por alguna razón no realiza ninguna actividad en dicho plazo la sesión vencerá.

ClientAliveInterval 300

En este caso modificó el tiempo máximo de espera. 5 min. creo que es un tiempo más que justo.


Para persistir cada uno de los cambios será necesarios reiniciar el servicio SSH.

sudo service ssh restart

Conclusión

Listo, estos son algunos tips que he podido recabar con mi poca experiencia en el mundo de los servidores y la seguridad informática. Son, principalmente, configuraciones, pero el efectuar estos cambios suponen un mayor refuerzo en la seguridad de nuestros sistemas, algo que sin duda todos deseamos. 🍻

Y cuéntanos ¿Qué otro tip de configuración conoces y te gustaría compartir? Dejanoslo saber en la sección de comentarios.

Bootcamp Arquitectura de Software

  • done Análisis de tradeoffs
  • done Arquitectura de sistemas distribuidos
  • done Gobernabilidad
  • done Arquitectura basada en riesgos
Más información