Madrefocaine!

Giraffe, cammellodonti, un secchio di prosecchio e pecore nane.

Articoli Commenti


Lezione #2: realizzare un Hotspot partendo dalla fine.

27 aprile, 2009 (23:29) | Penguins & PolarBears

Il mio collega Loris ha da tempo un desiderio, quello di dare l’accesso alla wifi dell’ufficio attraverso username e password, e non attraverso ad un’unica chiave di accesso come avviene per la maggior parte delle reti. Il vantaggio sarebbe notevole dato che in questo modo si potrebbe garantire un accesso giornaliero agli ospiti senza dover cambiare la password dell’access point il giorno seguente. Come si fa una cosa del genere senza avere un router/accesspoint che gestisca in autonomia i login? Semplice, si crea un Hotspot con un computer connesso alla rete.

Mi sono informato e grazie a Qualsiasi ho conosciuto la tecnica del “Captive Portal”, mi sono documentato e grazie a Wikipedia ho capito il suo funzionamento e come realizzare un hotspot casalingo. Vediamo in teoria come procedere, abbiamo bisogno di un accesspoint e di un pc sempre accesi e connesso alla rete, che abbia due schede di rete.
Procurati questi “materiali”, il procedimento (in linea teorica) è abbastanza semplice. Prendiamo il nostro pc e colleghiamo una scheda di rete alla rete (cioè alla Hub/Switch del vostro router se si tratta di una rete casalinga) e l’altra scheda di rete la colleghiamo all’acess point. Configuriamo il nostro AP in modo che crei una rete wireless non protetta. A questo punto installiamo e configuriamo un software che effettui il Captive Portal.

Piccolissima parentesi per spiegare il captive portal, tramite questa tecnica si utilizza un demone per intercettare tutti i pacchetti richiesti da chi sta efettuando l’accesso e farli passare attraverso un sistema di identificazione. In parole spicciole, chi si connetterà alla rete aperta del nostro AP ed aprirà una pagina web per navigare, come prima pagina troverà una schermata di login da completare per poter accedere alla rete.

Tornando al nostro hotspot, fra tutti i vari software disponibili (per Linux, BSD, Windows, MacOX) ho, teoricamente, scelto chillispot perchè presente nei repository Debian. Chillispot per gestire gli accessi si appoggia a freeradius che a sua volta può gestire gli utenti tramite un banale foglio di testo oppure un più carino database SQL (PostgreSQL, MySQL ed addirittura MS-SQL).

Qui si conclude tutta la parte teorica; per la parte pratica dovrò rimandare a quando avremo tempo di realizzare il tutto.
Intanto vi spiego perchè questa lezione parte dalla fine. Non potendo realizzare l’hostpot, per ammazzare il tempo ho pensato a cosa potesse essere utile una volta completata l’installazione ed ho realizzato uno script per l’inserimento di un utente nel database di in modo automatico. Potete scaricare lo script qui.

Funzionamento dello script
Lo script interroga il database e genera un utente progressivo a quelli già presenti assegnandogli una password randomica di 5 cifre. Una volta inserito il nuovo utente nel database, viene stampato un foglio con i dati per il login.
Nella prima parte dello script si decidono le variabili:

  • USER definisce un identificativo comune a tutti gli utenti, ad esempio Guest; tutti gli utenti generati saranno Guest01, Guest02, Guest03 e così via.
  • PASS questa variabile corrisponde alla password che verrà data all’utente. Viene generata usando 5 cifre random.
  • PRINT definisce il nome della stampante a cui mandare il file da stampare.
  • DBUSER l’utente per l’accesso al database.
  • DBPASS la password per l’accesso al database.
  • DBNAME il nome del database da interrogare.

Nella seconda parte viene aggiunto l’utente nel database. Per fare ciò lo script procede in due passi: per prima cosa vengono cercati tutti gli utenti simili alla variabile $USER e viene letto l’ultimo utente inserito. Fatto ciò viene inserito il nuovo utente, successivo a quello precedentemente letto.

Nella terza ed ultima parte dello script viene creato un file PDF contenente l’utente e la password appena creati e viene mandato in stampa.
Per creare il file PDF ho scelto LaTeX in modo tale da poter impostare un minimo di grafica al foglio stampato. Ho realizzato un file template.tex contenente le scritte Guest00 e 00000 corrispondenti rispettivamente all’utente ed alle 5 cifre della password. Lo script cerca queste due scritte e le sostituisce con i valori generati.
Il file tex viene compilato e mandato alla stampante.

Dipendenze
Più che dipendenze preferisco chiamarle difficoltà incontrate. Escluso MySQL per cui sono negato, i due nodi cruciali sono stati in LaTeX e nella stampante. Per compilare il tex ho utilizzato il comando pdflatex che si trova all’interno del pacchetto tetex-bin ed ho scoperto che compilare un tex su Linux è più difficile di quanto lo sia su Windows, non tutti i pacchetti che normalmente uso su Win funzionano sul pinguino.
Per quanto riguarda la stampante il passo più importante per ottenere una buona stampa è installare i driver e come ho scritto nell’articolo precedente non è stato proprio semplice. (Questa considerazione vi può sembrare cretina, ma per uno che non ha mai avuto una stampante in casa non lo è).

Ringraziamento
Questo script è stato realizzato per buona parte a quattro mani, dato che sono stato supportato da Qualsiasi nei punti critici.

Conclusione
Per concludere bisogna segnalare una fase successiva all’inserimento. Come scritto chilometri addietro lo script è nato dall’esigenza di dare un accesso giornaliero agli ospiti, quindi una volta inseriti gli ospiti bisonga anche rimuoverli. Il modo più semplice che mi è venuto in mente è lanciare ogni notte (con cron) uno script con questa query:

echo "DELETE FROM radcheck WHERE UserName LIKE '%$USER%';"|mysql -u $DBUSER -p$DBPASS $DBNAME

dove le variabili utilizzate sono le stesse utilizzate nello script per l’inserimento.

Mi scuso per essere stato infinitamente prolisso.



« VirtualBox e SSH - 24 anni e cuffie nuove! »

Articoli simili:
  • Meno male che…
  • Gara di tubo….
  • Tagliare file troppo grossi
  • Tempo di virtualizzazione
  • Spam, questa gran merdata!


  • Commenti

    Comment da voRia using Mozilla Firefox Mozilla Firefox 3.0.10 on Ubuntu Linux Ubuntu Linux | Quote
    Ora: 29 aprile 2009, 10:29

    Complimenti per il lavoro svolto, ora aspetto di leggere la parte pratica

    Comment da francesco using Mozilla Firefox Mozilla Firefox 3.0.10 on Windows Windows XP | Quote
    Ora: 1 maggio 2009, 16:02

    cosa ne pensate di aggiungere una data di scadenza delle credenziali e modificare la query di cancelazione generalizzandola

    Scrivi un commento

    Trackback URL






    Quota testo selezionato