Seguridad Fail2band en Elastix

Discussion in 'General' started by mm.alpha2k, Nov 15, 2010.

  1. mm.alpha2k

    Joined:
    Jun 19, 2010
    Messages:
    165
    Likes Received:
    0
    Le dejo el tutorial para ponerle un granito mas de seguridad al asterisk

    Esto nunca lo habia tenido en cuenta hasta que un amigo Rodrigo de Cordoba que nos dio una pequeña explicacion, y demostracion de como funciona el FAIL2BAN en Asterisk.

    Fail2ban es un programa que lee los registros (por ejemplo /var/log/asterisk/messages) y si hay un numero determinado de intentos de conexión sin éxito, banea (bloquea) las IP de donde se han originados los intentos interactuando con iptables (cortafuegos).

    Algunos ejemplos de intentos de registracion que el fai2ban bloquearia
    [Jul 13 12:35:47] NOTICE[4248] chan_sip.c: Registration from '"1696068786"<sip:1696068786@33.42.29.162>' failed for '200.40.29.85' - No matching peer found
    [Jul 13 12:35:47] NOTICE[4248] chan_sip.c: Registration from '"995617902"<sip:995617902@33.42.29.162>' failed for '202.32.221.136' - No matching peer found
    [Jul 13 15:36:38] NOTICE[4248] chan_sip.c: Registration from '"745981797"<sip:745981797@33.42.29.162>' failed for '72.4.146.76' - No matching peer found
    [Jul 19 17:08:33] NOTICE[4248] chan_sip.c: Registration from '"2128566433"

    Fail2ban está escrito en Python y para que funcione tenemos que instalar este lenguaje de programación:

    yum install python

    luego bajamos el programa:

    cd /usr/src

    wget http://downloads.sourceforge.net/projec ... .4.tar.bz2

    lo descomprimimos

    tar -xf fail2ban-0.8.4.tar.bz2

    entramos en la carpeta

    cd fail2ban-0.8.4

    y lo instalamos

    python setup.py install

    ahora instalamos el script para arrancarlo como un servicio (para Centos)

    cp /usr/src/fail2ban-0.8.4/files/redhat-initd /etc/init.d/fail2ban

    Ahora podemos configurarlo para que lea los registros de Asterisk

    cd /etc/fail2ban/filter.d

    nano asterisk.conf

    y copiamos estas líneas

    # Fail2Ban configuration file
    #
    #
    # $Revision: 250 $
    #

    [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>' - Wrong password
    NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
    NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
    NOTICE.* <HOST> failed to authenticate as '.*'$
    NOTICE.* .*: No registration for peer '.*' (from <HOST>)
    NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)

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

    con estas líneas le decimos a fail2ban que tiene que controlar eventuales accesos indeseados en el archivo de registro de Asterisk.

    Ahora tenemos que modificar el archivo de configuración de fail2ban

    cd /etc/fail2ban

    nano jail.conf

    y añadimos al final del archivo de texto estas líneas

    [asterisk-iptables]

    enabled = true
    filter = asterisk
    action = iptables-allports[name=ASTERISK, protocol=all]
    sendmail-whois[name=ASTERISK, dest=root@localhost, sender=fail2ban@pbx.dyndns.org]
    logpath = /var/log/asterisk/messages
    maxretry = 5
    bantime = 1800

    En la línea en negrita aparece el archivo de registro que fail2ban leerá para averiguar intentos frustrados de conexión a nuestra centralita. En la configuración tenemos que modificar la dirección de correo electrónico. En lugar de root@localhost ponemos la dirección de correo electrónico donde queremos recibir los avisos. Para enviar los correos, fail2ban está configurado con Sendmail

    Para que funcione tenemos que modificar la configuración del los archivos de registro de Asterisk:

    nano /etc/asterisk/logger.conf

    y averiguar que la línea messages tenga el parámetro que aparece en negrita

    messages => notice,debug

    Terminamos con la configuración del script de arranque:

    chkconfig fail2ban on

    /etc/init.d/fail2ban start

    Starting fail2ban: [ OK ]

    Si sale algún error tenemos que revisar la configuración.

    Si todo sale ok, vamos a ver si hacemos un 'iptables -vnL' vamos a ver que tenemos algo

    Chain fail2ban-ASTERISK (1 references)
    pkts bytes target prot opt in out source destination
    6687K 527M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
     

Share This Page