Las conexiones SSH son útiles para conectarnos de forma remota a nuestro ordenador o a un servidor, sin embargo, es posible que usuarios no autorizados o piratas informáticos intenten también acceder a ellos sin nuestro permiso ya que todo lo que está conectado a la red tiene unos riesgos que no debemos olvidar.
Aunque una capa de seguridad 100% nunca es posible, podemos configurar nuestro servidor SSH con una serie de parámetros adicionales de manera que sí se proteja en gran medida el acceso no autorizado a los mismos evitando que piratas informáticos o usuarios no autorizados puedan conectarse a la fuerza a nuestros servidores sin nuestro permiso.
Para esto es recomendable llevar a cabo una serie de ajustes adicionales en la configuración del servidor que permitan protegernos lo mejor posible de las amenazas de la red. Estos ajustes se deben realizar en el fichero de configuración del servidor que, por ejemplo, en Linux se encuentra en /etc/ssh/sshd_config.
Cambiar el puerto por defecto del servidor SSH
Por defecto los servidores SSH utilizan el puerto 22 para las conexiones. Cuando un pirata informático intente buscar la forma de conectarse a nuestro servidor SSH este probará en primer lugar con este puerto y, de estar abierto, comenzará el ataque.
Si cambiamos el puerto por defecto por otro de nuestra elección evitaremos que utilicen el puerto 22 para establecer las conexiones, sin embargo, es fácil descubrir si este tipo de protocolos utilizan otros puertos adicionales para las conexiones. En otro tutorial explicamos cómo es la importación o exportación de VPN.
Bloquear el acceso root en las conexiones remotas
Es recomendable crear un único usuario para conectarse al servidor con una contraseña lo más fuerte posible de manera que no pueda ser explotada fácilmente, sin embargo, por defecto el usuario Root también puede conectarse al servidor SSH de forma remota evitando a un atacante el tener que adivinar el usuario y facilitándose el trabajo.
Desactivando los permisos de Root para conectarse al servidor SSH complicaremos notablemente la tarea de explotación por fuerza bruta del servidor al tener que adivinar también el usuario establecido para permitir la conexión.
El valor por defecto en el archivo de configuración que permite las conexiones de root es:
- PermitRootLogin yes
Debemos cambiarlo por:
- PermitRootLogin no
De esta manera las conexiones root quedarán bloqueadas evitando que usuarios no autorizados puedan realizar ataques de fuerza bruta contra nuestro servidor SSH para adivinar los credenciales del usuario Root.
Configuraciones de seguridad adicionales
Existen otras configuraciones recomendadas para evitar las conexiones no deseadas a nuestro servidor SSH. Estas conexiones son:
- LoginGraceTime: Estableceremos el tiempo necesario para introducir la contraseña, evitando que el atacante tenga que «pensar mucho».
- MaxAuthTries: Número de errores permitidos al introducir la contraseña antes de desconectarnos.
- MaxStartups: Número de logins simultáneos desde una IP, para evitar que se pueda utilizar la fuerza bruta con varias sesiones a la vez.
- AllowUsers: Este parámetro nos permite configurar los usuarios que podrán conectarse y desde la IP que lo podrán hacer. Una medida muy restrictiva pero a la vez muy segura ya que bloqueará todas las conexiones que no cumplan los dos parámetros.
Reiniciar el servidor para aplicar los nuevos ajustes
Una vez realizados los ajustes debemos reiniciar el servidor para que se apliquen correctamente. Para ello teclearemos:
- sudo service ssh reload
En pocos segundos el servidor volverá a arrancar con la nueva configuración aplicada y mucho más seguro que antes.
Os recomendamos acceder a nuestro tutorial sobre cómo verificar la seguridad de SSH con estas herramientas.