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-ssl
Je ne détaille pas la configuration de apache-ssl : vous pouvez trouver sur Internet de nombreuses documentations sur sa configuration.
Freeradius
# apt-get install freeradius
Rq : 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/debian/ ./ ]
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 tun
Vé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-modules
Installation de ChilliSpot-0.97
Télécharger puis installer le package debian sur le site de Chillispot
# dpkg -i chillispot_0.97-1_i386.deb
Ce 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-sansfil.fr,192.168.2.1 |
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.iptables
Dans 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=yes
puis relancer les services réseau via la commande :
# /etc/init.d/network restart
Configuration 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 ACCEPT
Test 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.iptables
Attention, 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 stop
Sur 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 0123456
Proxy 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 3128
Utilisation 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.deb
Installation 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
1. vendredi 13 janvier 2006 à 12:18, par Matteo
2. samedi 11 mars 2006 à 16:51, par KEM
3. lundi 8 mai 2006 à 18:56, par Dich
4. lundi 22 mai 2006 à 14:54, par folkein
5. vendredi 21 juillet 2006 à 16:30, par sabrina
6. mardi 13 février 2007 à 11:27, par worldspot :: Worldspot hotspot system
7. vendredi 30 mars 2007 à 00:36, par mikl_30
8. mercredi 6 juin 2007 à 10:20, par Marine
9. mercredi 13 juin 2007 à 20:29, par Badpandy
10. mardi 6 novembre 2007 à 16:32,
11. mardi 6 novembre 2007 à 21:59, par Thus0
12. vendredi 23 novembre 2007 à 10:22,
13. dimanche 9 décembre 2007 à 18:32,
14. lundi 10 décembre 2007 à 23:44, par Thus0
15. vendredi 14 décembre 2007 à 19:33, par loic
16. lundi 31 décembre 2007 à 00:52, par darvador
17. vendredi 20 juin 2008 à 12:42, par edlapoignee
18. vendredi 20 juin 2008 à 18:41, par Thus0
Ajouter un commentaire