Sunteți pe pagina 1din 15

Conseil en ressources informatiques, intégration et déploiement en Europe.

Gestion Hotspots WiFi

version A

Documentation technique

le 12 août 2007
Gestion des Hotspots WiFi

Sommaire

1| Préambu le 4

2| Installation et configuration de Chillispot 5


2.1| P r és en tati on d e Ch i l li spot ...................................................... 5
2.2| P r é- r equ i s .......................................................................... 5
2.2.1| Matériels ...................................................................................................... 5
2.2.2| Logiciels ....................................................................................................... 5
2.3| In s tal l ati on ........................................................................ 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| P e rs on n al i sati o n d e l a pa g e d’ au th en ti fi ca ti on ......................... 12

3| Configuration du serveur FreeRadius 14


3.1| In t ég rati on d’u n n ou v e au H o ts po t ......................................... 14

4| Dépannage 15
4.1| M od e D E BU G ..................................................................... 15
4.2| V oi r l e s cl i en t s c on n e ct é s .................................................... 15
4.3| Fi ch i er s d e l og s ................................................................. 15

page du sommaire 2
Gestion des Hotspots WiFi

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

page du sommaire 3
Gestion des Hotspots WiFi

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.

page 4
Gestion des Hotspots WiFi

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

page 5
Gestion des Hotspots WiFi

2.3| Installation

2 . 3 . 1 | E t a p e 1 : c o n f i g u r a t i o n de s i n t e r f a c e s
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 | E t a p e 2 : i n s t a l l a t i o n du pa q ue t C hi l l i s p ot
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

page 6
Gestion des Hotspots WiFi

2 . 3 . 3 | E t a p e 3 : i n s t a l l a t i o n e t c onf i g u r a t i o n d u C G I
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 | E t a p e 4 : c o n f i g u r a t i o n de C hi l l i sp o t
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.

page 7
Gestion des Hotspots WiFi

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.

page 8
Gestion des Hotspots WiFi

2 . 3 . 5 | E t a p e 5 : m i se e n p l a c e de s r è gl e s de f i r e wa l l
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 :

page 9
Gestion des Hotspots WiFi

#!/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

page 10
Gestion des Hotspots WiFi

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 | E t a p e 6 : c o n f i g u r a t i o n de F r e e R a di u s
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 | E t a p e 7 : t e st
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.

page 11
Gestion des Hotspots WiFi

2 . 3 . 8 | E t a p e 8 : d é m a r r a g e a u t om a t i q ue
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 à :

page 12
Gestion des Hotspots WiFi

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.

page 13
Gestion des Hotspots WiFi

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

page 14
Gestion des Hotspots WiFi

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.

page 15

S-ar putea să vă placă și