Documente Academic
Documente Profesional
Documente Cultură
Documentation technique
Documentation technique
ALCASAR
2/17
1 - Rappel de l'architecture
Alcasar est positionn en coupure entre l'accs Internet et le rseau de consultation. Il permet d'authentifier les
usagers, de contrler les accs, de tracer les connexions effectues, de protger le rseau de consultation. Le
coeur d'Alcasar est constitu des lments traditionnels d'un portail captif : une passerelle d'interception, un
serveur d'authentification et une base de donnes usagers.
Site WEB
NoCat
Talweg
Wifidog
Chillispot/Coovachilli
nocat.net
talweg.univ-metz.fr
dev.wifidog.org
www.chillispot.org
www.coovachilli.org
Version
1.0.0_m2 (7/10/2005)
Langage
C# sous mono
Description
1.1 (24/10/2006)
Bien que cette liste ne soit pas exhaustive, et aprs exprimentation, la passerelle Chillispot a t utilise
lors de la cration d'Alcasar. Depuis, elle a t remplace par le clone (fork) coova-chilli dont le
dveloppement est plus actif.
Documentation technique
ALCASAR
3/17
jusqu' 1.6
1.7
1.8
1.9
2.0
2007.0
2009.0
2010.0
2010.0
2010.1
2.6.17
2.6.27
2.6.31
2.6.31
2.6.33
ChilliSpot 1.0
1.0.12
1.0.12
1.2.2
1.2.2
dhcpd server
Serveur DHCP et serveur de nom
Bind
de domaine (DNS)
Dnsmasq
3.0.4
3.0.7
4.1.0
4.1.0
Serveur Web
Apache
2.2.3
2.2.9
2.2.14
2.2.14
OpenSSL
Middleware
PHP
5.1.6
5.2.6
5.3.1
5.3.1
Serveur d'authentification
FreeRadius
1.1.2
2.1.0
2.1.7
2.1.7
2.1.8
5.0.24
5.0.67
5.1.40
5.1.42
5.1.46
3.1-14
Modules
Systme d'exploitation
Linux Mandriva
noyau Linux
Passerelle d'interception
Coova-chilli
9.6.1
2.52-1
2.2.15
Squid
2.6
3.0.8
3.0.22
3.0.22
Serveur de temps
ntpd
4.2
4.2.4
4.2.4
4.2.4
Journalisation
Ulogd
1.24
1.24
1.24
1.24
1.24
Filtrage WEB
DansGuardian
SquidGuard 1.2.0
2.9.9.7
2.10.1
2.10.1
2.10.1
Statistiques de consultation
Awstat
2.5
2.5.3
6.9
6.9
6.95
FirewallEyes
1.0
1.0
1.0
1.0
1.0
Info systme
Phpsysinfo
2.5.3
2.5.3
2.5.3
2.5.3
2.5.3
Mondo et Mindi
2.09 1.09
1.4.5
1.4.9
1.4.10
1.4.10
1.4.10
4.3-P2
5.1-P1
5.3-P1
5.3-P1
5.5p1
openssh-server
HAVP
0.91
0.91
Antivirus
LibClamav
0.96
0.96
3 - Schmas de principe :
Alcasar peut tre dcompos en cinq fonctions qui sont dtailles dans la suite du document :
fonction traabilit / imputabilit des connexions constitue des journaux du parefeu et du couple
(Freeradius , Mysql). Le journal du proxy Squid peut aussi tre exploit ;
fonction filtrage de domaine, d'URL, antivirus WEB et rseau. Cette fonction est ralise par le
parefeu (Netfilter), le couple (HAVP, LibClamav), DNSMasq et Dansguardian ;
fonction modules complmentaires . Ces modules ont pour objectif d'amliorer la scurit globale du
portail (anti-contournement, anti-usurpation MAC/IP, chiffrement des fichiers journaux, gestion des
certificats, etc.) ou d'enrichir les possibilits du portail (installation, mise jour, by-pass, archivage,
chiffrement des journaux, acclration de la consultation, cron, etc.)
Documentation technique
ALCASAR
4/17
Filtrage de
protocoles
Administration
n
p ti o
r ce
e
t
n
I
Authentification 3990
Usagers
Apache
443
Accs
Internet
Au
tre
sf
lux
Administrateur
Serveur WEB
Coova-chilli 1
Flux DNS
53
Flux
Blacklist
de domaines
DNSmasq
Serveur DNS local
+ filtrage de domaine
web
Passerelle
d'interception
+
Serveur DHCP
Cache DNS
3128
Squid
Proxy WEB
8080
1812
1813
Serveur LDAP
ou A.D externe
Annuaire
externe
Dansguardian
Filtrage WEB
(URL et contenu)
8090
Freeradius
Serveur A.A.A
Authentication
Authorisation
Accounting
Blacklists
d'URL
Mysql
Cache Web
Journal des
Consultations
WEB
libclamav
Base
antivirale
Serveur de base de
donnes
Marquage et
discrimination des logs
HAVP
Proxy antivirus
de flux WEB
Ulogd
Journal des
Flux
@IP_src + @MAC_src +
port_src
+ @IP_dest + port_dest +
date + heure
PAREFEU (NETFILTER)
1 : - protection en entre (anti-contournement)
- redirection des flux (web, dns, autres)
- antispoofing
2 : - masquage d'adresse (dnat)
- journalisation des connexions
- antispoofing
Internet
quipements de
consultation
Eth1
Tun0
DNSmasq (DNS)
Autres flux
Loopback
(127.0.0.1)
NetFilter
- Protection du portail
- Effectue une translation d'adresse (NAT) sur les trames sortantes
- Journalise les flux sortants via ulogd
Eth0
Internet
Documentation technique
ALCASAR
6/17
[trame 1] La requte DNS de l'quipement est rcupre par Chilli. Il la rejette si elle n'est pas
strictement conforme la norme DNS (RFC) ou si elle est destination de serveurs DNS Internet. Cela
1 - Les priphriques Tap et Tun des noyaux Linux sont des interfaces rseau virtuelles de niveau 2 (i.e. ethernet) pour Tap
ou 3 (i.e. IP) pour Tun permettant des processus excuts en espace utilisateurs (les interfaces physiques fonctionnent en espace
noyau) d'envoyer ou de recevoir des trames sur ces interfaces via les fichiers spciaux (/dev/tapX ou /dev/tunX). Ces interfaces
virtuelles peuvent tre exploites comme des interfaces physiques (configuration, mission/rception, routage). Leur avantage est de
pouvoir intercaler un traitement sur les trames la rception ou avant l'mission de celles-ci. L'interface Tap est souvent utilise dans
la cration de tunnels RPV/VPN afin d'encapsuler un flux dans un autre (cf. projet OpenVPN ).
Documentation technique
ALCASAR
7/17
permet de prvenir le contournement d'ALCASAR par l'exploitation d'un tunnel DNS. Si la requte est
correcte, il la dirige vers le serveur DNS intgr ALCASAR (DNSMasq).
DNSMasq rsout le domaine localement s'il est dans sa base (cf. fonctions de filtrage), sinon il transfre
la requte vers les serveurs DNS Internet dfinis lors de l'installation d'ALCASAR. Les rponses sont
retournes l'quipement de consultation [trame 2].
Une requte de connexion sur le port 80 (http) du serveur WEB est alors envoye [trame 3] par la station
de consultation. Cette requte est intercepte par chilli qui vrifie si un usager n'est pas dj
autoris sur cet quipement :
Si tel est le cas, Chilli ouvre la barrire et laisse transiter toutes les trames de l'quipement
quelque soit le protocole vers le parefeu (netfilter) qui les oriente vers le processus adquat (cf.
fonction de filtrage).
Si tel n'est pas le cas, Chilli simule une connexion WEB standard [trames 4 6] et rpond la
requte de l'quipement [trames 7 9] par une trame HTTP de redirection de service ( HTTP/1.0 302
Moved Temporarily ) contenant l'URL d'une splash-page avertissant de la redirection ( directive
hs_uamhomepage du fichier /etc/chilli.conf). Dans ALCASAR cette splash-page a t supprime afin
d'afficher directement la page d'authentification (primitive HS_UAMFORMAT du fichier
/etc/chilli.conf ). L'URL de redirection envoie ainsi l'quipement sur ALCASAR afin qu'il rcupre
de manire chiffre (https) la page de demande d'authentification (intercept.php) [cf. dtail de la
trame 9]. Cette session se termine [trames 10 13] et le navigateur initie une session chiffre avec le
serveur WEB intgr dans Alcasar (Apache) afin de rcuprer cette page [trame 14 et suivantes].
L'usager renseigne les champs d'authentification (identifiant + mot de passe) qui sont envoys de
manire chiffre Apache (+php) pour tre traits (chiffrement du mot de passe avec le challenge).
Apache retourne le rsultat dans une trame de redirection afin que ces informations soient fournies
Chilli (port 39902). Ce dernier les rcupre pour requter le serveur radius. Le rsultat de cette
requte est retourn au navigateur dans une trame de redirection pour pouvoir tre interprt par le
module javascript de la page intercept.php .
La communication entre chilli et Freeradius exploite le protocole radius . Les paramtres de cette
communication sont dfinis la fois dans le fichier /etc/raddb/client.conf et via les directives
hs_radius , hs_radius2 et hs_radsecret du fichier /etc/chilli.conf .
Pour la dconnexion, les navigateurs Web gnrent une requte adquate sur le port d'coute de Chilli.
Cette phase d'interception peut tre schmatise comme suit pour un usager non authentifi sur une station de
consultation identifie par son @MAC et son @IP :
@MAC
+
@IP
80
module Javascript
- formulaire d'authentification
- fentre connect
- fentre chec de connexion
- redirection vers URL demande
Apache
+
php
3990
coova
443
apache
coova
80 ou tout
autre protocole
coova
Internet
radius
Internet
requtes envoyes sur ce port dtermine l'action demande (ex. @IP:3990/prelogin pour une demande de connexion,
@IP:3990/logout pour une demande de dconnexion. La requte contient bien entendu l'ensemble des paramtres ncessaires au
traitement de la demande (@MAC, challenge, identifiant, etc.).
Documentation technique
ALCASAR
8/17
des patchs systmes. Les paramtres uamallowed et uamdomain du fichier de configuration contiennent
la liste des URL ou des noms de domaine joignables sans authentification.
Documentation technique
ALCASAR
9/17
1. badusers
4. radacct
2. mtotacct
MtotAcctld bigint(21)
Username * varchar(64)
AcctDate * date
ConnNum bigint(12)
ConnTotDuration bigint(12)
ConnMaxDuration bigint(12)
ConnMinDuration bigint(12)
InputOctets bigint(12)
OutputOctets bigint(12)
NaSIPAddress * varchar(15)
id int(10)
UserName *varchar(30)
Date * datetime
Reason varchar(200)
Admin varchar(30)
RadAcctld bigint(21)
AcctSessionId * varchar(32)
AcctUniqueId * varchar(32)
UserName * varchar(64)
Groupname varchar(64)
Realm varchar(64)
NASIPAddress * varchar(15)
NASPortId varchar(15)
NASPortType varchar(32)
AcctStartTIme * datetime
AcctStopTime * datetime
AcctSessionTime int(12)
AcctAuthentic varchar(32)
ConnectInfo_start varchar(50)
ConnectInfo_stop varchar(50)
AcctInputOctets bigint(12)
AcctOutputOctets bigint(12)
CalledStationId varchar(50)
CallingStationId varchar(50)
AcctTerminateCause varchar(32)
ServiceType varchar(32)
FramedProtocol varchar(32)
FramedIPAddress * varchar(15)
AcctStartDelay int(12)
AcctStopDelay int(12)
5. radcheck
id int(11)
UserName * varchar(64)
Attribute varchar(64)
op char(2)
Value varchar(253)
6. radgroucheck
id int(11)
GroupName * varchar(64)
Attribute varchar(32)
op char(2)
Value varchar(253)
9. radreply
id int(11)
UserName * varchar(64)
Attribute varchar(32)
op char(2)
Value varchar(253)
12. userinfo
7. radgroupreply
id int(10)
UserName * varchar(30)
Name varchar(200)
Mail varchar(200)
Department * varchar(200)
WorkPhone varchar(200)
HomPhone varchar(200)
Mobile varchar(200)
id int(11)
GroupName * varchar(64)
Attribute varchar(32)
op char(2)
Value varchar(253)
10. totacct
TotAcctld bigint(21)
UserName * varchar(64)
AcctDate * date
ConnNum bigint(12)
ConnTotDuration bigint(12)
ConnMaxDuration bigint(12)
ConnMinDuration bigint(12)
InputOctets bigint(12)
OutputOctets bigint(12)
NASIPAddress * varchar(15)
3. nas
11. radusergroup
UserName * varchar(64)
GroupName varchar(64)
Priority int(11)
* Dans les versions prcdentes, la table radusergroup s'appelait usergroup et le champs groupname de la table raddacct n'existait pas.
8. radpostauth
id int(11)
user varchar(64)
pass varchar(64)
reply varchar(32)
date timestamp(14)
id int(10)
nasname * varchar(128)
shortname varchar(32)
type varchar(30)
ports int(5)
secret varchar(60)
community varchar(50)
description varchar(200)
5 - Fonction filtrage
Cette fonction est remplie plusieurs niveaux par le portail. Plusieurs couches logicielles ont t mises en
oeuvre.
ALCASAR
11/17
Pour forcer les usagers passer par le service DNS du portail, le parefeu effectue une redirection de port 53 vers
l'@IP locale. Cet artifice permet de couper court aux ventuels tunnels DNS (sur le port 53 uniquement).
Remarque : sans session ouverte sur le portail, les seuls DNS interrogs (par le biais du serveur lui mme) reste
ceux qui ont t paramtrs dans le fichier /etc/dnsmasq.d/alcasar.conf.
ALCASAR
12/17
proxy 'parent'.
La bibliothque LibClamav est directement intgr dans havp.
Le script alcasar-havp.sh est appel par l'interface de gestion pour activer/dsactiver l'antivirus.
D'autres antivirus peuvent tre associs au moteur HAVP. Des configurations sont disponibles dans le fichier
principal /etc/havp/havp.conf
key_all
key_admin
key_manager
key_backup
Documentation technique
ALCASAR
13/17
8.2 - Watchdog
Ce script ( alcasar-watchdog.sh ) est lanc toute les 3 minutes par le Daemon cron . Il permet de couvrir les
fonctions suivantes :
viter les oublis de dconnexion lis aux pannes (rseau ou quipement de consultation) ;
limiter le risque li l'usurpation d'adresse IP et d'adresse MAC sur le rseau de consultation (pirate
interne) ;
modifier la page WEB prsente aux navigateurs en cas de problmes de connectivit dtects sur le
rseau local (lien ethernet dsactiv sur eth0 ou routeur de site injoignable).
8.3 - Statistiques
Les statistiques d'usages et de navigation ne comporte pas d'lements permettant de lier les contenus aux
usagers. Cela permet de protger la vie prive des usagers conformment aux prconisations de la CNIL.
en mode Off : le portail est en mode normal. Tous les services ncessaires sont activs.
ALCASAR
14/17
/etc/crond.d/export_log.
9 - Mises jour
9.1 - Mise jour du systme
Alcasar-dist-update.sh
Migration du portail
Rcuprer l'archive sur le site alcasar.info ou sur le site de l'addulact.net.
Suivre le fichier et la documentation d'installation.
En rsum, une fois dsarchiv l'archive, lancer le script alcasar.sh install pour lancer une migration systme et
du portail.
Documentation technique
ALCASAR
15/17
10 - Annexes
Ce chapitre reprend les fichiers de configuration spcifiques ALCASAR.
10.1 - Coova-chilli
Les fichiers se situent sous /etc/ , /etc/chilli et /usr/local/etc .
10.2 - Freeradius
Les fichiers du dmon radius se situent sous /etc/raddb.
10.3 - Dnsmasq
10.4 - Parefeu
10.5 - Dansguardian
Les fichiers de DansGuardian se situent sous /etc/dansguardian.
10.6 - Squid
Les fichiers de Squid se situent sous /etc/squid. Hormis le fichier principal, tous les autres sont utiliss par
Documentation technique
ALCASAR
16/17
dfaut.
10.7 - Ulogd
Le dmon ulogd centralise les logs du parefeu (dissocis des logs 'messages') ; tous les journaux d'vnements
sont grs en mode texte.
HAVP :
Fichier de configuration du moteur antivirus : havp.config
Clamav
configuration du dmon Clamav : clamd.conf ; la priodicit de mise jour des signatures est
paramtre par dfaut 12 fois /jour).
exceptions des mises jour de paquets : skip.list ; permet d'exclure des mises jours certains paquets
pouvant ventuellement troubler le fonctionnement du portail.
Documentation technique
ALCASAR
17/17