shillispot
TRANSCRIPT
Gestion Hotspots WiFi
le 12 août 2007
Documentation technique
version A
Conseil en ressources informatiques, intégration et déploiement en Europe.
Gestion des Hotspots WiFi
page du sommaire 2
Sommaire
1| Préambule 4
2| Installation et configuration de Chillispot 5
2.1| Présentation de Chi l l ispot ...................................................... 5
2.2| Pré-requis .......................................................................... 5
2.2.1| Matériels ...................................................................................................... 5 2.2.2| Logiciels ....................................................................................................... 5
2.3| Instal lation ........................................................................ 6
2.3.1| Etape 1 : configuration des interfaces .............................................................. 6 2.3.2| Etape 2 : installation du paquet Chillispot ......................................................... 6 2.3.3| Etape 3 : installation et configuration du CGI .................................................... 7 2.3.4| Etape 4 : configuration de Chillispot ................................................................. 7 2.3.5| Etape 5 : mise en place des règles de firewall ................................................... 9 2.3.6| Etape 6 : configuration de FreeRadius ............................................................ 11 2.3.7| Etape 7 : test .............................................................................................. 11 2.3.8| Etape 8 : démarrage automatique ................................................................. 12
2.4| Personnal isation de la page d’authenti fication ......................... 12
3| Configuration du serveur FreeRadius 14
3.1| Intégration d’un nouveau Hotspot ......................................... 14
4| Dépannage 15
4.1| Mode DEBUG ..................................................................... 15
4.2| Voir les cl ients connectés .................................................... 15
4.3| Fichiers de logs ................................................................. 15
Gestion des Hotspots WiFi
page du sommaire 3
Table de révision
date auteur révision description
12/08/07 Julien GUELLEC 1.0 Création du document
+33 6 87 81 03 69| mobile
Gestion des Hotspots WiFi
page 4
1| Préambule
L’objet de cette documentation est de fournir à la fois les notions d’administration des différents serveurs qui entrent en jeux dans la composition des Hotspots WiFi, et par la suite de décrire la procédure à suivre pour l’ouverture et la maintenance de ces dits
Hotspots.
L’architecture type d’un Hotspot est la suivante : une machine (de préférence) ou un routeur (supportant le firware dd-wrt) héberge un portail captif Chillispot qui oblige l’utilisateur à s’identifier sur le serveur FreeRadius qui se trouve dans les locaux de St Martin :
La connexion internet utilisée pour consulter les sites web est celle présente sur les lieux du
Hotspot (livebox du client ou autre). Les requêtes à destination du serveur ne se font que pour l’authentification, la facturation, et la fermeture de la connexion. On ne surcharge donc pas le serveur Radius à chaque accès.
Gestion des Hotspots WiFi
page 5
2| Installation et configuration de Chillispot
2.1| Présentation de Chillispot
Chillispot est un portail captif. Il a pour rôle dans un premier temps de distribuer les adresses IP aux clients qui se connectent sur le Hotspot, puis dans un second temps de capturer toutes les requêtes à destination du web. Il force ainsi le client à passer par la page de demande d’authentification. Il n’est pas possible de passer outre, seuls les sites de dimension iT et la page d’authentification de Chillispot sont autorisés sans être, au
préalable, authentifié sur le serveur Radius.
Chillispot peut à la fois être installé sur une machine, via les paquets téléchargeables sur le site officiel, mais peut également être flashé dans un routeur compatible (du type Linksys WRT-54G) au moyen d’un firware spécifique (DD-WRT).
2.2| Pré-requis
2.2.1| Matériels
La mise en place d’un portail captif Chillispot nécessite un serveur possédant 2 cartes réseau. L’une d’entre elle se trouve du côté lan (le segment réseau relié à internet) et la deuxième du côté WiFi.
Dans la mesure du possible, et suivant le trafic prévu, il conviendra d’installer des cartes réseau rapides (10/100/1000) et de prévoir le câblage en conséquence (catégorie 5e, voir catégorie 6). En effet, tout le trafic transitera par cette machine et cette dernière constituera un goulot d’étranglement.
D’un point de vue hardware, la machine ne nécessitera pas des ressources importantes (Chillispot tourne sur des routeurs équipé de CPU cadencés à 200 MHz et très peu de RAM).
Néanmoins, si la machine hébergeant le Chillispot doit avoir d’autres fonctions (proxy par exemple) il faudra prévoir les ressources nécessaires.
2.2.2| Logiciels
Nous prendrons pour support d’installation une distribution stable de Debian (4.0 au moment de la rédaction de ce document).
Les dépendances logicielles à satisfaire sont les suivantes :
- un serveur Web (apache2) correctement configuré
- un outil de génération de certificats (openssl)
- FreeRadius
- iptables
Gestion des Hotspots WiFi
page 6
2.3| Installation
2.3.1| Etape 1 : configuration des interfaces
Tout d’abord veuillez correctement configurer les interfaces réseau. Dans cette documentation eth0 sera l’interface reliée au lan (et donc à internet) et eth1 est reliée côté WiFi :
Nous devons ensuite créer un périphérique « tun » :
mkdir /dev/net
mknod /dev/net/tun c 10 200
modprobe tun
2.3.2| Etape 2 : installation du paquet Chill ispot
Téléchargez la dernière version pour Debian de Chillispot sur le site officiel :
http://www.chillispot.org/download/chillispot_1.0RC3-1_i386.deb
puis installez-la :
dpkg –i chillispot_1.0_i386.deb
Gestion des Hotspots WiFi
page 7
2.3.3| Etape 3 : installation et configuration du CGI
copiez le fichier hotspotlogin.cgi :
cp /usr/share/doc/chillispot/hotspotlogin.cgi.gz /usr/lib/cgi-bin/
puis changez les droits ainsi :
chmod a+x hotspotlogin.cgi.gz
dans ce fichier, décommentez et changez le secret partagé entre le CGI et le démon chilli. Ce secret doit correspondre à celui présent dans le fichier /etc/chilli.conf (que nous éditerons par la suite) :
$uamsecret = "secret_partage";
2.3.4| Etape 4 : configuration de Chill ispot
La configuration de Chillispot se fait dans son unique fichier de configuration :
/etc/chilli.conf
Les paramètres qu’il faut maintenant modifier sont les suivants :
net 10.0.1.0/8
Il est par exemple possible de définir un plan d’adressage, ex :
- 10.0.1.0 /8 = Hotspot Saint Martin
- 10.0.2.0 /8 = Hotspot Paris
- 10.0.X.0 /8 = […]
Veuillez noter toutefois qu’il est préférable de rester sur le même masque de sous réseau dans l’optique d’une intégration à un serveur mandataire commun à tous les Hotspots.
radiuslisten xxx.xxx.xxx.xxx
Vous devez spécifier l’adresse IP publique du serveur Radius de dimension iT.
radiusserver1 xxx.xxx.xxx.xxx
radiusserver2 xxx.xxx.xxx.xxx
Vous devez spécifier l’adresse IP publique du serveur Radius de dimension iT.
radiussecret secret_partage
Spécifiez le secret partagé entre le serveur Radius et le daemon chilli. Ce secret doit être le même que celui qui figure dans le fichier clients.conf du serveur Radius (on y reviendra à l’étape 6).
radiusnasid dimensioniT#5
Spécifiez l’identifiant du nouveau Hotspot.
Gestion des Hotspots WiFi
page 8
radiuslocationid isocc=fr,cc=33,ac=17410,network=dimensioniT#5
Spécifiez le lieu où se trouve le Chillispot.
radiuslocationname dimensioniT,St-Martin-de-Re
Décrivez le lieu où se trouve le Chillispot.
dhcpif eth1
Spécifiez sur quelle interface le daemon Chillispot doit attribuer des adresses IP. Cette interface est celle présente du côté du réseau WiFi. Attention : c’est au daemon de Chillispot de distribuer les adresses IP, et non à un autre serveur DHCP pouvant déjà être installé sur
la machine.
uamserver https://10.0.1.1/cgi-bin/hotspotlogin.cgi
Spécifiez ici l’adresse sur laquelle les clients seront redirigés pour la demande d’authentification. L’adresse IP ci-dessus correspond à l’adresse IP (fixe) du serveur Chillispot côté réseau WiFi (interface eth1).
uamsecret secret_partage
Spécifiez ici le secret partagé entre le daemon Chillispot et le fichier hotspotlogin.cgi.
uamlisten 10.0.1.1
Spécifiez l’adresse IP sur laquelle le daemon Chillispot écoute (interface eth1).
uamallowed www.dimension-it.com,10.0.1.1/8
Spécifiez ici les adresses qui n’auront pas besoin d’authentification pour être consultables. Ce sont les adresses en libre accès. Parmis elles, doit figurer obligatoirement celle de l’interface côté WiFi du serveur Chillispot.
Gestion des Hotspots WiFi
page 9
2.3.5| Etape 5 : mise en place des règles de firewall
Il est indispensable pour le bon fonctionnement du portail captif de disposer d’un certain nombre de règles IPTABLES, notamment des règles de translations mais également des
règles bloquantes.
Dans toute configuration de firewall, la règle absolue est de bloquer tout, puis d’autoriser seulement ce que l’on souhaite. C’est ce qui est fait dans ce fichier. Ce dernier doit être exécuté au démarrage de la machine. Nous verrons par la suite comment le faire (étape 8).
cp /usr/share/doc/chillispot/firewall.iptables /etc/chilli.iptables
chmod u+x /etc/chilli.iptables
Dans ce fichier nous devons configurer 2 variables (EXTIF et INTIF). La première des deux
(EXTIF) correspond à l’interface présente sur le réseau où le WAN se trouve. La deuxième
(INTIF) correspond à l’interface présente sur le réseau WiFi. Voici le résultat souhaité dans notre exemple :
EXTIF="eth0"
INTIF="eth1"
Adaptez ensuite les règles de ce fichier suivant les besoins. A titre d’exemple, voici le contenu du fichier chilli.iptables du serveur de Saint Martin :
Gestion des Hotspots WiFi
page 10
#!/bin/sh
IPTABLES="/sbin/iptables"
EXTIF="eth0"
INTIF="eth1"
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
#Allow related and established on all interfaces (input)
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#Allow releated, established and ssh on $EXTIF. Reject everything else.
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 3306 --syn -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -j ACCEPT
#Allow related and established from $INTIF. Drop everything else.
$IPTABLES -A INPUT -i $INTIF -j DROP
#Allow http and https on other interfaces (input).
#This is only needed if authentication server is on same server as chilli
$IPTABLES -A INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -m tcp --dport 443 --syn -j ACCEPT
#Allow 3990 on other interfaces (input).
$IPTABLES -A INPUT -p tcp -m tcp --dport 3990 --syn -j ACCEPT
#Allow everything on loopback interface.
$IPTABLES -A INPUT -i lo -j ACCEPT
# Drop everything to and from $INTIF (forward)
# This means that access points can only be managed from ChilliSpot
$IPTABLES -A FORWARD -i $INTIF -j DROP
$IPTABLES -A FORWARD -o $INTIF -j DROP
#Enable NAT on output device
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
Gestion des Hotspots WiFi
page 11
Nous devons maintenant activer le routage sur la machine. Cela se passe dans le fichier /etc/network/interfaces dans lequel se trouve également la configuration des interfaces
réseau de la machine. Voici le contenu de ce fichier sur le serveur Chillispot de Saint Martin :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 10.0.1.1
netmask 255.0.0.0
network 10.0.0.0
broadcast 10.255.255.255
up echo 1 > /proc/sys/net/ipv4/ip_forward
2.3.6| Etape 6 : configuration de FreeRadius
Nous en avons parlé à l’étape 4, il est nécessaire d’apporter une modification au serveur Radius, et notamment au fichier clients.conf, afin que ce dernier accepte les demandes d’authentification du nouveau Hotspot.
La démarche à suivre est décrite au paragraphe 3.1| Intégration d’un nouveau Hotspot.
2.3.7| Etape 7 : test
La configuration du serveur Chillispot est maintenant achevée. Il convient de procéder à un test pour vérifier son bon fonctionnement:
/etc/init.d/freeradius restart
ifconfig eth1 0.0.0.0
/etc/init.d/chilli restart
/etc/chilli.iptables
Puis connectez un ordinateur sur l’interface côté WiFi. Vous devriez être redirigé vers la page de demande d’authentification.
Gestion des Hotspots WiFi
page 12
2.3.8| Etape 8 : démarrage automatique
Si le serveur vient à être redémarrer pour une raison ou une autre, ce dernier doit être en mesure de retrouver sa configuration, non seulement des règles IPTABLES, mais également
des interfaces.
En effet, pour pouvoir fonctionner correctement en mode tunneling, l’interface eth1 doit être initialisée avec une adresse IP spécifique (0.0.0.0). Ce type d’adresse ne sera pas accepté dans le fichier /etc/network/interfaces, mais en plus de cela, nous avons déjà spécifié une adresse IP pour cette interface (10.0.1.1).
Nous devons donc exécuter ces commandes une fois la machine démarrée et les services lancés. Pour cela, nous allons écrire un script bash que nous allons faire exécuter au
démarrage de la machine, de façon automatique :
vim /etc/init.d/post_start_script.sh
Ce fichier doit contenir les instructions suivantes :
#!/bin/sh
/etc/chilli.iptables
ifconfig eth1 0.0.0.0
/etc/init.d/chilli restart
Ensuite nous devons rendre ce script exécutable et lui attribuer de nouveaux droits :
chmod 700 /etc/init.d/post_start_script.sh
chmod +x /etc/init.d/post_start_script.sh
Et enfin créer un lien symbolique vers ce fichier dans le répertoire adéquat :
cd /etc/rc2.d/
ln –s ../init.d/post_start_script.sh S99post_start_script.sh
2.4| Personnalisation de la page d’authentification
La page d’authentification présentée par Chillispot aux clients qui se connectent au Hotspot WiFi est personnalisable. Nous pouvons y ajouter par exemple le nom du Hotspot sur lequel le client se trouve, des logos, etc… Par défaut, celle-ci ressemble à :
Gestion des Hotspots WiFi
page 13
La personnalisation de cette page passe par l’édition du fichier hotspotlogin.cgi qui se trouve dans le répertoire /usr/lib/cgi-bin.
Attention: en cas d’erreur, la modification de ce fichier peut entraîner un disfonctionnement
du portail captif. Vous pouvez utiliser le fichier présent sur le serveur de Saint Martin et le modifier suivant les besoins.
Gestion des Hotspots WiFi
page 14
3| Configuration du serveur FreeRadius
3.1| Intégration d’un nouveau Hotspot
Une fois le Hotspot correctement configuré avec le portail captif Chillispot, il convient de configurer le serveur FreeRadius afin d’autoriser les requêtes d’authentification.
L’intégration du Hotspot à FreeRadius se fait à partir du fichier clients.conf, qui se trouve dans le répertoire d’installation de FreeRadius (/etc/freeradius).
Définissez un nouveau client en suivant le modèle :
client yyy.yyy.yyy.yyy {
secret = secret_partage
shortname = Bureau_Conseil_LR
}
- L’adresse IP est celle du Hotspot
- « secret » correspond au secret partagé entre Chillispot et le serveur FreeRadius
- « shortname » correspond à l’identifiant du nouveau Chillispot
Gestion des Hotspots WiFi
page 15
4| Dépannage
4.1| Mode DEBUG
Il peut être utile de lancer FreeRadius en mode DEBUG dans le cas, par exemple, où l’on souhaiterai vérifier si un Hotspot arrive bien à envoyer ses requêtes d’authentification.
Pour cela :
- Stoppez le service FreeRadius en cours d’éxecution : /etc/init.d/freeradius stop
- Lancez le mode DEBUG : freeradius –XXX –A
Une fois terminé, n’oubliez pas de relancer le service :
- Stoppez le mode debug : CTRL + C
- Relancez le service : /etc/init.d/freeradius start
4.2| Voir les clients connectés
Pour connaître à tout moment le nombre de clients connectés, utilisez la commande radwho sur le serveur FreeRadius. Celle-ci vous retourne des informations sous la forme :
Login Name What TTY When From Location
7f5759 7f5759 shell S2 Thu 17:00 127.0.0.1 10.0.1.91
7hg384 7hg384 shell S0 Thu 17:01 127.0.0.1 10.0.1.89
4.3| Fichiers de logs
FreeRadius utilise plusieurs fichiers de logs, en plus des tables MySQL. Il peut être intéressant de les consulter pour vérifier le bon fonctionnement du serveur, ou tout simplement connaître son état.
Les fichiers de logs de FreeRadius se trouvent dans le répertoire /var/log/freeradius.