Ok, consegui encontrar uma resposta para minha pergunta e estou compartilhando isso aqui para que outros se beneficiem (mesmo que o número de visualizações não o diga :))
Minha solução utiliza iptables e fail2ban para resolver o problema em questão.
-
Coloque seu firewall em funcionamento. Não se esqueça de abrir as portas requeridas pelo freeswitch para realizar operações VoIP de sucesso:
firewall-cmd --add-port=5080-5081/tcp --add-port=5060-5061/tcp --add-port=5066/tcp --add-port=8080-8082/tcp --add-port=7443/tcp --add-port=16384-32768/udp
Essa etapa sozinha filtra muitos ataques, já que a maioria deles é sobre o udp nas portas esperadas do tcp.
-
Peça ao iptables para armazenar as informações relacionadas às conexões tcp ao conectar-se às portas de sinalização:
iptables -I INPUT 5 -i eth0 -p tcp -m multiport --dports 5080,5081,5060,5061,7443,5066,8080:8082 -m recent --set --name FREESWITCH_BADGUY -j ACCEP iptables -I INPUT 5 -i eth0 -p tcp -m recent --update --hitcount 1 --seconds 120 --name FREESWITCH_BADGUY -j LOG --log-prefix "FREESWITCH BAD: " --log-level info
Anote o índice / pedido 5 na cadeia INPUT. Eu usei 5 porque era apenas antes das regras para aceitar conexões nas portas listadas (a partir dos comandos no primeiro passo). Então, você deve colocá-los em qualquer lugar antes das regras da primeira etapa, mas depois das regras do ssh do fail2ban.
-
Crie um novo filtro fail2ban em
/etc/fail2ban/filter.d/freeswitch-customized.conf
:[Definition] failregex = FREESWITCH BAD.*SRC=<HOST> ignoreregex =
-
Adicione o seguinte a
/etc/fail2ban/jail.local
: (Altere o caminho de log para o arquivo de log do sistema. A mina foi/var/log/messages
. Mas pode ser no seu caso, por exemplo,/var/log/syslog
).[freeswitch-customized] enabled = true port = 5060,5061,5080,5081,7443,5066 logpath = /var/log/messages filter = freeswitch-customzied
-
Reinicie o fail2ban:
systemctl restart fail2ban
Isso funcionou para mim.