Outils pour utilisateurs

Outils du site


serveur_portail_captif

ChilliSpot

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 

FIXME: Safe_Port etc…

serveur_portail_captif.txt · Dernière modification : 2010/11/29 13:47 de thierry