Uma forma simples de minimizar problemas com ataques por força bruna no asterisk é a implementação do fail2ban.
Na pratica este serviço analisa as entradas nos logs e implementa regras de iptables baseadas nessa analise, desta forma a reincidência de expressões como “Wrong password” nos logs do asterisk gera um drop no iptables para o ip que está tentando se autenticar.

Instalando o fail2ban

Dependências:

  • python
  • iptables

No debian, para se certificar que as dependências estão instaladas, basta rodar o seguinte comando:

#apt-get install python iptables

Baixe o fail2ban com o seguinte comando:

#wget http://superb-east.dl.sourceforge.net/sourceforge/fail2ban/fail2ban-0.8.3.tar.bz2

Descompacte o pacote

#tar -jxf fail2ban-0.8.3.tar.bz2

Entre no diretório

#cd fail2ban-0.8.3

Instalando o Fail2Ban

#python setup.py install

 Configurando o Fail2Ban

Agora nós precisamos fazer com que o fail2ban seja capaz de identificar ataques contra o asterisk.

Os arquivos de configuração ficam em: /etc/fail2ban/filter.d

Vamos criar aqui um arquivo para o asterisk.

#touch asterisk.conf

Este arquivo deve conter o seguinte:

[INCLUDES]

[Definition]
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.* .*: Registration from ‘.*’ failed for ‘<HOST>’ – Device does not match ACL
            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>.*
ignoreregex =

No aquivo /etc/fail2ban/jail.conf  inclua as seguintes linhas:

[asterisk-iptables]

enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.org]
logpath  = /var/log/asterisk/full
maxretry = 3
bantime = 259200
Maxretry determina a quantidade de erros que o fail2ban vai aceitar de um determinado host antes de bani-lo.

O bantime é em segundos, portanto neste caso qualquer tentativa de ataque ao asterisk será banida por 72 horas.

Para não banir você mesmo, no jail.conf, procure pela tag [DEFAULT], no paramento ignoreip informe seu ip.

Edite o /etc/asterisk/logger.conf e defina o dateformat da seguinte forma.

 [general]
dateformat=%F %T

Na sessão [logfiles] você deve inserir a seguinte linha:

syslog.local0 => notice

Feito isso é só dar reload no logger

asterisk -rx ”logger reload”

Para verificar se o fail2ban subiu, basta rodar o seguinte comando:

iptables -L -v

As seguintes linhas devem aparecer:

Chain fail2ban-ASTERISK (1 references)
 pkts bytes target     prot opt in     out     source               destination
6287K 1158M RETURN     all  –  any    any     anywhere             anywhere

Espero que isso seja útil, de qualquer forma, já que já estamos com a mão na massa, de uma olhada no diretório filter.d, lá nós ja temos as definições para apache, ssh, ftp e mais um monte de coisas legais… aproveite a oportunidade pra dar um up na segurança do seu server!!!!

 

Fonte: http://wnunes.com/2010/06/24/asterisk-com-fail2ban/