Instalar y configurar fail2ban

fail2ban es un sistema de prevención de intrusiones basado en patrones. Durante mucho tiempo he usado DenyHosts, pero fail2ban me parece mucho mas flexible. Vamos a ver como instalarlo y configurar algunos filtros que nos vienen por defecto:

Se puede descargar el código fuente o simplemente mediante el gestor de paquetes apt-get:

# apt-get install fail2ban

Para configurar fail2ban deberemos tener en cuenta los siguientes ficheros:

Mediante /etc/fail2ban/fail2ban.conf se define una configuración muy genérica:

  • loglevel: Nivel de detalle que queda guardado en los logs
  • logtarget: Dónde se guarda el log. Sus posibles valores són:
    • STDOUT
    • STDERR
    • SYSLOG
    • Nombre de fichero
  • socket: socket para comunicar el cliente (fail2ban-client) con el daemon

Dentro de /etc/fail2ban/filter.d/ podemos encontrar varios patrones predefinidos que podemos usar:

# ls /etc/fail2ban/filter.d/
apache-auth.conf         apache-noscript.conf   courierlogin.conf    dovecot.conf
lighttpd-fastcgi.conf    php-url-fopen.conf     pure-ftpd.conf       sieve.conf
vpopmail.conf            wuftpd.conf            named-refused.conf   xinetd-fail.conf
apache-badbots.conf      apache-overflows.conf  couriersmtp.conf     exim.conf
postfix.conf             qmail.conf             sshd.conf            vsftpd.conf
apache-nohome.conf       common.conf            cyrus-imap.conf      gssftpd.conf
pam-generic.conf         proftpd.conf           sasl.conf            sshd-ddos.conf
webmin-auth.conf

Por otro lado dentro de /etc/fail2ban/action.d/ tenemos las acciones que podemos aplicar al encontrar los patrones en los logs:

# ls /etc/fail2ban/action.d/
complain.conf    ipfilter.conf            iptables.conf              iptables-new.conf
mail-whois.conf  sendmail-buffered.conf   sendmail-whois-lines.conf  dshield.conf
ipfw.conf        iptables-multiport.conf  mail-buffered.conf        mail-whois-lines.conf
sendmail.conf    shorewall.conf           hostsdeny.conf            iptables-allports.conf
iptables-multiport-log.conf   mail.conf   mynetwatchman.conf        sendmail-whois.conf

Para configurar los patrones a buscar y que acción aplicar tenemos el fichero/etc/fail2ban/jail.conf. En dicho fichero podemos encontrar en la sección DEFAULTlas siguientes opciones:

  • ignoreip: Listado de IPs separadas por espacios que no queremos que seanbaneadas
  • backend: Indicamos el método por el que se leerán los logs. Las opciones són:
    • gamin: Mediante Gamin controla los cambios en los ficheros
    • polling: Comprueba periódicamente los cambios en los ficheros, en este caso no es necesario tener librerías complementarias
    • auto: Escoge por defecto gamin y si no puede usarlo para a polling
  • findtime: Tiempo durante el cual se consideran los reintentos
  • maxretry: Número máximo de reintentos fallidos dentro del findtime antes de ser baneado

A continuación de estos valors por defecto debemos añadir que quetemos monitorizar.

Por ejemplo, para proteger el daemon SSH mediante iptables y que nos avise por mail con el whois de la IP deberemos añadir lo siguiente en el fichero/etc/fail2ban/jail.conf:

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=22, protocol=tcp]
   sendmail-whois[name=SSH, dest=admin@mydomain.com, sender=fail2ban@mydomain.com]
logpath  = /var/log/secure
maxretry = 5

Primero de todo, entre corchetes, definimos el nombre que le queremos dar a la combinación filtro-acción. A continuación las opciones són:

  • enabled: Podemos activar y deactivar las reglas mediante esta opción. Para habilitar el monitor usamos un 1 y un 0 para deshabilitarlo
  • filter: Filtro o conjunto de filtros presentes dentro de /etc/fail2ban/filter.d/ que buscaran patrones dentro del fichero de log
  • actionAcción o conjunto de acciones a realizar en el caso que se cumplan las condiciones
  • logpath: Fichero contra el cual se buscan los patrones

Además podemos sobrescribir las opciones generales, por ejemplo cambiar elmaxretry por cualquier otro valor.

En el caso del ejemplo, se buscan intentos fallidos de login por SSH y las acciones que se producen són:

  • iptables: Con las opciones “[name=SSH, port=22, protocol=tcp]” indicamos que cree una chain con el nombre SSH (fail2ban-SSH) que bloquee la IP que ha fallado por el puerto 22 protocolo TCP
  • correo: Con las opciones “[name=SSH, dest=jordi@systemadmin.es david@systemadmin.es, sender=fail2ban@systemadmin.es]” indicamos el nombre identificativo del servicio (SSH), la o las direcciones destino y la dirección que queremos que aparezca como originante

En el caso que se produzca un baneo, se añade la IP en la chain bloqueando según los parámetros y nos avisará mediante un correo como el siguiente:

Hi,

The IP 1.2.3.4 has just been banned by Fail2Ban after
5 attempts against SSH.

Here are more information about 1.2.3.4:

[Querying whois.arin.net]
[Redirected to whois.apnic.net]
[Querying whois.apnic.net]
[whois.apnic.net]
% [whois.apnic.net node-3]
% Whois data copyright terms    http://www.apnic.net/db/dbcopyright.html

inetnum:        1.2.3.0 - 1.2.3.255
netname:        Debogon-prefix
descr:          APNIC Debogon Project
descr:          APNIC Pty Ltd
country:        AU
admin-c:        GM85-AP
tech-c:         GM85-AP
mnt-by:         APNIC-HM
mnt-routes:     MAINT-AU-APNIC-GM85-AP
status:         ASSIGNED PORTABLE
changed:        hm-changed@apnic.net 20100122
changed:        hm-changed@apnic.net 20100203
source:         APNIC

route:          1.2.3.0/24
descr:          APNIC debogon project testing
origin:         AS9838
country:        AU
mnt-by:         MAINT-AU-APNIC-GM85-AP
changed:        hm-changed@apnic.net 20100203
source:         APNIC

person:         George Michaelson
address:        PO Box 2131
address:        Milton,  QLD 4064
address:        Australia
country:        AU
phone:          +61-7-3858-3100
fax-no:         +61-7-3858-3199
e-mail:         ggm@apnic.net
nic-hdl:        GM85-AP
mnt-by:         MAINT-AU-APNIC-GM85-AP
changed:        ggm@apnic.net 20010306
changed:        ggm@apnic.net 20010720
source:         APNIC
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s