Protecci?n contra ataques de fuerza bruta mediante fail2ban en Debian Jessie
Fail2ban ( http://www.fail2ban.org/ ) es una aplicaci?n que se usa para bloquear conexiones remotas despu?s de una cantidad de intentos fallidos. El funcionamiento de Fail2ban es muy simple, comprueba archivos de log y si detecta registros de intentos fallidos, ejecuta autom?ticamente los comandos de IPTables para bloquear al host que esta intentando realizar la conexi?n. Fail2ban soporta muchos servicios como lo son ftp, apache, imap, pop, etc; incluso tambi?n aplicaciones web.
Para este caso documentar? el t?pico escenario, donde tenemos un servidor Linux conectado a internet permanente y por cuestiones administrativas tenemos el servicio SSH abierto a cualquier IP (!!!). Un servidor de este tipo es muy atacado por robots o creckers con t?cnicas de fuerza bruta, usando sencillamente un script que mediante un diccionario de claves o generador de palabras intenta frecuentemente autenticarse como usuario root.
Por ejemplo viendo los logs de un servidor personal que mont? hace poco, v? como tengo miles de intentos de login remoto. Por ejemplo viendo los ?ltimos intentos de login mediante el comando:
# tail /var/log/auth.log
Veo como un hijo de puta con la direcci?n IP 116.31.116.28 se est? intentando conectar como root. Por los tiempos de diferencia entre cada conexi?n de pocos segundos seguramente es un robot. As? pues, a instalar fail2ban!.
Instalaci?n y configuraci?n
Los siguiente comando se ejecutan como usuario root en el servidor. Si usa sudo antepongalo a los comandos.
Instalamos el paquete est?ndar de Debian Jessie estable:
# apt-get install fail2ban
Una vez instalado copiamos el archivo de configuraci?n para crear una configuraci?n local:
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ahora editamos el archivo recientemente copiado /etc/fail2ban/jail.local, el archivo es extenso y viene casi listo y documentado. Un par?metro t?pico por ejemplo para cambiar es ?bantime?, que es el tiempo que el host remoto tardar? bloqueado hasta que nuevamente fail2ban permita el intento de conexi?n, en mi caso lo edit? para 1200 segundos, es decir, 20 minutos:
bantime = 1200
Por otro lado, confirm? que el servicio SSH este activado y en el caso de esta versi?n de Jessie viene activado por default la supervisi?n:
[ssh]
enabled = true
Si hicimos alg?n cambio, se puede reiniciar fail2ban mediante el comando:
# service fail2ban restart
Esto es todo, failban inciar? a supervisar y bloquear los servicios que hemos definido. Por ejemplo en la siguiente captura realic? tres intentos intencionalmente fallidos al servidor y vemos como en el tercer intento me bloquea:
Ante este caso solo queda esperar el ?bantime? para poder volver intentar a conectarme. Como vemos muy facilmente se puede aumentar la seguridad de nuestros servidores.
??
?Dudas, comentarios, sugerencias?
Sigueme en twitter?@josecely
Leave a comment