// Stai leggendo ...

L'angolo dello Smanettone

Howto: Hotspot Wifi basato su Openwrt in regola con la Pisanu

image_previewIl progetto di un Hotspot pienamente in regola con la legislazione italiana (cosiddetto decreto Pisanu) ci offre lo spunto per approfondire la conoscenza di Openwrt, camaleontico firmware opensource per dispositivi embedded. Interfaccia grafica, gestione a mezzo script, “tonnellate” di pacchetti “extra”: ecco cosa c’e’ di nuovo nell’ultimo rilascio di Kamikaze! e come compilarlo.


AGGIORNAMENTO: Inserito in calce all’ articolo il link all’ immagine precompilata pronta per il download e l’installazione.

Nelle ultime settimane ho portato a termine un piccolo progetto che mi ha permesso di riscoprire Openwrt, uno dei migliori e più completi firmware per apparati embedded quali router e gateway domestici.
In particolare l’obbiettivo del mio “lavoro” era quello di sviluppare un hotspot per un limitato numero di utenze (un condominio composto da 8 unità abitative) pienamente in regola con l’attuale normativa antiterroristica italiana (il cosidetto decreto -ora legge- Pisanu) e quindi in grado di “tracciare” gli accessi e -anche se la questione è controversa- gli IP visitati durante la navigazione internet.

In rete è possibile reperire diverse soluzioni più o meno “commerciali” rispondenti a quelle che erano le mie esigenze. Proposte tutte caratterizzate dall’essere basate su Openwrt, il che mi ha spinto a “prediligere” una soluzione “fatta in casa”: grazie all’ elevato grado di configurabilità e personalizzazione garantiti dal firmware opensource, infatti, è possibile “trasformare” il nostro hardware in una vera e propria “piccola distribuzione” linux capace di svolgere i compiti più disparati.

KAMIKAZE: COSA C’E’ DI NUOVO:

La recente serie di Openwrt (denominata Kamikaze) oltre a mantenere inalterate alcune delle caratteristiche “principe” dei precedenti lavori quali ad esempio la gestione dei pacchetti tramite un tool a riga di comando molto simile ad apt-get di debian (denominato opkg) ha introdotto numerose novità che in parte rappresentano una rottura con gli schemi del passato e possono disorientare l’utente alle “prime armi” o che si riavvicina al firmware opensource dopo molto tempo (come nel mio caso).

In particolare l’introduzione di una interfaccia grafica per la gestione dei parametri principali dell’hardware (LUCI) e l’adozione di un sistema di configurazione per mezzo di script (UCI) con il conseguente “pensionamento” di nvram e delle scritture nella memoria non volatile rappresentano “veri e propri passi da gigante” verso una maggiore semplificazione e “massificazione” del progetto che finalmente comincia a “strizzare” l’occhio anche all’utenza finale.

Il passaggio dal sistema di gestione precedente all’attuale (ad esempiowifi-overview tramite scripting ora si può configurare anche iptables!) però non è esattamente indolore anche (purtroppo) a causa di una documentazione per alcuni aspetti un pò scarsa, superficiale e non sempre di facile reperimento (per lo più è necessario “lurkare” lo sterminato forum prestando ben attenzione a non seguire le indicazioni, ormai quasi sempre obsolete, che si riferiscono alla precedente serie White Russian).

Inoltre l’adozione di LUCI, l’interfaccia grafica, rende veramente esiguo lo spazio a disposizione per l’installazione di ulteriori pacchetti e dunque, a differenza del passato, si rende praticamente sempre necessario andare a compilare una immagine “personale” ogniqualvolta si voglia realizzare un progetto di media complessità.
Immagine personale che grazie all’adozione di squash allocherà in modo ottimale la scarna memoria flash (di norma 4MB) che equipaggia i nostri router/gateway (in breve: il software occupa meno spazio quando compilato all’interno del firmware piuttosto che installato a parte).

HOTSPOT: PREREQUISITI

Il nostro hotspot dovrà quindi autenticare gli utenti grazie ad un database radius (wpa2 enterprise), loggare e salvare i dati di traffico su di una tabella mysql (remota) grazie ad un tunnel ssh criptato, “ruotare” i log e sincronizzarli con il medesimo server sempre tramite tunneling sicuro. Su espressa richiesta degli interessati verrà inibito il traffico P2P.
Per far questo oltre ai pacchetti presenti in ogni installazione minimale di Openwrt è necessario compilare:

dropbear – 0.51-2 -
dropbearconvert – 0.51-2 -
freeradius – 1.1.6-1 -
freeradius-democerts – 1.1.6-1 -
freeradius-mod-chap – 1.1.6-1 -
freeradius-mod-detail – 1.1.6-1 -
freeradius-mod-eap – 1.1.6-1 -
freeradius-mod-eap-md5 – 1.1.6-1 -
freeradius-mod-eap-mschapv2 – 1.1.6-1 -
freeradius-mod-eap-peap – 1.1.6-1 -
freeradius-mod-eap-tls – 1.1.6-1 -
freeradius-mod-eap-ttls – 1.1.6-1 -
freeradius-mod-files – 1.1.6-1 -
freeradius-mod-mschap – 1.1.6-1 -
freeradius-mod-pap – 1.1.6-1 -
freeradius-utils – 1.1.6-1 -
iptables-mod-extra – 1.3.8-4.1 -
iptables-mod-filter – 1.3.8-4.1 -
iptables-mod-ulog – 1.3.8-4.1 -
logrotate – 3.7.1-1 -
monit – 4.10.1-1 -
ntpclient – 2007_365-1 -
rsync – 3.0.3-1 -
ulogd-mod-extra – 1.24-1 -
ulogd-mod-mysql – 1.24-1 -

Inoltre, avendo deciso di inserire anche una unità disco esterna con finalità di immagazzinamento, backup e swap, ho aggiunto:

kmod-fs-ext3 – 2.4.35.4-brcm-2.4-1 -
swap-utils – 2.13.0.1-2 -

La scelta di autenticare gli utilizzatori con una chiave WPA2Enterprise è openwrt-make-menuconfigdettata dal limitato numero di utenti da servire, per progetti destinati ad una platea più ampia è certamente preferibile una soluzione basata su di un captive portal (ad ex. chillispot), che io invece ho scartato per alcune ragioni di opportunità (necessità di dover digitare username e password ad ogni accesso, finestre di pop-up, necessità di dover sempre “tenere aperto” il browser per scongiurare disconnessioni … ).

COMPILIAMO OPENWRT KAMIKAZE 8.09.1


Per prima cosa reperiamo l’ultima versione stabile di Openwrt:

mkdir openwrt
cd openwrt
svn co svn://svn.openwrt.org/openwrt/tags/8.09.1

Passiamo a verificare la presenza di tutti i pacchetti necessari alla compilazione:

cd 8.09.1
make prereq

L’output di questo ultimo comando vi indicherà l’eventuale software mancante da installare.
Ora è necessario scaricare le informazioni inerenti i pacchetti software “extra”: il trunk di kamikaze infatti contiene solo il sistema minimale.

./scripts/feeds update

Non resta che andare a personalizzare la nostra immagine (qualora utilizziate un router Linksys vi consiglio vivamente di continuare ad utilizzare il più stabile ramo Broadcom 2.4 del kernel):

make package/symlinks
make menuconfig

Una volta ultimato questo passaggio passiamo alla compilazione vera e propria:

make

Il processo impiega diverse ora ed è necessario disporre di una connessione ad internet per tutto il tempo necessario all’ultimazione delle operazioni.
Per questo motivo rendo disponibile l’immagine precompilata a questo indirizzo.

A presto per il proseguio della nostra “avventura” !

PARTE 2: Le configurazione di rete ed il radius server
PARTE 3: Logging del traffico, backup e blocco del p2p
PARTE 4: Il monitoraggio remoto e l’unità disco esterna

Commenti

commenti


I commenti all'articolo

26 commenti for “Howto: Hotspot Wifi basato su Openwrt in regola con la Pisanu”

  1. [...] aver correttamente compilato ed installato la propria immagine di Openwrt come suggerito nella “precedente puntata” della nostra guida possiamo passare alla configurazione vera e propria dei diversi componenti [...]

    Commentato da [Howto] Hotspot in regola con la Pisanu (parte 2): le configurazioni di rete ed il server radius | Libera il VoIP | | agosto 24, 2009, 00:04 |
  2. [...] Nota sul filtraggio del traffico p2p: Sebbene iptables offra 2 strumenti atti a questo scopo (ip2pp e L7-filter), dei quali soltanto il secondo sembra attualmente mantenuto ed aggiornato, personalmente ho ottenuto risultati migliori con IP2PP. Nulla vi vieta di utilizzare l’altro protocollo: entrambi sono infatti presenti nel firmware precompilato che ho messo a disposizione. [...]

    Commentato da [Howto] Hotspot in regola con la Pisanu (parte 3): logging e conservazione traffico, filtro p2p | Libera il VoIP | | agosto 26, 2009, 00:16 |
  3. Ciao, innanzitutto grazie e complimenti per l’ottima guida. Sto iniziando anche io ad informarmi sulla realizzazione di un hotspot “open”, posso chiederti perchè hai preferito una openwrt ad una zeroshell o dd-wrt? Ancora complimenti

    Commentato da Daniele Giovanardi | agosto 31, 2009, 17:54 |
    • ciao Daniele, personalmente ho preferito openwrt per il sistema di pacchettizzazione “debian style” e poi perchè a differenza di dd-wrt non ha componenti a pagamento ed è molto più flessibile e, a differenza di zeroshell, può essere installata direttamente nel router.
      Il mio attuale progetto “in sviluppo” è un hotspot completamente indipendente come questo con autenticazione a mezzo sms: sono ad uno stadio di sviluppo molto avanzato, solo che, per limiti miei (non conosco ne perl ne php), non so come gestire l’interrogazione al DB mysql (per recuperare user e pass) e il successivo reinvio a mezzo sms.

      Commentato da skumpic | settembre 1, 2009, 00:25 |
  4. [...] Howto: Hotspot Wifi basato su Openwrt in regola con la Pisanu (5) [...]

    Commentato da lejubila's blog » [Howto] Hotspot in regola con la Pisanu (parte 4): monitoraggio remoto e swap file | settembre 20, 2009, 00:59 |
  5. Non saono affatto un esperto in reti, ma se ben mi ricordo, ogni dispositivo per connessioni in rete, (e quindi anche le chiavette wi-fi) hanno un indirizzo MAC univoco.
    Una semplice domanda, quindi, sorge spontanea…non sarebbe possibile autenticare l’accesso ad un access point (e quindi ad un hotspot) non con una chiave WEP o altra PW ma con l’indirizzo MAC del dispositivo?
    Vi sarei grato se mi faceste sapere qualcosa in merito.
    Grazie e salutoni

    Commentato da Giovanni | ottobre 5, 2009, 23:10 |
  6. Hai perfettamente ragione. In quasi tutti i router che io conosco è possibile autenticare con l’indirizzo MAC del dispositivo Wi-fi. Di fatto era la soluzione che utilizzavo per la rete della casa.
    saluti

    Commentato da Andrea | ottobre 5, 2009, 23:23 |
    • E’ possibile, ma il MAC è facilmente clonabile e replicabile su altre macchine.
      Sarebbe come chiudere la porta di casa lasciandoci su le chiavi: tutti potrebbero accedervi ed in questo modo non sapremo mai chi ha rubato la marmellata :P

      Commentato da skumpic | ottobre 13, 2009, 23:43 |
  7. Ciao, anzitutto complimenti per la dettagliata guida.
    Ho solo un dubbio a riguardo, la legge Pisanu (unica nel suo genere), obbliga il “proprietario” dell’ Hot Spot ad identificare i propri utenti proprio come gli internet point.
    Di fatti le leggi che vincolano queste moderne tecnologie hanno le stesse regole dei diffusi I.Point.
    La domanda è la seguente:
    come si risolve il maledetto problema dell’acquisizione dei documenti dell’utente che intende utilizzare una rete Hot Spot che io metto a sua disposizione e come conservo questi documenti?

    Commentato da Elisa | ottobre 28, 2009, 16:51 |
    • ciao, beh dipende dalle dimensioni della struttura!
      Ad esempio nel mio caso, trattandosi di una piccola installazione, abbiamo adottato carta e calamaio (fotocopie).
      Altre volte per realtà più complesse (ad esempio strutture alberghiere) è stato sufficiente armarsi di mysql e scanner: un piccolo database che al fianco dei dati di connessione tenesse traccia anche della copia del documento di identità del cliente.

      Vi è poi la possibilità di gestire il tutto anche tramite autenticazione via sms, ma non mi sono mai spinto in tal senso, dal momento che soprattutto gli stranieri sono “riottosi” a dover inviare un sms

      Commentato da skumpic | ottobre 30, 2009, 17:17 |
  8. Ciao,
    non mi e’ chiaro questo:

    “Per far questo oltre ai pacchetti presenti in ogni installazione minimale di Openwrt è necessario compilare:”

    Questi pacchetti fanno parte di openwrt o da dove li prendo? Per la fonera che tipo di processore scelgo?

    Commentato da gabriele | novembre 11, 2009, 00:06 |
    • Ciao gabriele.
      I pacchetti indicati ovviamente fanno parte di openwrt: puoi decidere di installare il firmware nella sua versione “minimale” rilasciata dagli sviluppatori e quindi aggiungere i pacchetti indicati “a mano” (per mezzo del gestore di pacchetti opkg) oppure creare un firmware “custom” in cui compili come “statici” i pacchetti indicati (ed è questa la strada che ho seguito io).
      Compilando il tutto “come statico” c’è un grosso guadagno a livello di spazio (tutto il software è compresso) viste le limitate dimensioni della FLASH dei nostri router (nel mio linksys appena 4mb).

      Il chipset della fonera è: Atheros AR2315

      Commentato da skumpic | novembre 14, 2009, 21:44 |
  9. Ho capito, ma da dove li vado a compilare staticamente?
    Non mi e’ ben chiaro dove sono i sorgenti di questi, chiamiamoli moduli, anche se non lo sono, e come posso fare per compilarli staticamente in openwrt, o come programmi a parte da far caricare con il packager manager.

    Commentato da Gabriele | novembre 16, 2009, 23:10 |
  10. Ho eseguito tutto cio che c’era riportato ed effettivamente ho trovato la soluzione.
    Non avevo proprio capito che ./scripts/feeds update servisse per aggiungere i pacchetti mancanti. Sai com’e’ dove aver passat nottate intere a ricompilare i kernel vanilla e poi aplicarci le patch debian, non immaginavo proprio che compilare openwrt fosse come compilare un kernel e che gli si potessero aggiungere pacchetti in quel modo. Grazie, ottimo articolo.

    Commentato da Gabriele | novembre 20, 2009, 21:36 |
    • E si :):) Piccoli compilatori di kernel crescono !! :O
      Non ti preoccupare anche io ho impiegato più di qualche settimana a comprendere esattamente cosa e come fosse possibile sfruttare le “decine” di opportunità che openwrt ci riserva.
      E’ una “debian” per router con un ottimo gestore di pacchetti alla apt !!!
      Ti darà moltissime soddisfazioni. Purtroppo però la documentazione è scarsa ed i forum mantenuti molto male (e le persone che lo frequentano non sono sempre cortesi :( ), ma questo -parere personale- è uno dei GRANDI limiti della comunità linux.

      Commentato da skumpic | novembre 23, 2009, 18:07 |
      • Non e’ uno dei grandi limiti della comunita’ linux. E’ uno dei grandi problemi delle nuove leve. Spesso solo perhce’ sanno fare 2+3 si reputano grandi guru. Via via che GNU/Linux raggiungera’ sempre maggior fama, si avranno sempre piu’ fenomeni di questo tipo.
        Paradossalmente se provi a chiedere aiuto ad i veri guru, ti rispondo senza nessuna difficolta’ e senza tirarsela piu’ di tanto.

        Commentato da gabriele | novembre 23, 2009, 19:33 |
  11. Ciao
    complimenti per il post. Scusa se ne aprofitto per chiederti aiuto ma sono un niubio. Consigliato dai ragazzi del Lug di Vicenza, ho acquistato un fonera+ (il modem è un dlink300T).
    Mi hanno installato Openwrt.
    Io ho fatto un cavolata
    nella schermata del softwere ho elimitato il file pppoa e non riesco più a connettermi ad internet.
    ora sto usando un netgear. volevo chiederti dove trovo quel file che mi serve e come faccio ad reinstallarlo nel fonera se non ho la linea? Grazie mille per l’attenzione e complimenti per il tuo sito che ho aggiunto ai preferiti
    Buon anno Nicola
    Laptop "Ubuntu 9.04 GNU/Linux" - PC "Ubuntu 8.10 GNU/Linux"

    Commentato da Kiefer | dicembre 27, 2009, 09:29 |
    • ciao Kiefer e benvenuto,
      il problema è meno “preoccupante” del previsto :)

      Connettiti al tuo router tramite cavo lan (ad una delle prese LAN 1 – LAN 4) ed accedi alla consolle (se hai eliminato il file pppoa sicuramente sei “entrato” via ssh con la tua username e password).
      A questo punto da terminale digita in successione:
      uci set network.wan.proto=pppoa
      uci set network.wan.ifname=eth0.1
      uci set network.wan.encaps=vc
      uci set network.wan.vpi=8
      uci set network.wan.vci=35
      uci set network.wan.username=tuousername
      uci set network.wan.password=tuapassword
      uci commit network
      ifup wan

      I tuoi dati potrebbero essere leggermente differenti (specialmente per quanto riguarda l’incapsulation (non so se il tuo operatore usi vc o llc)

      Commentato da skumpic | dicembre 28, 2009, 12:54 |
  12. Ciao Skumpic,
    grazie per l’articolo che sto seguendo pero’ mi sono fermato subito..
    Ho installato openwrt KAMIKAZE (8.09.1, r16278) nel wrt54gl e ho cominciato a seguire le tue istruzioni pero’ mi sono posto un dubbio: da dove devo fare ‘mkdir openwrt’ e poi compilare openwrt ??
    io ero convinto fosse dal router tramite telnet, pero’ la domanda e’: devo compilare openwrt da un router che esegue openwrt?? e lo spazio esiguo di suo e’ sufficiente a contenere sistema operativo e poi tutti i vari pacchetti (visto che cmq anche il sistema gia’ installato occupa dello spazio) ??

    PS: ho provato anche a fare l’upgrade dall’interfaccia luci con la tua versione dell’immagine .bin , ma mi dice che il formato non va bene…

    Commentato da rob | gennaio 29, 2010, 15:19 |
    • @rob
      Openwrt lo si compila da un ambiente che contiene tutto il necessario per permetterne l’esecuzione, ovverosia una macchina (pc) linux.
      E’ impensabile fare questo direttamente dal router, sopratutto perchè nel 90% dei casi non avresti gli “strumenti” necessari a compilare.

      Commentato da skumpic | gennaio 30, 2010, 15:03 |
  13. Skumpic,
    forse mi puoi aiutare. Nell’articolo scrivi che questa configurazione va bene per un numero limitato di utenti.
    Ma a questo punto mi chiedo: se il server radius lo metto esterno e pero’ mantengo l’autenticazione wpa2-enterprise, dovrebbe andare bene per un maggior numero di utenti, no?
    Il fatto e’ che io non vorrei utilizzare un captive portal perche’ preferisco che la connessione sia utilizzabile davvero da qualsiasi apparato, percio’ anche un telefono wi-fi (ad esempio) che non ha un browser. In sostanza vorrei poter creare una serie di chiavi wpa da distribuire, associando ad ognuna nome e cognome del possessore, e mantenere un log delle attivita’. Cosa dici, e’ fattibile??

    Grazie

    PS: Skumpic in romeno significa bellino, carino. Ma probabilmente lo sapevi gia’..

    Commentato da rob | gennaio 29, 2010, 15:33 |
    • @ rob
      Scrivo che va bene per un numero limitato di utenti principalmente stante le limitate capacità dell’hardware usato che ovviamente verrebbero meno spostando il radius su di un server remoto “centralizzato”.
      A quel punto però verrebbe meno gran parte dell’utilità della presente guida: potresti usare access point normalissimi che puntino ad un server radius centrale senza “ammattirti” con openwrt (praticamente tutti gli access point “moderni” gestiscono wpa2-enterprise).

      La guida continuerebbe ad aver senso qualora i singoli access point, anche con un server radius centralizzato, dovessero comunque continuare ad essere gestiti “caso per caso”: ad esempio qualora volessi offrire un servizio per bar e ristoranti (i quali potrebbero adottare politiche di billing differenti).

      Per il nick ci hai preso, anche se volutamente sgrammaticato il significato è quello :P

      Commentato da skumpic | gennaio 30, 2010, 16:40 |
  14. Ciao, sto portando avanti un abbozzo di progetto per dotare alcune eree della mia città di hot spot gratuiti, tramite collaborazioni con bar e spot pubblicitari.
    Per il mio scopo intendo creare una piccola rete hyperlan, inizialmente sviluppata su una singola via , a coprire alcuni bar della zona. Per la gestione degli accesso avrei necessità di utilizzare un piccolo server unix che risieda nel mio negozio (posizionato nella stessa via), per questo motivo non ho necessità di un installazione enbedded in un AP! Inoltre la sicurezza firewall dal lato WAN verrà gestita da un firewall ZYXELL con le opportune configrazioni. Vorrei poter ricevere qualche informazione in più su come adattare la distro che hai rilasciato ad un ambiente server unix (probabilmente una distro ubuntu oppure un minipc dedicato), e soprattuto su come utilizzare autenticazione su rete aperta tramite login!
    Grazie mille nel caso decidessi di rispondere

    Commentato da matteo | agosto 11, 2010, 13:01 |

Lascia un commento

Devi essere autenticato per lasciare un commento.