Installation de chillispot sur une Debian sarge (testing)
Par Thus0, mardi 28 septembre 2004 à 00:00 :: Wi-Fi ::#21
A propos...
Ce HowTo décrit l’installation du portail captif Chillispot sur une distribution Debian en version sarge (testing).
N’hésitez pas à m’envoyer un petit mail pour toute remarque et améliorer ce How-To.
Rq : les commentaires dans le code sont en italique : exemple de commentaire.
Chillispot
Le logiciel ChilliSpot est un portail web captif destiné à "sécuriser" le partage d’une connexion sans-fil en redirigeant les utilisateurs vers une page web sur laquelle ils doivent s’authentifier via https avec un login/mot de passe, stoqué dans un serveur Radius. Pour cela, ChilliSpot crée une nouvelle interface réseau "tun0" par laquelle tout le trafic sans-fil passera et sera filtré.
Architecture

Le logiciel ChilliSpot se compose de 2 modules : hotspotlogin.cgi (formulaire web d’authentification) et chilli (daemon). [description à compléter...] Par défaut, hotspotlogin.cgi utilise CHAP-Challenge et CHAP-Password pour communiquer avec le serveur Radius.
Voici les paramètres utilisés pour l’installation de Chillispot pour mon réseau sans-fil (tous les serveurs sont installés sur la même machine) :
| Serveur DNS | @IP 192.168.2.1 |
| Serveur Apache | @IP 192.168.2.1 |
| Serveur Freeradius | @IP 192.168.2.1 |
| ppp0 | interface reliée à internet |
| eth1 | interface reliée au réseau sans-fil, adresse IP 192.168.2.1 |
| 192.168.2.0/24 | plan d’adressage du réseau sans-fil |
Logiciels nécessaires (testés sur une Debian testing)
Le logiciel Chillispot nécessite que les logiciels suivants soient installés :
iptables
# apt-get install iptables
Apache
# apt-get install apache
# apt-get install libapache-mod-sslJe ne détaille pas la configuration de apache-ssl : vous pouvez trouver sur Internet de nombreuses documentations sur sa configuration.
Freeradius
# apt-get install freeradiusRq : Freeradius n’est pas disponible dans la Debian Woody, mais il existe un backport disponible sur cette source : deb http://ftp.lug.ro/people/gcbirzan/d... ./ ]
Module TUN/TAP
Vous avez besoin du module tun.o (inclus dans les sources du kernel depuis les versions >= 2.4.7). Si vous ne l’avez pas, il faudra recompiler votre kernel (Network device support->Universal TUN/TAP device driver support pour un kernel 2.4.x) Debian ne crée pas le périphérique "tun" automatiquement. Taper les commandes suivantes :
# mkdir /dev/net
# mknod /dev/net/tun c 10 200
# modprobe tunVérifier que le fichier /etc/modules.conf contient la ligne suivante : alias char-major-10-200 tun, sinon mettre à jour la liste des alias :
# echo "alias char-major-10-200 tun" >> /etc/modutils/chillispot
# update-modulesInstallation de ChilliSpot-0.97
Télécharger puis installer le package debian sur le site de Chillispot
# dpkg -i chillispot_0.97-1_i386.debCe package ne fonctionne pas sur une Woody à cause de la version de glibc... En bas du tutorial sont données des indications pour créer un .deb à partir des sources de chillispot.
Avertissement au lecteur...
ATTENTION : une mauvaise configuration de ChilliSpot lancé en daemon peut bloquer votre console ou vous empêcher de vous connecter à distance en SSH sur le PC... donc, je vous conseille de ne pas lancer chilli au démarrage tant qu’il n’est pas bien configuré, pour pouvoir rebooter en cas de probleme (# update-rc.d chilli remove). Dans ce tutorial, je vais simplement renommer le fichier.
# mv /etc/init.d/chilli /etc/init.d/chilli.test
Installation du CGI hotspotlogin.cgi
# cp /usr/share/doc/chillispot/hotspotlogin.cgi.gz /usr/lib/cgi-bin/
# cd /usr/lib/cgi-bin
# gunzip hotspotlogin.cgi.gz
# chmod a+x hotspotlogin.cgi
Configuration du CGI hotspotlogin.cgi
Dans le fichier /usr/lib/cgi-bin/hotspotlogin.cgi, décommenter et modifier le paramètre suivant :
$uamsecret = "secretchilli" /* secret partagé entre le CGI hotspotlogin.cgi et le daemon chilli */
Configuration du daemon chilli
Dans le fichier /etc/chilli.conf, décommenter et modifier les paramètres suivants :
| net | 192.168.2.0/24 | ou laisser commenté pour utiliser la configuration par défaut 192.168.182.0/24 |
| dns1 | 213.36.80.1 | (le DNS de mon Fournisseur d’accès) ou laisser commenté pour utiliser la configuration par défaut (ie. les DNS spécifiés dans votre /etc/resolv.conf) |
| radiuslisten | 127.0.0.1 | Décommenter sinon l’adresse 0.0.0.0 (NAS-IP-Address) apparaît dans les logs de freeradius |
| radiusserver1 | 127.0.0.1 | IP du serveur d’authentification Radius |
| radiusserver2 | 127.0.0.1 | IP du serveur d’authentification Radius |
| radiussecret | secretradius | secret partagé entre le serveur Radius et le daemon chilli |
| radiusnasid | WRT54G-Chillispot | NAS-ID : identifiant de votre chillispot |
| radiuslocationid | isocc=fr,cc=33,ac=75007,network=MonESSID | WISPr-Location-ID de la forme : isocc= |
| radiuslocationname | PSF,Invalides | WISPr-Location-Name : de la forme |
| dhcpif | eth1 | nom de l’interface reliée au point d’accès |
| uamserver | https://192.168.2.1/cgi-bin/hotspotlogin.cgi | ou mettre https://192.168.182.1/cgi-bin/hotspotlogin.cgi si vous utilisez la configuration par défaut |
| uamsecret | secretchilli | mettre le même secret que dans le fichier /usr/lib/cgi-bin/hotspotlogin.cgi |
| uamlisten | 192.168.2.1 | |
| uamallowed | www.chillispot.org,www.paris... |
Installation des règles iptables du Firewall
Copier le fichier de règles fourni en example dans le répertoire /etc/ :
# cp /usr/share/doc/chillispot/firewall.iptables /etc/chilli.iptables
# chmod u+x /etc/chilli.iptablesDans ce fichier, modifier au moins les paramètres EXTIF et INTIF
EXTIF="ppp0" /* interface reliée à Internet */
INTIF="eth1" /* interface reliée au point d'accès */Si ce n’est pas déjà fait, activer le forwarding entre les interfaces réseau. Vérifier la ligne suivante existe dans le fichier /etc/network/options :
ip_forward=yespuis relancer les services réseau via la commande :
# /etc/init.d/network restartConfiguration de Freeradius
Dans le fichier /etc/freeradius/clients.conf, modifier le paramètre suivant :
client 127.0.0.1 {
#
# The shared secret use to "encrypt" and "sign" packets between
# the NAS and FreeRADIUS. You MUST change this secret from the
# default, otherwise it's not a secret any more!
#
# The secret can be any string, up to 32 characters in length.
#
#secret = testing123
secret = secretradius /* mettre le meme secret partagé que dans le fichier /etc/chilli.conf */
Ajouter un utilisateur dans Freeradius
Ajouter dans le fichier /etc/freeradius/users, les lignes suivantes :
petrus Auth-Type := Local, User-Password == "toto"
Thus0 Auth-Type := Local, User-Password == "tata"Personnalisation des règles iptables du Firewall
Pour avoir accès depuis le réseau sans-fil à certains ports de votre serveur, rajoutez les lignes adéquates dans le fichier /etc/chilli.iptables :
# serveur SSH
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 22 --syn -j ACCEPT
# imap over SSL
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 993 --syn -j ACCEPTTest de l’install de ChilliSpot
Redémarrer les services freeradius et chilli
# /etc/init.d/freeradius stop
# /etc/init.d/freeradius start
# ifconfig eth1 0.0.0.0
# /etc/init.d/chilli.test stop /* ou # /etc/init.d/chilli stop si vous n'avez pas renommé le fichier comme indiqué plus haut */
# /etc/init.d/chilli.test start /* ou # /etc/init.d/chilli start si vous n'avez pas resnommé le fichier comme indiqué plus haut) */
# /etc/chilli.iptablesAttention, le daemon chilli fait office de serveur DHCP, donc arrêtez votre serveur DHCP avant de le lancer ou enlevez l’interface eth1 du fichier de configuration /etc/dhcp3/dhcpd.conf
# /etc/init.d/dhcp3-server stopSur le poste client sans-fil, si besoin renouveler son adresse IP (sous Microsoft Windows, taper dans une console DOS : ipconfig /renew) puis ouvrir un navigateur et taper une URL, par exemple http://www.google.fr. Vous devriez être redirigé vers le CGI hotspotlogin.cgi pour vous authentifier :

Rentrez votre login/mot de passe. Une page de confirmation apparait et une popup devrait apparaître, indiquant le temps de connexion :

Si tout fonctionne bien, vous pouvez renommer le fichier chilli et rajouter le service au démarrage du serveur :
# mv /etc/init.d/chilli.test /etc/init.d/chilli
# update-rc.d chilli 0123456Proxy Transparent
Pour ceux que ca intéresse, j’utilise un proxy-cache transparent à base de squid+privoxy pour filtrer les pubs et sites indésirables... J’ai rajouté les 2 lignes suivantes dans le fichier /etc/chilli.iptables :
$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 3128 --syn -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp --dport 80 -j REDIRECT --to-port 3128Utilisation de PAP
modif le 2005-03-04 ...en cours de redaction...
Création d’un package debian chilliXXXX.deb sur Debian Woody
[à compléter... notes en vrac]
# apt-get install debhelper
# cd /usr/src
# wget http://www.chillispot.org/download/chillispot-0.97.tar.gz
# tar -xvzf chillispot-0.97.tar.gz
# cd chillispot-0.97
# vi debian/rules Remplacer "-name chilli" par "-init-script=chilli"
# dpkg-buildpackage
# cd ..
# dpkg -install chillispot-0.97.debInstallation de Chillispot sur routeur sans-fil WRT54G (firmware openwrt)
La documentation est disponible sur une page séparée (en cours de rédaction) : Installation de chillispot sur un routeur sans-fil WRT54G-openwrt experimental
Couplage de Freeradius avec MySQL + dialupadmin
La documentation est disponible sur une page séparée : Installation de Freeradius sur une Debian Sarge (testing)
Commentaires
Super tuto sur l’install de chillispot, bien détaillé et précis (enfin, c’est loin d’être le cas sur les autres sites. Le site à l’air vraiment super. Je vais l’explorer un peu plus en profondeur dans les jours à venir. Par contre je voudrais ajouter un commentaire. Dans le fichier de conf de chillispot (/etc/chilli.conf) ne serait-ce pas plutôt ACMEWISP à la place de PSF à la ligne radiuslocationname ? Avec PSF chilli ne se lance pas, par contre avec ACMEWISP ça marche nickel. J’aurais également besoin d’une info. Existe-il un fichier ou une commande pour voir les adresses distribuée par le dhcp ?? Voici mes coordonnées : montazegue[at]hotmail.com
salut , moi c est kem et je suis entrain de preparer une soutenance pour mon bts info et l’entreprise dans laquelle je fais mon stage aimerait que je mette en place un serveur freeradius+chilli+mysql+dialupadmin.
Franchement j ai trouvé les explictions super cool et vraiment accesibles. Toutefois apres avoir fini de suivre ton example à la lettre mon serveur arrive a alloué une adreese ip au pc client de test et il arrive a pinger le serveur par contre le serveur n arrive pas a pinger le pc client ;et bien sur j arrive pas du pc client à ouvrir la page d’authentification de hotspologin. Je suis sous ubuntu 5.10 et mon NAS est un BEWAN700g. Mon test je le fais avec un pc client(sous XP) connecté sur eth1 du serveur en cable croisé.
Merci de me venir en aide
Une petite question, qui pour vous est sans doute très simple.
Quel doit être la config de mont routeur wifi ?
Merci pour votre réponse
Dich !
je pense avoir tout fait correctement mais j’obtiends ce mesage :
ChilliSpot Login Failed Login must be performed through ChilliSpot daemon
hello
je trouve ton tuto bien fait mqis j’ai malheureusement un souci c que je n’arrive pas a installer chilispot message d’erreur qucun fichier ou repertoire de ce type alors que mon .deb est là !
de plus je n’ai apporte aucune modif pour lme moment a apache et freeradius. est ce grave ?
Si vous ne voulez pas vous embêter avec la configuration de radius et du serveur web, et obtenir des fonctionnalités beaucoup plus puissantes pour votre hotspot, vous pouvez essayer de connecter chillispot sur le système de gestion de hotspot worldspot.net qui est gratuit pour les hotspots gratuits.
Bonjour,
J’ai installé et configuré chillispot ces derniers jours grace a ton tuto plutot pratique ^^. je t’en remercie.
chilli a l’air de fonctionner, je peux m’identifier a partir d’un poste sur le réseau. mais une fois identifié, le navigateur cherche dans le vide et je ne peux pas aller sur le net, que dois-je faire ? (les sites autorisés dans le fichier chilli.conf a la ligne uamallowed ne sont pas accessibles non plus)
Merci de ton aide.
Voici mon adresse mail : mikl_30@hotmail.com
Bonjour, J’ai installé Chillispot grâce à ton tuto et tout marche correctement. Par contre, j’ai essayé de mettre en place squid+dansguardian en m’appuyant sur tes règles d’iptables à rajouter dans /etc/chilli.iptables, mais ça ne marche pas. Je tombe sur la page d’authentification de chilli, mais je n’arrive plus à sortir sur internet et mes logs me montrent que je ne suis, à aucun moment, redirigée sur squid. De plus, je ne comprends pas comment on peut arriver à faire un proxy transparent avec provoxy qui, me semble t’il, communique avec le pc sur un port particulier à configurer dans le navigateur. Si quelqu’un pouvait m’éclairer...
Bonjour !
Je ne sais pas si je suis un boulet, ou si je comprends de travers, mais je me suis repris a 3 fois pour faire fonctionner un server freeradius + Mysql + chillispot et je n’y arrive pas !
je desespère vraiment de voir tourner ce genre de serveur.
La premiere fois, c’est le serveur radius qui ne fonctionnait pas, il ne reconnaissait pas les requetes qui lui était envoyés et il rejetait tout.
La seconde fois pareil.
La troisième fois, le freeradius recevait correctement les requetes, mais c’est chillispot qui ne faisait pas son boulot. En effet, il n’y avait jamais de demande de login/mdp et radius prenait le nom de machin\\nom de compte pour identifier la connexion.
Depuis que j’ai mis les mains dans cette aventure je suis devenu chauve a force de m’arracher les cheveux.
J’ai (tenter) de réaliser cela sur une Debian Sarge avec Freeradius 1.0.2, chillispot 1.0 RC1, j’ai suivi pas a pas les 2 tutos (freeradius & chillispot)
Moi qui voulait présenter ca pour mon examen de travaux pratique, je crois que c’est foutu :(((
le tuto mais imcomplet surtout pour les débutant ca va leur aporté rien suaf ils vont déprimé de plus en plus et l’auteur ne répond jamais aux question cé con il est untile de veir voir ce tuto
Salut,
que te manque-t-il dans le tutorial ? Je serai heureux de compléter : il date un peu (écrit en 2004) et il faudrait que je mette peut-être à jour.
a+
Thus0
J’aimerais avoir accès à ce tuto. Merci
Bonjour a tous, deja merci pour le tuto, voire le site en général !!
ma configuration ; (vm pour virtualmachine ;) )
* srv-vm-chilli 2 pattes (WAP 16.1 - LAN 1.204 - TUNTAP 182.1) (chilli/apache) * srv-vm-squid : 1 patte (LAN 1.211) (squid) * srv-vm-radius 1 patte (LAN 210) (free/dialup/mysql/apache2) * clients en 182.0/24
Fonctionnement ok de la solution : les clients récupèrent une ip depuis le chilli (TUNTAP. Lorsqu’il effectuent une requete http, ils sont redirigés vers le cgi chillispot. Apres authentification depuis le srv-radius, ils sont autorisés a sortir.
mon problème : Les logs de squid fonctionnent correctement lorsque le client est ds le LAN. S’ils sont sur le TUNTAP,l’@IP loggé par le squid correspond à l’@IP LAN du chilli. J’aimerais validé le principe où les logs remontés puissent etre fournies aux autorités compétentes ;) en gros je voudrais pouvoir savoir qui fait quoi et quand et où ... L’idée est de corréler les logs et coso de ressources d’un dialupadmin et d’un squid pour les sites consultés ...
si quelqu’un à une idée ... je suis preneur.
d’avance merci
Loïc
pour les logs, une autre solution est de mettre un proxy directement sur le WRT54G... comme tinyproxy. Le soucis, c’est qu’il peut ralentir un peu la navigation sur internet.
Cf. l’autre tuto : http://www.pervasive-network.org/SP...
Je n’ai pas testé le chillispot+tinyproxy sur le WRT mais cela devrait être faisable.
a+
Thus0
merci Thus0,
enfait, il suffisait (et c’est pas un prb ds mon cas) de déployer squid sur l’hote hébergeant chilli. il me reste plus qu’a changer dialupadmin pour n’avoir qu’une seule interface me permettant de coupler les login de connexion avec les logs de squid ...
encore merci pour tes supports !!
++
salut a vous je cherche le meme tutorial mais pour fedora . merci a vous
merci pour ce super tuto petite question je suis dans le cas ou j’ai un point d’acces ap2700 d-link avec 2 ssid séparés par des vlans une seule carte sur ethernet sur mon serveur et un switch niveau1 j’aimerais mettre en place chillispot avec une seule interface ethernet et uniquement sur le vlan qui m’intéresse. Est-ce faisable à ton avis ?
merci d’avance.
edlaoignee : je pense que c’est faisable d’utiliser des VLAN mais je n’ai jamais testé.
regarde par exemple : http://cric.grenoble.cnrs.fr/SiteWe...
a+
Thus0
bonjour à tous , je voudrais savoir comment tester la bande passante attribué par chillispot à un client authentifier ?
merci d’avance