viernes, 12 de julio de 2013

Instalación de fail2ban en Opensuse


Que tal amigos, el post de hoy es para mostrarles como se instala el fail2ban junto con una configuración básica.

No está demás indicarles que este manual está probado sobre Centos 6.4 x86_64.

¿ Qué es fail2ban ?

Es un servicio que está permanentemente monitoreando los logs, si encuentra una coincidencia de frases o palabras almacenadas en su diccionario; como por ejemplo failed password; agrega una regla en el firewall que bloquea la ip de origen.  Claro está que va a depender de mucho la configuración que nosotros hagamos para que el realice la acción al momento de encontrar la coincidencia.


En este caso voy a configurar fail2ban en un front firewall para que si encuentra mas de 3 intentos de conexión ssh con clave incorrecta bloquee la dirección IP por 1 hora.

Manos a la obra.

1.- Añadimos un repositorio al centos donde están las dependencias necesarias para poderlo instalar.


2.- Instalamos el fail2ban.


Ya con eso habremos terminado de instalar el fail2ban.

Configurando fail2ban

3.- Ingresamos a la carpeta de configuración y respaldamos el archivo .conf original.


4.- Editamos el archivo de configuración.
     # vi jail.conf

5.- Voy a copiar mi archivo de configuración para comentar los parámetros más importantes.

# Fail2Ban jail specifications file
#
# Comments: use '#' for comment lines and ';' (following a space) for inline comments
#
# Changes:  in most of the cases you should not modify this
#           file, but provide customizations in jail.local file, e.g.:
#
# [DEFAULT]
# bantime = 3600
#
# [ssh-iptables]
# enabled = true
#

# The DEFAULT allows a global definition of the options. They can be overridden
# in each jail afterwards.

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling" and "auto".
# This option can be overridden in each jail as well.
#
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
#              If pyinotify is not installed, Fail2ban will use auto.
# gamin:     requires Gamin (a file alteration monitor) to be installed.
#              If Gamin is not installed, Fail2ban will use auto.
# polling:   uses a polling algorithm which does not require external libraries.
# auto:      will try to use the following backends, in order:
#              pyinotify, gamin, polling.
backend = auto

# "usedns" specifies if jails should trust hostnames in logs,
#   warn when DNS lookups are performed, or ignore all hostnames in logs
#
# yes:   if a hostname is encountered, a DNS lookup will be performed.
# warn:  if a hostname is encountered, a DNS lookup will be performed,
#        but it will be logged as a warning.
# no:    if a hostname is encountered, will not be used for banning,
#        but it will be logged as info.
usedns = warn


# This jail corresponds to the standard configuration in Fail2ban 0.6.
# The mail-whois action send a notification e-mail with a whois request
# in the body.

[ssh-iptables]

enabled  = true
filter   = sshd
#action   = iptables[name=SSH, port=ssh, protocol=tcp] <------ Esta es la línea original  <------
action   = iptables-allports[name=SSH, protocol=all]
           sendmail-whois[name=SSH-Firewall, dest=micorreo@midominio.com, sender=fail2ban@midominio.com]
logpath  = /var/log/secure
maxretry = 3

[proftpd-iptables]

enabled  = false
.....
....
....
....

ignoreip hace referencia al host que no le va a prestar atención si genera el log, normalmente es el host local y la ip del administrador si es que quieren.

bantime indica el tiempo que va a estar bloqueada la ip de origen, en este caso 1 hora.  El tiempo se indica en segundos.

findtime es el periodo de tiempo que si encuentra las coincidencias la cantidad de veces requerida lo bloquea.  Quiere decir que si en la configuración yo especifico que: si en un minuto hay tres registros en log con password failed lo marque como una coincidencia.
 
maxretry le especificamos cuantas veces debe de haberse mostrado el mensaje del log para que lo considere como coincidencia.

action en este parámetro es donde le decimos que hacer al fail2ban una ves que encontró la coincidencia la veces requeridas en el tiempo estipulado.
  • iptables-allports es la regla que se va aplicar.
  • sendmail-whois me sirve para que me envíe un correo electrónico avisándome que se aplico la regla.
logpath es la ruta del log que va a monitorear.

Ahora solo falta mandar a reiniciar el servicio y nuestro fail2ban empezará a funcionar.

No se olviden de activar el servicio para que se ejecute cada ves que se reinicie el servidor.


Espero les sirva.

Cualquier comentario es bien recibido en este blog o me envían un tweet a: @Danny_Obando.

Hasta mi próximo post.

No hay comentarios:

Publicar un comentario