Mantener seguros nuestros servidores es lo primordial, y más cuando hablamos de servidores de telefonía IP. En esta oportunidad vamos a configurar Fail2ban en un servidor CentOS 7 de 64 bits.

Fail2ban es una aplicación escrita en Python que previene conexiones no deseadas en nuestros servidores: penaliza o bloquea cualquier intento de conexión por fuerza bruta. Se distribuye bajo licencia GNU.

Vamos a instalar Fail2ban para luego configurarlo.

1. Descargar Fail2ban

cd /usr/src
wget https://github.com/fail2ban/fail2ban/archive/0.9.6.tar.gz

Descomprimimos el paquete:

tar -xf 0.9.6.tar.gz

Entramos en la carpeta creada:

cd fail2ban-0.9.6

Y comenzamos la instalación:

python setup.py install

2. Activar Fail2ban como servicio

cp files/fail2ban.service /usr/lib/systemd/system/
cp /usr/src/fail2ban-0.9.6/files/redhat-initd /etc/init.d/fail2ban
chkconfig --add fail2ban
chkconfig fail2ban on
cd /etc/fail2ban/filter.d
systemctl enable fail2ban
Created symlink from /etc/systemd/system/multi-user.target.wants/fail2ban.service to /usr/lib/systemd/system/fail2ban.service.

3. Configuración general de Fail2ban

cd /etc/fail2ban
nano jail.conf

Al final del archivo debemos copiar las siguientes líneas:

[asterisk-fail2ban]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
         sendmail-whois[name=ASTERISK, dest=root@localhost, sender=fail2ban@192.168.1.2]
logpath = /var/log/asterisk/security
maxretry = 5
bantime = 3600

En las líneas copiadas debemos cambiar root@localhost por el correo donde recibiremos las notificaciones de conexiones bloqueadas, y fail2ban@192.168.1.2 por la cuenta de correo que usaremos para enviar los emails (Fail2ban trabaja con Sendmail).

En maxretry y bantime podemos ajustar los valores a lo que creamos conveniente:

  • maxretry: cantidad de intentos fallidos que vamos a permitir.
  • bantime: tiempo, en segundos, durante el que se bloqueará la IP desde donde se realizaron los intentos.

4. Configurar los registros de Asterisk

Ahora debemos modificar el archivo de registro de Asterisk:

nano /etc/asterisk/logger.conf

Buscamos esta línea:

;security => security

Y la modificamos para que quede así:

security => security,notice

Guardamos el archivo y reiniciamos nuestro servicio Asterisk:

service asterisk restart

5. Ajustar iptables-common.conf

Por último modificamos este archivo:

nano +59 /etc/fail2ban/action.d/iptables-common.conf

Debemos modificar esta línea:

lockingopt = -w

Para que quede de la siguiente forma:

lockingopt =

Guardamos los cambios e iniciamos el servicio Fail2ban:

/etc/init.d/fail2ban start
Iniciando fail2ban: [ OK ]

Probar la configuración

Para comprobar que Fail2ban está bien configurado podemos probar con algún softphone realizando intentos con una contraseña equivocada: veremos que, después de 5 intentos, la dirección IP queda bloqueada.