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.
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.
Índice
Seguridad
Estos son los 6 puntos más importantes a tener en cuenta a la hora de configurar SSH:
- Usar una contraseña fuerte.
- Cambiar el puerto por defecto de SSH.
- Usar siempre la versión 2 del protocolo SSH.
- Desactivar el acceso como root.
- Limitar el acceso de los usuarios.
- Usar autenticación mediante llaves.
- 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
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
8 comentarios, deja el tuyo
Excelente post @elav y agrego unas cositas interesantes:
LoginGraceTime 30
Esto nos permite reducir el tiempo de espera en el que un usuario puede loguearse satisfactoriamente al sistema a 30 segundos
TCPKeepAlive no
ClientAliveInterval 60
ClientAliveCountMax 3
Estas tres opciones son bastante útiles para evitar ataques a ssh por medio de TCP Spoofing, dejando activo el alive encriptado del lado de ssh por un maximo de 3 minutos.
IgnoreRhosts yes
IgnoreUserKnownHosts yes
RhostsAuthentication no
RhostsRSAAuthentication no
Deshabilita el uso de archivos rhosts o shosts, los cuales por razones de seguridad son instados a no utilizarse.
StrictModes yes
Esta opción es usada para chequear los permisos efectivos del usuario durante el login.
UsePrivilegeSeparation yes
Activa la separación de privilegios.
Pues en un rato edito el post y lo añado al post 😀
Descomentar para no cambiar la línea es redundante. Las líneas comentadas muestran el valor por defecto de cada opción (leed la aclaración al principio del propio fichero). El acceso a root está desactivado por defecto, etc. Por tanto, descomentarla no tiene absolutamente ningún efecto.
Si, pero por ejemplo ¿cómo sabemos que estamos usando solo la versión 2 del protocolo? Porque bien podríamos estar usando la 1 y la 2 al mismo tiempo. Como bien dice la última línea, descomentar esta opción por ejemplo, sobrescribe la opción por defecto. Si estamos usando la versión 2 por defecto, bien, si no, pues la usamos SI o SI 😀
Gracias por comentario
Muy buen articulo, conocia varias cosas pero una cosa que nunca me queda claro es el uso de llaves, realmente que son y que ventajas tiene, si uso llaves puedo usar contraseñas??? en caso afirmativo por que aumenta la seguridad y si no como hago para acceder desde otro pc??
Saludos, he instalado debian 8.1 y no logro conectarme desde mi pc de windows a debian con el WINSCP, sera que tengo que usar el protocolo 1 ?? alguna ayuda.. gracias
Adian
Les puede interesar este video sobre openssh https://m.youtube.com/watch?v=uyMb8uq6L54
Quiero probar algunas cosas de aquí, varias ya las he probado gracias a la Wiki de Arch, otras por pereza o desconocimiento no. Lo guardaré para cuando eche a andar mi RPi