Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Immutable Page
  • Info
  • Attachments


Questa guida è stata verificata solo con versioni obsolete di Ubuntu, potrebbe non essere più valida. Vuoi contribuire ad aggiornarla? Clicca qui!

Introduzione

Chillispot è un programma che fornisce ai client l'autenticazione e l'accesso limitato alla rete. Il suo uso principale è nelle reti senza fili (WiFi).

Sul sito ufficiale del progetto è possibile ottenere maggiori informazioni sul funzionamento del programma. In poche parole, Chillispot consente di creare una rete virtuale privata fra i vari client connessi, assegna loro gli indirizzi e gestendone l'accesso alla rete esterna.

Preparativi

La presente guida è indicata per architetture i386. Non è garantito il corretto funzionamento dell'applicazione su macchine di altre architetture.

Installare i seguenti pacchetti:

  • freeradius

  • apache

  • mysql-server

  • mysql-admin

La presente guida contiene le indicazioni su come installare e abilitare Chillispot su una singola macchina. È comunque possibile installare apache e mysql su macchine separate: questo comporterà la necessità di modificare i parametri di configurazione dei vari aspetti del programma.

Per quanto riguarda la configurazione del proprio kernel, è necesssario avere installato il modulo per il supporto per le sessioni remote geenriche.

Se la connessione alla rete viene stabilita tramite router è necessario disabilitare il protocollo DHCP.

In questo documento l'indirizzo IP 192.168.1.73 si riferisce al PC usato per gli esempi contenuti in esso: è necessario modificarlo con l'IP della propria macchina.

Configurazione del kernel

Chillispot crea una VPN, cioè un IP tunnel. Il kernel deve supportare questo: se usate un programma del tipo OpenVPN siete già pronti. Comunque, dare un'occhiata alla seguente sezione del kernel: Configurazione del Kernel di Linux: supporto TUN/TAP

Lanciare il comando:

modconf

Kernel/drivers/net  --->   
tun   [Universal TUN/TAP device driver support]  --->

È possibile o compilare il supporto di TUN/TAP all'interno del kernel o (come in questo caso) svilupparlo come modulo. Il nome del modulo sarà tun.

Probabilmente è necessario abilitare l'IP masquerading, NAT o il necessario per permettere ai clinet VPN di navigare nelle reti esterne. Se leggete questo HOWTO è probabile che si conosca già tutto questo; se no, cercare una documentazione specifica.

Installazione

Per Ubuntu 7.10 «Gutsy Gibbon» e successive è disponibile il pacchetto chillispot contenente tutti gli eseguibili e le librerie necessarie al corretto funzionamento dell'applicazione.

Nel caso si usi una versione precedente a quella sopra citata, è possibile scaricare l'archivio contenente il programma da questo sito. Per convertire i pacchetti con estensione .rpm in pacchetti compatibili con Ubuntu, è possibile utilizzare alien.

Configurazione

Ognuna delle parti nelle quali è divisa questa sezione contiene delle indicazioni specifiche per uno fra i software necessari al corretto funzionamento di chillispot.

Configurazione di Chillispot

La configurazione di Chillispot risiede in un singolo file /etc/chilli.conf. Il contenuto di suddetto file sarà molto simile al seguente:

radiusserver1 127.0.0.1

radiusserver2 127.0.0.1

radiussecret theradiussecret

dns1 192.168.1.73

dhcpif eth0

uamallowed 192.168.182.1,192.168.1.73,www.google.it

uamserver https://192.168.1.73/cgi-bin/hotspotlogin.cgi

uamhomepage https://192.168.1.73/welcome.html

uamsecret theuamsecret

Il file /etc/chilli.conf contiene le configurazioni riguardanti tutti i vari aspetti del programma. Di seguito vengono ne vengono spiegate le più importanti.

Sezione Radius

Nella sezione

radiusserver1 127.0.0.1

radiusserver2 127.0.0.1

radiussecret theradiussecret

è possibile specificare due server radius anche nel caso sia presente solo uno. Naturalmente, è possibile registrare lo stesso server in entrambe le linee. Nell'esempio, l'indirizzo impostato è quello locale: ciò è dovuto al fatto che sia freeradius che chillispot risiedono sulla stessa macchina.

La direttiva

radiussecret theradiussecret

contiene la password necessaria per accedere al contenuto del file di configurazione di FreeRadius, in modo da garantirne l'accesso.

Sezione Networking

Nella sezione

dns1 192.168.1.73

va specificato l'indirizzo IP del server DNS, visibile per i client. Nel caso che sulla macchina locale sia attivo il servizio di risoluzione dei nomi è possibile impostare l'indirizzo della stessa, altrimenti aggiungere l'indirizzo del DNS in uso (i.e. quello del proprio provider).

Nella seguente sezione va impostata l'interfaccia di rete usata per la connessione:

dhcpif eth0

L'interfaccia da specificare è quella dove risiede l'access point, il quale dovrebbe essere già correttamente configurato.

Per evitare incompatibilità fra la rete e Chillispot, è consigliato disabilitare tutti i servizi DHCP relativi all'interfaccia di rete.

Sezione UAM

La variabile

uamallowed 192.168.182.1,192.168.1.73,www.google.it

contiene un elenco di indirizzi raggiungibili dai client per i quali non è necessaria l'autenticazione. È fondamentale fornire l'indirizzo IP del geteway, l'indirizzo IP del server DNS e qualsiasi altro host desiderato.

Per il gateway, è necessario inserire sia l'indirizzo della VPN che quello della LAN.

La seguente variabile, invece, contiene l'indirizzo dello script che gestisce il login degli utenti:

uamserver https://192.168.1.73/cgi-bin/hotspotlogin.cgi

La variabile

uamhomepage https://192.168.1.73/welcome.html

contiene l'indirizzo della pagina dove tutti client saranno reindirizzati quando richiederanno l'accesso a un sito web non presente nella lista della variabile

uamallowed

Il contenuto di questo file è estremamente personalizzabile, solitamente al suo interno vengono incluse tutte le informzioni necessarie ad effettuare l'accesso.

Infine, la seguente variabile indica il file nel quale sono memorizzati i nomi e le password degli utenti:

uamsecret theuamsecret

Configurazione di Apache

Questa sezione contiene delle informazioni utili a configurare il server web apache per gestire le richieste d'accesso, nonchè presentare agli utenti un breve testo di benvenuto.

Le connessioni stabilite da Chillispot vengono cifrate con il protocollo SSL.

Esistono varie possibilità di configurare il server web. L'esempio che segue non fa altro che reindirizzare un host virtuale all'indirizzo

http://192.168.1.73/

che non è altro che valore della variabile

uamhomepage

nel file di configurazione /etc/chilli.conf analizzato in precedenza. Questa pagina dovrebbe contenere, oltre a tutte le informazioni necessarie all'utente per effettuare l'autenticazione, anche un link alla pagina "prelogin" del server chillispot. Di seguito viene illustrato un esempio di file index.html contenente solo il link necessario per il login:

<a href="http://192.168.182.1:3990/prelogin">Clicca qua per accedere</a>

Chillispot reindirizzerà tutti gli accessi alla porta 3990 sull'URL specificato nel file /etc/chilli.conf. Prendendo in esame il file di configurazione analizzato in precedenza, il server reindirizzerà il browser al seguente URL:

https://192.168.1.73/cgi-bin/hotspotlogin.cgi

Lo script hotspotlogin.cgi gestisce le operazioni di login. Uno script pronto per l'uso viene distribuito con il pacchetto del software, per attivarlo è sufficiente installarlo all'interno della cartella di sistema /usr/lib/cgi-bin con i seguenti comandi: {{ sudo cp /usr/share/doc/chillispot-1.0/hotspotlogin.cgi.gz /usr/lib/cgi-bin sudo gunzip /usr/lib/cgi-bin/hotspotlogin.cgi.gz sudo chmod 755 /usr/lib/cgi-bin/hotspotlogin.cgi }}}

Il file hotspotlogin.cgi necessità di una piccola modifica: bisogna individuare la variabile

$uamsecret

all'interno del file e assegnarli lo stesso valore impostato nel file /etc/chilli.conf. Prendendo in esame i vari esempi fatti in precedenza, la variabile dello script dovrebbe essere impostata come segue:

 $uamsecret = theuamsecret

È inoltre possibile editare questo file a proprio piacimento per modificare l'aspetto grafico della schermata di login.

Le precedenti istruzioni necessitano che nel server web sia abilitato il supporto per gli script cgi.

Apache2 SSL

Questa sezione contiene delle indicazioni utili per abilitare e configurare il protocollo SSL con il server web apache.

Generare il certificato

Per creare un certificato che sia valido per un anno digitare il seguente comando:

sudo apache2-ssl-certificate -days 365

Abilitare il modulo SSL

Per abilitare il modulo SSL all'interno del server web, digitare il seguente comando:

sudo a2enmod ssl

Stare in ascolto sulla porta 443

Per impostare il server ad accettare connesioni sulla porta 443 digitare il seguente comando:

sudo bash
echo "Listen 443" >> /etc/apache2/ports.conf

Creare ed abilitare il sito SSL

Per creare per le connessioni protette digitare il seguente comando:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

Ora, prima di renderlo disponibile, è necessario modificare il contenuto del file sopra citato in modo da ottenere un risultato simile al seguente:

NameVirtualHost *:443
<virtualhost *:443>
        ServerAdmin webmaster@localhost

        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/apache.pem

        DocumentRoot /var/www/
        <directory />
                Options FollowSymLinks
                AllowOverride None
        </directory>

        <directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                # Commented out for Ubuntu
                #RedirectMatch ^/$ /apache2-default/
        </directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </directory>

</virtualhost>

Infine, per abilitarlo, digitare il seguente comando:

sudo a2ensite ssl

Configurazione FreeRadius

Autenticazione

Configurare freeradius con delle impostazioni di base è un procedimento piuttosto semplice.

Innanzitutto è necessario aprire il file /etc/freeradius/clients.conf con un editor di testo, ad esempio:

sudo bash
gedit /etc/freeradius/clients.conf

Il contenuto del file in questione sarà simile al seguente:

client 127.0.0.1 {
 secret     = theradiussecret

 shortname  = localhost

 nastype    = other
}

Se non si è collegati dall'host locale è possibile modificare di conseguenza l'indirizzo IP, specificandone uno preciso o addirittura un'intera classe di indirizzi.

Il prossimo file da editare è /etc/freeradius/sql.conf. Questo file viene fornito già preconfigurato per MySql, ma è sempre possibile modificarlo in modo da consentire al programma di interagire con altri server, come, ad esempio, postgres, Oracle o Microsoft SQL Server. Le altre opzioni sono abbastanza intuitive, nel senso che sarà necessario specificare soltanto i dati di accesso al server e al database di MySql. Quello che segue è un esempio di sql.conf contenente delle possibili modifiche:

# Connect info
server = "localhost"
login = "freeradius"
password = "mysuperpassword"

# Database table configuration
radius_db = "radius"

L'ultimo file che richiede alcune modifiche è /etc/freeradius/radiusd.conf. Una volta aperto il file, cercare la seguente direttiva

sql

nella sezione

authorize

Una volta trovata è necessario decommentarla: ora freeradius è abilitato all'uso del modulo SQL.

Salvare i cambiamenti e riavviare il server freeradius.

Account utente

FreeRadius memorizza le informazioni relative all'accesso degli utenti all'interno di /var/log/radius/radacct. Esiste un'alternativa a questo metodo: è possibile gestire gli account utente tramite MySql. A tale scopo, è necessario aprire il file /etc/freeradius/radiusd.conf e modificarlo come nel seguente esempio:

accounting {
    unix
    radutmp
    sql
}

Configurazione MySql

FreeRadius richiede un database di MySql con una struttura predefinita dove memorizzare e ricercare le informazioni di autenticazione. Per prima cosa è necessario avviare il client di MySql con i privilegi di amministrazione e lanciare i seguenti comandi (con le dovute modifiche, atte a soddisfare le proprie esigenze):

> CREATE DATABASE radius;

> GRANT ALL PRIVILEGES ON radius.* to 'freeradius'@'localhost' IDENTIFIED BY 'mysuperpassword';

> FLUSH PRIVILEGES

Con il pacchetto del programma viene fornito un modello di schema per la base di dati. Per importare tale modello è utile digitare il seguente comando:

zcat /usr/share/doc/freeradius/examples/db_mysql.sql.gz ! mysql -ufreeradius -pmysuperpassword radius

Nel caso si presentino problemi, è sufficiente importare il file tramite phpmyadmin.

Verranno create numerose tabelle. In realtà, solo una di queste, di nome radcheck, sarà realmente necessaria. La tabella in questione dovrebbe avere la seguente struttura:

  • Campo

    Tipo

    Null

    Chiave

    Predefinito

    Extra

    id

    int(11) unsigned

    PRI

    NULL

    auto_increment

    UserName

    varchar(64)

    MUL

    Attribute

    varchar(32)

    op

    varchar(2)

    ==

    Value

    varchar(253)

Il campo id viene incrementato automaticamente mentre op viene settato al valore predefinito, gli altri campi, invece, andranno impostati con delle query simili alla seguente:

> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('aika', 'User-Password', 'myaikapassword');

Ora è possibile usare qualunque client o interfaccia desiderati per inserire gli utenti nella base di dati.

Configurazione del firewall

Questa sezione contiene delle indicazioni utili alla configurazione di un firewall per un corretto funzionamento con chillispot.

Metodo avanzato

È consigliato eseguire i seguenti comandi come amministratore di sistema. A tale scopo è utile utilizzare il comando su al posto di sudo, oppure digitare il seguente comando prima di tutti gli altri:

  • sudo bash

Questa sezione contiene delle istruzioni dettagliate su come modificare manualmente i file di configurazione del proprio firewall. Per maggiori informazioni sul firewall di Ubuntu si consulti questa pagina.

Le azioni necessarie sono le seguenti:

  • Aprire la porta 443/TCP almeno alla sotto rete 192.168.182.0/24 (servizio https:// di apache).

  • Aprire la porta 3990/TCP almeno alla sotto rete 192.168.182.0/24: (servizio http:// di chillispot).

  • Aprire la porta 1812/UDP to 127.0.0.1: (porta utilizzata da freeradius per accettare connessioni da chillispot).

  • Aprire la porta 67/UDP alla VPN (interfaccia «tun0»): (servizio DHCP di chillispot).

Per consentire la spedizione dei pacchetti è necessario aprire e modificare il file /etc/network/options come nel seguente esempio:

    ip_forward=yes

Le seguenti istruzioni saranno d'aiuto per una corretta configurazione del firewall:

  1. Riavviare la rete con il seguente comando:

    /etc/init.d/networking restart
  2. Configurare la scheda di rete usata come interfaccia con gli altri computer presenti nella rete. Digitare il seguente comando:

    ifconfig ethX ip
    dove «ethX» è la propria interfaccia di rete e «ip» è l'indirizzo IP desiderato per il server (di solito 192.168.0.1 o 192.168.1.1)
  3. Configurare il NAT con iptables. Digitare il seguente comando:

    iptables -t nat -A POSTROUTING -o ethX -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward
    dove «ethX» è sempre l'interfaccia con accesso alla rete esterna.
  4. Installare e configurare dnsmasq e ipmasq. Per l'installazione si può procedere con apt-get, come nel seguente esempio:

    apt-get install dnsmasq ipmasq
  5. Riavviare dnsmasq, dunque riconfigurare ipmasq affinchè venga lanciato subito dopo l'abilitazione della rete:

    /etc/init.d/dnsmasq restart
    dpkg-reconfigure ipmasq

Per finire, non rimane che riavviare la rete e riconfigurare l'interfaccia (passi 1 e 2).

Note

Se si desidera lanciare chillispot e freeradius' in modalità verbosa, è sufficiente digitare i relativi comandi con delle sintassi simili alle seguenti:

sudo chilli --debug -fg
sudo freeradius -x

Ulteriori risorse


CategoryInternet CategoryServer CategoryDaRevisionare