Seguridad · 6 min read · Dec 03, 2025
Prevención de Ataques de Fuerza Bruta Con Fail2ban En Mandriva 2008.1
Prevención de Ataques de Fuerza Bruta Con Fail2ban En Mandriva 2008.1
Versión 1.0
Autor: Falko Timme
En este artículo mostraré cómo instalar y configurar fail2ban en un sistema Mandriva 2008.1. Fail2ban es una herramienta que observa los intentos de inicio de sesión en varios servicios, por ejemplo, SSH, FTP, SMTP, Apache, etc., y si encuentra intentos de inicio de sesión fallidos una y otra vez desde la misma dirección IP o host, fail2ban detiene los intentos de inicio de sesión posteriores desde esa dirección IP/host bloqueándola con una regla de firewall iptables.
¡Este documento se proporciona sin garantía de ningún tipo! Quiero decir que esta no es la única forma de configurar un sistema así. Hay muchas maneras de lograr este objetivo, pero este es el camino que elijo. No emito ninguna garantía de que esto funcione para ti!
1 Nota Preliminar
Fail2ban es similar a DenyHosts, que cubrí en este tutorial: https://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts, pero a diferencia de DenyHosts, que se centra en SSH, fail2ban se puede configurar para monitorear cualquier servicio que escriba intentos de inicio de sesión en un archivo de registro, y en lugar de usar solo /etc/hosts.deny para bloquear direcciones IP/hosts, fail2ban puede usar iptables y /etc/hosts.deny.
En este ejemplo, configuraré fail2ban para monitorear los intentos de inicio de sesión en el servidor SSH, el servidor Proftpd, los intentos de inicio de sesión en sitios web protegidos por .htaccess/.htpasswd, a Courier POP3 y Courier IMAP, y a SASL (para enviar correos electrónicos). Instalaré el paquete fail2ban que está disponible para Mandriva 2008.1. Viene con una configuración predeterminada, pero desafortunadamente esa configuración no funciona del todo para la mayoría de los servicios mencionados anteriormente. Por lo tanto, crearé una configuración personalizada de fail2ban que he probado y que funciona para mí.
2 Instalando fail2ban
Antes de instalar cualquier paquete, debemos habilitar los repositorios main, main_updates, contrib y contrib_updates. Ve a http://easyurpmi.zarb.org/ - debería darte los comandos que necesitas ejecutar para habilitar estos repositorios. En mi caso, ejecuté
urpmi.addmedia contrib ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/contrib/release with media_info/hdlist.czurpmi.addmedia --update contrib_updates ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/contrib/updates with media_info/hdlist.czurpmi.addmedia main ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/main/release with media_info/hdlist.czurpmi.addmedia --update main_updates ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/main/updates with media_info/hdlist.czFail2ban se puede instalar de la siguiente manera:
urpmi fail2banLuego iniciamos fail2ban:
/etc/init.d/fail2ban startEncontrarás todos los archivos de configuración de fail2ban en el directorio /etc/fail2ban.
3 Configurando fail2ban
El comportamiento predeterminado de fail2ban se configura en el archivo /etc/fail2ban/jail.conf. Échale un vistazo, no es difícil de entender. Hay una sección [DEFAULT] que se aplica a todas las demás secciones a menos que las opciones predeterminadas sean anuladas en las otras secciones.
Explico algunas de las opciones de configuración aquí:
- ignoreip: Esta es una lista separada por espacios de direcciones IP que no pueden ser bloqueadas por fail2ban. Por ejemplo, si la computadora desde la que te conectas al servidor tiene una dirección IP estática, es posible que desees listarla aquí.
- bantime: Tiempo en segundos que un host está bloqueado si fue capturado por fail2ban (600 segundos = 10 minutos).
- maxretry: Máx. número de intentos de inicio de sesión fallidos antes de que un host sea bloqueado por fail2ban.
- filter: Se refiere al archivo de filtro apropiado en /etc/fail2ban/filter.d.
- action: Se refiere al archivo de acción apropiado en /etc/fail2ban/action.d.
- logpath: El archivo de registro que fail2ban verifica para intentos de inicio de sesión fallidos.
Así es como se ve mi archivo /etc/fail2ban/jail.conf:
vi /etc/fail2ban/jail.conf| # Archivo de configuración de Fail2Ban # # Autor: Cyril Jaquier # # $Revision: 617 $ # # El DEFAULT permite una definición global de las opciones. Pueden ser anuladas # en cada cárcel posteriormente. [DEFAULT] # "ignoreip" puede ser una dirección IP, una máscara CIDR o un host DNS. Fail2ban no # prohibirá un host que coincida con una dirección en esta lista. Se pueden definir # varias direcciones usando un separador de espacio. ignoreip = 127.0.0.1 192.168.0.99 # "bantime" es el número de segundos que un host está prohibido. bantime = 600 # Un host es prohibido si ha generado "maxretry" durante los últimos "findtime" # segundos. findtime = 600 # "maxretry" es el número de fallos antes de que un host sea prohibido. maxretry = 3 # "backend" especifica el backend utilizado para obtener modificaciones de archivos. Las opciones # disponibles son "gamin", "polling" y "auto". Esta opción también se puede anular en # cada cárcel (usa "gamin" para una cárcel y "polling" para otra). # # gamin: requiere que Gamin (un monitor de alteración de archivos) esté instalado. Si Gamin # no está instalado, Fail2ban usará polling. # polling: usa un algoritmo de polling que no requiere bibliotecas externas. # auto: elegirá Gamin si está disponible y polling de lo contrario. backend = auto # Esta cárcel corresponde a la configuración estándar en Fail2ban 0.6. # La acción mail-whois envía una notificación por correo electrónico con una solicitud whois # en el cuerpo. [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, [email protected], [email protected]] logpath = /var/log/auth.log maxretry = 5 [proftpd-iptables] enabled = true filter = proftpd action = iptables[name=ProFTPD, port=ftp, protocol=tcp] sendmail-whois[name=ProFTPD, [email protected]] logpath = /var/log/proftpd/proftpd.log maxretry = 6 [sasl-iptables] enabled = true filter = sasl backend = polling action = iptables[name=sasl, port=smtp, protocol=tcp] sendmail-whois[name=sasl, [email protected]] logpath = /var/log/mail/info.log [apache-tcpwrapper] enabled = true filter = apache-auth action = hostsdeny logpath = /var/log/httpd/*error_log maxretry = 6 [postfix-tcpwrapper] enabled = true filter = postfix action = hostsdeny sendmail[name=Postfix, [email protected]] logpath = /var/log/mail/info.log bantime = 300 [courierpop3] enabled = true port = pop3 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail/info.log maxretry = 5 [courierimap] enabled = true port = imap2 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail/info.log maxretry = 5 [ssh-tcpwrapper] enabled = false filter = sshd action = hostsdeny sendmail-whois[name=SSH, [email protected]] ignoreregex = for myuser from logpath = /var/log/auth.log [vsftpd-notification] enabled = false filter = vsftpd action = sendmail-whois[name=VSFTPD, [email protected]] logpath = /var/log/vsftpd.log maxretry = 5 bantime = 1800 [vsftpd-iptables] enabled = false filter = vsftpd action = iptables[name=VSFTPD, port=ftp, protocol=tcp] sendmail-whois[name=VSFTPD, [email protected]] logpath = /var/log/vsftpd.log maxretry = 5 bantime = 1800 [apache-badbots] enabled = false filter = apache-badbots action = iptables-multiport[name=BadBots, port="http,https"] sendmail-buffered[name=BadBots, lines=5, [email protected]] logpath = /var/www/*/logs/access_log bantime = 172800 maxretry = 1 [apache-shorewall] enabled = false filter = apache-noscript action = shorewall sendmail[name=Postfix, [email protected]] logpath = /var/log/apache2/error_log [ssh-ipfw] enabled = false filter = sshd action = ipfw[localhost=192.168.0.1] sendmail-whois[name="SSH,IPFW", [email protected]] logpath = /var/log/auth.log ignoreip = 168.192.0.1 [named-refused-udp] enabled = false filter = named-refused action = iptables-multiport[name=Named, port="domain,953", protocol=udp] sendmail-whois[name=Named, [email protected]] logpath = /var/log/named/security.log ignoreip = 168.192.0.1 [named-refused-tcp] enabled = false filter = named-refused action = iptables-multiport[name=Named, port="domain,953", protocol=tcp] sendmail-whois[name=Named, [email protected]] logpath = /var/log/named/security.log ignoreip = 168.192.0.1 |
Mi computadora cliente tiene la dirección IP estática 192.168.0.99, y como no quiero ser bloqueado, la he agregado a la lista ignoreip.
Quiero controlar los intentos de inicio de sesión en SSH, Apache, Proftpd, Courier-POP3, Courier-IMAP y Sasl, así que he configurado enabled como true para estos servicios y como false para todos los demás servicios. Ten en cuenta que algunos servicios, como SSH, pueden ser bloqueados ya sea por iptables o por TCPWrappers (/etc/hosts.deny). Decide por ti mismo qué método prefieres.
Asegúrate de reemplazar la dirección de correo electrónico [email protected] con tu propia dirección de correo electrónico para que te notifiquen cuando alguien sea bloqueado por fail2ban.
Si comparas el archivo con el /etc/fail2ban/jail.conf predeterminado, también notarás que he cambiado algunos archivos de registro porque los archivos de registro en el /etc/fail2ban/jail.conf predeterminado no son correctos para Mandriva 2008.1.
Cada vez que modificamos la configuración de fail2ban, debemos reiniciar fail2ban, así que esto es lo que hacemos ahora:
/etc/init.d/fail2ban restartEso es todo. Fail2ban registra en /var/log/fail2ban.log, así que puedes verificar ese archivo para averiguar si/qué hosts fueron bloqueados. Si un host fue bloqueado por fail2ban, se verá así:
2008-08-12 17:49:09,466 fail2ban.actions: WARNING [apache-tcpwrapper] Ban 1.2.3.4
2008-08-12 18:08:33,213 fail2ban.actions: WARNING [sasl-iptables] Ban 1.2.3.4
2008-08-12 18:26:37,769 fail2ban.actions: WARNING [courierlogin] Ban 1.2.3.4
2008-08-12 18:39:06,765 fail2ban.actions: WARNING [courierimap] Ban 1.2.3.4También puedes verificar tu firewall para ver si hay hosts actualmente bloqueados. Simplemente ejecuta
iptables -LPara servicios que utilizan TCPWrappers para bloquear hosts, echa un vistazo a /etc/hosts.deny.
Enlaces
- Fail2ban: http://www.fail2ban.org
- Mandriva: http://www.mandriva.com
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.