Bloquear IPs Maliciosos e Países no MikroTik: Threat Feeds e Geo-Blocking
Boa parte dos ataques que um roteador de borda recebe todos os dias vem de dois grupos bem identificáveis: endereços de IP já conhecidos como maliciosos (servidores de botnets, redes sequestradas por criminosos) e países de onde você não espera receber conexão nenhuma. Bloquear os dois na entrada, antes mesmo de o pacote chegar aos seus serviços, reduz drasticamente a superfície de ataque — scans, tentativas de brute force e exploração de portas expostas caem de forma visível.
O RouterOS tem tudo o que é preciso para isso: address-lists (listas de IPs) alimentadas automaticamente e uma regra de drop que as usa como referência. Neste artigo você vai ver como montar isso manualmente no MikroTik — e, no fim, por que fazer isso de forma centralizada e segura com o Mikrosinc evita as armadilhas que essa configuração manual tem.
O conceito: address-list + regra de drop
A ideia é simples e vale para os dois casos (IPs maliciosos e países):
- Uma address-list guarda milhares de faixas de IP (ex.:
ThreatFeedouGeoBlock). - Uma regra de firewall com
src-address-list=dropa qualquer pacote cuja origem esteja na lista. - Um scheduler baixa a lista atualizada de tempos em tempos e refaz a address-list.
O trabalho todo está em manter a lista atualizada — as fontes mudam diariamente, e uma lista velha protege cada vez menos.
Parte 1 — Bloqueando IPs maliciosos (threat feeds)
As duas fontes públicas e gratuitas mais usadas são:
- Spamhaus DROP — blocos de rede inteiros controlados por criminosos (o "pior do pior", com falso-positivo baixíssimo).
- abuse.ch Feodo Tracker — IPs de servidores de comando-e-controle (C2) de trojans bancários e botnets ativos (Emotet, Dridex, QakBot etc.).
1. Regra de firewall que usa a lista
Antes de baixar nada, crie a regra que vai bloquear. Ela fica ociosa até a lista ter conteúdo:
# Dropa tudo que chega DA internet vindo de um IP malicioso conhecido /ip firewall filter add chain=input \ in-interface-list=WAN \ src-address-list=ThreatFeed \ action=drop comment="Drop IPs maliciosos (input)" /ip firewall filter add chain=forward \ src-address-list=ThreatFeed \ action=drop comment="Drop IPs maliciosos (forward)"
Coloque essas regras logo após o seu accept established,related — assim o tráfego legítimo já estabelecido nem passa pela verificação, e o custo fica mínimo.
2. Script que baixa e popula a lista
O RouterOS baixa o arquivo com /tool fetch e um script percorre linha a linha adicionando cada IP. Exemplo para o feed do abuse.ch:
/system script add name=update-threatfeed source={ :do { # baixa a lista (HTTPS exige CA importado no device) /tool fetch url="https://feodotracker.abuse.ch/downloads/ipblocklist.txt" \ mode=https dst-path="feodo.txt"; :delay 3s; :local data [/file get feodo.txt contents]; # limpa a lista antiga e recria /ip firewall address-list remove [find list=ThreatFeed]; :while ([:len $data] > 0) do={ :local pos [:find $data "\n"]; :local line $data; :if ($pos >= 0) do={ :set line [:pick $data 0 $pos]; :set data [:pick $data ($pos+1) [:len $data]] } else={ :set data "" }; # ignora comentários (#) e linhas vazias :if ([:len $line] > 6 && [:pick $line 0 1] != "#") do={ :do { /ip firewall address-list add list=ThreatFeed address=$line comment=auto } on-error={}; }; }; } on-error={ :log warning "update-threatfeed: falha ao atualizar" }; }
3. Agendar a atualização
# Roda todos os dias às 05:00 /system scheduler add name=sched-threatfeed \ interval=1d start-time=05:00:00 \ on-event="/system script run update-threatfeed"
Para incluir a Spamhaus DROP, repita o script apontando para https://www.spamhaus.org/drop/drop.txt — só lembre que o formato dela é CIDR ; SBLxxxx, então é preciso cortar o texto após o ; antes de adicionar.
Parte 2 — Bloqueando por país (geo-blocking)
Para bloquear países inteiros sem uma base GeoIP paga, a fonte mais usada é o ipdeny.com, que publica as faixas de IP agregadas por país (derivadas dos registradores regionais — ARIN, RIPE, APNIC etc.). Cada país tem um arquivo: {código}-aggregated.zone.
A mecânica é idêntica à do threat feed — muda a URL e o nome da lista:
# Baixa as faixas da China (cn) e Rússia (ru) para a lista GeoBlock /system script add name=update-geoblock source={ :foreach cc in={ "cn"; "ru" } do={ :do { /tool fetch url=("http://www.ipdeny.com/ipblocks/data/aggregated/" . $cc . "-aggregated.zone") \ dst-path=($cc . ".zone"); :delay 2s; :local data [/file get ($cc . ".zone") contents]; :while ([:len $data] > 0) do={ :local pos [:find $data "\n"]; :local line $data; :if ($pos >= 0) do={ :set line [:pick $data 0 $pos]; :set data [:pick $data ($pos+1) [:len $data]] } else={ :set data "" }; :if ([:len $line] > 6) do={ :do { /ip firewall address-list add list=GeoBlock address=$line comment=auto } on-error={}; }; }; } on-error={ :log warning ("update-geoblock: falha em " . $cc) }; }; }
E a regra de bloqueio — aqui vale uma decisão importante:
# Bloqueia acesso ENTRANTE vindo dos países (gerência + port-forwards) /ip firewall filter add chain=input \ in-interface-list=WAN \ src-address-list=GeoBlock \ action=drop comment="Geo-block entrante" # Bloqueia só o que entra via port-forward — NÃO quebra a saída dos clientes /ip firewall filter add chain=forward \ connection-nat-state=dstnat \ src-address-list=GeoBlock \ action=drop comment="Geo-block port-forward"
Cuidado clássico: se você dropar forward de forma irrestrita para esses países, um cliente que tentar abrir um site hospedado lá (ou um serviço legítimo) vai reclamar que "o site parou". Por isso a abordagem conservadora acima bloqueia só o tráfego entrante — proteção real sem gerar chamado.
As armadilhas da configuração manual
Funciona — mas na prática, rodar isso à mão em vários roteadores tem custos que raramente aparecem no tutorial:
- CPU nos equipamentos pequenos. Percorrer milhares de linhas em script RouterOS é lento. Num hEX, o threat feed (~1.300 faixas) já pesa; o geo-blocking, com dezenas de milhares de linhas por país, pode travar o processamento do device durante o script.
- Recriar a lista inteira é pesado. O jeito simples (remover tudo e readicionar) processa a lista completa toda vez, mesmo quando quase nada mudou.
- Risco de lock-out. Se o feed vier corrompido ou incluir uma faixa privada por engano, você pode se bloquear. Um script ingênuo não filtra faixas internas/CGNAT antes de aplicar.
- Certificado e internet no device. As fontes HTTPS exigem o CA importado em cada roteador, além de DNS e saída funcionando.
- Não escala. Cada MikroTik baixando as listas por conta própria significa N vezes a banda e risco de rate-limit nas fontes. E você mantém o mesmo script copiado em dezenas de equipamentos.
O jeito Mikrosinc: um clique, centralizado e seguro
O Mikrosinc traz isso pronto no módulo de Proteção Avançada (UTM) de cada dispositivo. O servidor baixa e processa os feeds uma vez, e distribui as listas já prontas para cada roteador — resolvendo justamente os pontos acima:
| Manual no MikroTik | Com o Mikrosinc | |
|---|---|---|
| Ativar | Script + scheduler por device | Um toque no painel |
| Parsing dos feeds | No RouterOS (pesado em device pequeno) | No servidor — device recebe pronto |
| Atualização | Recria a lista inteira | Só o que mudou (diff): adiciona novos, remove antigos |
| Anti lock-out | Por sua conta | Faixas privadas/CGNAT filtradas automaticamente |
| Frota | Copiar script em cada roteador | 1 download, distribuído para todos |
| Visibilidade | Winbox, device a device | Status, contagem e último sync no painel |
Na prática, você entra no dispositivo, abre Proteção Avançada e liga o Threat Feed ou o Bloqueio por País (escolhendo os países num seletor). O Mikrosinc aplica as regras já protegidas contra edição acidental, sincroniza diariamente por diff e mostra a contagem de blocos e o status do último sync — sem você tocar em um único comando de RouterOS.
As regras criadas pelo Mikrosinc ficam marcadas e protegidas contra alteração manual acidental na tela de firewall — quem gerencia a proteção é o painel, evitando que alguém quebre o bloqueio sem querer.
Prefere que a gente configure isso com você?
Deixe seu contato — retornamos pelo WhatsApp em horário comercial.
Ative a Proteção Avançada nos seus MikroTiks
Threat feeds e geo-blocking com um clique, atualização automática por diff e regras protegidas contra alteração acidental — em toda a sua frota.
Proteger meus Roteadores