fail2ban

Fail2Ban
Es un analizador de logs que busca intentos fallidos de registro y bloquea las IP’s de donde provienen estos intentos. Se distribuye bajo la licencia GNU y típicamente funciona en todos los sistemas que tengan interfaz con un sistema de control de ataques o un firewall local. Fail2Ban tiene una gran configuración pudiendo, además, crear reglas para programas propios o de terceros.

DenyHOSTS
Es una herramienta de seguridad escrito en Python que monitorea los registros del servidor de acceso para prevenir ataques de fuerza bruta en un servidor. El programa funciona mediante la prohibición de direcciones IP que superan un determinado número de intentos de conexión fallidos.

Estas aplicaciones para Linux DenyHosts y Fail2ban, Ambas pueden usarse por separado o de forma conjunta. En nuestro caso las tengo a las dos trabajando.

La instalación y configuración de cada una ellas depende de la distribución que usen ustedes, este post esta orientado hacia CentOS 6.3, aunque las diferencias entre las demás distribuciones no son muy marcadas.

Instalación y Configuración de Fail2Ban

Instalación

Para la instalación basta con un yum install fail2ban

Si no les aparece el paquete, debemos agregar el repositorio necesario:

rpm -Uvh http://mirror.metrocast.net/fedora/epel/6/i386/epel-release-6-7.noarch.rpm

ya con esto debe empezar a instalar la aplicación junto con sus dependencias.

Ahora hay que configurar Fail2Ban para que analice los logs que deseamos y bloquee IP’s, enviando notificaciones vía e-mail. Para ello se modificara el archivo jail.conf que encontramos en /etc/fail2ban

cd /etc/fail2ban
nano jail.conf

En este archivo se debe realizar lo siguiente:

Modificar es el valor bantime, este valor determina el tiempo en segundos que quedará bloqueada la IP del atacante, por defecto el valor viene en 600 segundos.
Buscar el valor maxretry que serán el número de veces que una IP puede tener una autenticación fallida antes de ser bloqueada.
Agregar nuestras IP’s en el parámetro ignoreip aquí la aplicación pasara por alto nuestras IP autenticadas en dicho parámetro.

[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
# “bantime” is the number of seconds that a host is banned.
bantime = 600
# 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

Un ejemplo de como puede quedar es de la siguiente manera:

ignoreip = 127.0.0.1 190.25.242.75 192.168.1.0/24
bantime = 800
maxretry = 2

Configurar Fail2Ban y SSH

Para que busque intentos fallidos de logueo por SSH modificar el archivo hasta que sea similar a las siguientes líneas:

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
sendmail-whois[name=SSH, dest=FredySnake@outlook.com, sender=fail2ban@localhost]
logpath = /var/log/secure # Este es el log que analizará fail2ban
maxretry = 3 # cualquier IP que tenga tres o más intentos erroneos se bloqueara.
bantime = 86400 # Tiempo de baneo de 24 horas expresado en segundos

Si modifico el puerto donde escucha del SSH, deberá modificar el parámetro port.

Para que Envie mails editamos la linea.

action = %(action_)s

a

action = %(action_mw)s

Pero se debe de tener instalado el paquete sendmail en nuestro sistema.

apt-get install sendmail

Reiniciamos el servicio y listo.

service fail2ban restart

Esta Aplicación no solo nos funciona para accesos no autorizados en SSH, también para apache, para que lea los registros de Asterisk, entre otros.

Instalación y Configuración de DenyHOSTS


Su funcionamiento se basa en el uso del archivo /etc/hosts.deny, es decir, en bloquear las direcciones de los hosts “atacantes” a nivel de sistema, creando una lista de hosts denegados.

La instalación desde los repositorios la podemos obtener con el siguiente comando:

yum install denyhosts

El archivo de configuración se encuentra en /etc/denyhosts.conf

Antes de seguir, ya que como humanos que somos podemos, equivocarnos y hacer el típico “Capa 8” al acceder alguno de los servicios y bloquearnos a nosotros mismos. Para evitar eso editamos el archivo /etc/hosts.allow y añadimos las IP de las máquinas desde las cuales no queremos que se nos pongan restricciones ante un fallo de acceso.

Modificación Archivo denyhosts.conf

Para no ir tan al fondo en configuraciones en este archivo solo vamos a editar y quitar los comentarios de algunos parámetros, estos son:

SYNC_SERVER = http://xmlrpc.denyhosts.net:9911
SYNC_INTERVAL = 1h
SYNC_UPLOAD = yes
SYNC_DOWNLOAD = yes
SYNC_DOWNLOAD_THRESHOLD = 3
SYNC_DOWNLOAD_RESILIENCY = 5h

Así dejaremos una configuración prácticamente por defecto, pero con una gran seguridad frente ataques por SSH

nano /etc/hosts.allow

Ejemplo:

sshd: 127.0.0.1
sshd: 192.168.1.10
sshd: 192.168.0.*

Después de esto, reiniciamos el servicio: /etc/init.d/denyhosts restart

Con esto lo que estamos realizando es dar permiso a una ip, un rango de IP y por supuesto a nuestra interfaz de loopback.

Con ciertas opciones y ajustes también haremos que tras el período de tiempo que indiquemos en la configuración de DenyHOSTS se vayan limpiando las direcciones almacenadas, y se vayan actualizando con otras listas hechas por otros si así lo indicamos dando permiso para acceder al servidor de DenyHOSTS.

Para que se purguen las direcciones almacenadas cada cierto tiempo, según se haya configurado, se debe ejecutar el demonio con el parámetro –purge:

/etc/init.d/denyhosts start –purge

Además de esto debemos incluirlo al inicio del sistema, en el arranque esto con la siguiente orden:

chkconfig denyhosts on

Estadísticas de DenyHOSTS: http://stats.denyhosts.net/stats.html