Alcasar-2 6 1-Technique
Alcasar-2 6 1-Technique
Alcasar-2 6 1-Technique
Documentation technique
Projet : Scurisation des accs Internet Auteur : rexy and 3abtux with helps by alcasar team
Objet : Documentation technique du projet Version : 2.6.1
Mots cls : Portail captif, captive portal, coova, chilli Date : Aot 2012
Table des matires
1 - Rappel de l'architecture......................................................................................................................................3
2 - Choix des constituants.......................................................................................................................................3
2.1 - La passerelle d'interception........................................................................................................................3
2.2 - Les autres constituants................................................................................................................................3
3 - Schmas de principe :.........................................................................................................................................4
4 - Fonction interception / authentification ........................................................................................................7
4.1 - la passerelle coova-chilli .......................................................................................................................7
4.1.1 - Fonctionnement de l'interception (capture)........................................................................................7
4.1.2 - Exception l'authentification.............................................................................................................8
4.2 - Le serveur FreeRadius................................................................................................................................9
4.3 - Base de donnes des usagers......................................................................................................................9
4.3.1 - Accs graphique la base.................................................................................................................11
4.3.2 - Accs console...................................................................................................................................11
4.4 - Serveur A.D./LDAP externe.....................................................................................................................11
5 - Fonction traabilit et imputabilit .............................................................................................................12
5.1 - Journalisation principale...........................................................................................................................12
5.2 - journalisation accessoire...........................................................................................................................12
6 - Fonction filtrage .........................................................................................................................................12
6.1 - Filtrage Rseau.........................................................................................................................................12
6.2 - Filtrage de domaines et d'URLs................................................................................................................13
6.3 - Antivirus WEB.........................................................................................................................................14
7 - Fonction Interface de gestion ......................................................................................................................14
8 - Fonction modules complmentaires ...........................................................................................................14
8.1 - Import de comptes Fichier mots de passe..............................................................................................14
8.2 - Watchdog..................................................................................................................................................14
8.3 - Statistiques................................................................................................................................................15
8.4 - Contournement (by-pass).........................................................................................................................15
8.5 - Re-Horodatage des fichiers journaux ......................................................................................................15
8.6 - Module de sauvegarde..............................................................................................................................15
8.6.1 - Sauvegarde du systme complet.......................................................................................................15
8.6.2 - Sauvegarde des journaux d'vnements............................................................................................15
8.6.3 - sauvegarde de la base de donnes.....................................................................................................16
9 - Annexes............................................................................................................................................................16
9.1 - Coova-chilli..............................................................................................................................................16
9.2 - Freeradius.................................................................................................................................................16
9.3 - Dnsmasq...................................................................................................................................................16
9.4 - Parefeu......................................................................................................................................................16
9.5 - Dansguardian............................................................................................................................................17
9.6 - Squid.........................................................................................................................................................17
9.7 - Ulogd........................................................................................................................................................17
9.8 - HAVP + Clamav......................................................................................................................................17
9.9 - Distribution Mandriva et ses dpts.........................................................................................................17
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 (http://coova.org/CoovaChilli). Avant chaque nouvelle version d'ALCASAR,
Coova-chilli est rcupr sous forme d'archive compresse. Il est compil et empaquet (RPM) spcifiquement
pour tre intgr ALCASAR.
2.2 - Les autres constituants
Pour couvrir l'ensemble des besoins d'Alcasar, les produits libres suivants ont t ajouts au coeur. Leur choix
est principalement dict par leur niveau de scurit et leur reconnaissance.
3 - Schmas de principe :
Alcasar peut tre dcompos en cinq fonctions qui sont dtailles dans la suite du document :
fonction interception / authentification ralise par Coova-chilli, DNSMasq, Apache et le couple
Freeradius / Mysql voire LDAP pour l'authentification ;
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 interface de gestion ralise en PHP et PERL et servie par Apache ;
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.)
lux
Apache
sf
tre
tion 53
Au
ica Serveur WEB
ntif filtr
s DNSmasq
th e S non
Au DN
3990 Flux Serveurs DNS
Interception 2 Administration SSH
54
Flux Internet
Coova-chilli 1 Flux DNS filtrs DNSmasq 3 Internet
Usagers Interception 3779
+
Blacklist
Serveur DHCP
de domaines
Cache DNS
Ulogd
Discrimination des logs
3
Flux w
COA
Blacklist
d'URLs 8090
e
HAVP
b
Journal
Proxy antivirus Journal
1812 2 tentatives accs
accs ssh
1813 depuis Internet
389
Serveur LDAP Annuaire 8080
3128
ou A.D externe externe Freeradius libclamav
Dansguardian Squid
Antivirus
Serveur A.A.A Journal
Proxy de filtrage Proxy cache Flux de sortie
Authentication
d'URL et de contenu
Authorization
Accounting Base @IP_src + @MAC_src +
port_src
antivirale + @IP_dest + port_dest +
Mise jour toutes date + heure
les 2 heures Commutateurs
de filtrage
3306 PAREFEU (NETFILTER)
Journal des Cache Web 1 : - protection en entre (anti-contournement) 1 Protocoles rseau
Base des usagers URLs et noms de
Mysql Consultations - redirection des flux (web, dns, autres) 2 domaine
et WEB - antispoofing Antivirus de flux
journal des connexions 3 WEB
Serveur de base de @IP dest + URL 2 : - filtrage de protocoles
donnes Nom-usager + @MAC_src dest + date + heure
+ @IP_src + date + heure
3 : - masquage d'adresse (dnat)
- journalisation des flux
- antispoofing et antiflooding
ALCASAR Schma des flux rseau internes
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 2.6.1 6/17
4 - Fonction interception / authentification
Un des objectifs d'Alcasar est d'tre le plus universel possible. Ainsi, la mthode d'interception et
d'authentification choisie s'appuie sur l' UAM (Universal Access Method). Cette mthode n'utilise que des
protocoles standards ne ncessitant qu'un navigateur WEB pour authentifier un usager situ sur un quipement
de consultation. Parmi les autres mthodes, on peut citer celle exploitant des modules clients installer sur les
quipements de consultation (mthode exploite par le parefeu authentifiant NuFW par exemple) ou celle
reposant sur des protocoles rseau ddis (802.1X par exemple).
La fonction interception / authentification s'appuie sur la passerelle d'interception Coova-chilli
(processus chilli ), le serveur WEB apache (processus httpd ), le serveur d'authentification
Freeradius (processus radiusd ) et le systme de gestion de bases de donnes Mysql (processus
mysqlmanager et mysqld ).
4.1 - la passerelle coova-chilli
Elle est lance via son script de dmarrage (/etc/rc.d/init.d/chilli start) qui a t lgrement adapt par le script
d'installation ( alcasar.sh ). Ce script utilise le fichier de configuration ( /etc/chilli.conf ).. Le processus chilli
est alors lanc en mode daemon . Ce dernier cre l'interface virtuelle tun0 1 lie en point point
l'interface physique connecte au rseau de consultation (eth1). Cela lui permet de grer sa propre table de
rsolution ARP en espace utilisateur. Une particularit dans cette gestion consiste verrouiller les couples
(@MAC , @IP) rencontrs sur le rseau de consultation. Un empoisonnement du cache ARP par le rseau est
alors impossible ( cache poisoning ). Dans certains cas, ce comportement peut tre bloquant (quipement re-
paramtr aprs avoir dj gnr des trames IP vers ALCASAR). La commande chilli-query list permet
d'afficher et de contrler le cache ARP de chilli . Cette commande est utilise par l'interface de gestion
(menu ACTIVIT ) pour supprimer les mauvaises associations @IP/@MAC. Complmentaire cette
fonction d'anti- cache poisoning intgre chilli , Alcasar utilise un module spcifique de scurit
(alcasar-watchdog.sh) permettant d'viter l'usurpation d'adresses MAC et d'adresses IP des stations de
consultation connectes sur le rseau (cf. fonctions de scurit).
4.1.1 - Fonctionnement de l'interception (capture)
Lorsquun quipement de consultation tente de se connecter sur une URL Internet (www.free.fr dans l'exemple
qui suit) :
[trame 1] La requte DNS de l'quipement est rcupre par le serveur DNS d'ALCASAR (dnsmasq).
Les tentatives de connexion vers d'autres serveurs DNS sont bloques par le parefeu interne. Cela
permet de prvenir le contournement du DNS d'ALCASAR ainsi que les tunnels DNS.
DNSMasq rsout le domaine localement s'il est dans sa base (cf. fonctions de filtrage), sinon il transfre
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). Ces interfaces
autorisent 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 ).
Intercept.php HTTPS redirection vers http://@IP_alcasar:3990 + utilisateur + mot de passe chiffr + URL php
module Javascript
- formulaire d'authentification HTTP + utilisateur + mot de passe chiffr + URL
- fentre connect
HTTP redirection vers https://@IP_alcasar + rsultat authentif + URL 3990 coova radius
- fentre chec de connexion
- redirection vers URL demande
HTTPS demande intercept.php + rsultat authentif + URL
HTTPS intercept.php + rsultat authentif + URL 443 apache
HTTP URL vers Internet (idem 1re trame) 80 ou tout
autre protocole coova Internet
2 - chilli coute sur un port dfini par la primitive hs_uamport du fichier /etc/chilli/config (3990 par dfaut). Le format des
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.).
Lgende 4. radacct
En rouge : Index Cl Primaire radacctld bigint(21)
En Italique * : Cl secondaire acctsessionid * varchar(32)
Table cre par FreeRadiusWEB 2. mtotacct acctuniqueid * varchar(32)
Table cre par FreeRadiusSQL MtotAcctld bigint(21) username * varchar(64) 5. radcheck
Table inexploite par ALCASAR UserName * varchar(64) groupname varchar(64) id int(11)
AcctDate * date realm varchar(64 username * varchar(64)
ConnNum bigint(12) nasipaddress * varchar(15) attribute varchar(64)
ConnTotDuration bigint(12) nasportid varchar(15) op char(2)
ConnMaxDuration bigint(12) nasporttype varchar(32) value varchar(253)
ConnMinDuration bigint(12) acctstoptime * datetime 6. radgroucheck
InputOctets bigint(12) acctsessiontime int(12) id int(11)
OutputOctets bigint(12) acctauthentic varchar(32) groupname * varchar(64)
1. badusers NASIPAddress * varchar(15) connectinfo_start varchar(50) attribute varchar(32)
id int(10) connectinfo_stop varchar(50) op char(2)
UserName *varchar(30) acctinputoctets bigint(12) value varchar(253)
Date * datetime acctoutputoctets bigint(12)
Reason varchar(200) calledstationid varchar(50)
Admin varchar(30) accterminatecause varchar(32)
servicetype varchar(32)
framedprotocol varchar(32)
framedipaddress * varchar(15) 9. radreply
acctstartdelay int(12) id int(11)
acctstspdelay int(12) username * varchar(64)
xascendsessionsvrkey varxchar(12) attribute varchar(32)
op char(2)
value varchar(253)
12. userinfo
id int(10) 7. radgroupreply
UserName * varchar(64) id int(11)
Name varchar(200) groupname * varchar(64)
Mail varchar(200) attribute varchar(32)
Department * varchar(200) op char(2)
WorkPhone varchar(200) value varchar(253)
HomPhone varchar(200)
Mobile varchar(200)
10. totacct
TotAcctld bigint(21) 3. nas
UserName * varchar(64) 8. radpostauth id int(10)
AcctDate * date 11. radusergroup id int(11) nasname * varchar(128)
ConnNum bigint(12) username * varchar(64) user varchar(64) shortname varchar(32)
ConnTotDuration bigint(12) groupname varchar(64) pass varchar(64) type varchar(30)
ConnMaxDuration bigint(12) priority int(11) reply varchar(32) ports int(5)
ConnMinDuration bigint(12) date timestamp(14) secret varchar(60)
InputOctets bigint(12) community varchar(50)
OutputOctets bigint(12) description varchar(200)
NASIPAddress * varchar(15)
* dans les version < 2.0 : la table radusergroup s'appelait usergroup et le champs groupname de la table raddacct n'existait pas
* partir de la version 2.6, le champs 'username' de la table 'userinfo' change de type pour tre compatible avec les autres tables (bascule de
varchar(30) en varchar(64))
4.3.1 - Accs graphique la base
Afin de pouvoir afficher de manire conviviale et pdagogique le
contenu de la base usager, vous pouvez utiliser l'interface WEB
phpmyadmin .
installez phpmyadmin : urpmi phpmyadmin
modifiez le fichier /etc/httpd/conf/webapps.d/phpmyadmin.conf
afin d'autoriser votre station de consultation y accder
(allow from votre_@IP) ;
connectez-vous la base partir de votre station de consultation l'URL :
https://@ip_alcasar/phpmyadmin
rcuprez le nom et le mot de passe du compte d'administration de la base dans le
fichier /root/ALCASAR-passwords.txt
identifiez-vous sur le SGBD et choisissez la base radius
Vous pouvez maintenant accder aux contenus des tables.
basedn Base de recherche des usagers authentifier Voir l'exemple ci-dessous dans le cas d'Active Directory.
Mot de passe associ au compte avec des droits de Vide = connexion anonyme (LDAP).
password
lecture sur l'annuaire ldap. Obligatoire pour Active Directory.
Par rapport l'exemple d'annuaire prsent dans le document d'exploitation, les paramtres de ce fichiers
seraient les suivants :
basedn = "ou=User,ou=Utilisateur,ou=SITE_I2SC,dc=i2sc,dc=local"
filter = ''(samAccountName=%{Stripped-User-Name:-%{User-Name}})''
identity= ''cn=rldap,ou=Admin,ou=Utilisateur,ou=SITE_ISC,dc=i2sc,dc=local''
password = ''*******''
Il est possible de tester la liaison LDAP vers le serveur d'annuaire partir du poste ALCASAR aprs avoir
install le paquetage ldap-tools . La commande ldapsearch -vWx -h @ip_A.D -b
"ou=User,ou=Utilisateur,ou=SITE_i2sc,dc=i2sc,dc=local" -D "[email protected]" permet de lister l'ensemble
des usagers contenu dans l'O.U. User (-v : verbeux, -b : la base recherche, -D : le dn de l'usager autoris
requter la base, -W : demande le mot de passe de manire interactive, -x : exploite l'authentification simple
plutt que SASL).
6 - Fonction filtrage
6.1 - Filtrage Rseau
Cette couche est gre l'aide du parefeu intgr (NetFilter).
Le portail est configur en mode 'Bastion' vis--vis du monde Internet et canalise les flux en provenance du
rseau de consultation. Lors de l'installation, ce fichier a t excut et permet de gnrer le fichier
/etc/sysconfig/iptables ; chaque dmarrage du serveur, ces rgles sauvegardes sont appliques.
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 : les seuls serveurs DNS interrogs par ALCASAR restent ceux qui ont t renseigns lors de
l'installation et qui sont dfinis dans le fichier /etc/dnsmasq.conf (primitive 'server').
8.2 - Watchdog
Ce script ( alcasar-watchdog.sh ) est lanc toutes 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
8.3 - Statistiques
Les statistiques d'usages et de navigation ne comportent pas d'lments permettant de lier les contenus aux
usagers. Cela permet de protger la vie prive des usagers conformment aux prconisations de la CNIL.
9 - Annexes
Ce chapitre reprend les fichiers de configuration spcifiques ALCASAR.
9.1 - Coova-chilli
Les fichiers se situent sous /etc/ , /etc/chilli et /usr/local/etc .
Fichier principal : chilli.conf (sous /etc)
Exceptions Domaines : alcasar-uamdomain (sous /usr/local/etc)
Exceptions URLs : alcasar-uamallowed (sous /usr/local/etc)
Exceptions d'authenfication par MAC Adresses : alcasar-macallowed (sous /usr/local/etc)
L'association dynamique d'@IP statiques s'effectue par le biais du fichier : alcasar-ethers (sous /usr/local/etc)
9.2 - Freeradius
Les fichiers du dmon radius se situent sous /etc/raddb.
Fichier principal : radiusd.conf
Fichier de connexion BDD : sql.conf
Fichier clients autoriss requter le service radiusd : clients.conf
Fichier ddi : alcasar (sous /etc/raddb/sites-available avec un lien symbolique qui lie les sites-enable )
9.3 - Dnsmasq
En fonctionnement normal, dnsmasq ne fournit que les services lis au DNS (filtrage de domaine DNS-
blackhole, transfert de requte FORWARD DNS et cache CACHE-DNS ). En mode secours (bypass), il
fournit aussi le service DHCP (coova-chilli s'occupe de ce service en mode normal).
Fichier principal : /etc/dnsmasq.conf
Filtrage de domaines : alcasar-dnsfilter-enabled (sous /usr/local/etc ). Il active le filtrage des classes de
domaines.
Pour intgrer un Active Directory dans l'architecture, il est ncessaire de modifier le fichier de
dnsmasq /etc/sysconfig/dnsmasq ; en effet un bug empche la prise en compte d'un redirecteur pour un
domaine donn dans le fichier de configuration principal ( cf. Doc Exploitation 8.5)
9.4 - Parefeu
Fichier principal du parefeu d'Acasar : alcasar-iptables.sh (sous /usr/local/bin)
Rgles personnalises du parefeu : alcasar-iptables-local.sh (sous /usr/local/etc)
Fichier de filtrage Rseau (associ alcasar-nf.sh) : alcasar-iptables-exception
Activer/dsactiver le filtrage web : alcasar-bl.sh ( sous /usr/local/bin)
Fichier listant les classes de filtrage (associ alcasar-nf.sh) : alcasar-bl-categories-enabled ; utilise par le
fichier alcasar-bl.sh pour le filtrage dnsmasq et dansGuardian.
Fichier contenant la liste complte des domaines par classe issue de la liste noire de Toulouse : alcasar-
dnsfilter-available (sous /usr/local/etc/)
9.5 - Dansguardian
Les fichiers de DansGuardian se situent sous /etc/dansguardian.
Fichier principal de configuration : dansguardian.conf
9.7 - Ulogd
Le dmon ulogd centralise les logs du parefeu (dissocis des logs 'messages') ; tous les journaux d'vnements
sont grs en mode texte.
Fichier de configuration : ulogd.conf
Fichier concernant les flux Ssh extrieur en provenance de eth0 : ulogd-ssh.conf
Fichier concernant les flux bloqus en provenance du rseau extrieur : ulogd-ext-access.conf
La rotation des logs s'effectue hebdomadairement pour httpd, squid et tracability
libClamav
la priodicit de mise jour des signatures est paramtre par dfaut 12 fois /jour).