Firewall Filter — Ruleset di base sicuro e commentato
Un ruleset firewall completo, commentato riga per riga, per proteggere il router MikroTik dalla WAN mantenendo piena operatività LAN. Include protezione Winbox/SSH con address-list admin e drop WAN totale.
Il firewall è la prima linea di difesa del router. Per impostazione predefinita RouterOS non blocca nulla, quindi è obbligatorio configurare un ruleset prima di esporre il router su Internet. Il principio guida è deny-by-default: tutto ciò che non è esplicitamente permesso viene scartato.
passthrough=yes). Se per errore metti un DROP troppo in alto, puoi perdere l'accesso al router. Mantieni sempre una sessione Winbox aperta durante la configurazione: le modifiche alla chain input non interrompono le sessioni già stabilite.Prerequisito: Interface List
# Creare le liste di interfacce (da adattare ai propri nomi) /interface list add name=WAN comment="Interfacce verso Internet" /interface list add name=LAN comment="Interfacce verso la rete locale" # Aggiungere le interfacce (esempio: ether1=WAN, ether2-5+wlan=LAN) /interface list member add list=WAN interface=ether1 /interface list member add list=LAN interface=ether2 /interface list member add list=LAN interface=ether3 /interface list member add list=LAN interface=wlan1 # Creare la lista degli IP amministrativi (da cui si accede a Winbox/SSH) # IMPORTANTE: aggiungere il proprio IP PRIMA di configurare le regole! /ip firewall address-list add list=admin address=192.168.88.10 comment="PC amministratore principale" /ip firewall address-list add list=admin address=10.0.0.0/8 comment="Rete management interna"
Chain INPUT — Protezione del router
# ================================================================ # CHAIN INPUT — Protegge il router stesso dagli accessi non autorizzati # Valutate per OGNI pacchetto destinato al router (SSH, Winbox, API, DNS...) # ================================================================ # [1] ACCETTA traffico già stabilito/correlato — performance critica # Questa DEVE essere la prima regola: evita di processare tutto il # traffico di risposta attraverso le regole successive. /ip firewall filter add chain=input connection-state=established,related,untracked action=accept comment="[1] Accetta connessioni già stabilite e correlate" # [2] SCARTA traffico non valido — sicurezza # Pacchetti malformati o fuori-sequenza: tipico di scan/attacchi. /ip firewall filter add chain=input connection-state=invalid action=drop comment="[2] Scarta connessioni non valide (malformate/attacchi)" # [3] ACCETTA ICMP controllato dalla WAN # Permette solo ping (echo-request) dalla WAN con rate limiting. # Blocca ICMP redirect e altri tipi potenzialmente pericolosi. /ip firewall filter add chain=input protocol=icmp icmp-options=8:0 in-interface-list=WAN limit=10,20:packet action=accept comment="[3] ICMP ping WAN (rate-limited 10 pps)" /ip firewall filter add chain=input protocol=icmp in-interface-list=LAN action=accept comment="[3b] ICMP dalla LAN: tutto permesso" /ip firewall filter add chain=input protocol=icmp action=drop comment="[3c] Scarta altri tipi ICMP dalla WAN" # [4] WINBOX — SOLO da address-list 'admin' # MAI esporre Winbox (TCP 8291) su Internet! /ip firewall filter add chain=input protocol=tcp dst-port=8291 src-address-list=admin action=accept comment="[4] Winbox - solo da IP admin autorizzati" /ip firewall filter add chain=input protocol=tcp dst-port=8291 action=drop log=yes log-prefix="WINBOX-BLOCKED" comment="[4b] Blocca Winbox da IP non autorizzati" # [5] SSH — SOLO da address-list 'admin' # SSH (TCP 22) non deve mai essere accessibile dalla WAN senza # restrizioni. Meglio ancora: cambiare porta e usare chiavi. /ip firewall filter add chain=input protocol=tcp dst-port=22 src-address-list=admin action=accept comment="[5] SSH - solo da IP admin autorizzati" /ip firewall filter add chain=input protocol=tcp dst-port=22 action=drop log=yes log-prefix="SSH-BLOCKED" comment="[5b] Blocca SSH da IP non autorizzati" # [6] API RouterOS — solo dalla LAN (o da admin) /ip firewall filter add chain=input protocol=tcp dst-port=8728,8729 src-address-list=admin action=accept comment="[6] RouterOS API (plain/SSL) - solo admin" /ip firewall filter add chain=input protocol=tcp dst-port=8728,8729 action=drop comment="[6b] Blocca API RouterOS da IP non autorizzati" # [7] DNS dalla LAN — se il router fa da DNS resolver locale /ip firewall filter add chain=input protocol=tcp dst-port=53 in-interface-list=LAN action=accept comment="[7] DNS TCP dalla LAN" /ip firewall filter add chain=input protocol=udp dst-port=53 in-interface-list=LAN action=accept comment="[7b] DNS UDP dalla LAN" # [8] NTP — se il router fa da server NTP /ip firewall filter add chain=input protocol=udp dst-port=123 in-interface-list=LAN action=accept comment="[8] NTP dalla LAN" # [9] DHCP — necessario per assegnare IP ai client locali /ip firewall filter add chain=input protocol=udp dst-port=67,68 action=accept comment="[9] DHCP server" # [10] DROP FINALE — tutto il resto dalla WAN viene scartato silenziosamente # In-interface-list=WAN garantisce che solo il traffico WAN venga droppato. # Il traffico LAN non corrisponde e passa alle regole successive (se ci sono). /ip firewall filter add chain=input in-interface-list=WAN action=drop comment="[10] DROP FINALE: tutto il resto dalla WAN"
Chain FORWARD — Protezione del traffico dei clienti
# ================================================================ # CHAIN FORWARD — Controlla il traffico che transita ATTRAVERSO il router # (traffico dei clienti: LAN→WAN, WAN→LAN, LAN→LAN su subnet diverse) # ================================================================ # [1] FASTTRACK per connessioni già stabilite — performance massima # FastTrack bypassa il firewall per le connessioni già verificate. # NOTA: se si usano Simple Queues per shaping, FastTrack va disabilitato # o le queue devono trovarsi su interfacce specifiche (Queue Tree). /ip firewall filter add chain=forward connection-state=established,related action=fasttrack-connection hw-offload=yes comment="[1] FastTrack - hardware offload per traffico stabilito" # [2] Accetta established/related (fallback se FastTrack non supportato) /ip firewall filter add chain=forward connection-state=established,related action=accept comment="[2] Accetta traffico forward già stabilito" # [3] Scarta traffico non valido /ip firewall filter add chain=forward connection-state=invalid action=drop comment="[3] Scarta traffico forward non valido" # [4] ACCETTA LAN → WAN — i clienti possono navigare su Internet /ip firewall filter add chain=forward in-interface-list=LAN out-interface-list=WAN action=accept comment="[4] LAN -> WAN: clienti verso Internet" # [5] Blocca connessioni WAN → LAN non richieste # Solo il traffico "established/related" (già accettato sopra) può # tornare dalla WAN verso la LAN. Nuove connessioni dalla WAN: DROP. /ip firewall filter add chain=forward in-interface-list=WAN out-interface-list=LAN connection-state=new action=drop comment="[5] Blocca nuove connessioni da WAN verso LAN" # [6] DROP FINALE FORWARD /ip firewall filter add chain=forward action=drop comment="[6] DROP FINALE forward: tutto il resto"
hw-offload=no su FastTrack e gestisci le code in software.Protezione anti-spoofing (Reverse Path Filtering)
Su un router WISP è importante scartare i pacchetti con indirizzo sorgente impossibile per l'interfaccia da cui arrivano (spoofing). RouterOS offre il Reverse Path Filtering integrato: se attivo, un pacchetto la cui sorgente non sarebbe raggiungibile attraverso l'interfaccia di ingresso viene scartato. È la difesa più semplice contro lo spoofing degli IP.
# RPF: 'strict' scarta i pacchetti la cui sorgente non è raggiungibile # dall'interfaccia di ingresso. Su WISP single-homed va benissimo 'strict'; # su multi-WAN/asimmetrico usa 'loose' per non rompere il routing. /ip settings set rp-filter=strict # In alternativa (o in aggiunta) con il firewall RAW: blocca le sorgenti # private/bogon che arrivano dalla WAN (nessuno deve presentarsi come 10.x da fuori) /ip firewall raw add chain=prerouting in-interface-list=WAN src-address-list=bogon action=drop comment="Anti-spoofing: drop sorgenti bogon/private dalla WAN"
Verificare l'ordine e l'efficacia delle regole
# Stampa le regole con contatori di pacchetti/byte: # le regole con contatore a 0 non stanno mai matchando (ordine sbagliato?) /ip firewall filter print stats # Azzera i contatori per misurare il traffico da adesso /ip firewall filter reset-counters [find] # Vedi solo le regole della chain input, con numerazione /ip firewall filter print where chain=input # Conta quanti pacchetti ha droppato la regola finale (utile per capire # se stai bloccando traffico che invece dovresti accettare) /ip firewall filter print stats where action=drop
log=yes sulla regola di DROP finale di un router WISP esposto — l'attaccante medio genera migliaia di pacchetti scartati al secondo e riempiresti il log (e la flash) in pochi minuti. Logga solo gli eventi mirati e rari (Winbox/SSH bloccati, blacklist) come negli esempi. Per analisi prolungate usa action=add-src-to-address-list invece del log.Continua con
Configura senza fatica con l'AI
In WispOS l'agente AI genera la configurazione RouterOS dalle tue parole e un tutor ti guida passo passo.
Prova WispOS