Questa è una guida completa, didattica e riproducibile per configurare un router MikroTik (RouterOS) in modo da ridurre in modo drastico i rischi di malware, botnet e phishing. Vediamo come integrare feed di blocco, filtrare DNS, forzare l’uso del resolver sicuro, impostare regole firewall e verificare tutto con log e test. Tutti i comandi sono pensati per CLI (Terminal/WinBox), con note di compatibilità tra RouterOS v6 e v7.

Preparazione e hardening di base
Prima di introdurre filtri avanzati, mettiamo in sicurezza il router e predisponiamo un ambiente pulito e verificabile.
Creiamo un backup immediato prima di eseguire la procedura:
/system backup save name=pre-security-config
/export file=pre-security-config.rscSalva un backup binario e un export leggibile per rollback e audit.
Aggiorniamo RouterOS:
/system package update check-for-updates
/system package update installRiavviamo se richiesto; mantenere RouterOS aggiornato è fondamentale per sicurezza e compatibilità.
Account amministrativo sicuro:
/user add name=nome utente da inserire password="NuovaPassword da inserire" group=full
/user disable adminEsempio:
/user add name=cristiangallo19 password="X6hyIP2025!" group=full
/user disable adminRiduce l’esposizione dell’utente di default. Usa una password unica e lunga.
Limitare i servizi di gestione:
/ip service set winbox address=192.168.1.0/24
/ip service set ssh address=192.168.1.0/24
/ip service disable telnet
/ip service disable www
/ip neighbor discovery-settings set discover-interface-list=noneNel mio caso il mio ip possiede la classe 1 nel vostro caso sostituitela con la vostra ad esempio se avete 88 mettete:
/ip service set winbox address=192.168.88.0/24
/ip service set ssh address=192.168.88.0/24
/ip service disable telnet
/ip service disable www
/ip neighbor discovery-settings set discover-interface-list=noneConsenti WinBox/SSH solo dalla LAN affidabile; disabilita servizi non necessari e discovery L2.
Sincronizzazione oraria per log affidabili:
/system ntp client set enabled=yes servers=pool.ntp.orgFeed di blocco: import automatico di domini/IP malevoli
Useremo uno script e uno scheduler per scaricare e importare periodicamente una lista MikroTik-formattata da Malware Patrol. La logica è idempotente: pulisce voci precedenti e importa solo le nuove.
Definizione dello script di aggiornamento
- Obiettivo: scaricare il file .rsc, rimuovere vecchie voci, importare nuove voci nell’address-list.
- Nota nomenclatura: useremo l’indirizzo-list MP_MaliciousDomains e commento coerente MP_MaliciousDomains.
/system script add name="MP_UpdateMaliciousDomains" source={
:log info "MP_UpdateMaliciousDomains: starting fetch";
/tool fetch url="https://USERNAME:PASSWORD@eval.malwarepatrol.net/feeds/files/MP_malicious_domains.mikrotik.rsc" mode=https dst-path=MP_malicious_domains.mikrotik.rsc keep-result=yes;
:if ([:len [/file find name="MP_malicious_domains.mikrotik.rsc"]] = 0) do={
:log warning "MP_UpdateMaliciousDomains: fetch failed or file not found";
:error "Fetch failed";
}
:log info "MP_UpdateMaliciousDomains: cleaning previous address-list entries";
/ip firewall address-list remove [find where list="MP_MaliciousDomains"];
:log info "MP_UpdateMaliciousDomains: importing new address-list";
/import file-name=MP_malicious_domains.mikrotik.rsc;
:log info "MP_UpdateMaliciousDomains: import completed";
}Cosa modificare: sostituisci USERNAME:PASSWORD con le tue credenziali Malware Patrol.
Cosa fa: scarica il file, elimina tutte le voci correnti della lista, importa le nuove voci.
Scheduler per esecuzione periodica
/system scheduler add name="MP_UpdateMaliciousDomains" interval=1h start-time=00:05 on-event="MP_UpdateMaliciousDomains" policy=reboot,read,write,policy,test,password,sniff,sensitiveFrequenza: ogni ora. Puoi aumentare a 3–6h se preferisci minore impatto.
Policy: concedi privilegi sufficienti allo scheduler per import e fetch.
Prima esecuzione e verifica:
Esecuzione manuale:
/system script run MP_UpdateMaliciousDomainsVerifica file:
- In Files deve comparire MP_malicious_domains.mikrotik.rsc aggiornato.
Verifica address-list:
/ip firewall address-list print where list="MP_MaliciousDomains"Dovresti vedere voci popolate dal feed.
Regole firewall: blocco traffico verso/da entità malevole
Ora che la lista è popolata, aggiungiamo regole di drop. Manteniamo logging minimale ma utile. Blocca traffico in forwarding verso destinazioni malevole:
/ip firewall filter add chain=forward action=drop dst-address-list=MP_MaliciousDomains log=yes log-prefix="DROP_MP_DST"Interrompe connessioni verso IP/host dannosi.
Blocca traffico in forwarding da sorgenti malevole (se in lista):
/ip firewall filter add chain=forward action=drop src-address-list=MP_MaliciousDomains log=yes log-prefix="DROP_MP_SRC"Utile per bloccare host interni compromessi che risolvono in IP malevoli già noti o IP assegnati localmente.
Posizionamento delle regole:
- Metti le regole di drop sopra eventuali accept generici in chain=forward.
- Mantieni le regole established/related accettate, ma verifica l’ordine per evitare bypass.
/log print where message~"DROP_MP_"Controlla che eventi vengano registrati quando si tenta di raggiungere domini/IP bloccati
DNS filtering e enforcement del resolver sicuro
Il DNS filtering impedisce la risoluzione di domini di phishing o malware. Puoi usare provider filtranti (FlashStart, OpenDNS) o DoH. In aggiunta, forzeremo i client a usare il DNS del router per garantire il filtraggio.
Impostare DNS filtrante
FlashStart (filtraggio security):
/ip dns set servers=185.236.104.104,185.236.105.105 allow-remote-requests=yesOpenDNS (security + optional content controls):
/ip dns set servers=208.67.222.222,208.67.220.220 allow-remote-requests=yesControlla risoluzione:
/tool dig bad-example-domain.test
/ip dns cache printForzare i client a usare il DNS del router (DNS redirect)
Regole NAT per reindirizzare richieste DNS verso il router:
/ip firewall nat add chain=dstnat protocol=udp dst-port=53 action=redirect to-ports=53 log=no
/ip firewall nat add chain=dstnat protocol=tcp dst-port=53 action=redirect to-ports=53 log=noImpedisce ai client di contattare DNS esterni direttamente; tutte le query passano per il router.
Ulteriori considerazioni:
- Se usi DoH/DoT sui client, il redirect su 53 non li fermerà. Valuta policy aziendali e blocchi su porte 853 (DoT) o SNI per DoH a seconda del tuo scenario.
- Per reti BYOD, comunica chiaramente la policy DNS.
Opzionale: DoH lato router (RouterOS v7)
Esempio con Cloudflare DoH:
/ip dns set use-doh-server=https://cloudflare-dns.com/dns-query verify-doh-cert=yesAggiungi i certificati CA corretti se richiesto; verifica con /tool fetch HTTPS funzionante.
Con questo metodo siamo riusciti a configurare il dispositivo MikroTik per proteggerlo da malware e phishing. Spero che la guida vi sia utile; a breve pubblicherò anche la configurazione del mio router con tutti i passaggi illustrati passo dopo passo.

