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 🙂
Leggetelo fino in fondo se volete anche la parte 2: “come includere nella linea di log anche il nome utente, senza doverlo andare a ricercare a ritroso nel file”
Leggetelo fino in fondo se volete anche la parte 2: “come includere nella linea di log anche il nome utente, senza doverlo andare a ricercare a ritroso nel file”
Leggetelo fino in fondo se volete anche la parte 2: “come includere nella linea di log anche il nome utente, senza doverlo andare a ricercare a ritroso nel file”
buondì,
volevo segnalare 2 errori che ho trovato e risolto su una riga e cioè:
ip firewall mangle chain=forward action-state=new action=log (errata)
ip firewall mangle add chain=forward connection-state=new action=log (corretta)
vorrei anche gentilmente chiederti un aiuto per la realizzazione della seconda parte da te annunciata per inserire il nome utente direttamente sul log
Grazie
Grazie mille per la segnalazione! Ho provveduto a correggere il post!
Per quanto riguarda la richiesta, che difficioltà hai avuto nell’implementarlo?
Articolo interessante e molto utile.
Grazie mille!