Alfabeto Open: H come HotSpot Wi-Fi (con autenticazione SPID)

Gli HotSpot Wi-Fi sono dei luoghi pubblici in cui si concede accesso ad Internet. Gli utenti che di norma ne usufruiscono sono occasionali o comunque numerosi, tanto da renderne la gestione difficile ed impegnativa.

Se state pensando a come implementare un servizio Wi-Fi Free Zone di tipo professionale, tanto da poter essere utilizzato in maniera intensiva in una scuola (ad esempio per realizzare un progetto del Io finanziamento PON sulle reti LAN/WLAN), oppure in un internet cafè o in un ufficio pubblico, allora questa è una soluzione giusta per voi.

wifiIn termini di sicurezza, WPA/WPA2 Enterprise, che bene o male tutti noi già utilizziamo a casa per proteggere le Wi-Fi domestiche, è noto per essere un sistema diffuso e robusto. Di contropartita, in termini di praticità richiede che ogni utente configuri il proprio client (supplicant) per autenticarsi: ciò non è facile o comunque è scomodo, soprattutto per gli utenti occasionali di un HotSpot.

Per questo motivo, per realizzare un HotSpot si preferisce spesso dare accesso agli utenti mediante la funzionalità di un Captive Portal, che non richiede alcuna configurazione sul dispositivo portatile in quanto gli Access Point (gli apparati che forniscono il Wi-Fi) a cui si collega il client vengono programmati in modalità aperta, cioè senza alcuna autenticazione e cifratura.

Il client, in questo caso, si può quindi collegare liberamente (e riceve subito un indirizzo IP dal server DHCP). Tuttavia, il Gateway di accesso a Internet blocca la comunicazione con l’esterno e redirige qualsiasi richiesta Web (http e https) verso un portale di autenticazione (appunto il Captive Portal).

Lo scenario di cui parliamo è rappresentato dallo schema seguente e la soluzione individuata è quella ideata da un noto ed ormai storico autore. Lui è Fulvio Ricciardi e la sua creatura è Zeroshell.

Scrive infatti Fulvio, chiarendo un passaggio importante: “Alcuni Access Point Wireless implementano internamente un Captive Portal, ma spesso questo è poco configurabile ed adattabile alle esigenze di un Hotspot. Risulta invece più flessibile e conveniente utilizzare degli Access Point economici, senza alcuna caratteristica avanzata, e demandare la funzione di Captive Portal ad un router che funge da gateway verso Internet”.

Vediamo quindi cosa si può fare con Zeroshell.

Modello collegamento Internet

La prima importante funzionalità che un HotSpot deve avere, dunque, è quella dell’Autenticazione attraverso un Captive Portal.
La contropartita di tale semplicità un poco si paga a causa di una intrinseca debolezza dal punto di vista della sicurezza, ma Zeroshell interviene anche a mitigare tale debolezza:

  • instaurando un tunnel SSL criptato contro lo Spoofing (falsificazione di IP e MAC address)
  • intercettando le richieste potenzialmente riconducibili ad attacchi di tipo Denial of Service (DoS).

Altra caratteristica interessante è che il Captive Portal di Zeroshell può utilizzare diverse fonti di autenticazione, anche contemporaneamente, una delle quali sta diventando oggi molto ricercata in quanto portata indirettamente alla ribalta da SPID, il nuovo Sistema Pubblico per la gestione dell’Identità Digitale (in sintesi, il sistema di login che permetterà a cittadini ed imprese di accedere con un’unica propria identità digitale).

In maniera predefinita Zeroshell autentica gli utenti utilizzando il suo KDC Kerberos 5 interno in una Directory LDAP, ma potremo scegliere se utilizzare fonti esterne di autenticazione quali:

  • REALM Kerberos 5
  • server RADIUS
  • Identity Provider SAML 2 (proprio quella che possiamo usare con SPID o, per meglio dire, con uno dei gestori dell’identità digitale accreditati da AgID).

Zeroshell rende disponibile anche un login mediante Certificati Digitali X.509, che permettono l’accesso tramite Smart Card (esempio carta d’identità elettronica – CIE, carta nazionale dei servizi – CNS) o tramite il classico Token USB, ovviamente dietro digitazione del proprio PIN personale.

wifi pinguinoL’implementazione dei due ultimi sistemi di autenticazione (SAML + X.509) sarebbe in grado di raggiungere addirittura la modalità di identificazione SPID 3, cioè quella con livello di sicurezza più alto (password + smart card). Il condizionale resta d’obbligo, visto che non si accettano mai conferme solo “sulla carta”, ma vista l’utilità, la semplicità e la disponibilità della soluzione, vi inviterei caldamente a fare dei test di persona, cosa che ovviamente farò a mia volta.

Nel caso di autenticazione RADIUS o Kerberos 5, infine, gli utenti possono provenire (ed essere gestiti) da domini esterni diversi, come ad esempio un dominio Windows Active Directory.

La seconda funzionalità necessaria ad un gestore di HotSpot è il Connection Tracking, ovvero la registrazione degli accessi e delle connessioni TCP/UDP nei log.

Nel rispetto della Privacy, tale funzione non permette di risalire ai contenuti delle comunicazioni degli utenti, ma soltanto a determinare quali indirizzi siano stati contattati (e quando).

Attenzione: risulta utile attivare un logging delle connessioni, perché a causa del NAT (Network Address Translation, necessario a far comunicare la WAN ed i Client), tutte le connessioni risultano generate dall’indirizzo IP pubblico del router (cioè come se fosse un solo unico utente!).

Può essere indispensabile, invece, poter risalire ad ulteriori dettagli dai log del Captive Portal, poiché chi mette a disposizione di terzi la connessione ad Internet può risultare civilmente responsabile di attività illecite commesse tramite la connessione stessa, se non può dimostrare alle forze dell’ordine che siano stati terzi (anche sconosciuti) a commettere tali attività.

La terza funzione fornita da Zeroshell e molto utile al gestore dell’HotSpot è l’Accounting, ovvero la contabilizzazione del tempo, del traffico, del costo di connessione e l’impostazione dei limiti di connessione.

Secondo lo standard RADIUS è possibile assegnare gli utenti ad una Classe di accounting (un gruppo), a cui poi si attribuiscono parametri molto utili come:

  • Limite orario di connessione
  • Limite massimo di traffico generato (in entrata e in uscita) in Megabyte
  • Tipo di pagamento (Prepagato e postpagato)
  • Costo per Megabyte di traffico
  • Costo orario della connessione

Come quarta “funzione” utile annoveriamo Zerotruth, un pacchetto aggiuntivo sviluppato da Nello Dalla Costa che migliora e semplifica la gestione del Captive Portal di Zeroshell.

Come motiva l’autore, è un pacchetto pensato “per farlo gestire ad una persona con poche competenze che, dall’interfaccia di Zeroshell, potesse aver accesso a tutte le caratteristiche”.

Il pacchetto consente anche di mettere utilmente a disposizione degli utenti dell’HotSpot una procedura di auto registrazione, attivando un meccanismo di accreditamento basato sull’invio di email oppure di codice via SMS.

Chi vorrà utilizzare l’HotSpot potrà fornire, ad esempio, un numero di cellulare valido al quale Zerotruth provvederà ad inviare automaticamente un codice d’accesso (tramite servizi SMS gateway via web quali Skebby, Aimon, Smsbiz, Mobit e Smsglobal, oppure utilizzando un Cellular Modem attraverso il software Gammu).

A questa modalità si aggiungono anche quelle di auto registrazione con i più popolari Social Network: Facebook, Google+ e Twitter.

Rendiamoci consapevoli del fatto che entrambi i prodotti, sia Zeroshell che Zerotruth, sono 100% Software Libero (che come abbiamo detto non si paga, ma non significa gratis), sono italiani così come la relativa documentazione, molto chiara e completa, funzionano benissimo, sono molto utilizzati ed hanno una comunità di utenti molto attiva, anche nel fornire supporto tecnico a chiunque ne abbia bisogno.

Oggettivamente, mostrare il valore di Zeroshell in questo breve articolo è un impresa difficile perché sono tantissime le cose che consente di fare, non solo nella gestione di un HotSpot.

Infatti è una generosa distribuzione Linux, sviluppata per server e dispositivi embedded già dal lontano 2005, il cui scopo è fornire tutti i principali servizi di rete di cui una LAN necessita: firewall, server RADIUS, server VPN, load balancer, strumento per la gestione del QoS (Quality of Service), server DNS, DNS-forwarder, server DHCP, Transparent proxy, Filtro web, IDS …ed altro ancora.

Sempre attraverso interfaccia web (da qui l’origine del nome, “zero riga di comando”), immaginatevi che all’HotSpot appena descritto potremmo tranquillamente aggiungere le funzioni di router Multi-WAN con bilanciamento e failover di due o più collegamenti Internet esistenti (indispensabile quando si hanno più ADSL a disposizione), oppure le funzioni di filtraggio dei contenuti Web (per chi ha necessità, ad esempio, di filtrare le pagine Web non idonee ai minori).

Tutto disponibile nella medesima soluzione, altamente scalabile, e come dico spesso… scusate se è poco!

Dulcis in fundo, valutiamo che Zeroshell funziona anche su macchine meno recenti (Pentium 233Mhz, 96MB di RAM), questo perché è una distribuzione “from scratch” (cioè sviluppata passo passo, interamente da codice sorgente, e senza derivare da altre distribuzioni GNU/Linux modificate).

Questa caratteristica le conferisce una compattezza e delle performance senza pari. Per questo motivo è possibile utilizzarla anche su device embedded (cioè dispositivi hardware miniaturizzati opportunamente pensati a questo scopo, come quelli prodotti da Alix ed altre marche).

Non rimane, quindi, che rimboccarci le maniche ed iniziare a progettare qualcosa di utile, ma non senza prima aver ringraziato davvero di cuore:

  • Fulvio Ricciardi, per l’egregio lavoro svolto, da anni a questa parte, a tutto vantaggio (ed orgoglio) dell’ormai imponente comunità di utenti Zeroshell
  • Nello Dalla Costa, che con il suo impegno ha contribuito a migliorare e rendere ancora più semplici alcune funzioni utili ad un gestore di HotSpot, dimostrandoci in modo concreto ancora una volta il vantaggio che apporta il Software Libero, con il suo modello di sviluppo condiviso e di licenza copyleft.

Ed ora… buon divertimento a tutti.

 

 

Facebook Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here