Proteggere gli host collegati alla WAN del captive portal da potenziali attacchi dei client della rete Hotspot WiFi

Proteggere gli host collegati alla WAN del captive portal da potenziali attacchi dei client della rete Hotspot WiFi

Nelle installazioni di aree hotspot non dobbiamo sottovalutare la sicurezza della rete del cliente.

La rete hotspot vista la sua natura di rete "aperta" agli ospiti è necessario sia isolata dalla rete LAN dove risiedono normalmente server ed host "a rischio". Per fare questo andrebbero utilizzate delle vlan o addirittura reti parallele isolate e con accesso ad internet dedicato.

Purtroppo troppo spesso questo non è fattibile, sia per problematiche di budget che strutturali. In questi casi è necessario configurare opportunamente il firewall interno degli apparati RouterOS per garantire un buon livello di sicurezza.

Ipotizzando che la lan da proteggere sia 10.10.0.0/16 andremo ad aggiungere questa semplice regola:

/ip firewall filter add chain=forward \
hotspot=from-client dst-address=10.10.10.0/24 \
action=reject reject-with=icmp-net-prohibited \
comment="Protect LAN from Hotspot Clients"

Con questa regola di firewall abbiamo inibito qualunque accesso/attacco alla rete del cliente dalla sottorete gestista dall'hotspot. Semplice no?

Vediamo in dettaglio cosa abbiamo inserito:

hotspot=from-client dst-address=10.10.10.0/24 \

in questo punto definiamo 2 cose importanti:

  1. Cosa dobbiamo proteggere: tutta la classe 10.10.10.0/24
  2. Da chi. E qui vieni in aiuto l'helper "hotspot" del firewall di RouterOS che ci permette di catturare tutti i pacchetti generati dai client dell'area WiFi
action=reject reject-with=icmp-net-prohibited \
comment="Protect LAN from Hotspot Clients"

qui andiamo a specificare l'azione da attuare sui pacchetti identificati. L'action "reject" si occupa di bloccare il pacchetto e di inviare al client un errore icmp "Network Prohibited", in alternativa è utilizzabile anche l'action "drop" che in maniera silente blocca solo il traffico indesiderato.

In chiusura non dimentichiamoci di inserire un commento descrittivo alla regola inserita in modo da poterne comprendere il significato anche a distanza di mesi dalla configurazione.

E se non conosciamo a priori la classe ip da proteggere? Immaginiamo di voler una configurazione flessibile con il device hotspot in DHCP client sulla parte WAN.

Come facciamo a proteggerla?

In questo caso la configurazione si complica, ma attraverso uno script lanciato dallo scheduler interno della macchina riusciamo a risolvere.

Create il seguente script nella repository interna e chiamatelo "WAN-Guardian":

:local WANIface
:local IP;
:local NETWORK;
:local NETWORK2;
:local BITMASK;
:local i;
:local L;
:local wanGuardItem;

:set WANIface ether1

:set NETWORK [/ip address get [find interface=$WANIface network];
:set IP [/ip address get [find interface=$WANIface] address];
:set L [:len $IP]

:for i from=( [:len $IP] - 1) to=0 do={
 :if ( [:pick $IP $i] = "/") do={
 :set BITMASK [:pick $IP $i $L]
 }
 }
 :set NETWORK2 ("$NETWORK" . "$BITMASK");
 :log info "Customer LAN is NETWORK $NETWORK2" ;

#rimuovo la vecchia address-list del firewall
 :foreach wanGuardItem in=[/ip firewall address-list find list=wanGuard] do={
 /ip firewall address-list remove $wanGuardItem;
 }

#Aggiungo la nuova entry
 /ip firewall address-list add list=wanGuard address=$NETWORK2;

Lo script appena creato estrae l'indirizzo ip e la maschera a bit assegnata all'interfaccia WAN (da specificare nello script) e popola una address list del firewall chiamata wanGuard.

A questo punto la regola di firewall creata precedentemente, dove in maniera esplicita indicavamo la network da proteggere, deve essere modificata in (riga 2):

 /ip firewall filter add chain=forward \
 hotspot=from-client dst-address-list=wanGuard \
 action=reject reject-with=icmp-net-prohibited \
 comment="Protect LAN from Hotspot Clients"

in questo modo la regola di firewall andrà a leggere gli indirizzi di destinazione nella address list popolata dal nostro script.

Adesso basterà creare un evento schedulato in System -> Scheduler che lanci ogni tot minuti lo script WAN-Guard in modo da tenere aggiornata la nostra address-list:

/system scheduler add name=WAN-Guardian \
 start-time=startup interval=10m \
 on-event=WAN-Guardian

A questo punto abbiamo realizzato una protezione flessibile della WAN in quanto anche modificando in un secondo momento l'ip o spostando di sede la macchina non dobbiamo preoccuparci di adeguare le regole di firewall.

HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare