Integrações de firewall

Ligar a Q-Feeds ao MikroTik RouterOS

Dois scripts de código aberto mantêm uma address-list do RouterOS cheia de endereços IP maliciosos. Um faz a importação completa, o outro recolhe apenas as alterações, e o agendador executa ambos para que as suas regras de filtro trabalhem sempre com informação atual.

Os scripts são de código aberto e estão no GitHub: Q-Feeds/Q-Feeds-Integration-for-Mikrotik-RouterOS. Descarregue-os sempre de lá para ter a certeza de que tem a versão atual. Precisa de direitos de administrador no router, HTTPS de saída para api.qfeeds.com e um token API da Q-Feeds. Consulte Obter os seus threat feeds.

Requisitos

  • RouterOS: 7.15 ou posterior, testado em 7.15, 7.17 e 7.20
  • Permissões: uma conta com direitos de administrador completos
  • Feed: lista de IPs maliciosos (feed_type=malware_ip)
  • Rede: HTTPS de saída do router para api.qfeeds.com
  • Address-list: Malware-List, criada pelos scripts se ainda não existir

Obter os scripts

O repositório tem dois ficheiros:

  • Malware Import FULL.rsc carrega a lista completa.
  • Malware Import DIFF.rsc aplica apenas as alterações desde a última recolha.

Abra os dois no GitHub e copie o conteúdo, ou descarregue o repositório em ZIP. No router não se instala nada, cola o texto do script no RouterOS.

Colocar o seu token

Os dois scripts começam com um bloco curto de variáveis. Substitua o token de exemplo pelo seu:

:local apitoken "YOUR_API_TOKEN_HERE";

A variável seguinte decide onde ficam as entradas:

:local useDynamic "yes";
  • "yes" mantém as entradas em RAM. Desaparecem ao reiniciar e o agendador repõe-nas na execução seguinte. É o valor predefinido e a escolha certa com atualizações frequentes, porque nunca se escreve na memória flash do router.
  • "no" grava as entradas em disco. Sobrevivem a um reinício, mas com uma lista deste tamanho e uma atualização a cada vinte minutos gasta a flash e engorda o ficheiro de configuração.

Adicionar os scripts no RouterOS

No Winbox ou no WebFig, vá a System, Scripts e crie dois scripts. Os nomes contam, porque a importação completa procura o agendador diferencial pelo nome:

  • Malware Update - Full com o conteúdo de Malware Import FULL.rsc
  • Malware Update - Diff com o conteúdo de Malware Import DIFF.rsc

Dê aos dois scripts as policies read, write, policy e test, caso contrário não conseguem gerir a address-list nem o agendador.

Criar os agendadores

/system scheduler add name="Malware Update - Full" \
    start-time=startup interval=1d \
    on-event="Malware Update - Full"

/system scheduler add name="Malware Update - Diff" \
    start-time=startup interval=20m \
    on-event="Malware Update - Diff"

Execute a importação completa diária ou semanalmente. Ajuste o intervalo do diferencial à sua licença: 1d no Community, 4h no Plus e 20m no Premium. Pedir com mais frequência do que a licença permite não traz nada de novo.

Execute a importação completa uma vez à mão antes de contar com a atualização diferencial. A API devolve as alterações desde a última recolha, por isso sem uma primeira recolha completa não há base e o diferencial fica vazio.

/system script run "Malware Update - Full"

Bloquear o tráfego

Os scripts apenas preenchem a lista. As regras de filtro é que as cria, por exemplo:

/ip firewall filter
add chain=forward src-address-list="Malware-List" action=drop \
    comment="Q-Feeds: drop traffic from malicious hosts"
add chain=forward dst-address-list="Malware-List" action=drop \
    comment="Q-Feeds: drop traffic to malicious hosts"

Coloque as regras suficientemente acima na chain para que sejam avaliadas antes de uma regra accept genérica, e acrescente regras na chain input se quiser proteger também o próprio router.

Como funciona

  • Importação completa: o script desativa o agendador diferencial, muda o nome das entradas atuais para Malware-List - Old, obtém o feed página a página em blocos de 4000 endereços e para assim que uma página volta vazia.
  • Reposição: as entradas antigas só são removidas quando a importação produziu mesmo entradas. Se a transferência falhar, a lista anterior recupera o nome e o router mantém a proteção.
  • Atualização diferencial: as linhas com + à frente entram na address-list e as linhas com - saem. Cada chave API tem o seu próprio histórico, por isso recebe exatamente as alterações desde a sua última recolha, dentro do ritmo da sua licença.
  • Coordenação: a importação completa desliga o agendador diferencial enquanto corre e volta a ligá-lo no fim, para que os dois nunca se atrapalhem.
  • Formatos de endereço: IPv4, IPv6 e notação CIDR como 192.0.2.0/24. O RouterOS valida cada endereço e ignora em silêncio o que não consegue ler.
  • Registo: os dois scripts desligam a primeira ação de logging enquanto correm, para não encher o log com milhares de linhas soltas, e voltam a ligá-la no fim.

Verificar

/ip firewall address-list print count-only where list="Malware-List"
/ip firewall address-list print where list="Malware-List"
/log print where message~"Malware"
/system scheduler print

Depois de uma importação completa bem sucedida, o contador chega às centenas de milhares consoante a licença, e o log mostra uma linha por página processada mais uma mensagem final.

Resolução de problemas

  • A lista continua vazia: verifique o token nos dois scripts, confirme que o router chega a https://api.qfeeds.com e execute a importação completa à mão a partir do terminal.
  • O diferencial nunca altera nada: execute primeiro a importação completa. Use o mesmo token API nos dois scripts, porque o histórico está ligado à chave.
  • A lista desaparece depois de reiniciar: é o esperado com useDynamic "yes". O agendador volta a preenchê-la na execução seguinte. Só ponha a variável a "no" se precisar mesmo de persistência.
  • Reposição no log: a importação falhou e a lista anterior foi restaurada. Verifique a ligação, a validade do token e a memória livre do router.
  • Não corre nada: veja com /system scheduler print se algum agendador está desativado e confirme que os nomes dos scripts coincidem exatamente com os dos agendadores.
  • Apoio: support@qfeeds.com ou a página de apoio. Encontrou um erro nos scripts? Abra uma issue no repositório do GitHub.

Os feeds de URLs maliciosos da Q-Feeds não são suportados no RouterOS. Uma address list compara endereços IP e só um proxy ou um filtro web consegue inspecionar o caminho completo de um URL. Fique aqui pelo feed de IP de malware.

Ver os scripts no GitHub Sobre a integração com o MikroTik

Avalie a nossa inteligência hoje mesmo!

Simplifique as suas operações de segurança, inicie a sua avaliação gratuita da Q-Feeds e veja a diferença.

Ativar o acesso gratuito