#format wiki
#LANGUAGE it
<
>
<>
<>
= 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 [[http://www.chillispot.org/|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 =
{{{#!wiki note
La presente guida è indicata per architetture i386. Non è garantito il corretto funzionamento dell'applicazione su macchine di altre architetture.
}}}
[[AmministrazioneSistema/InstallareProgrammi|Installare]] i seguenti pacchetti:
* ''freeradius''
* ''apache''
* ''mysql-server''
* ''mysql-admin''
{{{#!wiki note
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.
{{{#!wiki important
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 [[InternetRete/ConfigurazioneRete/Vpn|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 [[apt://chillispot|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 [[http://www.chillispot.org/download.html|questo]] sito. Per convertire i pacchetti con estensione {{{.rpm}}} in pacchetti compatibili con Ubuntu, è possibile utilizzare [[AmministrazioneSistema/Alien|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.
{{{#!wiki note
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.
{{{#!wiki important
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.
{{{#!wiki note
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:
{{{
Clicca qua per accedere
}}}
'''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.
{{{#!wiki note
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
ServerAdmin webmaster@localhost
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
DocumentRoot /var/www/
Options FollowSymLinks
AllowOverride None
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/
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
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/"
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
}}}
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 [[Ufficio/EditorDiTesto|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 [[AmministrazioneSistema/Sudo|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 ==
{{{#!wiki note
È consigliato eseguire i seguenti comandi come [[AmministrazioneSistema/Sudo|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 [[Sicurezza/Iptables|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 [[InternetRete/ConfigurazioneRete/Vpn|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:
0. Riavviare la rete con il seguente comando: {{{
/etc/init.d/networking restart
}}}
0. 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)
0. Configurare il NAT con [[Sicurezza/Iptables|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.
0. Installare e configurare ''dnsmasq'' e ''ipmasq''. Per l'installazione si può procedere con [[AmministrazioneSistema/Apt|apt-get]], come nel seguente esempio: {{{
apt-get install dnsmasq ipmasq
}}}
0. 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 =
* [[https://help.ubuntu.com/community/WifiDocs/ChillispotHotspot|Documento originale in lingua inglese]]
* [[http://www.chillispot.org/|Sito ufficiale del progetto]]
* [[http://www.freeradius.org/|Home page di FreeRadius]]
* [[http://www.frontios.com/freeradius.html|Tutorial per FreeRadius e MySql]]
----
CategoryInternet CategoryServer CategoryDaRevisionare