Jose Antonio Cely Saidiza

Antiguo y olvidado, Weblog personal

Protecci?n contra ataques de fuerza bruta mediante fail2ban en Debian Jessie

By Jose Antonio Cely Saidiza

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