Acerca de fail2ban (bloqueo proactivo de conexiones no deseadas) ...

Imagen de deathUser

Tema: 

Algunas veces había mencionado fail2ban como una herramienta de seguridad pro-activa, la había implementado hace bastante tiempo y decidí implementarla recientemente en un servidor que quedó fuera de la protección del firewall por un tema de infraestructura, así que activé el firewall que trae CentOS bloqueé todo y permití ssh y pues al momento vi cientos de requests inválidos de login con un montón de usuarios, por mencionar algunos: root, admin, administrator, oracle, ftp y un gran etc ...

Estuve indeciso entre algunas cosas, cambiar el puerto del ssh, activar autenticación con certificados, activar el port knocking, una combinación de todos ellos o activar una herramienta de seguridad pro-activa como fail2ban, bueno, algunos factores pesaron a la hora de la decisión de solamente instalar fail2ban y no una combinación de todas las opciones :D, entre ellas pereza :D ...

Bueno, lo primero fue instalarlo, como era en CentOS fue tan fácil como:

yum install fail2ban

Claro que hay que tener en cuenta que tenía instalado el REPO rpmforge cuyas instrucciones para instalarlo lo pueden encontrar en el COMO de EPE

Una vez instalado hay que configurarlo, la verdad que no hay mucho que configurar, el nivel de LOG, el archivo de log, en el archivo de configuración: /etc/fail2ban/fail2ban.conf

Luego activar que es lo que quieres controlar en el archivo: /etc/fail2ban/jail.conf

#Las IPs que no quieres bloquear, tu red interna por ejemplo :)
ignoreip = 127.0.0.1 192.168.0.0/24

# el tiempo de bloqueo en segundos.
bantime = 600

# el tiempo en segundos entre intentos
findtime = 600

# el máximo número de intentos
maxretry = 3

# el servicio a vigilar
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=death.user@midominio.com, sender=fail2ban@midominio.com]
logpath = /var/log/secure
maxretry = 2

En la parte del servicio tuve que hacer un par de cambios:
enabled = true que por default viene en false
obviamente los e-mail de la acción sendmail-whois (ya les contaré que es esto de las acciones)
logpath = /var/log/secure que por default viene /var/log/auth.log
maxretry = 2 que para mi caso es lo que quería.

Iniciar el servicio y listo...

service fail2ban start

Lo de las acciones es interesante ya que son configurables en archivos, por ejemplo la acción: sendmail-whois tiene un archivo de configuración: /etc/fail2ban/action.d/sendmail-whois.conf
En el cual tenemos un bloque por ejemplo:

actionban = printf %%b "Subject: [Fail2Ban] : banned
From: Fail2Ban <>
To: \n
Hi,\n
The IP has just been banned by Fail2Ban after
attempts against .\n\n
Here are more information about :\n
`/usr/bin/whois `\n
Regards,\n
Fail2Ban" | /usr/sbin/sendmail -f

Este bloque ejecuta el comando reemplazando los parámetros de la acción como < sender >, < dest >, y demás parámetros accesibles al fail2ban, un e-mail de un bloqueo luce algo como:

[quote]Hi,

The IP 210.143.109.72 has just been banned by Fail2Ban after
2 attempts against SSH.

Here are more information about 210.143.109.72:

[Querying whois.nic.ad.jp]
[whois.nic.ad.jp]
[ JPNIC database provides information regarding IP address and ASN. Its use ]
[ is restricted to network administration purposes. For further information, ]
[ use 'whois -h whois.nic.ad.jp help'. To only display English output, ]
[ add '/e' at the end of command, e.g. 'whois -h whois.nic.ad.jp xxx/e'. ]

Network Information:
a. [Network Number] 210.143.109.0/24
b. [Network Name] PROX
g. [Organization] Prox System Design Inc.
m. [Administrative Contact] TN6639JP
n. [Technical Contact] TN6639JP
p. [Nameserver] dns1.ixent.ne.jp
p. [Nameserver] dns2.ixent.ne.jp
[Assigned Date] 2001/10/16
[Return Date]
[Last Update] 2008/06/30 10:44:06(JST)

Less Specific Info.
----------
PROX SYSTEM DESIGN INC.
[Allocation] 210.143.108.0/22

More Specific Info.
----------
No match!!

Regards,

Fail2Ban[/quote]

Se me hace interesante, no le había parado mucha bola al asunto de las acciones, se ve que hay bastante poder ahí, así como también en los filtros que también son configurables usando expresiones regulares ;)

A mi me ha funcionado, espero le sea útil a alguien más ...

bye
;)

Comentarios

Se agradece el aporte broder,

Imagen de damage

Se agradece el aporte broder, implemantado y funcando en uno de los server´s anda bacan, ya hice las pruebas y me notifica toda conexión fallida al ssh, veo que incluso envia un email cuando se reinicia el servicio :)

Saludos.

el otro dia me invitaron a una conferencia de seguridad

Imagen de juandarcy2000

la empresa CLARO, invito a varias empresas y una de esas empresas me invito a estar en esa conferencia donde explicaban sobre fraude telefonico, es increible como se roban datos y principalmente por falta de conocimiento de las plataformas adquiridas hablaron sobre, siemens, alcatel, avaya y otras marcas famosas principalmente hablaron sobre claves de fabrica que al adquirirlas no se les informaba a los del departamento tecnico que esas centrales traen claves de acceso de fabrica y faciles de conseguir en la internet, las empresas compran las centrales las configuran para que funcionen de acuerdo a las necesidades de la empresa pero no se percatan que las claves por defecto tanto en el Disa ivr y mensajeria traen claves por defecto y pueden permitir a los atacantes realizar llamadas o conseguir acceso a las troncales, al final de la conferencia el especialista ataco fuertemente a las plataformas linux me disgusto tanto la ignorancia del conferencista al decir que asterisk era super inseguro por ser libre y de codigo abierto y que todos los clientes que adquirian este tipo de centrales los habian atacado, y los hackeaban yo decidi intervenir y aclararles a todos que eso pasa porque no es solo instalar y encender hay que configurar seguridad cambiar claves por defecto desde mysql, AMP, cyrus-imap, ssh, elastix, agregar seguridad adicional con iptables y mecanismos como fail2ban, si creian que solo era encender y dejar que funcione estaban equivocados, la empresa a la que apoyo son especialistas en Elastix, han desarrollado varias aplicaciones para elastix y me sorprendio que dijeran eso aun no nos han atacado un servidor ya que todos quedan los servidores se les implementa fail2ban y firewall iptables con claves nuevas al ser opensource es mas facil encontrar documentacion de seguridad que venir y comprar una central alcatel que son propietarias y simplemente dejan morir al cliente con su tecnologia no digo que sea mala pero yo personalmente considero que falta mucha capacitacion y documentacion para poder decir que son seguras. ademas son tecnologias cerradas y solo las empresas fabricantes tienen las claves maestras a mi criterio es jugar a la ruleta rusa compran te vendan los ojos y a esperar que pase algo malo y darse cuenta que te estafaron por culpa del fabricante.

Muy buen aporte, era lo que

Imagen de nino1511

Muy buen aporte, era lo que estaba buscando, no sabia de fail2ban.

Una pregunta, fail2ban se puede usar para bloquear accesos de usuarios desconocidos que atacan a dovecot, sendmail, etc?, si es así podrían colocar un ejemplo.

Saludos

Vamos Ecuador, si se puede

Pues esa es justamente la

Imagen de deathUser

Pues esa es justamente la idea de fail2ban, el realizar un bloqueo proactivo de las conexiones basado en el análisis de los logs de acceso de las distintas aplicaciones, incluso de aplicaciones que no se encuentren en los ejemplos, en mi publicación el ejemplo se lo hace con el servicio ssh, sin embargo como te menciona falcom, hay ejemplos de los servicios más comunes en la documentación y entre los scripts que se distribuyen con la aplicación.

Incluso podrías escribir reglas para bloquear los accesos no deseados a, por ejemplo, una aplicación web que escriba en un archivo de log, con su propio formato los intentos errados de acceso al sistema.

Has la prueba y si tienes problemas posteas en el foro que de seguro alguien te ayudará en tus inquietudes y si encuentras algo mejor o implementas reglas que no se encuentran implementadas y te parece que le pueden servir a alguien más, te invito a contribuir y así hacer crecer a la comunidad.

bye
;)

Páginas