Vous êtes sur la page 1sur 16

REPUBLIQUE DU SENEGAL U N PEUPLE-UN BUT-UNE FOI Universit Dakar Bourguiba Gnie Informatique Master2

EXPOSE SUR LE PORTAIL CAPTIF (NOTALWEG) Exposants: Barry Ibrahima Seck Hawa Amadou

QU'EST-CE QU'UN PORTAIL CAPTIF


Un portail captif est une structure permettant un accs rapide et scuris Internet. Lorsqu'un utilisateur cherche accder Internet pour la premire fois, le portail capte sa demande de connexion grce un routage interne et lui propose de s'identifier afin de pouvoir recevoir son accs. Cette demande d'authentification se fait via une page web stocke localement sur le portail captif grce au serveur HTTP. Ceci permet tout ordinateur quip d'un Web browser ou navigateur web et d'un accs Wifi de se voir proposer un accs Internet. La connexion au serveur est scurise par SSL grce au protocole HTTPS ce qui garantit l'inviolabilit de la transaction. Les identifiants de connexion (Login et Mot de passe) sont stocks dans une base de donnes qui est hberge localement ou sur un serveur distant. Une fois l'utilisateur authentifi, les rgles de firewall le concernant sont modifies et celui-ci ce voir autoris utiliser son accs Internet pour une dure fixe par l'administrateur. A la fin de la dure fixe, l'utilisateur se verra redemande ses identifiants de connexions afin d'ouvrir une nouvelle session.

Fonctionnement gnrique d'un portail captif

Le client se connecte au rseau par l'intermdiaire d'une connexion filaire ou au point d'accs pour du wifi. Ensuite un serveur DHCP lui fournit une adresse IP ainsi que les paramtres de la configuration du rseau. A ce moment l, le client juste accs au rseau entre lui et la passerelle, cette dernire lui interdisant, pour l'instant, l'accs au reste du rseau. Lorsque le client va effectuer sa premire requte de type web en HTTP ou HTTPS, la passerelle le redirige vers une page web d'authentification qui lui permet de s'authentifier grce un login et un mot de passe. Cette page est crypte l'aide du protocole SSL pour scuriser le transfert du login et du mot de passe. Le systme d'authentification va alors contacter une base de donnes contenant la liste des utilisateurs autoriss accder au rseau. Enfin le systme d'authentification indique, plus ou moins directement selon les portails captif, la passerelle que le couple MAC/IP du client est authentifi sur le rseau. Finalement le client est redirig vers la page Web qu'il a demand initialement; le rseau derrire la passerelle lui est dornavant accessible. Le portail captif, grce divers mcanismes comme une fentre pop-up sur le client rafrachie intervalles rguliers ou des requtes Ping vers le client, est en mesure de savoir si l'utilisateur est toujours connect au rseau. Au bout d'un dlai d'absence sur le rseau, le portail captif va couper l'accs cet utilisateur. La diffrence entre un simple Firewall et un portail captif rside dans le fait que le portail captif ne refuse pas une connexion mais la redirige plutt vers une page d'authentification

Principe de fonctionnement de No Talweg

Figure 14 1. Le client est connect au Wifi/Rseau, il a donc rcupr une adresse IP via le serveur DHCP et effectue sa premire requte : www.google.fr. 2. La requte arrive sur le serveur et comme toutes les requtes entrantes elle est envoye NoTalweg. 3. NoTalweg reoit cette requte elle n'est pas authentifie, il ne marque donc pas le paquet : 0. 4. Comme il s'agit d'un paquet Http non authentifi (0) celui-ci est drout par le serveur(le noyau) vers le serveur Web de NoTalweg afin de procder une authentification. NoTalweg envoie une rponse de redirection http pour dire au client de venir s'authentifier sur lui. Il faut bien comprendre que le client pour l'instant a demand www.google.fr, nous rpondons donc la place de ce site en disant attention nous sommes maintenant joignable ici (la page d'authentification, la vraie adresse de NoTalweg) 5. Le client se connecte et procde son identification suivant le mode choisi (Ldap, radius, cas, etc. ) 6. NoTalweg renvoie une page qui devra reste ouverte pendant la connexion, elle contient un programme qui dira rgulirement NoTalweg que l'utilisateur est connect. 7. Le client met une nouvelle requte : www.google.fr, pour changer 8. La requte arrive sur le serveur et comme toutes les requtes entrantes est envoye NoTalweg. 9. NoTalweg reoit la requte et comme elle est authentifie, il marque la connexion, la logue et assure son suivi. 10. La connexion marque est autorise, la sortie est autorise.

Pr-requis
Pour installer NoTalweg, vous devez disposer d'une machine avec deux cartes rseaux. Avoir compris globalement son fonctionnement. Pour notre configuration nous allons prendre ce scnario :

eth0, interface publique. eth1, interface priv avec 172.16.0.0/16 comme rseau. NoTalweg sera en coute sur 172.16.1.1:8181 en HTTPS. Le domaine associ au rseau sera youssef.mr (sera utile dans le cas de l'utilisation de Talweg)

Installation des paquets


# vi /etc/apt/sources.list

Insrer :
## talweg package repository deb http://talweg.univ-metz.fr/debian/ lenny main deb-src http://talweg.univ-metz.fr/debian/ lenny main deb http://ftp.fr.debian.org/debian/ lenny main deb http://security.debian.org/ lenny/updates main #download talweg deb http://talweg.univ-metz.fr/debian/ lenny main

# aptitude update # aptitude install notalweg

Configuration du rseau
# vi /etc/network/interfaces

auto eth1 iface eth1 inet static address 172.16.1.1 netmask 255.255.0.0 network 172.16.0.0 broadcast 172.16.255.254

Configuration du DHCP
#aptitude install dhcp3-server # vi /etc/dhcp3/dhcpd.conf

ddns-updates off; option domain-name "youssef.mr"; option domain-name-servers 172.16.1.1; default-lease-time 600; max-lease-time 7200; authoritative; subnet 172.16.0.0 netmask 255.255.0.0 { option routers 172.16.1.1; option broadcast-address 172.16.255.255; range 172.16.1.5 172.16.255.254; }

# /etc/init.d/dhcp3-server restart

Configuration du serveur de nom


# aptitude install bind9

Vous devez spcifier l'adresse de votre serveurs DNS dans forwarders.


# vi /etc/bind/named.conf.options options { listen-on {172.16.1.1;}; forwarders { XX.XX.XX.XX; }; auth-nxdomain no; };

Gnration des certificats pour apache


Ce qui suit gnre les certificats SSL ncessaires. Ce sont des certificats autosigns.
# mkdir /etc/apache2/ssl # cd /etc/apache2/ssl/ # openssl genrsa -out talweg.key 1024

IMPORTANT : ici il faut remplir les informations vous correspondants mais surtout stipuler : Common Name (eg, YOUR name) : *.youssef.mr
# openssl req -new -key talweg.key -out talweg.csr

Cration du certificat auto-sign


# openssl x509 -req -days 365 -in talweg.csr -signkey talweg.key -out talweg.crt

Configuration apache
Activation de mod_rewrite & mod_ssl & mod_mono
a2enmod rewrite ssl mod_mono # vi /etc/apache2/sites-available/notalweg.conf

Listen 172.16.1.1:8080 <VirtualHost 172.16.1.1:8080> ServerName viba.youssef.mr RewriteEngine On RewriteRule (.*) https://172.16.1.1:8181/ </VirtualHost> Listen 172.16.1.1:8181 <VirtualHost 172.16.1.1:8181> ServerName viba.youssef.mr MonoAutoApplication disabled MonoRunXSP False MonoUnixSocket /tmp/notalweg-socket SSLEngine On SSLCertificateFile /etc/apache2/ssl/talweg.crt SSLCertificateKeyFile /etc/apache2/ssl/talweg.key SSLVerifyClient none SSLProxyEngine off Alias / /usr/share/notalweg/ ErrorLog /var/log/apache2/notalweg-error.log <Location /> SetHandler mono SSLRequireSSL Allow from all </Location> </VirtualHost>

# /etc/init.d/apache2 restart

Configuration de NoTalweg
# vi /etc/notalweg/notalweg.conf Il faut choisir son authentification : cas.aspx (Central Authentication Service), radius.aspx, ldap.aspx, mysql.aspx, voir les fichiers dans le rpertoire login et remplir loginUrl

<forms name=".notalweg" loginUrl="~/login/config.aspx" protection="All" timeout="3000" path="/" > <credentials passwordFormat="Clear"> <user name="ablaye" password="diallo" /> <user name="karim" password="passer" /> <user name="barry" password="barry" /> </credentials> </forms> </authentication> <authorization> <deny users="?" /> </authorization>

Dans la fin du fichier, il y a quelques valeurs changer/complter comme le ou les noms des admins, etc

<appSettings file="login/login.config"> <!-- coma separated list of blacklist users --> <add key="UsersBlacklist" value="" /> <add key="ServerUrl" value="https://172.16.1.1:8181/" /> <!-- user quota in bytes (not functionnal) --> <add key="UserQuota" value="100000000" /> <!-- the nfqueue number --> <add key="queue-num" value="0" /> <!-- Message --> <add key="blacklist_msg" value="Sorry, you're account have been locked" /> <add key="update_error_msg" value="An error occured during authentication process, please restart your browser" /> <!-- {0}:upbytes {1}:downbytes {2}:duration --> <add key="update_msg" value="Up : {0}, Down: {1}, Time: {2}" /> <add key="over_quota_msg" value="Sorry you exceed your quota" /> </appSettings> <location path="admin/Default.aspx"> <system.web> <authorization> <allow users="karim" /> <deny users="*" /> </authorization> </system.web> </location> <location path="files"> <system.web> <authorization> <allow users="*" /> </authorization>

Les rgles de firewall


# vi /etc/init.d/notalweg-rules #!/bin/sh IPT="/sbin/iptables" #Ip of notalweg gateway IP_PRIVATE="172.16.1.1" #Notalweg private interface NTINT="eth1" test -f $IPT || exit 0 case "$1" in start) echo -n "Loading firewall's rules: " echo 1 > /proc/sys/net/ipv4/ip_forward # Flush $IPT -t $IPT -t $IPT -t table nat -F mangle -F filter -F

$IPT -t mangle -A PREROUTING -i $NTINT -j CONNMARK --restore-mark $IPT -t mangle -A PREROUTING -p TCP -i $NTINT -d $IP_PRIVATE -j ACCEPT $IPT -t mangle -A PREROUTING -p TCP -i $NTINT -m state --state NEW -j QUEUE

$IPT -t nat -A PREROUTING -p TCP -i $NTINT -j CONNMARK --save-mark # MARK 0xFFFFFFFF = Openacls $IPT -t nat -A PREROUTING -p TCP -i $NTINT -m mark --mark 0xFFFFFFFF -j ACCEPT # MARK 0xFFFFFFFE = use http-to-https redirection $IPT -t nat -A PREROUTING -p TCP -i $NTINT -m mark --mark 0xFFFFFFFE -j DNAT -to-destination $IP_PRIVATE # MARK 0x0 = unauthenticated - 80 is redirected to authentication page $IPT -t nat -A PREROUTING -p TCP --dport 80 -i $NTINT -m mark --mark 0 -j DNAT -to-destination $IP_PRIVATE:8080 # MARK 0x1 blacklistacls $IPT -t filter -A FORWARD -m mark --mark 0x1 -j REJECT $IPT -t nat -A POSTROUTING -m mark ! --mark 0 -j MASQUERADE echo "Done." ;; stop) echo -n "Flushing firewall's rules: " echo 0 > /proc/sys/net/ipv4/ip_forward ########################### # FLUSH TABLES ########################### $IPT -t filter -F $IPT -t nat -F $IPT -t mangle -F echo "Done." ;;

status) # List tables echo echo "---------- FILTER TABLE -----------" echo $IPT -t filter -L -v echo echo "---------NAT TABLE -----------" echo $IPT -t nat -L -v echo echo "---------MANGLE TABLE -----------" echo $IPT -t mangle -L -v echo ;; restart|force-reload) $0 stop $0 start echo "Done." ;; *) echo "Usage: /etc/init.d/firewall {start|stop|status|restart}" exit 1 ;; esac

exit 0

Il ne faut oublier de crer le lien symbolique : # ln /etc/apache2/sites-available/notalweg.conf /etc/apache2/sites-enabled/notalweg.conf # # # # chmod +x /etc/init.d/notalweg-rules update-rc.d notalweg-rules start 98 2 3 4 5 . stop 98 0 1 6 . /etc/init.d/notalweg-rules start /etc/init.d/notalweg restart

Connexion interface d'admin


A partir du serveur on se connecte : https://10.13.0.1:8181/admin/

Voir le certificat :

Ensuite Accepter

ET vous voici connect en mode administrateur pour superviser et grer votre portail captif

Test de bon fonctionnement


On se connecte sur eth1 et on ouvre un navigateur. On lance une page www.google.com

Automatiquement on redirige vers la page dauthentification :

L on nous propose de continuer avec le certificat non authentifi

On accepte le certificat

On saisit notre login et mot de passe

Et nous voici authentifi

Jouvre un autre onglet pour lancer www.google.com

NB :Ce TP a t ralis en virtuelle avec Vmare 3.1.3 build-324285 avec une machine linux Debian 5.0 et une machine cliente Windows xp Sp2. Et jai eu a tester la mme TP en physique et jai obtenu le mme rsultat. Ce document est ouvert tous les critiques et correctifs.

Contact : barryvieux9@hotmail.com