shillispot

15
Gestion Hotspots WiFi le 12 août 2007 Documentation technique version A Conseil en ressources informatiques, intégration et déploiement en Europe.

Upload: vickykam87

Post on 01-Jul-2015

184 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: shillispot

Gestion Hotspots WiFi

le 12 août 2007

Documentation technique

version A

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

Page 2: shillispot

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

Page 3: shillispot

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

Page 4: shillispot

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.

Page 5: shillispot

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

Page 6: shillispot

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

Page 7: shillispot

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.

Page 8: shillispot

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.

Page 9: shillispot

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 :

Page 10: shillispot

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

Page 11: shillispot

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.

Page 12: shillispot

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 à :

Page 13: shillispot

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.

Page 14: shillispot

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

Page 15: shillispot

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.