Table des matières
ChilliSpot
… est mort !
vive :
Authentification radius en Perl: http://search.cpan.org/~manowar/RadiusPerl-0.17/Radius.pm
coova
A la fin: je n'y arrive pas , donc, inutile de parcourir ce brouillon ! |
Liens:
radius
Quelques pré-requis: outils radius:
# aptitude install freeradius-utils
Sur un autre serveur, avec freeradius (ca marche encore ce truc), j'ajoute le nouveau futur client dans /etc/freeradius/clients.conf
:
... <snip> .... ## TJ : 2010/10/12 client <IP> { secret = <RANDOM_HASH_HAS_SECRET> shortname = <IP> }
Ensuite, je test un compte que je connais, sur le nouveau client, comme cela:
$ radtest <USER> <PASSWORD> <IP_SERVEUR_RADIUS> 0 <RANDOM_HASH_HAS_SECRET>
et ca retourne un truc du genre:
... blabla ... ... Access-Accept packet ...
et on est content.
compil
$ cd /usr/local/src $ wget http://ap.coova.org/chilli/coova-chilli-1.2.4.tar.gz $ tar xvzf coova-chilli-1.2.4.tar.gz
# aptitude install make gcc
$ ./configure $ make
# make install
Faire un paquet debian plutot ? ca marche po !
# adduser --system --no-create-home --disabled-login chilli
$ cd /usr/local $ mkdir -p var/run
apache
# aptitude install apache2
mon portail captif
outils
- serveur radius (qu'on ne s'expliquera pas)
- client radius perl
- ferm (iptables en plus lisible)
- serveur dhcp
- apache et cgi qui va bien
- quelques “cron” bien placés
client radius
module Auth::Radius
: http://search.cpan.org/~manowar/RadiusPerl-0.17/Radius.pm
# aptitude install libauthen-radius-perl
Petit test, dans un fichier nommé test.pl
:
#!/usr/bin/perl -w use strict; use warnings; use Authen::Radius; { if ( my $rad = new Authen::Radius( Host => '<IP_SERVEUR_RADIUS>', Secret => '<RANDOM_HASH_HAS_SECRET>' ) ) { if ( $rad->check_pwd('<USER>','<PASSWORD>') ) { print "OK\n"; } else { print "Wrong!\n"; } } }
$ chmod a+x test.pl $ ./test.pl OK
Ca fait la même chose, en Perl, qu'avec radtest
vu plus haut.
arping
# aptitude install arping
mais comme il ne fonctionne qu'en root, on va s'appuyer sur “sudo”:
# visudo
... <snip> ... # User alias specification User_Alias CHILLI_USER=thierry,www-data # Cmnd alias specification Cmnd_Alias CHILLI_CMD=/root/prod/chilli/chilli-arping # User privilege specification CHILLI_USER ALL=NOPASSWD:CHILLI_CMD
Scripte dans /root/prod/chilli/chilli-arping
:
#!/bin/sh read -t 5 CHILLI_IP || exit 1 if [ -n "$CHILLI_IP" ]; then RETURN=$( arping -c 1 -i eth2 "$CHILLI_IP" | grep "bytes from" | awk -F' ' '{ print $4; }' ) if [ -n "$RETURN" ]; then echo "$RETURN" fi fi
$ sudo echo "192.168.1.64" | sudo /root/prod/chilli/chilli-arping 00:21:9b:d8:65:40
sqlite3
# aptitude install sqlite3
# aptitude install libclass-dbi-sqlite-perl
Extra
squid3
# aptitude install squid3
conf classique…
avec https ? http://www.mail-archive.com/squid-users@squid-cache.org/msg59218.html
et puis:
# aptitude install squidguard
Lien: http://www.coagul.org/article.php3?id_article=184
recuperer les blacklist gratuite: http://www.squidguard.org/blacklists.html
recuperer la blacklist “france” :
# cd /usr/local/src # wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz # tar zxvf blacklists.tar.gz -C /var/lib/squidguard/db/ # cd /var/lib/squidguard/db # mv blacklists/* .
Modifier la conf dans /etc/squid/squidGuard.conf
et inclure les bases voulus. Par exemple:
# TJ ------------ dest adult { domainlist adult/domains urllist adult/urls expressionlist adult/expressions #redirect http://squid.chilli.tjaouen.fr/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u redirect http://squid.chilli.tjaouen.fr/interdit.html } dest agressif { domainlist agressif/domains urllist agressif/urls expressionlist agressif/expressions redirect http://squid.chilli.tjaouen.fr/interdit.html } ... acl { default { pass !adult !agressif redirect http://squid.chilli.tjaouen.fr/interdit.html } }
Et uniquement aprés:
# /usr/bin/squidGuard -C all # chown -R proxy: /var/lib/squidguard/ # /etc/init.d/squid3 reload
Problème possible:
- Droits incorrects sur les fichiers dans '../db/..' (il faut un accès complet)
- le parametre “expressionlist” n'est pas toujours requis
… dans ces 2 cas: squid plante totalement ! (a cause de “squidGuard”)
Pour le traitement des erreurs “interdit”:
# cd <SOMEWHERE>/cgi-bin # zcat /usr/share/doc/squidguard/examples/squidGuard.cgi.gz >squidGuard.cgi
et comme c'est un script du 20ieme siècle, il faut faire:
# cp {,old-squidGuard.cgi} # cat old-squidGuard.cgi | sed -e 's/\%\([a-zA-Z]*\)\(->\)/$\1/g' >squidGuard.cgi
squid3 et https
Liens:
$ su # cd /usr/local/src # aptitude update # aptitude install libssl-dev # aptitude install devscripts build-essential fakeroot
# apt-get update # apt-get source squid3
# aptitude build-dep squid3 # aptitude install libcppunit-dev libsasl2-dev cdbs
# cd squid3-3.0.STABLE8/debian
Modifier le fichier “rules” pour ajouter “–enable-ssl”. Par exemple :
...<snip>... DEB_CONFIGURE_EXTRA_FLAGS := --datadir=/usr/share/squid3 \ --sysconfdir=/etc/squid3 \ ...<snip>... --with-default-user=proxy \ --enable-ssl ...<snip>...
# cd .. # debuild -us -uc # cd /usr/local/src # ls squid*.deb -lart -rw-r--r-- 1 root staff 290842 oct 37 29:35 squid3-common_3.0.STABLE8-3+lenny4_all.deb -rw-r--r-- 1 root staff 88976 oct 37 29:35 squidclient_3.0.STABLE8-3+lenny4_amd64.deb -rw-r--r-- 1 root staff 1028962 oct 37 29:35 squid3_3.0.STABLE8-3+lenny4_amd64.deb -rw-r--r-- 1 root staff 92832 oct 37 29:35 squid3-cgi_3.0.STABLE8-3+lenny4_amd64.deb
# dpkg -i squid3-common_3.0.STABLE8-3+lenny4_all.deb # dpkg -i squid3_3.0.STABLE8-3+lenny4_amd64.deb
Modifier /etc/apt/preferences afin que “squid3” ne soit plus mis-a-jour ! |
Ca marche (au pif), mais a vérifier:
Package: squid3 squid3-common Pin: release a=local-recompilation Pin-Priority: 1001
J'ai invente une release “local-recompilation”, sinon, “apt” veut toujours upgrader !
Certificat:
# cd /etc/squid3 # mkdir ssl # cd ssl # make-ssl-cert /usr/share/ssl-cert/ssleay.cnf mon_certificat.pem
: Safe_Port
etc…