Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
chillispot [Le 19/06/2011, 22:07] – [Test de fonctionnement] 85.69.165.172 | chillispot [Le 15/08/2017, 20:51] (Version actuelle) – tag L'Africain | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== Chillispot : portail captif ====== | ||
+ | |||
+ | |||
+ | <note tip>Le projet Chillispot est abandonné le développeur principal étant parti, cependant il existe un fork très actif nommé [[: | ||
+ | |||
+ | 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 firmware spécifique (DD-WRT). | ||
+ | |||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | * Deux cartes réseau (interface LAN et publique) | ||
+ | * serveur web apache2 | ||
+ | * générateur de certificats | ||
+ | * freeradius (authentification) | ||
+ | * iptables (pare-feu) | ||
+ | |||
+ | ===== Installation ===== | ||
+ | FIXME / [[: | ||
+ | |||
+ | ==== Configuration Réseau (module TUN/TAP) ==== | ||
+ | Vous avez besoin du module **tun.o** (inclus dans les sources du kernel depuis les versions >= 2.4.7). Ubuntu/ | ||
+ | mkdir /dev/net | ||
+ | mknod / | ||
+ | modprobe tun | ||
+ | </ | ||
+ | |||
+ | ==== Installation de la partie applicative ==== | ||
+ | [[: | ||
+ | * [[: | ||
+ | * Configuration du cgi | ||
+ | On copie le fichier cgi fourni dans le répertoire adéquat : | ||
+ | < | ||
+ | cp / | ||
+ | cd / | ||
+ | gunzip hotspotlogin.cgi.gz | ||
+ | chmod a+x hotspotlogin.cgi | ||
+ | </ | ||
+ | (vous pourrez éditer ce fichier une fois chillispot fonctionnel afin de personnalisez l' | ||
+ | |||
+ | ==== Configuration ==== | ||
+ | * [[: | ||
+ | < | ||
+ | * [[: | ||
+ | |||
+ | | net 192.168.1.0/ | ||
+ | | dns1 10.187.36.3 | ||
+ | | radiuslisten 127.0.0.1 | ||
+ | | radiusserver1 127.0.0.1 | ||
+ | | radiusserver2 127.0.0.1 | ||
+ | | radiussecret radiussecret | ||
+ | | Radiusnasid portail | ||
+ | | radiuslocationid | ||
+ | | dhcpif eth1 | nom de l’interface reliée au point d’accès | ||
+ | | uamserver https:// | ||
+ | | Uamsecret uamsecret | ||
+ | | Uamlisten 192.168.1.1 | ||
+ | | uamallowed localhost www.yahoo.fr | ||
+ | |||
+ | === Configuration du pare-feu === | ||
+ | < | ||
+ | chmod u+x / | ||
+ | |||
+ | Vous devez avoir à l' | ||
+ | < | ||
+ | INTIF=" | ||
+ | |||
+ | Si ce n’est pas déjà fait, activer le forwarding entre les interfaces réseau. Vérifier que la ligne suivante existe dans le fichier **/ | ||
+ | |||
+ | relancez ensuite les interfaces réseaux < | ||
+ | |||
+ | Dans le fichier **/ | ||
+ | < | ||
+ | #secret = testing123 | ||
+ | secret = radiussecret /* mettre le même secret partagé que dans le fichier / | ||
+ | |||
+ | === Configuration de Freeradius === | ||
+ | * [[: | ||
+ | < | ||
+ | server = " | ||
+ | login = " | ||
+ | password = " | ||
+ | </ | ||
+ | |||
+ | * mettre dans **/ | ||
+ | < | ||
+ | authorize { | ||
+ | preprocess | ||
+ | chap | ||
+ | suffix | ||
+ | eap | ||
+ | #files | ||
+ | sql | ||
+ | } | ||
+ | authenticate { | ||
+ | Auth-Type PAP { | ||
+ | pap | ||
+ | } | ||
+ | Auth-Type CHAP { | ||
+ | chap | ||
+ | } | ||
+ | eap | ||
+ | } | ||
+ | accounting { | ||
+ | detail | ||
+ | radutmp | ||
+ | sql | ||
+ | } | ||
+ | session { | ||
+ | sql | ||
+ | } | ||
+ | radutmp { | ||
+ | filename = ${logdir}/ | ||
+ | username = %{User-Name} | ||
+ | case_sensitive = yes | ||
+ | check_with_nas = yes | ||
+ | perm = 0600 | ||
+ | callerid = " | ||
+ | } | ||
+ | radutmp sradutmp { | ||
+ | filename = ${logdir}/ | ||
+ | perm = 0644 | ||
+ | callerid = " | ||
+ | } | ||
+ | attr_filter { | ||
+ | attrsfile = ${confdir}/ | ||
+ | } | ||
+ | counter daily { | ||
+ | filename = ${raddbdir}/ | ||
+ | key = User-Name | ||
+ | count-attribute = Acct-Session-Time | ||
+ | reset = daily | ||
+ | counter-name = Daily-Session-Time | ||
+ | check-name = Max-Daily-Session | ||
+ | allowed-servicetype = Framed-User | ||
+ | cache-size = 5000 | ||
+ | } | ||
+ | always fail { | ||
+ | rcode = fail | ||
+ | } | ||
+ | always reject { | ||
+ | rcode = reject | ||
+ | } | ||
+ | always ok { | ||
+ | rcode = ok | ||
+ | simulcount = 0 | ||
+ | mpp = no | ||
+ | } | ||
+ | expr { | ||
+ | } | ||
+ | digest { | ||
+ | } | ||
+ | exec { | ||
+ | wait = yes | ||
+ | input_pairs = request | ||
+ | } | ||
+ | exec echo { | ||
+ | wait = yes | ||
+ | program = "/ | ||
+ | input_pairs = request | ||
+ | output_pairs = reply | ||
+ | } | ||
+ | ippool main_pool { | ||
+ | range-start = 192.168.1.1 | ||
+ | range-stop = 192.168.3.254 | ||
+ | netmask = 255.255.255.0 | ||
+ | cache-size = 800 | ||
+ | session-db = ${raddbdir}/ | ||
+ | ip-index = ${raddbdir}/ | ||
+ | override = no | ||
+ | maximum-timeout = 0 | ||
+ | } | ||
+ | } | ||
+ | instantiate { | ||
+ | exec | ||
+ | expr | ||
+ | } | ||
+ | authorize { | ||
+ | preprocess | ||
+ | auth_log | ||
+ | chap | ||
+ | mschap | ||
+ | suffix | ||
+ | eap | ||
+ | files | ||
+ | sql | ||
+ | } | ||
+ | authenticate { | ||
+ | Auth-Type PAP { | ||
+ | pap | ||
+ | } | ||
+ | Auth-Type CHAP { | ||
+ | chap | ||
+ | } | ||
+ | Auth-Type MS-CHAP { | ||
+ | mschap | ||
+ | } | ||
+ | unix | ||
+ | eap | ||
+ | } | ||
+ | preacct { | ||
+ | preprocess | ||
+ | acct_unique | ||
+ | suffix | ||
+ | files | ||
+ | } | ||
+ | accounting { | ||
+ | detail | ||
+ | unix | ||
+ | radutmp | ||
+ | } | ||
+ | session { | ||
+ | radutmp | ||
+ | } | ||
+ | post-auth { | ||
+ | sql | ||
+ | } | ||
+ | pre-proxy { | ||
+ | } | ||
+ | post-proxy { | ||
+ | eap | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | === Configuration de MySQL === | ||
+ | |||
+ | FIXME / On s' | ||
+ | < | ||
+ | echo " | ||
+ | echo "grant all on radius.* to radius_login_sql@' | ||
+ | zcat / | ||
+ | #ou bien | ||
+ | zcat / | ||
+ | |||
+ | # sur Lucid Lynx, il est possible que les zcat ne marchent pas. | ||
+ | #Essayez celles ci (vous devez rentrer les 2) : | ||
+ | mysql -u radius_login_sql -p radius < / | ||
+ | mysql -u radius_login_sql -p radius < / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour ajouter des utilisateur dans la base il faut ajouter un **login + password** dans la table **radcheck** de la base radius , un login plus le type d' | ||
+ | |||
+ | == Table usergroup == | ||
+ | ^ id ^ UserName | ||
+ | | 1 | utilisateur | ||
+ | | 2 | prof1 | professeurs | ||
+ | | 3 | élève1 | ||
+ | |||
+ | == Table radcheck | ||
+ | ^ id ^ UserName | ||
+ | | 1 | utilisateur | ||
+ | | 2 | prof1 | Password | ||
+ | | 3 | élève1 | ||
+ | |||
+ | == Table radgroupcheck | ||
+ | ^ id ^ GroupName | ||
+ | | 1 | groupe | ||
+ | | 2 | professeurs | ||
+ | | 3 | élèves | ||
+ | |||
+ | Vous pouvez vous référer au site officiel de [[http:// | ||
+ | |||
+ | ==== Test de fonctionnement ==== | ||
+ | On test l' | ||
+ | < | ||
+ | / | ||
+ | # ou bien | ||
+ | service freeradius stop | ||
+ | |||
+ | freeradius -XX | ||
+ | [...] | ||
+ | Debug: Listening on authentication *: | ||
+ | Listening on accounting *:1813 | ||
+ | Debug: Listening on proxy *:1814 | ||
+ | Info: Ready to process requests | ||
+ | </ | ||
+ | |||
+ | Dans une autre console on lance un radtest : | ||
+ | < | ||
+ | radtest tux tuxy 127.0.0.1 0 radiussecret | ||
+ | |||
+ | Sending Access-Request of id 95 to 127.0.0.1: | ||
+ | User-Name = " | ||
+ | User-Password = " | ||
+ | NAS-IP-Address = localhost | ||
+ | NAS-Port = 0 | ||
+ | rad_recv: Access-Accept packet from host 127.0.0.1: | ||
+ | </ | ||
+ | |||
+ | FIXME / Notre identification par rapport à mysql est donc fonctionnelle on peut dès à présent tester notre chillispot. | ||
+ | |||
+ | < | ||
+ | / | ||
+ | / | ||
+ | ifconfig eth1 0.0.0.0 | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Vérifiez que la borne wifi à bien pris son adresse en dhcp puis connectez vous au réseau wifi avec votre poste, lancez une page web, si tout ce passe bien vous devriez être redirigé sur [[https:// | ||
+ | |||
+ | Il vous reste maintenant à vous authentifier, | ||
+ | |||
+ | Un popup s' | ||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | * **(en)** [[http:// | ||
+ | * **(fr)** Inspiré du livre blanc http:// | ||
+ | |||
+ | ---- | ||
+ | // |