MikroTik Logging: inserire il nome utente nelle righe di log per gli Hotspot o PPPoE server

MikroTik Logging: inserire il nome utente nelle righe di log per gli Hotspot o PPPoE server

WirelessGuru-Mikrotik-Log-Hotspot-Connection-Part-2-username-add-on-every-log-lineAlzi la mano chi non ha mai desiderato avere direttamente fruibile l'username, che in molti casi si traduce nel numero di cellulare, in ogni riga di log generata dal nostro fido hotspot (o pppoe server) realizzato con MikroTik.

Come avete visto dal precedente articolo MikroTik Hotspot: Come loggare il traffico degli utenti (parte 1) si può realizzare in maniera molto efficace un logging, perfettamente a norma di legge, delle connessioni che transitano nella rete autenticata tramite hotspot (o pppoe server). Vi invito a leggerlo se non lo avete ancora visionato.

La totalità degli hotspot che mi è capitato di analizzare (e di realizzare) fino ad oggi utilizzavano quelle regole per attivare il logging. Però ogni qualvolta dovevano essere analizzati, per esempio a seguito di richiesta da parte della Polizia Postale, iniziava il "calvario" di ricercare quale username avesse quell'ip privato in quel momento. Ripeto, alzi la mano a chi non è capitato e non abbia pensato: come sarebbe grandioso avere subito l'username a portata di "mano".

Cosi' mi sono deciso di trovare una soluzione a questa problematica. Vediamo subito cosa sono riuscito a realizzare. Partiamo dal risultato:

WirelessGuru MikroTik Logging with Username in every row

Come ben vedete nel riquadro rosso abbiamo un numero di cellulare (mascherate per privacy le ultime cifre). Questo è il risultato che volevamo no? Adesso è molto semplice sapere chi alle 22:36 del 31 marzo 2916 è andato a visitare il sito web ospitato sul server 212.48.10.49.

Ma come ci siamo riusciti? Vediamolo assieme.

Regole di firewall custom ed un pizzico di scripting

Per riuscire ad inserire il nome utente nella riga di log dobbiamo utilizzare il campo "prefix" presente nella regola di firewall che genera il log, come spiegato nell' articolo precedente, quindi per ogni username ci vorrà una regola di firewall dedicata. Proprio cosi', a differenza di quello che abbiamo realizzato fino ad oggi, che con una potente ed unica regola generavamo il logging di un'intera rete, per avere regole customizzate dobbiamo obbligatoriamente avere almeno una regola per ogni username attivo nella macchina.

Ma come generiamo le regole? Ovviamente non manualmente. Ci dobbiamo avvalere di una features introdotta non da molto sul sistema operativo RouterOS. Sto parlando della possibilità di lanciare uno script per ogni utente che effettua il login e conseguentemente lanciare uno script diverso per ogni utente che effettua il logout.

Dove troviamo questa potente funzionalità? All'interno della sezione user-profile del nostro hotspot MikroTik (o pppoe server).

Per pulizia di pensiero e di lavoro creeremo una nuova catena di firewall, e la chiameremo "customlog".

All'interno dello script che viene chiamato ogni volta che l'utente fa login possiamo utilizzare delle variabili, a noi interessano per i nostri scopi le variabili $user e $address che contengono rispettivamente il nome utente e l'indirizzo io che gli è stato assegnato dal sistema.

Andremo a creare una semplice regola di firewall di questo tipo:

[syntax type="html|php|js|css"]

/ip firewall mangle add chain=customlog src-address=$address connection-state=new action=return log=yes log-prefix=$user comment=$user

[/syntax]

e la mettiamo nello script di "On login" della sezione Hotspot User Profile:

WirelessGuru-Regola-Log-Custom-In-User-Profile-1

Dopo aver inserito questa regola se proviamo a fare login nel nostro hotspot MikroTik vedremo che verrà creata una regola dinamica di firewall come dal seguente screenshoot (regola con id 1):

WirelessGuru-Hotspot-Logging-Dinamic-Firewall-Rulez

I più attenti noteranno una regola con id 0 di cui non abbiamo parlato. A cosa serve? Semplicemente serve per controllare il traffico che vogliamo redirigere alla nostra chain "customlog". In questo esempio facciamo passare tutto il traffico in forward dalla chain "customlog". Ecco la regola:

[syntax type="html|php|js|css"]/ip firewall mangle add chain=forward action=jump jump-target=customlog[/syntax]

Senza questa regola non verrà in alcun modo loggato il traffico.

Se apriamo i nostri log vedremo che il nome utente sarà correttamente presente in ogni linea di log.

Abbiamo finito quindi?

No, manca poco ma non è ancora finito.

Un po' di pulizia, rimuovere la regola di firewall al logout utente.

Dobbiamo obbligatoriamente rimuovere la regola di firewall appena creata al logout dell'utente altrimenti questa regola falserebbe i futuri log collegati a quell'indirizzo ip.

Andiamo quindi ad inserire nella sezione "On logout" del nostro Hotspot User-Profile il seguente comando:

[syntax type="html|php|js|css"]/ip firewall mangle remove [find comment="$user"][/syntax]

per far rimuovere la regola di firewall non appena il nostro utente esegue il logout (o viene buttato fuori dalla rete per inattività/idle-timeout)

WirelessGuru-Mikrotik-Hotspot-Remove-Dynamic-Firewall-Rulez-on-Logout

A questo punto abbiamo completato la configurazione e siamo riusciti con pochi semplici passi ad aggiungere in ogni riga di log, generata dal nostro router MikroTik, il nome utente del nostro sistema hotspot o pppoe che ha generato quella connessione.

Se pensate che questo articolo sia interessante, o possa interessare a qualcuno che conoscete non esitate ad inoltrarlo e/o condividerlo con i vostri colleghi sui social network.

Sei interessato all'acquisto di materiale WiFi per realizzare hotspot? Compila la form sottostante:

Nome e Cognome

Ragione sociale

Indirizzo email

Messaggio

HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare
HashFlare