Cómo convertir SSH a prueba de balas


OpenSSH (Open Secure Shell) es un conjunto de aplicaciones que permiten realizar comunicaciones cifradas a través de una red, usando el protocolo SSH. Fue creado como una alternativa libre y abierta al programa Secure Shell, que es software propietario.

Muchas distribuciones GNU/Linux incluyen OpenSSH por defecto y hay algunas cosas que debemos tener en cuenta a la hora de su correcta implementación.

En esta entrada te muestro cómo configurar este protocolo para crear una seguridad que roce la perfección.

Seguridad

Los 6 puntos más significativos a la hora de configurar SSH son:

  1. Usar una contraseña fuerte.
  2. Cambiar el puerto por defecto.
  3. Usar siempre la versión 2 del protocolo.
  4. Desactivar el acceso como root.
  5. Limitar el acceso de los usuarios.
  6. Usar autenticación mediante llaves.
  7. Otras opciones

Una contraseña fuerte

Una contraseña robusta es aquella que contiene caracteres alfanuméricos o especiales, espacios, mayúsculas y minúsculas. La longitud es otro factor importante, se recomienda que tus contraseñas tengan, como mínimo, 8 caracteres.

Cambiar el puerto por defecto

Por defecto SSH utiliza el puerto 22. Para cambiarlo lo único que debes hacer es editar el fichero /etc/ssh/sshd_config. Busca la línea que dice:

#port 22

se le suprime el simbolo de “#”, o sea, se descomenta. Luego cambia el 22 por otro número, por ejemplo:

port 6022

Para saber los puertos que no estás usando en el ordenador/servidor puedes ejecutar en el terminal:

$ netstat -ntap

Ahora para acceder al ordenador o servidor debes hacerlo con la opción -p de la siguiente forma:

$ ssh -p 6022 usuario@servidor

Usar Protocolo versión 2

Para asegurarte del correcto uso de la versión 2 del protocolo SSH, debes editar el fichero /etc/ssh/sshd_config y buscar la línea siguiente y quitarle el comentario:

# Protocol 2

No permitir acceso como Root

Para evitar que el usuario root pueda acceder de forma remota, busca en el fichero/etc/ssh/sshd_config la línea:

#PermitRootLogin no

y quítale el comentario. Creo que vale aclarar que antes de hacer esto debes asegurarte que el usuario tenga los permisos necesarios para realizar tareas administrativas.

Limitar acceso por usuarios

Tampoco está de más permitir el acceso vía SSH solo a determinados usuarios de confianza, por lo que en el fichero /etc/ssh/sshd_config añade la línea:

AllowUsers usuario#1 usuario#2 usuario#3

Donde evidentemente, los usuarios especificados son los que podrán acceder.

Usar autenticación mediante llaves

Aunque este método es el más recomendado, debes tener especial cuidado pues se podrá acceder al servidor sin escribir la contraseña. Esto significa que, si un usuario logra entrar a tu sesión o te roban el ordenador, inmediatamente estarás vulnerable.

Lo primero que debes hacer es crear un par de llaves (pública y privada):

ssh-keygen -t rsa -b 4096

Luego se le pasa la llave al ordenador/servidor:

ssh-copy-id -i ~/.ssh/id_rsa.pub comu@196.8.0.7

Por último descomenta en el fichero /etc/ssh/sshd_config la línea:

AuthorizedKeysFile .ssh/authorized_keys

Otras opciones

Puedes reducir el tiempo de espera en el que un usuario puede autenticarse satisfactoriamente al sistema a 30 segundos.

LoginGraceTime 30

Para evitar ataques a SSH por medio de TCP Spoofing, dejando activo el alive encriptado del lado de SSH por un máximo de 3 minutos, se pueden activar estas 3 opciones:

TCPKeepAlive no
ClientAliveInterval 60
ClientAliveCountMax 3

Deshabilitar el uso de archivos rhosts o shosts, los cuales por razones de seguridad no se recomienda su uso.

IgnoreRhosts yes
IgnoreUserKnownHosts yes
RhostsAuthentication no
RhostsRSAAuthentication no

Chequear los permisos efectivos del usuario durante la autenticación.

StrictModes yes

Activa la separación de privilegios.

UsePrivilegeSeparation yes

Conclusiones

Haciendo estos pasos podrás añadir un extra de seguridad a tus ordenadores y servidores, pero nunca debes olvidar que hay un factor importante: lo que hay entre la silla y el teclado.

El factor humano siempre es el eslabón más débil de la cadena. Realizar los pasos anteriores no te garantiza una mejor seguridad si por ejemplo compartes tu contraseña con los demás, o existen otros que no deberían tienen usuario root y lo tienen.

En fin, recuerda siempre que “El poder conlleva una gran responsabilidad”.

Latest posts by Raúl Rodríguez (see all)