Recquiert : -une installation de debian etch valide (pour ma part j'ai utilisé le format 180 mega , installation par le réseau , sans interface graphique , testé sur un PII 233 Mhz) et les paquets suivants : -apache apache-ssl phpmyadmin mysql-server freeradius freeradius-mysql iptables
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
dpkg -i chillispot_0.99-1_i386.deb
Copier le fichier cgi fourni dans le répertoire adéquat
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
(vous pourrez éditer ce fichier une fois chillispot fonctionnel afin de personnalisez l'installation)
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 */
Dans le fichier /etc/chilli.conf, décommenter et modifier les paramètres suivants :
- net 192.168.1.0/24 ou laisser commenté pour utiliser la configuration par défaut192.168.182.0/24
- dns1 10.187.36.3 (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
- Radiusradiusserver2 127.0.0.1 IP du serveur d’authentification Radius
- radiussecret secretradius secret partagé entre le serveur Radius et le daemon chilli
- radiusnasid portail NAS-ID : identifiant de votre chillispot
- radiuslocationid isocc=fr,cc=33,ac=87000,network=MonESSID
- dhcpif eth1 nom de l’interface reliée au point d’accès
- uamserver https://ipdevotreserveur/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.1.1
- uamallowed localhost www.yahoo.fr
Règles du firewall:
# cp /usr/share/doc/chillispot/firewall.iptables /etc/chilli.iptables
# chmod u+x /etc/chilli.iptables
Vous devez avoir à l'intérieur :
EXTIF="eth0" /* 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
relancez ensuite les interfaces réseaux /etc/init.d/networking restart
Dans le fichier /etc/freeradius/clients.conf, modifier le paramètre suivant :
client 127.0.0.1 {
#secret = testing123
secret = secretradius /* mettre le meme secret partagé que dans le fichier /etc/chilli.conf */
modifier le fichier /etc/freeradius/sql.conf
server = "localhost" (ou x.x.x.x l'ip de votre serveur mysql)
login = "radius"
password = "xxxx"
mettre dans /etc/freeradius/radiusd.conf
authorize {
preprocess chap suffix eap #files sql
}
authenticate {
Auth-Type PAP {
pap
}
Auth-Type CHAP {
chap
}
eap
}
accounting {
detail radutmp sql
}
session {
sql
}
On s'occupe ensuite de notre base mysql
# echo "create database radius;" mysql -u root -p
# echo "grant all on radius.* to radius@'%' identified by 'motdepasse_sql'; flush privileges;" mysql -u root -p
# zcat /usr/share/doc/freeradius/examples/mysql.sql.gz mysql -u root -p radius
si vous rencontrez des problèmmes insérez le script manuellement
-- phpMyAdmin SQL Dump-- version 2.6.1-- http://www.phpmyadmin.net-- -- Serveur: localhost-- Généré le : Lundi 22 Janvier 2007 à 16:21-- Version du serveur: 4.1.9-- Version de PHP: 4.3.10-- -- Base de données: `radius`--
-- --------------------------------------------------------
-- -- Structure de la table `nas`--
CREATE TABLE `nas` ( `id` int(10) NOT NULL auto_increment, `nasname` varchar(128) NOT NULL default '', `shortname` varchar(32) default NULL, `type` varchar(30) default 'other', `ports` int(5) default NULL, `secret` varchar(60) NOT NULL default 'secret', `community` varchar(50) default NULL, `description` varchar(200) default 'RADIUS Client', PRIMARY KEY (`id`), KEY `nasname` (`nasname`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- -- Contenu de la table `nas`--
-- --------------------------------------------------------
-- -- Structure de la table `radacct`--
CREATE TABLE `radacct` ( `RadAcctId` bigint(21) NOT NULL auto_increment, `AcctSessionId` varchar(32) NOT NULL default '', `AcctUniqueId` varchar(32) NOT NULL default '', `UserName` varchar(64) NOT NULL default '', `Realm` varchar(64) default '', `NASIPAddress` varchar(15) NOT NULL default '', `NASPortId` int(12) default NULL, `NASPortType` varchar(32) default NULL, `AcctStartTime` datetime NOT NULL default '0000-00-00 00:00:00', `AcctStopTime` datetime NOT NULL default '0000-00-00 00:00:00', `AcctSessionTime` int(12) default NULL, `AcctAuthentic` varchar(32) default NULL, `ConnectInfo_start` varchar(32) default NULL, `ConnectInfo_stop` varchar(32) default NULL, `AcctInputOctets` bigint(12) default NULL, `AcctOutputOctets` bigint(12) default NULL, `CalledStationId` varchar(50) NOT NULL default '', `CallingStationId` varchar(50) NOT NULL default '', `AcctTerminateCause` varchar(32) NOT NULL default '', `ServiceType` varchar(32) default NULL, `FramedProtocol` varchar(32) default NULL, `FramedIPAddress` varchar(15) NOT NULL default '', `AcctStartDelay` int(12) default NULL, `AcctStopDelay` int(12) default NULL, PRIMARY KEY (`RadAcctId`), KEY `UserName` (`UserName`), KEY `FramedIPAddress` (`FramedIPAddress`), KEY `AcctSessionId` (`AcctSessionId`), KEY `AcctUniqueId` (`AcctUniqueId`), KEY `AcctStartTime` (`AcctStartTime`), KEY `AcctStopTime` (`AcctStopTime`), KEY `NASIPAddress` (`NASIPAddress`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- -- Contenu de la table `radacct`--
-- --------------------------------------------------------
-- -- Structure de la table `radcheck`--
CREATE TABLE `radcheck` ( `id` int(11) unsigned NOT NULL auto_increment, `UserName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '==', `Value` varchar(253) NOT NULL default '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
-- -- Contenu de la table `radcheck`--
INSERT INTO `radcheck` VALUES (1, 'tux', 'Password', '==', 'tuxy');
-- --------------------------------------------------------
-- -- Structure de la table `radgroupcheck`--
CREATE TABLE `radgroupcheck` ( `id` int(11) unsigned NOT NULL auto_increment, `GroupName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '==', `Value` varchar(253) NOT NULL default '', PRIMARY KEY (`id`), KEY `GroupName` (`GroupName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
-- -- Contenu de la table `radgroupcheck`--
INSERT INTO `radgroupcheck` VALUES (1, 'pingouin', 'Auth-Type', ':=', 'Local');
-- --------------------------------------------------------
-- -- Structure de la table `radgroupreply`--
CREATE TABLE `radgroupreply` ( `id` int(11) unsigned NOT NULL auto_increment, `GroupName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '=', `Value` varchar(253) NOT NULL default '', `prio` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `GroupName` (`GroupName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- -- Contenu de la table `radgroupreply`--
-- --------------------------------------------------------
-- -- Structure de la table `radpostauth`--
CREATE TABLE `radpostauth` ( `id` int(11) NOT NULL auto_increment, `user` varchar(64) NOT NULL default '', `pass` varchar(64) NOT NULL default '', `reply` varchar(32) NOT NULL default '', `date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
-- -- Contenu de la table `radpostauth`--
-- --------------------------------------------------------
-- -- Structure de la table `radreply`--
CREATE TABLE `radreply` ( `id` int(11) unsigned NOT NULL auto_increment, `UserName` varchar(64) NOT NULL default '', `Attribute` varchar(32) NOT NULL default '', `op` char(2) NOT NULL default '=', `Value` varchar(253) NOT NULL default '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- -- Contenu de la table `radreply`--
-- --------------------------------------------------------
-- -- Structure de la table `usergroup`--
CREATE TABLE `usergroup` ( `id` int(11) unsigned NOT NULL auto_increment, `UserName` varchar(64) NOT NULL default '', `GroupName` varchar(64) NOT NULL default '', PRIMARY KEY (`id`), KEY `UserName` (`UserName`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
-- -- Contenu de la table `usergroup`--
INSERT INTO `usergroup` VALUES (1, 'tux', 'pingouin'); 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'authentification dans la table radgroupcheck et enfin un login associé à un nom de groupe dans la table usergroup
Vous pouvez vous référer au site officiel de chillispot pour l'ensemble des syntaxes supportés par chilli
http://www.chillispot.org/features.html#mozTocId203873Test pour l'authentification de freeradius
# /etc/init.d/freeradius stop
#
freeradius -XXX -A <--mode débug de freeradius[...]
Debug: Listening on authentication *:1812Debug:
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 monsecret_nasradius
Sending Access-Request of id 95 to 127.0.0.1:1812
User-Name = "tux"
User-Password = "tuxy"
NAS-IP-Address = localhost
NAS-Port = 0
rad_recv:
Access-Accept packet from host 127.0.0.1:1812, id=95, length=20
Notre identification par rapport à mysql est donc fonctionnelle on peut dés à présent tester notre chillispot.
# /etc/init.d/freeradius stop (ctrl+c pour le mode débug)
# /etc/init.d/freeradius start
# ifconfig eth1 0.0.0.0
# /etc/init.d/chilli stop
# /etc/init.d/chilli start
# /etc/chilli.iptables
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://ipdevotreserveur/cgi-bin/hotspotlogin.cgiIl vous reste maintenant à vous authentifier, si le radtest à été concluant l'authentification devrait réussir sans problèmme.
Un popup s'ouvre alors avec le temps de connection et la possibilité de se délogger tandis que la page que vous aviez ouverte est redirigé vers le site demandé.
Ce tutorial s'appui sur l'excellent tutorial de Thus0 / Petrus disponible à l'adresse suivante
http://www.pervasive-network.org/SPIP/Installation-de-chillispot-sur-une qui ma permis de le tester sur une débian sarge avant de passer à la Etch