Configuración de Fail2ban en Asterisk 1.8

Este servicio que ofrece nuestro Fail2ban querido por muchos, es de vital importancia para darle un nivel mas de seguridad a nuestro sistema, en este caso es Asterisk 1.8 en Debian Squeeze.
Cuando instalamos el Fail2ban en nuestro sistema lo mas probable es que solo este baneando (bloqueando) solo conexiones de tipo SSH y no este baneando (bloqueando) las direcciones que se hacen con números de extensiones tratando de loguearse en nuestro Asterisk. Aquí, seré mas claro en este mini tutorial.

Bueno empecemos instalando nuestro fail2ban.
--------------------------------------------------------------------
sudo apt-get install fail2ban
--------------------------------------------------------------------
con esta instalación si no esta instalado nuestro iptables se instala conjuntamente. primero hacemos una copia de todos los archivos que abramos con cualquier editor de texto.
Editemos nuestro fail2ban, su archivo de configuración se encuentra en
---------------------------------------------------------------------
/etc/fail2ban/jail.conf
---------------------------------------------------------------------
Aquí buscamos y modificamos las siguientes lineas, las resalto en negrita.
---------------------------------------------------------------------

ignoreip = 127.0.0.1 173.85.15.22
bantime  = 8978476
maxretry = 1

protocol = tcp
protocol = udp

[ssh]

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



#Añadimos al final del archivo desde aqui para bajo estas lineas de asterisk
# Asterisk
[asterisk-iptables]
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-whois[name=ASTERISK, dest=root@local.com, sender=local.com]
logpath  = /var/log/asterisk/messages
maxretry = 1
bantime = 8592000
---------------------------------------------------------------
Aquí un ejemplo de la configuración
---------------------------------------------------------------

ignoreip = 127.0.0.1 173.85.15.22   # aquí agregamos las direcciones permitidas separadas por espacios
bantime  = 8978476                         # es la cantidad de segundos que estará baneada una dirección ip
maxretry = 1                                    # máximo de intentos que permite antes de banear la dirección ip
protocol = tcp                                   # tipo de protocolo a filtrar, en mi caso coloque udp y tcp
----------------------------------------------------------------
todavía no podemos iniciar nuestro fail2ban por que algunas veces no encuentra la ruta de los logs de Asterisk.
Si tienen los logs de Asterisk en esta ruta debería de arrancar el fail2ban /var/log/asterisk/messages
si no encuentran el archivo messages tendremos que hacer lo siguiente
----------------------------------------------------------------
touch /var/log/asterisk/messages
chown asterisk.asterisk /var/log/asterisk/messages
chmod 775 /var/log/asterisk/messages
-----------------------------------------------------------------
Lo que hicimos fue crear el archivo de los logs de asterisk, luego agregamos al usuario y grupo asterisk como propietario y después le damos permiso al archivo messages para asterisk puede escribir en el.
----------------------------------------------------------------
abrimos el archivo logger.conf y agregamos unas lineas, si existen las descomentamos.
----------------------------------------------------------------
/etc/asterisk/logger.conf

[general]
dateformat=%F %T


[logfiles]
debug => debuf,verbose
console => notice,warning,error,debug
messages => notice,warning,error
full => notice,warning,error,debug,verbose,dtmf
-----------------------------------------------------------------
Si quieren crean el archivo full, los mismos pasos que messages  /var/log/asterisk/full en este archivo nos graba todos los logs de notice,warning,error,debug,verbose,dtmf 
-----------------------------------------------------------------
Agregamos unas lineas en
-----------------------------------------------------------------
/etc/fail2ban/filter.d/asterisk.conf   y copiamos estas lineas

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf

[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<HOST>\S+)
# Values:  TEXT
#

failregex = NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>(:[0-9]{1,5})?' - No matching peer found
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>(:[0-9]{1,5})?' - Wrong password
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>(:[0-9]{1,5})?' - Username/auth name mismatch
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>(:[0-9]{1,5})?' - Device does not match ACL
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>(:[0-9]{1,5})?' - Peer is not supposed to register
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>(:[0-9]{1,5})?' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for '<HOST>(:[0-9]{1,5})?' - ACL error (permit/deny)
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
            NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
            NOTICE.* .*:Sending fake auth rejection for device .*@<HOST>.*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =


-----------------------------------------------------------------
Luego de haber echo estos pasos debemos reiniciar asterisk, con un simple
-----------------------------------------------------------------
root@asterisk#amportal restart
root@asterisk#/etc/init.d/fail2ban restart
-----------------------------------------------------------------
Solo queda loguearnos desde un cliente sip o iax2 y después de los intentos permitidos veremos la ip baneada como este ejemplo que dice que la dirección  une.net. ha sido baneado por iptables con un DROP, porque trató de conectarse con una extensión o contraseña falsa con Asterisk y supero el numero de intentos fallidos y sera baneado por el tiempo que especificamos en jail.conf.
para mirar cuantas direcciones hay baneadas solo ejecutamos
-----------------------------------------------------------------
 iptables -L
-----------------------------------------------------------------
---------------------------------------------------------------
Si queremos desbanear una dirección es muy fácil solo miramos cuantas direcciones baneadas hay y ejecutamos el siguiente comando, el 1 es porque solo hay uno baneado y se encuentra en el primer lugar.
---------------------------------------------------------------
iptables -D fail2ban-ASTERISK 1
---------------------------------------------------------------
Espero haber sido claro en este pequeño tutorial esta fue la forma mas clara para mi, hasta una próxima..!!!

Att. Tiempo20
Blog http://asterisk18.blogspot.com/









Comentarios

Entradas más populares de este blog

colgar llamadas desde consola en asterisk 1.8

solución chanspy al colgar sigue activo

Borrar registro de una llamada en el cdr FreePBX