MikroTik Hotspot: Come loggare il traffico degli utenti (parte 1)

MikroTik Hotspot: Come loggare il traffico degli utenti (parte 1)

WirelessGuru-Mikrotik-Log-Hotspot-Connection-Part-1

Realizzare delle reti Hotspot WiFi con MikroTik, a meno di non attribuire un ip pubblico per ogni utente, implica molto spesso di dover attivare un log del traffico degli utenti verso internet. Vediamo come possiamo con MikroTik attivare il logging del traffico degli utenti hotspot.

Generare i log

Grazie alla flessibilità e potenza del sistema operativo RouterOS possiamo in maniera molto semplice impostare alcune regole per tenere traccia delle attività relative agli utenti della rete wireless WiFi.

Per prima cosa andiamo nei settaggi relativi alle attività di Log ed abilitiamo il logging per hotspot e firewall:

[code]

/system logging add topics=firewall action=memory

/system loggin add topics=hotspot action=memory

[/code]

Attraverso queste due semplici regole diciamo al sistema di iniziare a tenere traccia delle attività relative all'hotspot (login, logout etc) e di "scrivere" nella RAM (memory) l'attività. Vedremo in seguito come veicolare in altri target questi log.

Adesso utilizzando il firewall andremo a creare una regola che permetta di "loggare" il traffico passante dal router:

[code]
/ip firewall mangle add chain=forward connection-state=new action=log
[/code]

Con questi semplici comandi abbiamo configurato il router MikroTik per "loggare" il traffico degli utenti, se infatti utilizziamo l'hotspot ed andiamo a vedere dentro "Log" troveremo sicuramente delle entry di questo tipo:

[code]
Feb 7 2016 20:17:59 firewall,info: in:bridge-hs out:ether1, src-mac 00:03:aa:dd:de:2c, proto TCP (SYN), 172.31.255.253:58523->64.233.166.188:5228, len 60
Feb 7 2016 20:20:16 firewall,info: in:bridge-hs out:ether1, src-mac 00:03:aa:dd:de:2c, proto TCP (SYN), 172.31.255.253:48072->64.233.167.192:7275, len 60
Feb 7 2016 20:22:59 firewall,info: in:bridge-hs out:ether1, src-mac 00:03:aa:dd:de:2c, proto TCP (SYN), 172.31.255.253:47049->64.233.184.188:5228, len 60
[/code]

ovviamente gli IP, le porte ed i mac-address varieranno dall'esempio sopra riportato!

Cosa abbiamo in queste entry? Andiamo ad analizzarle:

Feb 7 2016 10:17:59  Data ed ora del log

firewall,info  Chi ha generato il log (nel nostro caso il firewall)

in:bridge-hs out:ether1 Quali interfacce il pacchetto ha attraversato

src-mac 00:03:aa:dd:de:2c Il MAC ADDRESS del dispositivo in LAN

proto TCP (SYN) Il tipo di protocollo (TCP, UDP, etc)

172.31.255.253:58523->64.233.166.188:5228 L'ip sorgente e l'ip destinatario con le relative porte.

Come ben si nota con questa entry riesco a "loggare" il minimo indispensabile richiesto dalla normativa:

chi (ip sorgente)

dove (ip destinazione)

cosa (protocollo + porta di destinazione, ad esempio TCP/80 è una richiesta HTTP)

quando (data ed ora)

Non avremo mai nei log, ed è corretto così, l'url/dns richiesto dall'utente. Tale informazione lederebbe in maniera netta le leggi sulla privacy degli utilizzatori della nostra area Hotspot WiFi.

Per quanto riguarda il "chi" essendo un ip privato dobbiamo fare un ulteriore ricerca, e andare a vedere, a ritroso, a quale nome utente il sistema aveva assegnato quell'ip.

Scorrendo a ritroso i log troveremo sicuramente una entry tipo:

[code]

Feb 7 2016 9:23:34 hotspot, info 34733xxxxx (172.31.255.253) logged in

[/code]

dove 34733xxxxx è il nome utente e 172.31.255.253 è l'ip associato al momento del login. Questo IP sarà dell'utente per tutta la durata della sua sessione (fino al suo logout dalla rete), dopo il logout quell'ip sarà riutilizzato da un'altro utente, fate quindi attenzione quando andate ad incrociare i dati.

Se vi chiedete se c'è un modo per avere l'username direttamente nella entry di log senza andare a ricercarlo a ritroso... beh leggete fino in fondo 🙂

Redirezionare i log verso un syslog remoto

A questo punto, visto che le reti hotspot generano un alto numero di entry log, dobbiamo redirezionare tali log verso un syslog esterno. Non possiamo lasciarli come sono adesso in quanto si cancellerebbero ad ogni riavvio o al superamento di una soglia (piuttosto bassa).

Procediamo con il configurare l'ip del server syslog. Si consiglia di averlo in LAN con l'hotspot o, se volete metterlo centralizzato in Cloud, assicuratevi di avere banda internet sufficiente. Come parametro di misura considerate che ogni utente attivo genera in media 5Kb di log al secondo, quindi 100 utenti attivi sono 500Kbps e cosi' via.

Per impostare l'ip del server log, ad esempio su 192.168.0.200 digitare:

[code]
/system logging action set remote remote=192.168.0.200
[/code]

Associare adesso le due regole di logging precedentemente create alla nuova action "remote", per fare questo dobbiamo prima trovare il loro id, attraverso un comando print:

[code]
/system logging print

# TOPICS ACTION PREFIX
0 info memory
1 error memory
2 warning memory
3 critical echo
4 firewall memory
5 hotspot memory
[/code]

successivamente modifichiamo la action utilizzando il loro id (nel nostro caso 4 e 5):

[code]
/system logging set 4 action=remote
/system logging set 5 action=remote
[/code]

Adesso i nostri log verranno inviati sul server Syslog remoto tramite il suo protocollo UDP con porta 514 e saranno memorizzati in maniera permanente sullo storage.

Conclusione

Con questo articolo ho illustrato come, in maniera molto semplice, sia possibile generare il flusso di log relativo agli utenti delle aree WiFi create con i prodotti MikroTik o RouterOS based come gli apparati della linea HIPERLINK di SICE.

In un prossimo articolo, per questo il titolo del presente finisce con "parte 1", mostrerò come è possibile includere nella linea di log anche il nome utente, senza doverlo andare a ricercare a ritroso nel file di log.

Volete avere una entry log contenente anche il nome utente? Qualcosa tipo:

Feb 7 2016 20:17:59 firewall,info: 34733xxxxx in:bridge-hs out:ether1, src-mac 00:03:aa:dd:de:2c, proto TCP (SYN), 172.31.255.253:58->64.233.166.188:5228, len 60

dove 34733xxxxx è l'username dell'utente dell'area WiFi?
Allora commentate e condividete con i vostri colleghi di LinkedIn questo post il più possibile 🙂

Come aggregare due o più connessioni internet con un router MikroTik

Come aggregare due o più connessioni internet con un router MikroTik

WirelessGuru-Mikrotik-HowtoTra gli scenari di rete che si possono realizzare utilizzando i router MikroTik, uno dei più richiesti è senza dubbio l'aggregazione di due o più collegamenti internet, come ad esempio ADSL via rame o via wireless.

RouterOS ci fornisce ottimi strumenti per riuscire in questo intento. Vediamo quindi quali sono le strade percorribili per aggregare due o più connessioni internet.

Il primo metodo è sicuramente utilizzando il "semplice" ECMP (Equal Cost Multi-Path). La configurazione ECMP consiste infatti nel mettere più di un destinatario come default gateway ed il nostro router utilizzando la metodologia Round-Robin invierà i pacchetti ethernet ai vari gateway in maniera "democratica".
Se ad esempio avessimo due connessioni ADSL raggiungibili tramite due router configurati con gli ip 172.23.0.1 e 10.0.0.1 basterà impostare il default gateway in questo modo:

[code]

/ip route dst-address=0.0.0.0/0 gateway=172.23.0.1,10.0.0.1

[/code]

Quindi come si può notare basterà aggiungere più gateway separati da una virgola per far sì che il nostro router aggreghi i due flussi. In pratica i pacchetti di rete verranno inviati il 50% al primo gateway ed il 50% al secondo gateway alternandoli uno ad uno in Round-Robin.

 

Se volessimo dare un peso maggiore alla prima connessione rispetto alla seconda potremmo dichiarare più volte un gateway:

[code] /ip route dst-address=0.0.0.0/0 gateway=172.23.0.1,172.23.0.1,172.23.0.1,10.0.0.1 [/code]

In questo esempio manderemmo il 75% dei pacchetti al router 172.23.0.1 ed il 25% al router 10.0.0.1

Questo scenario era molto in "voga" qualche anno fa quando le connessioni Web/HTTP erano più semplici e con meno controlli. Al giorno d'oggi, purtroppo, questo approccio risulta impercorribile in quanto, le moderne tecnologie di pubblicazione Web, fanno largo uso di tecnologie client side (come AJAX) che non permettono richieste "in sessione" da ip diversi. Implementare quindi un aggregazione di questo tipo, anche solo per il protocollo HTTP, risulterebbe disastroso.

E quindi niente aggregazione?

MikroTik per fortuna ha molti assi nella manica. Per aggregare in maniera funzionale due o più connettività possiamo utilizzare il firewall ed il suo "matcher" PCC (Per Connection Classifier).
Questo potente "matcher" permette di identificare i pacchetti appartenenti ad una "connessione" e di marchiarli in maniera diversa in base ad uno "scheduler".

In questo modo possiamo realizzare non tanto un bilanciamento di pacchetti, come per l'ECMP visto prima, ma un bilanciamento di connessioni.

Il flusso di lavoro che spiegherò in un prossimo articolo sarà:

  1. Marcare tramite firewall mangle con il matcher PCC le connessioni
  2. Marcare i singoli pacchetti delle connessioni
  3. Assegnare un marcatore di routing diverso in base allo "scheduler"

 

Tra i vari scenari che ho affrontato in questi anni, uno ricorrente è quello di dover aggregare connessioni che hanno lo stesso gateway su subnet identiche. E' il tipico scenario WISP in cui vengono messe più CPE collegate allo stesso PPPoE server. In questi casi, ipotizzando di avere sul nostro router 3 link al pppoe-server/gateway e che questi assegni come ip endpoint 172.16.0.1:

[code]
[admin@RT-Gianni] > ip address print
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS NETWORK INTERFACE
0 D 172.16.100.2/32 172.16.0.1 pppoe-out1
1 D 172.16.100.3/32 172.16.0.1 pppoe-out2
2 D 172.16.100.4/32 172.16.0.1 pppoe-out3
[/code]

mettere una rotta di aggregazione (ECMP) del tipo:

[code]

/ip route dst-address=0.0.0.0/0 gateway=172.16.0.1,172.16.0.1,172.16.0.1

[/code]

non produrrebbe alcun effetto di aggregazione in quanto lo stesso gateway è presente su 3 indirizzi punto-punto distinti.

Quindi non è possibile eseguire questa tipologia di aggregazione?

Sì, è possibile. Basterà specificare il nome dell'interfaccia al posto dell'indirizzo ip:

[code] /ip route dst-address=0.0.0.0/0 gateway=pppoe-out1,pppoe-out2,pppoe-out3 [/code]

Questa tipologia di configurazione, sottolineo, è possibile effettuarla solo per le configurazioni di ip punto-punto come per l'autenticazione pppoe ed è ovviamente possibile utilizzarla sia per lo scenario ECMP, come nell'esempio, sia per lo scenario "avanzato" Firewall PCC che mi riservo di presentare meglio in un prossimo articolo.

Per concludere direi che ad oggi per aggregare due o più connessioni internet con MikroTik è possibile avvalersi dei potenti strumenti (firewall. policy routing) che RouterOS ci mette a disposizione.

Ovviamente non finisce qui, in quanto un buon aggregatore deve anche controllare se i link sono attivi o meno e riscrivere dinamicamente le tabelle di routing in base allo stato delle connessioni. Anche questo è ovviamente possibile realizzarlo attraverso alcuni potenti strumenti che RouterOS ci offre. In un prossimo articolo presenterò sicuramente il Tool Netwatch.

 

Come non farvi tracciare, tramite traceroute, i router Mikrotik della vostra rete dai clienti

Come non farvi tracciare, tramite traceroute, i router Mikrotik della vostra rete dai clienti

WirelessGuru-Mikrotik-HowtoSe siete dei WISP o degli ISP ed utilizzate apparati MikroTik o SICE Hiperlink per la vostra rete Layer 3, sia con rotte statiche, sia con protocolli dinamici quali OSPF, RIP o BGP, vi sarà capitato, spesso e a malincuore, di vedere "esposti" ad un banale comando traceroute tutti vostri nodi di rete. A livello di sicurezza far conoscere ai vostri clienti il network layout non è proprio il massimo, in quanto una volta identificati gli ip dei nodi di rete, è sempre possibile tentare di eseguire "attacchi" ai vari router. Per "attacchi" intendo sia azioni per guadagnare il controllo del router (attacchi di brute force sugli account ad esempio), sia azioni di DoS (Denial Of Service) per tentare di rallentare o compromettere un nodo.

Ad esempio, se facciamo un traceroute da un router MikroTik, potremmo avere un risultato di questo tipo:

[code gutter="false" highlight="3,4"][admin@WirelessGuru] > tool traceroute 8.8.8.8
# ADDRESS LOSS SENT LAST AVG BEST WORST
1 13.25.11.65 0% 11 12.7ms 14.2 4.3 31.3
2 13.25.11.1 0% 11 4.5ms 7.5 3.5 13.4
3 94.32.134.137 0% 11 7.4ms 9.8 4.6 20.6
4 213.205.31.150 0% 11 12ms 15.7 10.2 29.5
5 94.32.128.105 0% 11 13.6ms 15.9 10.5 30.3
6 94.32.135.161 0% 11 17ms 41.4 13.7 257.5
7 94.32.134.146 0% 11 22.5ms 19.5 12.3 29.5
8 66.249.95.73 0% 11 35.6ms 18.9 11.6 35.6
9 8.8.8.8 0% 11 11.8ms 13 10.8 20
[/code]

I due router MikroTik evidenziati (13.25.11.65 e 13.25.11.1) fanno parte della nostra rete Layer 3 che instrada il traffico dei client verso internet.

Se volessimo far sparire quei router dal risultato del traceroute basterà aggiungere su ognuno di loro questa semplice regola di Firewall Mangle:

[code]/ip firewall mangle \
add action=change-ttl \
chain=prerouting \
disabled=no \
new-ttl=increment:1
[/code]

Una volta inserita la regola di Firewall Mangle di RouterOS, il risultato del nostro traceroute "magicamente" diventerà:

[code gutter="false"][admin@WirelessGuru] > tool traceroute 8.8.8.8
# ADDRESS LOSS SENT LAST AVG BEST WORST
1 94.32.134.137 0% 11 7.4ms 9.8 4.6 20.6
2 213.205.31.150 0% 11 12ms 15.7 10.2 29.5
3 94.32.128.105 0% 11 13.6ms 15.9 10.5 30.3
4 94.32.135.161 0% 11 17ms 41.4 13.7 257.5
5 94.32.134.146 0% 11 22.5ms 19.5 12.3 29.5
6 66.249.95.73 0% 11 35.6ms 18.9 11.6 35.6
7 8.8.8.8 0% 11 11.8ms 13 10.8 20
[/code]

In conclusione abbiamo visto, come con un semplice comando RouterOS di Firewall Mangle, si riesca a proteggere e mantenere anonimo il network layer della nostra backbone realizzata con apparati MikroTik.
Ricordate che la sicurezza nelle reti non è mai troppa ed avere una rete WISP o ISP significa combattere quotidianamente con minacce che arrivano da internet, ma anche, purtroppo, dalla nostra stessa rete.

HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare