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 | ||
coovachilli [Le 05/08/2012, 18:02] – [Paramétrage du serveur hotspot] 80.15.31.98 | coovachilli [Le 03/02/2020, 22:30] (Version actuelle) – ancienne révision (Le 17/03/2019, 23:43) restaurée 86.234.166.156 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== CoovaChilli ====== | ||
+ | |||
+ | **CoovaChilli**, | ||
+ | |||
+ | Il permet de rediriger tous les clients HTTP d'un réseau vers une page web qui peut demander une authentification et/ou un paiement ou tout simplement demander d' | ||
+ | |||
+ | Cette page visera à décrire : | ||
+ | * L' | ||
+ | * L' | ||
+ | * L' | ||
+ | * La personnalisation de la page d’accès. | ||
+ | |||
+ | <note tip>Les serveurs Freeradius et CoovaChilli fonctionnent cependant la documentation étant toujours en cours de développement, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | * Tout pc avec 2 interfaces réseaux. | ||
+ | * Un [[: | ||
+ | * Un [[: | ||
+ | |||
+ | <note important> | ||
+ | ===== Fonctionnement ===== | ||
+ | Ceci est le schéma de fonctionnement par défaut : | ||
+ | |||
+ | < | ||
+ | ________________ | ||
+ | | Serveur | ||
+ | | Hotspot | ||
+ | |______________| | ||
+ | Internet | ||
+ | | ||
+ | | ||
+ | | ||
+ | DHCP ====Eth0===> | ||
+ | |||
+ | </ | ||
+ | |||
+ | * Le périphérique **Eth0** a par exemple l' | ||
+ | * Le périphérique **Eth1** a par exemple l' | ||
+ | |||
+ | ===== Initialisation du reseau===== | ||
+ | |||
+ | ==== Configuration du SSH ==== | ||
+ | |||
+ | En supposant que votre machine soit connectée à votre routeur **ADSL** (serveur **DHCP**), vous devrez trouver votre adresse IP en saisissant dans un [[: | ||
+ | < | ||
+ | FIXME Du mal à comprendre le rapport avec la configuration SSH. | ||
+ | |||
+ | ==== Configuration du réseau : ==== | ||
+ | |||
+ | - [[: | ||
+ | |||
+ | # L' | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | # L' | ||
+ | auto eth0 | ||
+ | iface eth0 inet dhcp | ||
+ | |||
+ | # L' | ||
+ | auto eth1</ | ||
+ | |||
+ | FIXME Si dans le fichier **/ | ||
+ | |||
+ | On indique ici que : | ||
+ | * l' | ||
+ | * l' | ||
+ | - [[: | ||
+ | # Uncomment the next line to enable packet forwarding for IPv4 | ||
+ | net.ipv4.ip_forward=1</ | ||
+ | - Relancez ensuite les interfaces réseaux :< | ||
+ | =====Installation et configuration du serveur Radius ===== | ||
+ | |||
+ | ==== Téléchargement de Freeradius depuis les dépôts officiels ==== | ||
+ | |||
+ | | ||
+ | |||
+ | Ou en ligne de commande : | ||
+ | < | ||
+ | ==== Installation de la base de donnée MySQL ==== | ||
+ | - Création de la base de données pour stocker les noms d' | ||
+ | mysql -u root -p | ||
+ | #Entrer le mot de passe de Mysql. | ||
+ | mysql> CREATE DATABASE radius; | ||
+ | mysql> quit | ||
+ | </ | ||
+ | - Importation de la base de données avec les tables créées par les fabricants de Freeradius : < | ||
+ | mysql -u root -p radius < / | ||
+ | mysql -u root -p radius < / | ||
+ | mysql -u root -p | ||
+ | #Entrer le mot de passe de Mysql. | ||
+ | mysql> GRANT ALL PRIVILEGES ON radius.* TO ' | ||
+ | mysql> FLUSH PRIVILEGES; | ||
+ | mysql> quit</ | ||
+ | - Exportez votre base de données pour vérifier : < | ||
+ | - [[: | ||
+ | client localhost { | ||
+ | ipaddr = 127.0.0.1 | ||
+ | [# explication commentée | ||
+ | #sur plusieurs lignes | ||
+ | #...] | ||
+ | secret = votre_secret_radius | ||
+ | #par defaut : testing123 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===Réglage du fichier de configuration=== | ||
+ | |||
+ | La configuration de Freeradius par défaut autorise les noms d' | ||
+ | Afin de tester cette configuration avant de déplacer le lien d' autorisation provenant de la fonction **fichier** à la fonction **mysql**, il sera pris pour exemple le nom d' | ||
+ | |||
+ | Éditez le fichier **/ | ||
+ | < | ||
+ | # This is an entry for a user with a space in their name. | ||
+ | # Note the double quotes surrounding the name. | ||
+ | # | ||
+ | "John Doe" | ||
+ | Reply-Message = " | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | |||
+ | ===Vérifier les fichiers de configuration FreeRadius=== | ||
+ | - Dans un [[: | ||
+ | sudo / | ||
+ | sudo freeradius -XXX | ||
+ | </ | ||
+ | Mon Jun 20 18:33:54 2011 : Debug: Ready to process requests. | ||
+ | </ | ||
+ | - Redémarrez le serveur Freeradius : < | ||
+ | - Testez les autorisations du mot de passe précédemment configuré dans **/ | ||
+ | sudo radtest "John Doe" hello 127.0.0.1 0 votre_secret_radius | ||
+ | </ | ||
+ | Sending Access-Request of id 136 to 127.0.0.1 port 1812 | ||
+ | User-Name = "John Doe" | ||
+ | User-Password = " | ||
+ | NAS-IP-Address = 255.255.255.255 | ||
+ | NAS-Port = 0 | ||
+ | rad_recv: Access-Accept packet from host 127.0.0.1: | ||
+ | Reply-Message = " | ||
+ | </ | ||
+ | |||
+ | ====Déplacement des autorisations pour intégrer MySql ==== | ||
+ | |||
+ | Si les tests ci-dessus on réussi, vous pouvez désormais déplacer l' | ||
+ | | Fichiers | == | files | remplacer par | ||
+ | | MySql | == | # sql | remplacer par | sql | | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | # unix | ||
+ | |||
+ | # | ||
+ | # Read the ' | ||
+ | # files | ||
+ | |||
+ | # | ||
+ | # Look in an SQL database. | ||
+ | # is meant to mirror the " | ||
+ | # | ||
+ | # See " | ||
+ | sql | ||
+ | |||
+ | # | ||
+ | # If you are using / | ||
+ | # mschap authentication, | ||
+ | # configure the ' | ||
+ | # | ||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | Par ailleurs Freeradius tentera toujours d' | ||
+ | |||
+ | ===Journalisation de MySQL :=== | ||
+ | |||
+ | Si vous voulez utiliser des logiciels comme **ezRADIUS** ou **Admin Dialup** vous avez besoin d' | ||
+ | - Éditez le fichier **/ | ||
+ | sql { | ||
+ | driver = " | ||
+ | server = " | ||
+ | login = "Votre login mysql" | ||
+ | password = "le mot de passe de my sql" | ||
+ | radius_db = " | ||
+ | [...] | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | - Décommentez la fonction **readclients** pour permettre la lecture du client radius dans la base de donnée (table ' | ||
+ | - Éditez le fichier **/ | ||
+ | $INCLUDE ${confdir}/ | ||
+ | authorize { | ||
+ | preprocess | ||
+ | |||
+ | chap | ||
+ | suffix | ||
+ | eap { | ||
+ | ok = return | ||
+ | } | ||
+ | # | ||
+ | sql ### Changer le manuellement | ||
+ | pap | ||
+ | } | ||
+ | authenticate { | ||
+ | |||
+ | Auth-Type PAP { | ||
+ | pap | ||
+ | } | ||
+ | |||
+ | Auth-Type CHAP { | ||
+ | chap | ||
+ | } | ||
+ | |||
+ | Auth-Type eap { | ||
+ | eap { | ||
+ | handled = 1 | ||
+ | } | ||
+ | } | ||
+ | # | ||
+ | } | ||
+ | accounting { | ||
+ | detail | ||
+ | radutmp | ||
+ | |||
+ | sql ###Changer le manuellement | ||
+ | } | ||
+ | session { | ||
+ | sql ### Changer le manuellement | ||
+ | } | ||
+ | post-auth { | ||
+ | sql | ||
+ | } | ||
+ | #pre-proxy { | ||
+ | # | ||
+ | #} | ||
+ | post-proxy { | ||
+ | eap | ||
+ | } | ||
+ | </ | ||
+ | - Editez le fichier **/ | ||
+ | $INCLUDE sql.conf | ||
+ | </ | ||
+ | |||
+ | ====Ajouter un utilisateur dans la base de donnée MySql:==== | ||
+ | |||
+ | Exemple : | ||
+ | < | ||
+ | echo " | ||
+ | #Entrer le mot de passe de Mysql. | ||
+ | </ | ||
+ | Coovachilli utilise " | ||
+ | |||
+ | Il faut le définir dans le fichier **/ | ||
+ | < | ||
+ | HS_ADMUSR=chillispot | ||
+ | HS_ADMPWD=chillispot | ||
+ | </ | ||
+ | Puis les insérer comme ceci : | ||
+ | < | ||
+ | echo " | ||
+ | #Entrer le mot de passe de Mysql. | ||
+ | </ | ||
+ | |||
+ | Ou d'une manière plus détaillé comme ceci : | ||
+ | |||
+ | == Table usergroup == | ||
+ | ^ id ^ UserName | ||
+ | | 1 | utilisateur | ||
+ | | 2 | prof1 | professeurs | ||
+ | | 3 | élève1 | ||
+ | |||
+ | == Table radcheck | ||
+ | ^ id ^ UserName | ||
+ | | 1 | utilisateur | ||
+ | | 2 | prof1 | Password | ||
+ | | 3 | élève1 | ||
+ | |||
+ | === Test de la configuration de Freeradius et de Mysql === | ||
+ | |||
+ | Redémarrez le serveur radius: | ||
+ | < | ||
+ | sudo / | ||
+ | </ | ||
+ | |||
+ | Vérifiez que Freeradius lit bien la base de données : | ||
+ | < | ||
+ | sudo radtest mysqltest testsecret 127.0.0.1 0 votre_secret_radius | ||
+ | sudo radtest chillispot chillispot 127.0.0.1 0 votre_secret_radius | ||
+ | </ | ||
+ | |||
+ | Si tout ce passe bien vous devriez avoir le message suivant, | ||
+ | < | ||
+ | Sending Access-Request of id 169 to 127.0.0.1 port 1812 | ||
+ | User-Name = " | ||
+ | User-Password = " | ||
+ | NAS-IP-Address = 127.0.1.1 | ||
+ | NAS-Port = 0 | ||
+ | rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=169, length=20 | ||
+ | |||
+ | </ | ||
+ | |||
+ | **Vous pouvez passer a l' | ||
+ | |||
+ | ===== Installation et configuration de Coovachilli ===== | ||
+ | ==== Installation de CoovaChilli à partir des fichiers Sources ==== | ||
+ | < | ||
+ | Dans un [[: | ||
+ | Installation des prérequis : | ||
+ | < | ||
+ | sudo apt-get install -y g++ automake autoconf libtool libltdl-dev gengetopt make cmake libssl-dev git | ||
+ | </ | ||
+ | Clone du git | ||
+ | < | ||
+ | cd /tmp | ||
+ | git clone https:// | ||
+ | cd coova-chilli/ | ||
+ | </ | ||
+ | Changement de branche pour acceder à la v 1.4 | ||
+ | < | ||
+ | git checkout -b 1.4 | ||
+ | git branch | ||
+ | </ | ||
+ | Premier script | ||
+ | < | ||
+ | ./bootstrap | ||
+ | </ | ||
+ | Deuxième script : configuration pour la compilation avec options (à rentrer ligne par ligne) | ||
+ | < | ||
+ | ./ | ||
+ | --infodir=\$${prefix}/ | ||
+ | --sysconfdir=/ | ||
+ | --enable-binstatusfile --enable-statusfile --enable-chilliproxy \ | ||
+ | --enable-chilliradsec --enable-chilliredir --with-openssl --with-curl \ | ||
+ | --with-poll --enable-dhcpopt --enable-sessgarden --enable-dnslog \ | ||
+ | --enable-ipwhitelist --enable-redirdnsreq --enable-miniconfig \ | ||
+ | --enable-libjson --enable-layer3 --enable-proxyvsa --enable-miniportal \ | ||
+ | --enable-chilliscript --enable-eapol --enable-uamdomainfile \ | ||
+ | --enable-modules --enable-multiroute | ||
+ | </ | ||
+ | Installation | ||
+ | < | ||
+ | make && make install | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | Pour un PC 64bits et pour éviter les soucis d' | ||
+ | |||
+ | ==== Installation du packet haserl pour permettre au serveur chilli de rediriger les clients vers la page d' | ||
+ | < | ||
+ | cd /usr/src | ||
+ | wget http:// | ||
+ | tar zxvf haserl-0.9.35.tar.gz | ||
+ | cd haserl-0.9.35 | ||
+ | </ | ||
+ | Compilation puis installation de Haserl | ||
+ | < | ||
+ | ./configure && make && make install | ||
+ | </ | ||
+ | ==== Paramétrage du serveur hotspot ==== | ||
+ | |||
+ | Copie du fichier de configuration, | ||
+ | |||
+ | < | ||
+ | sudo -s | ||
+ | cp / | ||
+ | mkdir / | ||
+ | cd / | ||
+ | cp / | ||
+ | mkdir / | ||
+ | cp / | ||
+ | mkdir / | ||
+ | cd / | ||
+ | FIXME : adresse introuvable : | ||
+ | < | ||
+ | wget http:// | ||
+ | exit | ||
+ | </ | ||
+ | |||
+ | <note warning> | ||
+ | Par contre vous devez re-adresser en local le scripte chilli.js\\ | ||
+ | sed -i ' | ||
+ | Vous donnerez ici l' | ||
+ | < | ||
+ | sed -i ' | ||
+ | </ | ||
+ | |||
+ | Faites le pont entre l' | ||
+ | < | ||
+ | sed -i ' | ||
+ | sed -i ' | ||
+ | </ | ||
+ | < | ||
+ | |||
+ | ===Configuration de CoovaChill=== | ||
+ | A la fin du fichier **/ | ||
+ | < | ||
+ | Elle va permettre de transférer ce qui arrive par le Wifi vers l’Ethernet | ||
+ | |||
+ | Editer le fichier **/ | ||
+ | < | ||
+ | par | ||
+ | < | ||
+ | Cela autorise le démarrage de CoovaChilli | ||
+ | |||
+ | Editer le fichier **/ | ||
+ | < | ||
+ | |||
+ | Editer le fichier **/ | ||
+ | < | ||
+ | HS_WANIF=eth0 | ||
+ | HS_LANIF=wlan0 | ||
+ | HS_NETWORK=192.168.10.0 | ||
+ | HS_UAMLISTEN=192.168.10.1 | ||
+ | HS_UAMALLOW=192.168.10.0/ | ||
+ | HS_SSID=PiHomeServerAP | ||
+ | ... | ||
+ | HS_RADSECRET=testing123 # Set to be your RADIUS shared secret | ||
+ | </ | ||
+ | |||
+ | Le détail des paramètres configurés : | ||
+ | * HS_WANIF est l’interface reliée à Internet | ||
+ | * HS_LANIF est l’interface du Wifi/ | ||
+ | * HS_NETWORK le réseau du hotspot | ||
+ | * HS_UAMLISTEN la gateway du réseau du hotspot | ||
+ | * HS_UAMALLOW les IP du réseau du hotspot autorisées à se connecter | ||
+ | * HS_SSID le SSID (ne semble pas avoir d’effet) | ||
+ | * HS_RADSECRET la clée secrète du radius défini précédemment dans **/ | ||
+ | |||
+ | Redémarrez votre ordinateur.\\ | ||
+ | Testez si la configuration de réseau s'est bien passée en démarrant tout simplement le serveur Chilli : | ||
+ | < | ||
+ | sudo / | ||
+ | </ | ||
+ | |||
+ | ==== Configuration du serveur chilli ==== | ||
+ | |||
+ | === Instruction === | ||
+ | |||
+ | Vous venez de copier le fichier de configuration par **défaults** dans le fichier **config** . Pour charger ces paramètres et démarrer le serveur Chilli, exécutez la commande suivante : | ||
+ | < | ||
+ | Cela va générer automatiquement des fichiers **main.conf**, | ||
+ | |||
+ | < | ||
+ | Si vous souhaitez redémarrer le serveur chilli en mode débogage il faudra donc taper ceci. | ||
+ | < | ||
+ | ou avec les dernières versions simplement : | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | Par défaut, il sera supposé que : | ||
+ | * le périphérique //eth0// sera relié à votre connexion internet. | ||
+ | * le périphérique //eth1// sera quand a lui l' | ||
+ | < | ||
+ | |||
+ | Ensuite avec les dispositifs adéquats vous pourrez configurer et redémarrer le serveur Chilli. | ||
+ | |||
+ | === Configuration === | ||
+ | < | ||
+ | |||
+ | Configuration du fichier **/ | ||
+ | |||
+ | ^Paramètres ^Explications ^ | ||
+ | | HS_WANIF=eth0 | Nom du périphérique WAN relié vers internet. Laissez le commentaire si vous n' | ||
+ | | HS_LANIF=eth1 | Nom du périphérique relié au point d’accès client (eth1 ou wlan0) | ||
+ | | HS_NETWORK=192.168.182.0 | Définition du réseau d' | ||
+ | | HS_NETMASK=255.255.255.0 | Masque du réseau hotspots | ||
+ | | HS_UAMLISTEN=192.168.182.1 | Adresse IP de la passerelle client (eth1 ou wlan0) - doit faire partie du réseau client | ||
+ | | HS_DNS1=208.67.222.222 | Le DNS de votre fournisseur d’accès. Laissez commenté pour utiliser la configuration par défaut. Les DNS utilisés seront alors ceux spécifiés dans votre fichier **/ | ||
+ | | HS_NASID=nas01 | Décommentez sinon l’adresse 0.0.0.0 (NAS-IP-Address) apparaît dans les logs de freeradius | ||
+ | | HS_RADIUS=localhost | Ip ou nom de l’hôte local que vous avez configuré dans **/ | ||
+ | | HS_RADIUS2=localhost | Ip ou nom de l’hôte local que vous avez configuré dans **/ | ||
+ | | HS_RADSECRET=testing123 | Votre secret_radius que vous avez configuré dans **/ | ||
+ | | HS_UAMAAAURL=http:// | ||
+ | | HS_UAMDOMAINS=" | ||
+ | | HS_SSID=< | ||
+ | | HS_UAMSERVER= | Il faut remplacer **$HS_UAMLISTEN** par l' | ||
+ | | HS_UAMFORMAT= | Il faut remplacer l' | ||
+ | | HS_UAMSERVICE= | Il faut ajouter l' | ||
+ | | HS_ADMUSR=chillispot | Nom du superutilisateur du serveur chilli (permet la jonction avec MySql). | ||
+ | | HS_ADMPWD=chillispot | Mot de passe du superutilisateur du serveur chilli (permet la jonction avec MySql). | ||
+ | | HS_LOC_NETWORK=" | ||
+ | | HS_LOC_AC=408 | HS_LOC_AC=87000 | ||
+ | | HS_LOC_CC=1 | HS_LOC_CC=33 (suffix téléphonique +33) | | ||
+ | | HS_LOC_ISOCC=US | HS_LOC_ISOCC=FR ( [[http:// | ||
+ | |||
+ | ==== Créer et configurer une page de connexion ==== | ||
+ | |||
+ | Vous avez besoin de créer une page de connexion qu' heureusement les créateurs de Coovachilli fournisse avec le paquet .deb à travers le script **hotspotlogin.cgi**\\ | ||
+ | Pour trouver ce fichier, saisissez dans un [[: | ||
+ | < | ||
+ | sudo find / | grep ' | ||
+ | </ | ||
+ | L' | ||
+ | |||
+ | Créez un nouveau répertoire dans la racine du serveur Apache2 et copiez-y le fichier **hotspotlogin.cgi** | ||
+ | < | ||
+ | sudo mkdir -p / | ||
+ | zcat -c / | ||
+ | </ | ||
+ | Rendez-le exécutable : | ||
+ | < | ||
+ | sudo chmod a+x / | ||
+ | </ | ||
+ | Editez le script **/ | ||
+ | < | ||
+ | $uamsecret = " | ||
+ | $userpassword=1; | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | print << | ||
+ | ....Ici vous pourrez coder en Html..... | ||
+ | |||
+ | ENDHTML | ||
+ | </ | ||
+ | |||
+ | ===== Sécurité et certification d’authenticité ===== | ||
+ | |||
+ | ==== Installation du par-feu :==== | ||
+ | |||
+ | Les créateurs de CoovaChilli ont des règles prédéfinies pour [[: | ||
+ | Ce déclenchement se fait en fonction du contenu du script **/ | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | Pour " | ||
+ | < | ||
+ | [ -e "/ | ||
+ | iptables -I POSTROUTING -t nat -o $HS_WANIF -j MASQUERADE | ||
+ | # Exemple HTTP : | ||
+ | iptables -t nat -A logging -p tcp --dport 80 -j LOG --log-prefix "HTTP: " \ | ||
+ | --log-level info | ||
+ | # Exemple HTTPS : | ||
+ | iptables -t nat -A logging -p tcp --dport 443 -j LOG --log-prefix " | ||
+ | --log-level info | ||
+ | # Exemple MSN : | ||
+ | iptables -t nat -A logging -p tcp --dport 1863 -j LOG --log-prefix "MSN: " \ | ||
+ | --log-level info | ||
+ | </ | ||
+ | Pour le rendre exécutable : | ||
+ | < | ||
+ | chmod +x / | ||
+ | </ | ||
+ | |||
+ | Dans la configuration ci-dessus, vous avez relié le serveur DNS au périphériques locaux. C'est pourquoi, votre système doit posséder un serveur DNS que vous pouvez installer à partir de [[: | ||
+ | |||
+ | ==== Installation de la certification SSL au server Apache 2 ==== | ||
+ | |||
+ | Suivre cette documentation : [[: | ||
+ | ===== Configuration ===== | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | ===== Utilisation===== | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | ===== Désinstallation ===== | ||
+ | |||
+ | Pour désinstaller CoovaChilli saisissez dans un [[: | ||
+ | |||
+ | < | ||
+ | sudo rm / | ||
+ | sudo dpkg --remove --force-remove-reinstreq coova-chilli | ||
+ | sudo dpkg --purge --force-remove-reinstreq coova-chilli | ||
+ | </ | ||
+ | |||
+ | ===== Voir aussi ===== | ||
+ | * **(en)** [[http:// | ||
+ | * **(en-us)** [[https:// | ||
+ | * **(en)** [[http:// | ||
+ | * **(en-hindou)** [[http:// | ||
+ | | ||
+ | |||
+ | ---- | ||
+ | // |