Cómo hacer SSH más seguro

13 Febrero 2012 at 13:04 by Adrián Pérez

Apache HTTPHay muchos posts en Internet hablando sobre cómo configurar SSH de forma correcta, para tener un entorno seguro; éste es otro de ellos.

La configuración de ssh en la máquina a la que queremos conectar, en entornos tipo Red Hat, se encuenta en /etc/ssh/sshd_conf. En este fichero de configuración, podremos realizar varias modificaciones para intentar tener un entorno SSH más seguro, como por ejemplo las que se describen a continuación:

Cambiar el puerto de acceso por defecto

Por defecto SSH usa el puerto 22, cambiando el puerto por otro conseguimos añadir una traba extra para alguien que quiere acceder a nuestro server a través de SSH, puesto que el puerto por defecto no responderá. Se recomienda usar uno mayor al 1024, por estar del 1 al 1024 reservados.

Port 12503

Deshabilitar el acceso a root

El usuario root tiene todos los permisos del sistema, y además es un usuario que existe en todos los sistemas. Una buena práctica sería deshabilitar el acceso al usuario root, y conectárse por ssh únicamente con usuarios propios, que posteriormente (si así lo deseamos) puedan coger privilegios de administrador mediante "sudo", habiéndose configurado préviamente en /etc/sudoers. De esta manera, prevenimos ataques SSH que intenten conectar con el usuario root, que serían los más usuales.

PermitRootLogin no

Deshabilitar el protocolo 1

Por estar obsoleto y por contar con varias vulnerabilidades conocidas, se recomienda sólo habilitar el protocolo 2, con el que se podrá trabajar sin ningún problema hoy en día.

Protocol 2

Crear una lista de usuarios permitidos

Lista de usuarios del sistema (en /etc/passwd) que tienen permiso para conectar por ssh. Así controlamos mucho mejor el acceso al ssh y evitamos ataques ssh con usuarios conocidos como el usuario apache, nagios, etc. También podemos incluir desde qué equipos se aceptarán las conexiones, incluyendo un @ip tras el username.

AllowUsers paco pepe@80.12.32.132

Deshabilitar la autentificación con contraseña

Este punto es algo más complicado que el resto, puesto que requiere de un trabajo adicional; la creación de claves públicas/privadas para la autentificación. Aquí habría dos posibles maneras de actuar:

1- Crear un par de claves en la máquina desde la que queremos conectar y copiarla al servidor siguiendo los pasos descritos aquí. Esto requiere poder autentificarse mediante contraseña para poder copiar la clave al servidor.

2- Otra opción para realizar lo mismo, se describe aquí, en el punto 7, sin necesidad de usar ssh-copy-id (lo cual requiere autentificación por contraseña).

Una vez comprobado que funciona la autentificación por ssh mediante certificado, se podrá deshabilitar la autentificación por password.

PasswordAuthentication no

Limitar el número de reintentos

Incluir un número máximo de errores al introducir el usuario/password (si está habilitado).

MaxAuthTries 2

Limitar el número de pantallas de login

Limitar el número de conexiones simultáneas a la pantalla de login desde la misma IP, para evitar ataques divididos. Esto no limita el número de sesiones ssh simultáneas, sólo limita el número de pantallas de login abiertas al mismo tiempo.

MaxStartups 3

 

NOTA IMPORTANTE: Se recomienda iniciar una sesión ssh contra la máquina antes de realizar ningún cambio, y no cerrar dicha sesión ssh. Tras los cambios, se podrá reiniciar el sshd del servidor sin que se cierre la sesión ssh original, por lo que si nos hemos equivocado con algún parámetro, aun podremos deshacer los cambios a través de la sesión ssh original. Para los tests, se recomienda usar nuevas sesiones ssh y nunca cerrar la original.

 

Configurar iptables correctamente

Finalmente, una buena idea sería configurar correctamente el firewall de Linux, iptables, que nada tiene que ver con el fichero de configuración sshd_config. Con iptables, podríamos por ejemplo únicamente aceptar peticiones al puerto definido para el SSH desde las IPs públicas de confianza que nosotros queramos. Más info sobre cómo hacer esto, aquí.

 

Fuentes: http://fedorasolved.org/post-install-solutions/securing-ssh

http://www.linuxtotal.com.mx/index.php?cont=info_seyre_004

http://wiki.centos.org/HowTos/Network/SecuringSSH

http://resin.csoft.net/cgi-bin/man.cgi?section=5&topic=sshd_config

 

 
Flickr! Foto por @boetter