OpenSSH: Buenas prácticas

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. « Wikipedia.

openssh

Puede que algunos usuarios piensan que las buenas prácticas solo deben ser aplicadas en los servidores y no es así. Muchas distribuciones GNU/Linux incluyen OpenSSH por defecto y hay algunas cosas que debemos tener en cuenta.

Seguridad

Estos son los 6 puntos más importantes a tener en cuenta a la hora de configurar SSH:

  1. Usar una contraseña fuerte.
  2. Cambiar el puerto por defecto de SSH.
  3. Usar siempre la versión 2 del protocolo SSH.
  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

Un buen password es aquel que contiene caracteres alfanuméricos o especiales, espacios, mayúsculas y minúsculas… etc. Acá en DesdeLinux hemos mostrado varios métodos para generar buenas contraseñas. Pueden visitar este artículo y este otro.

Cambiar el puerto por defecto

El puerto por defecto de SSH es el 22. Para cambiarlo lo único que debemos hacer es editar el fichero /etc/ssh/sshd_config. Buscamos la línea que dice:

#Port 22

la descomentamos y cambiamos el 22 por otro número.. por ejemplo:

Port 7022

Para saber los puertos que no estamos usando en nuestro ordenador/servidor podemos ejecutar en el terminal:

$ netstat -ntap

Ahora para acceder a nuestro ordenador o servidor debemos hacerlo con la opción -p de la siguiente forma:

$ ssh -p 7022 usuario@servidor

Usar Protocolo 2

Para asegurarnos de que estamos usando la versión 2 del protocolo SSH, debemos editar el fichero /etc/ssh/sshd_config y buscar la línea que dice:

# Protocol 2

Lo descomentamos y reiniciamos el servicio SSH.

No permitir acceso como Root

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

#PermitRootLogin no

y la descomentamos. Creo que vale aclarar que antes de hacer esto debemos asegurarnos que nuestro usuario tenga los permisos necesarios para realizar tareas administrativas.

Limitar acceso por usuarios

Tampoco está de mas permitir el acceso vía SSH solo a determinados usuarios de confianza, por lo que volvemos al fichero /etc/ssh/sshd_config y añadimos la línea:

AllowUsers elav usemoslinux kzkggaara

Donde evidentemente, los usuarios elav, usemoslinux y kzkggaara son los que podrán acceder..

Usar autenticación mediante llaves

Aunque este método es el más recomendado, debemos tener especial cuidado pues accederemos al servidor sin poner la contraseña. Esto significa que si un usuario logra entrar a nuestra sesión o nos roban el ordenador, podemos estar en problemas. No obstante, veamos como hacerlo.

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

ssh-keygen -t rsa -b 4096

Luego le pasamos nuestra llave al ordenador/servidor:

ssh-copy-id -i ~/.ssh/id_rsa.pub elav@200.8.200.7

Por último tenemos que tener descomentada, en el fichero /etc/ssh/sshd_config la línea:

AuthorizedKeysFile .ssh/authorized_keys

Otras opciones

Aporte de Yukiteru

Podemos reducir el tiempo de espera en el que un usuario puede loguearse 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, podemos activar estas 3 opciones.

TCPKeepAlive no
ClientAliveInterval 60
ClientAliveCountMax 3

Deshabilitar el uso de archivos rhosts o shosts, los cuales por razones de seguridad son instados a no utilizarse.

IgnoreRhosts yes
IgnoreUserKnownHosts yes
RhostsAuthentication no
RhostsRSAAuthentication no

Chequear los permisos efectivos del usuario durante el login.

StrictModes yes

Activa la separación de privilegios.

UsePrivilegeSeparation yes

Conclusiones:

Haciendo estos pasos podremos añadir un extra de seguridad a nuestros ordenadores y servidores, pero nunca debemos olvidar que hay un factor importante: lo que hay entre la silla y el teclado. Es por ello que les recomiendo la lectura de este artículo.

Fuente: HowToForge

Artículo original en desdelinux.net