tru3n0 >>> blog / 73 posts / categories / 68 comments / feed / comments feed

Evitar el ssh brute force

Uno de los principales problemas a los que se enfrentan los administradores que tienen máquinas conectadas directamente a internet es encontrarse a menudo con trazas de este tipo en el fichero auth.log

Sep 13 09:53:22 localhost sshd[22528]: (pam_unix) authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=77.23.4.12 user=root

Normalmente son intentos de fuerza bruta automatizados para obtener nuestra password de root. Si no queremos que este tipo de ataque consuma nuestro ancho de banda o peor aun, puedan averiguar nuestras claves, podemos utilizar alguna de las siguientes medidas:

1. Cambiar el puerto de escucha del servidor ssh, para ello modificamos el fichero /etc/ssh/sshd_config y cambiamos donde pone Port 22 por el puerto que queramos.

2. Deshabilitar el acceso root por ssh. Editamos el fichero /etc/ssh/sshd_config y cambiamos PermitRootLogin Yes por No.

3. Si tenemos instalado iptables podemos limitar el numero de conexiones por tiempo al servidor ssh. Por ejemplo podemos limitar a 6 intentos de conexion por minuto. Cosa que no nos afectara si conocemos la clave. Para ello ejecutamos:

iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH
iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 60 –hitcount 6 –rttl –name SSH -j DROP

4. Otra alternativa es utilizar el software portsentry, para quien no lo haya utilizado, es un demonio que escucha en los puertos que digamos y bloquea la ip del que intente conectarse a ese puerto. Si tenemos debian tecleamos:

apt-get install portsentry

Una vez instalado editamos el fichero /etc/portsentry/portsentry.conf y cambiamos el parámetro TCP_PORTS por:

TCP_PORTS=”22″

y comentamos la línea del párametro UDP_PORTS. En la sección Dropping Routes podemos decirle que añada una regla en el iptables para bloquear la ip del atacante, para ello descomentamos la siguiente línea y comentamos la que estaba antes ya que solo puede haber una variable KILL_ROUTE definida.

# iptables support for Linux
KILL_ROUTE=”/sbin/iptables -I INPUT -s $TARGET$ -j DROP”

Ahora reiniciamos el servicio con el comando

/etc/init.d/portsentry restart

A partir de ahora cada vez que alguien intente conectar al puerto 22 quedará registrado en el fichero syslog y su ip será bloqueada.

Espero que os resulte útil ;)

No comments

Leave a comment