SquidTL – Limitare l’accesso alla rete

squidtlCon questo articolo vi presento un software che ho scritto in questi giorni, SquidTL, per far fronte alle richieste di alcuni colleghi che gestiscono le famigerate aule informatiche. Il problema è che molti utenti occupano a lungo le postazioni al pubblico per scopi tutt’altro che didattici, ovvero Facebook, MSN, et simila (oltre a porno e warez) per ore ed ore, limitando un servizio che dovrebbe servire esclusivamente a scopi didattici e di ricerca.

ATTENZIONE: non è questa la sede per dibattere sullo scopo e le potenzialità dei social networks percui Facebook è solamente un possibile esempio e nulla di più (oltretutto anche io sono su FB e lo uso anche per lavoro…).

Comunque, tornando a SquidTL, si tratta di un programma che agisce come un URL Rewriter per il Proxy Squid. Si interfaccia ad un DB MySQL per mantenere traccia delle attività e per la configurazsquidtl-flowione delle regole da analizzare.

Il tutto è, sul piano teorico, abbastanza semplice: essendo l’HTTP un protocollo stateless (quando visito un sito web apro la connessione per scaricare la pagina, poi la chiudo, poi la riapro per ogni immagine, la richiudo etc etc) è difficile -se non impossibile- tenere traccia del tempo preciso di visita su un certo sito.

SquidTL utilizza un principio semplice, brutto e banale: conta quante connessioni vengono effettuate su un certo dominio in un certo lasso di tempo. Le regole definiscono quant’è il limite delle connessioni e, se superato, reindirizza ad una pagina “url blocked” configurabile.

Per quanto stupido come principio, posso dire che -se ben configurato- è abbastanza efficace. Da alcune prove che ho fatto impostando un limite di 100 connessioni in 60 minuti su Facebook, ho visto che riesco a controllare la mia bacheca, la posta, rispondere ad un paio di messaggi ed aggiornare lo stato senza problemi. Se inizio a perderci troppo tempo…Page blocked !

In più è possibile definire periodi di tempo, su base settimanale (giorni della settimana e range orario) in cui le regole devono essere applicate: questo può serviore se desideriamo fornire agli utenti degli orari di grace time (es. sabato mattina, ora di pranzo, etc etc).

Attenzione: SquidTL non effettua l’autenticazione degli utenti attraverso username e password.

Tutta la configurazione delle regole di SquidTL è memorizzata su tabelle di MySQL: questo significa che non c’è la necessità di riavviare il servizio e che il tuning può essere tranquillamente fatto in realtime.

Nell’immagine a sinistra si può vedeworkflowre il workflow dei processi eseguiti da SquidTL. Gli utenti sono raggruppati in gruppi che afferiscono ad n regole, configurabili direttamente attraverso la GUI PHP che accompagna il demone (scritto in linguaggio C). Sul sito web di SquidTL trovate alcuni screenshots oppure potete provarla voi stessi su GnuUNISI chiedendo l’accesso allo staff.

Gli utenti possono essere identificati tramite IDENT, IP o range IP (nel caso di aule informatiche): in quest’ultima situazione viene creato un utente temporaneo per ogni IP univoco che effettua l’accesso, nella forma nomeutente_IP (es. BibliotecaBCG_10.0.0.23).

Le regole, allo stato attuale, definiscono quante connessioni X possibili in Y minuti prima di venir bloccati (reindirizzati al RedirectURL). Alla pagina di redirect vengono passate delle variabili di tipo GET con il motivo del blocco.

Per gli utenti anonimi (non riconosciuti dal sistema) si applicano una serie di regole definite dall’apposita configurazione di SquidTL.

SquidTL è software libero rilasciato sotto licenza Gnu GPL v.2 ed è, ovviamente, disponibile esclusivamente in codice sorgente (da compilare sulla macchina host). Ho rilasciato da poco la versione 0.0.3 di SquidTL e c’è ancora molta strada da fare: tuttavia il prodotto è abbastanza stabile da poter essere usato. SquidTL è anche su Freshmeat.net.

Contributi, aiuto, suggerimenti e –soprattutto– bug reports sono i benvenuti ! Ho anche aperto una discussione sul nostro FORUM DI SUPPORTO ED ASSISTENZA.

Grazie, Michele