Segurança

Bloquear IPs Maliciosos e Países no MikroTik: Threat Feeds e Geo-Blocking

11 de Julho de 2026·10 min de leitura·Equipe Mikrosinc

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):

  1. Uma address-list guarda milhares de faixas de IP (ex.: ThreatFeed ou GeoBlock).
  2. Uma regra de firewall com src-address-list= dropa qualquer pacote cuja origem esteja na lista.
  3. 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:

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:

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 MikroTikCom o Mikrosinc
AtivarScript + scheduler por deviceUm toque no painel
Parsing dos feedsNo RouterOS (pesado em device pequeno)No servidor — device recebe pronto
AtualizaçãoRecria a lista inteiraSó o que mudou (diff): adiciona novos, remove antigos
Anti lock-outPor sua contaFaixas privadas/CGNAT filtradas automaticamente
FrotaCopiar script em cada roteador1 download, distribuído para todos
VisibilidadeWinbox, device a deviceStatus, 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