Bloquear ataques de fuerza bruta al puerto SSH.
Los ataques de fuerza bruta conocidos como brute force attack, son la pesadilla de servidores y sitios web. Todos sufrimos en mayor o menor medida estos intentos de intrusión, y si hay algo goloso para un lamer es obtener acceso a un servidor vía SSH.
OJO!!!, no debemos confundir los ataques de fuerza bruta con los que intentan una denegación de servicio (DDos),son diferentes, el DDos nos inunda a peticiones hasta que cae el servicio, y el de fuerza bruta intenta averiguar nuestro password a base de probar y probar. Es recomendable usar contraseñas seguras, en un anterior articulo vimos un script bash generador de passwords.
Tal vez no seas consciente de la cantidad de intentos de intrusión que se producen al cabo del día, yo te aseguro que son muchos. Nosotros reportamos automáticamente cada intento de ataque o intrusión a la base de datos de Abuseipdb, no solo de sololinux, de todos nuestros servidores.
Brute Force SSH Abuseipdb
Bloquear ataques de fuerza bruta al puerto SSH
La tarea de bloquear ataques de fuerza bruta al puerto SSH es sencilla si hacemos uso de las reglas de iptables. Vamos a implantar unas reglas que obligaran a iptables o nftables a bloquear cualquier ip, que haya intentado acceder a nuestro sistema vía ssh en un periodo de tiempo definido; a nosotros nos gusta 3 intentos en un tiempo máximo de 30 segundos, pero tu puedes poner el que quieras, por ejemplo 5 intentos en un minuto (60 segundos).
Supongo que tienes el puerto ssh abierto?, si no es el 22 modifica las reglas.
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
Insertamos las tres reglas en nuestra terminal linux (una por una):
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 30 --hitcount 3 --rttl --name SSH -j LOG --log-prefix 'SSH-HIT-RATE: ' ' iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 30 --hitcount 3 --rttl --name SSH -j DROP
Opciones que puedes modificar:
- –dport: por defecto 22, puedes modificarlo.
- –seconds: tiempo definido en segundos.
- –hitcount: intentos de acceso máximos permitidos en el tiempo definido.
Si te quieres asegurar que las reglas se implantaron correctamente, puedes ejecutar el siguiente comando y revisar iptables o nftables.
iptables -L
Las nuevas reglas generaran registros fácilmente identificables, todos tienen el prefijo <SSH-HIT-RATE>.
Los podemos visualizar con el comando less:
less +F /var/log/messages
Canales de Telegram: Canal SoloLinux – Canal SoloWordpress
Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.
Buenas,
buen artículo! yo suelo usar DenyHosts o Fail2ban para automatizar esto y simplificar la gestión, aunque lo que has propuesto es mucho más limpio sin usar software de terceros.
Las herramientas que tu comentas lo que hacen es aplicar las reglas que te indico en el articulo. Son buenas aplicaciones (denihost un tanto obsoleta) pero aun así… lo bueno es conocer como trabajan realmente.
No existe esta ruta en mi server ubuntu
/var/log/messages
Es posible que los tengas en otra ruta, revisa /var/log/syslog