Volver a Ataque de fuerza bruta

Fail2Ban

Objectivo

Fail2Ban es una aplicación que analiza continuamente los ficheros log y bloquea las direcciones Internet de donde se hayan originado varias tentativas fallidas de acceso con contraseña inválida.

Fail2Ban es extremadamente eficaz en la prevención de ataques de fuerza bruta y ataques de negación de servicio (DoS).

Instalación

root@server:~# apt-get install fail2ban whois

Configuración

SugerenciaLa configuración que resulta de la instalación de fail2ban activa el puerto ssh. Sin embargo, es posible monitorizar y proteger otros puertos.

La documentación de fail2ban aconseja que toda la configuración se realice en archivos con la extensión .local. Estos pueden ser creados copiando el archivo de la configuración original, con la extensión .conf:

root@server:~# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Toda la configuración será efectuada, a partir de este momento, en el archivo /etc/fail2ban/jail.local.

En una primera etapa, definimos cuáles son las direcciones que no estarán sujetas a restricciones (la dirección local y la red local), por cuánto tiempo estarán bloqueadas las direcciones de donde provengan las amenazas (1800 segundos (30 minutos)) y después de cuántas tentativas (3 tentativas permitidas). Esta configuración debe realizarse en el archivo /etc/fail2ban/jail.local:

/etc/fail2ban/jail.local
# [...]

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.1.0/24
bantime  = 1800
maxretry = 3

# [...]

También se define la dirección e-mail que recibirá las alertas:

/etc/fail2ban/jail.local
# [...]

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

# [...]

Luego, debe configurarse la acción a realizar cuando se detecta un posible ataque. En este caso, la dirección IP del atacante es bloqueada y u e-mail es enviado al administrador del sistema.

/etc/fail2ban/jail.local
# [...]

#
# ACTIONS
#

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overriden globally or per
# section within jail.local file
banaction = iptables-multiport

# [...]

# Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g.  action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s

# [...]

Por último, se definen los parámetros del servicio que se pretende proteger. Para esto, se edita la sección JAILS del archivo /etc/fail2ban/jail.local:

/etc/fail2ban/jail.local
# [...]

#
# JAILS
#

# [...]

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 3

# [...]

Ahora debe reiniciarse el servicio fail2ban:

root@server:~# service fail2ban restart

Verificación

Durante cada (re)inicio del servicio fail2ban se envía un e-mail de notificación al administrador del sistema:

Subject: [Fail2Ban] ssh: started
Date: Wed, 15 May 2013 16:10:03 +0000
From: Fail2Ban <fail2ban@home.lan>
To: root@localhost

Hi,

The jail ssh has been started successfully.

Regards,

Fail2Ban

En de que sea necesaria una acción defensiva, el administrador también será notificado:

Subject: [Fail2Ban] ssh: banned 219.148.120.238
Date: Wed, 15 May 2013 17:15:59 +0000
From: Fail2Ban <fail2ban@home.lan>
To: root@localhost

Hi,

The IP 219.148.120.238 has just been banned by Fail2Ban after
3 attempts against ssh.

Here are more information about 219.148.120.238:

% [whois.apnic.net node-7]
% Whois data copyright terms    http://www.apnic.net/db/dbcopyright.html

inetnum:        219.148.0.0 - 219.148.159.255
netname:        CHINANET-HE
descr:          CHINANET hebei province network
descr:          China Telecom
descr:          No.31,jingrong street
descr:          Beijing 100032
country:        CN
admin-c:        CH93-AP
tech-c:         BR3-AP
status:         ALLOCATED NON-PORTABLE
changed:        ipadmin@north.cn.net 20060526
mnt-by:         MAINT-CHINANET
mnt-lower:      MAINT-CHINANET-HE
mnt-routes:     MAINT-CHINANET-HE
source:         APNIC

# [...]

Lines containing IP:219.148.120.238 in /var/log/auth.log

May 15 17:07:25 server sshd[27043]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.148.120.238  user=root
May 15 17:07:26 server sshd[27043]: Failed password for root from 219.148.120.238 port 59879 ssh2
May 15 17:07:29 server sshd[27046]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.148.120.238  user=root
May 15 17:07:31 server sshd[27046]: Failed password for root from 219.148.120.238 port 60898 ssh2
May 15 17:07:34 server sshd[27048]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219.148.120.238  user=root
May 15 17:07:36 server sshd[27048]: Failed password for root from 219.148.120.238 port 33737 ssh2

Regards,

Fail2Ban
SugerenciaEl paquete Fail2Ban puede proteger servidores e-mail, ftp, web, etc. Para esto debe editarse el archivo /etc/fail2ban/jail.local para incluir los servicios que se planee proteger.

Referencias