|
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.
Instar o fail2ban
Dependências:
No debian, para se certificar que as dependências estão instaladas, basta adicionar o seguinte comando:
#apt-get install python iptables
Download do 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
Instalar o Fail2Ban
#python setup.py install
Configurar o Fail2Ban
Agora nós precisamos fazer com que o fail2ban seja capaz de identificar ataques contra o asterisk.
Os ficheiros de configuração ficam em: /etc/fail2ban/filter.d
Vamos criar aqui um ficheiro para o asterisk.
#touch asterisk.conf
Este ficheiro deve conter o seguinte:
[INCLUDES]
[Definition]
failregex = NOTICE.* .*: Registration from '.*' failed for '' – Wrong password
NOTICE.* .*: Registration from '.*' failed for '' – No matching peer found
NOTICE.* .*: Registration from '.*' failed for '' – Username/auth name mismatch
NOTICE.* .*: Registration from '.*' failed for '' – Device does not match ACL
NOTICE.* failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' \(from \)
NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)
NOTICE.* .*: Failed to authenticate user .*@.*
ignoreregex =
No ficheiro /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 funcione, basta aplicar 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
Listo! Agora esta com um pouco mais de segurança no seu Asterisk.
|