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.rsccarrega a lista completa.Malware Import DIFF.rscaplica 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.come 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 printse 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.