Vous êtes sur la page 1sur 13

Mise en place d'un portail captif :

Nous allons tout d'abord configur notre PfSense de sorte a que l'on puisse acceder internet
travers lui.

Ensuite nous y installerons notre portail captif combin notre proxy.

SHEMA DU RESEAU

Configuration de Pfsense :
Afin de simplifier la configuration, je fonctionnerai toujours de la mme manire pour accder
chacunes des modifications :
Tout d'abord l'onglet de la barre de menu principale > Puis l'une des catgories de cet onglet > puis
si il existe, l'onglet dans la page de cette catgorie > puis le sous-titre si besoin est (qui est toujours
sur fond rouge) de cet onglet

Avant toutes choses :

Pour arreter le Pfsense :


Diagnostics > Halt System
Yes

Pour le Reboot :

1/13
Diagnostics > Reboot
Yes
Configuration des interfaces LAN et WAN :

Tout d'abord vous pouvez rassigner une interface la carte reseau que vous voulez :
Interfaces > (assign) :
Il suffit de choisir quelle adresse MAC serra assigner a quelle interface (pour connaitre l'adresse
mac d'une carte reseau vous pouvez la voir sur la carte reseau en elle meme (physique) ou en
commande via shell)

Configuration de l'interface WAN qui pourra par la suite nous faire acceder internet :
Interfaces > WAN :
Enable : Cocher
Description : WAN
On met l'interface en statique car il nous faut une ip fixe afin de cre la route statique entre le
modem et le pfsense:
IPv4 Configuration Type : Static IPv4
IPv6 Configuration Type : None
Ipv4 address : 192.168.0.10 /24
La passerelle qui permet d'indiquer le modem:
IPv4 Upstream Gateway : GTORANGE - 192.168.0.1

L'ip par defaut du modem est soit 192.168.0.1 ou 192.168.1.1 cela depend des FAI.
add a new one :
Default gateway : Cocher
Gateway name : GTORANGE
Gateway IPv4 : 192.168.0.1
Description : Gateway modem ORANGE
Save Gateway
Block private networks : Uncheck
Block private network va bloquer les adresses ip local sur l'interface WAN ce qui est inutile dans
notre cas car on passe du WAN au modem via une adresse ip local.
Block bogon network : Uncheck
Save puis Apply changes

Configuration de l'interface LAN qui permet d'accder la configuration du pfsense mais


egalement a faire le lien avec tout les machines qui seront sur notre rseau :
Interfaces > LAN :
Enable : Cocher
Description : LAN
IPv4 Configuration Type : Static IPv4
Ipv6 Configuration Type : None
IPv4 address : 192.168.2.1 /24
IPv4 Upstream Gateway : None
On ne met pas de gateway car l'interface au dessus du LAN est le WAN mais comme celui ci est
connecter physiquement sur la meme carte mre, il ne faut pas la renseigne.

Save puis apply changes


Vous ne pouvez plus accdez a l'interface web de configuration car l'ip du pfsense a changer. La
nouvelle ip de connexion etant 192.168.2.1.

2/13
Comme le DHCP (ce qui permet de distribuer des adresse du sous reseau automatiquement) n'est
pas modifier et est donc rest en 192.168.1.1, il ne parviendra pas a distribuer l'adresse ip a notre
pc connecter au LAN, il nous faut donc configur manuellement notre ip voir Page "Problme de
connexion a l'interface admin".
Modification gnrale des paramtres du systme :

System > General Setup :


Hostname : pfSense
Domain : pref87.lan
Ces deux adresses sont l'une des adresses des servers DNS d'orange que j'ai retrouver sur leur
modem.
DNS servers : 80.10.246.132 GTORANGE - wan - 192.168.0.1
81.253.149.2 GTORANGE - wan - 192.168.0.1

Time zone : Europe/Paris


NTP timeserver : 0.pfsense.pool.ntp.org
Language : English (laissez l'interface en anglais car cela permet d'acceder aux catgories plus facilement)

Modification avance des paramtres du systme :

Activation du protocole de communication scuris qui permet de se connecter distance au


pfsense afin d'obtenir un shell ou ligne de commande :

System > Advanced > Admin Access :


WebGUI Login Autocomplete : Non cocher
(Si on l'active, cela va propos des anciens nom d'utilisateur lors de la saisie du nom d'utilisateur
ce qui n'est pas scuris)

Secure Shell Server : Cocher


SSH port : 22
Console menu : Cocher
Save

Bloquer tout le traffic IPv6 sur le Firewall car nous en avons pas besoin :

System > Advanced > Networking > Ipv6 Options :


Allow IPv6 : Dcocher
Save

Dsactiver les beep de demarrage et d'arrt du systme :

System > Advanced > Notifications > System Sounds :


Startup/Shutdown Sound : Cocher
Save

Pour avoir de meilleur performance lorsque l'on utilisera le systme de fichier ufs avec squid :
System > Advanced > System Tunables :
Editer vfs.read_max : value 128
Save

3/13
A ce stade vous devriez pouvoir accder a internet depuis votre pc.
Si oui poursuivez ce tutoriel, sinon trouvez la panne avant de poursuivre.

Ajout de rgle sur le Firewall :

Pour le WAN :
Firewall > Rules > WAN :

Action Protocole Source Port Destination Port Description


Pass IPv4 TCP LAN net * * *

add new rule :


Action : Pass
Disabled : Uncheck
Interface : WAN
TCP/IP Version : IPv4
Protocol : TCP
Source : Type : LAN net
Destination : Type : any
Destination port range : any
any
Save

Pour le LAN : Supprimer la rgle de base "Default allow LAN Ipv6 to any rule"

Firewall > Rules > LAN : Ajouter ces rgles :


Action Protocol Source Port Destination Port Description
Pass IPv4 TCP * * Lan address 22(SSH) SSH
Pass IPv4 TCP LAN net * * 80(HTTP) HTTP
Pass IPv4 TCP LAN net * * 443(HTTPS) HTTPS
Pass IPv4 TCP LAN net * * 3128 SQUID
Pass IPv4 TCP/UDP LAN net * * 53(DNS) DNS
Pass IPv4 ICMP LAN net * * * PING
Block IPv4 * * * * * Tout bloquer depuis le LAN

Pass IPv4 * LAN net * * * Default allow LAN to any


(disable) rule

Desactiver la rgle "Default allow LAN to any rule"


Pour suprimer la regle Anti-lockout il vous faut aller dans :
System > Advanced > Admin Access :
Anti-lock-out : Check
Cela va supprimer la regle par defaut du parefeu qui permet d'autoriser les gens a se connecter a
l'interface de configuration du Pfsense, c'est donc pour cela que nous avons cr les regles
prcdentes afin d'autoriser l'accs a l'interface avant d'effacer cette rgle.
Save

Vous devriez toujours avoir accs internet aprs ces modifications !


Si oui poursuivez ce tutoriel, sinon trouvez le problme avant de poursuivre.

4/13
Modification du serveur DHCP :

Services > DHCP Server > WAN :


Dcocher Enable DHCP server on WAN interface
Save

Services > DHCP Server > LAN :


Cocher Enable DHCP server on LAN interface
Range : 192.168.2.10 to 192.168.2.254
DNS servers : 192.168.2.1
Gateway : 192.168.2.1
Save

Ensuite repassez l'interface reseau de votre pc en automatique ( DNS galement)


Vrifiez via un ipconfig /all sur votre ordinateur que les adresses soient envoyes automatiquement
par le DHCP( IP et IP adresse du DNS). Vrifier que vous avez toujours accs a internet.

Configuration du DNS :

Services > DNS Resolver > General settings :


Enable : Cocher
network Interfaces : All
Outgoing Interfaces : WAN

Host Overrides :
Host Domain IP Description
fiberius pref 192.168.2.1 portail captif

Save

Nous avons configur le PfSense afin d'avoir un accs internet coupl un parefeux.
Maintenant il nous reste a mettre en place le portail captif avec un serveur proxy avec ses diffrents
outils de "supervision".

Ajout du portail captif :

Service > Captive Portal :

Add a new captiveportal :


Zone name : Fiberius
Description : Portail Captif Prefecture Fibre
Continue

Service > Captive Portal > Edit captiveportal > Captive portal(s)
Cocher Enable captive portal
Interfaces : LAN
Idle timeout : 30 minutes (temps d'inactivit de l'utilisateur avant qu'il soit dconnect)
Hard timeout : 180 minutes ( temps de connexion maximal de l'utilisateur avant dconnexion
automatique, l'utilisateur devra se r-authentifier)
Logout popup window : Cocher (cela va afficher une fentre popup de dconnexion l'utilisateur

5/13
lors de sa connexion au portail afin qu'il puisse se dconnecter quand il le souhaite, il faut
autoriser au navigateur la fentre popup en question sinon elle n'aparaitra pas)
Concurrent user logins : Cocher (Evite que l'on puisse se connecter avec le mme compte sur
plusieurs postes)
Authentication : Cocher Local User Manager / Vouchers
Cocher allow only user/groups ...

HTTPS login : Cocher Enable HTTPS login (Cela permet d'avoir un portail scuris lors de la
connexion et donc d'evit la rcupration des login/motdepasse via un moyen quelconque)
HTTPS server name : fiberius.pref
SSL Certificate : webConfigurator default
Portal page contents : fichier importer : captiveportal_fiberius.html (voir doc technique pour plus
de prcision)
Authentication error page contents : fichier importer : capiveportal-fiberius-error.html
Logout page contents : fichier importer : capiveportal-fiberius-logout.html
Save

Ajout des images pour le portail captif :


Service > Captive Portal > Edit captiveportal > Files Manager :

captiveportal-bas.png
captiveportal-icon.png

Lors de l'ajout d'une image, captiveportal- est ajout automatiquement devant le nom de l'image
moins que captiveportal- sois deja existant dans le dbut du nom de l'image.

Modification/traduction du message #PORTAL_MESSAGE# :


Pour modifier la valeur de cette variable($errormsg), vous devrez vous connecter sois via WinSCP
au PfSense sois directement via l'utilitaire Edit File dans Pfsense ( Diagnostics >Edit File : Browse)
afin de modifier un fichier contenant cette variable, le fichier se trouve dans :
/usr/local/captiveportal/index.php
Vous devez modifier la ligne :

$errormsg = "Invalid credentials.";


en par exemple :
$errormsg = "Les informations saisies sont invalides.";

Puis Sauvegardez.

Redmarrer pfsense pour vrifier vos modifications.


Diagnostics > Reboot : Yes
une fois reboot patienter un moment cela peut prendre du temps quelque minute avant que le portail
s'affiche au lieu d'afficher une erreur de connexion a la page.

Lorsque vous voudrez accder a une page internet, le portail captif suivant devrai s'afficher :

Il devrai demander au debut un certificat de scurit car nous somme en HTTPS:


Il faut cliquer sur "Avancer" puis "Ajouter une exception" (si y a une erreur a la place de ajouter une
exception, c'est qu'il faut ouvrir une page internet par le bi d'un marque page) puis confirmer.

6/13
Ajout du Widget "Captive Portal Status" :
Ce Widget permet d'avoir un aperu dans le menu principal des utilisateurs connect au portail.
Cliquez sur PfSense en haut a gauche pour revenir sur le menu principal, puis juste en dessous du
titre "Status: Dashboard" cliquez sur le petit + pour ajouter un widget et selectionnez "Captive
portal Status", vous pouvez le deplacer la ou vous le souhaitez puis cliquez sur "Save Settings".

Utilisateur et Groupe :

Cration/modifications des groupes :


Tout d'abord nous allons cre les groupes pour qu'ensuite nous puissions assign ces groupes au
diffrents utilisateurs :

System > Users Manager > Groups :

Add group :
Group name : portail
Descritpion : Portail Captif
Save

Edit group "admins" :


Ajouter des privilges en cliquant sur le + :
Tout les privilges commenant par User -
Save

Edit group "all" :


Supprimer les privilges si il en a.
Save

Edit group "portail" :


Ajouter le privilge :
User Services Captive portal login
Save

7/13
Cration des utilisateurs :

System > Users Manager > Users :

Tout les utilisateur qui auront accs au portail captif auront toujours cette forme d'identifiant :
prenom.nom
Ajouter un utilisateur via "add user" :
Username : prenom.nom
password : ********
********
Full name : Prnom NOM
Groupe Memberships :
Member Of :
Portail
Save

Creation d'un nouvel utilisateur admin pour le service informatique:


Assigner en groupe Memberships:
Member Of :
admins
Save

Mise en place d'un proxy transparent :

Une fois que le portail fonctionne correctement, nous allons mettre en place un proxy transparent
qui va enregistr en cache les page les plus visit afin de facilit la rapidit d'accs au page internet.

Installation du package Squid :

System > Packages > Available Packages :


Installer le Package : squid
Une fois installer nous allons le configurer.

Configuration de squid :

Services > Proxy Server > Gnral :


Proxy interface : LAN
Allow users on interface : Cocher
Transparent proxy : Cocher
Enable logging : Cocher Cela va enreistr les log dans le fichier ci dessous, ces logs nous servirons
par la suite avec un auter package qui pourra les analyser.
Log store directory : /var/squid/logs
Log rotate : 365 C'est le nombre de jours avant que les logs ne se supprime automatiquement.
Proxy port : 3128
Visible hostname : pref87.lan
Language : English
Suppress Squid Version : Check
Save

8/13
Services > Proxy Server > Cache Mgmt :
Hard disk cache size : 3000
Hard disk cache system : ufs
Hard disk cache location : /var/squid/cache
Memory cache size : 1500
Save

Services > Proxy Server > Access Control :


Allowed subnets : 192.168.2.0/24
External Cahe-Managers : 127.0.0.1
acl safeports : 80 443
acl sslports : 80 443
Save

Test de Squid :

Vous devriez maintenant ajouter un domain a bloquer dans la blacklist pour tester votre proxy :
Services > Proxy Server > Access Control :
Blacklist : materiel.net
Save

Aller maintenant sur le site www.materiel.net

Une erreur devrai aparaitre du type :


ERROR
The requested URL could not be retrieved
Access Denied.

Installation du package LightSquid :

LightSquid permet de lire les logs de Squid et meme de voir en temp rel les statistiques.
Intaller le depuis System > Packages > Available Packages

Configuration de LightSquid :

Status > Squid Proxy Reports > Settings :


Language : English
report Template : Base
Bar Color : Orange
IP Resolve Method : Simple
Refresh Scheduler : 30 min
Save

Puis cliquez sur Refresh Now puis Refresh Full et enfin cliquez sur l'onglet LightSquid Report pour
avoir le tableau de donnes ( faite Ctrl + F5 pour actualiser la page en suprimer le cache si une
erreur s'affiche)

9/13
Mise en place d'un fitre par URL pour le proxy :

Une fois que Squid et Lightsquid fonctionne, il va nous falloir un proxy qui filtre les URL :
SquidGuard. Il fonctionne notamment grce Squid.

Installation du package SquidGuard :

System > Packages > Available Packages :


Installer le Package : squidGuard
Une fois installer nous allons le configurer.

Configuration de SquidGuard :

Services > SquidGuard Proxy > General settings :


enable : Cocher Pour que SquidGuard fonctionne il faut ajouter une target catgorie
Il faut egalement aprs avoir modifier votre configuration cliquer sur Apply.
SquidGuard service state devrait s'afficher en STARTED moins que Squid
ne fonctionne pas ou qu'il y ai une erreur.
Enable GUI log : Cocher
Enable log : Cocher
Enable log rotation : Pas Cocher
Blacklist : Cocher
Blacklist URL : www.shallalist.de/Downloads/shallalist.tar.gz

Save puis Apply

Services > SquidGuard Proxy > Blacklist :


Copier coller le lien de cette blacklist
www.shallalist.de/Downloads/shallalist.tar.gz
Cliquez sur Download

Services > SquidGuard Proxy > Target Categories :

C'est ici que vous pouvez faire votre propre catgorie de site web bloquer ou pas , il vous suffit
d'ajouter les url et/ou les domaine que vous souhaitez.
Ici je vais juste cre une catgorie qui ne contient aucune liste car elle est ncessaire pour faire
fonctionner Squidguard.
+ Add a new item
Name : debug_squidguard
redirect mode : int error page
description : Permet de faire fonctionner SquidGuard
Save

10/13
Services > SquidGuard Proxy > Common ACL :
Ici se trouve la blacklist que nous avons installer auparavant ainsi que la catgorie
debug_squidguard que nous venons de cr.
Cliquez sur le bouton vert pour l'afficher
Target Rules :
Cliquez sur Target Rules List:
[debug_squidguard] deny
[blk_BL_porn] deny
[blk_BL_sex_lingerie] deny
[blk_BL_spyware] deny
[blk_BL_tracker] deny
[blk_BL_violence] deny
Default access [all] allow
Do not allow IP-Adresses in URL : Uncheck Cela permet de bloquer les ip lorsque qu'elle sont
recherches directement, le problme etant que cela bloque l'accs au modem du FAI galement.
Redirect mode : int error page Cela va renvoy sur une page d'erreur qui peut tre modifier.
Log : Check
Save puis revenir sur General settings pour faire Apply

Modification de la page d'erreur sgerror.php de SquidGuard :


Il existe donc un moyen de modifier cette page d'erreur pour y ajouter par exemple un logo avec
quelques informations suplmentaire.
Connecter vous au pfsense via WinSCP afin d'acceder au fichier et le modifier :
/usr/local/www/sgerror.php
remplacer le fichier sgerror.php par le nouveau que j'ai modifier.
Envoyer aussi les images qui s'afficherons sur la parge d'erreur dans le meme dossier que
sgerror.php
Ici notre image est logopref87.jpg
Voir Doc technique pour savoir comment personalise le fichier sgerror.php.

Installation du package Sarg :

Sarg permet de lire les logs de Squidguard et meme de voir en temp rel les statistiques.
Il a les memes fonctionalites que LightSquid sauf qu'il donne galement des informations de
SquidGuard mais ne possede pas de section Big File comme peut le proposer LightSquid ainsin
qu'une section par mois et anne
Intaller le depuis System > Packages > Available Packages

Configuration de Sarg :

Status > Sarg Reports > General :


proxy Server : Squidguard
Report Options: Use graphs where is possible
Remove temporary files from root report directory
Generate the main index.html
Generate the index tree by file
Use comma instead of dot in reports
Show the downloaded volume on Date/Time report
Report To Generate : Tout selectionner

11/13
Date Format : European dd/mm/yy
Report Charset : UTF-8(default)
Save

Status > Sarg Reports > Schedule :


Add a new item :
Enable : Check
Description : Rapport SquidGuard
Frequency : 1d La frquence d'enregistrement des rapport : ici 1 rapport par jour.
Enable Compression : Check
Cliquez sur Force Update now

Mettre jour manuellement le rapport Sarg :


Il suffit de cliquez sur ce force Update now.

Pour voir les rapport Sarg:


Status > Sarg Reports > View Report

Pour suprimer les rapport de sarg :


aller dans les fichier /usr/local/sarg-reports
et suprimer les fichier avec un nom de type 17Feb2016-17Feb2016
Ouvrez egalement le fichier index.html et suprimer la ligne cernant le fichier en question, par
exemple :
<tr><td class="data2" sorttable_customkey="1032273"><a href='17Feb2016-17Feb2016/index.html'>17Feb2016-
17Feb2016</a></td><td class="data2" sorttable_customkey="20160217091729">Wed Feb 17 09:17:29 2016</td><td
class="data">2</td><td class="data" sorttable_customkey="13145317">13,145,317</td><td class="data"
sorttable_customkey="6572658">6,572,658</td></tr>

Associer une ip un user :


Status > Sarg Reports > Users :
Dans Users Association entrez l'ip puis le nom de la personne ou du services
Ex : 192.168.2.11 SIDSIC

C'est vous de choisir entre Sarg ou LightSquid, ils ont tout 2 les mmes fonctions a quelques
diffrences prs.

Le seul problme que je ne peux rsoudre a ce jour c'est d'avoir le nom de l'utilisateur s'etant
connecter sur le portail, directement sur les rapports lightsquid ou sarg car les username qu'on nous
propose d'afficher sont ceux de squid dans l'onglet Local Users que l'on ne peut pas utiliser car c'est
des authentifications de serveur proxy et plus de portail captif.

En cas de litige par exemple, sachant que nous avons seulement les ip dans les rapports, la solution
est de regarder la date du rapport contenant le problme avec l'ip et de la comparer avec la date de
connexion des utilisateurs sur le portail en allant dans:
Status > System logs > Portal Auth :
Par exemple :
Feb 17 08:04:43 logportalauth[42728]: Zone: fiberius LOGIN: test.test, e1:d3:d5:b2:a5:ff, 192.168.2.11
Ici ont sait que l'utilisateur qui avait l'ip 192.168.2.11 et qui est all sur un site illgal par exemple
est l'utilisateur test.test et avait l'adresse mac e1:d3:d5:b2:a5:ff et qu'il s'est connecter le Feb 17 08:04:43.

Les packages ne donne pas assez de prcision sur l'heure precise la connexion au site, en cas de

12/13
problme on peut utiliser la mthode brute pour obtenir cette information :
Il faut acceder au fichier log de squid : /var/squid/logs/access.log
et ensuite chercher le site illgal, une fois trouver, on regarde l'IP puis la date qui est en seconde
passe depuis 1970 (par exemple si vous avez 1455699588.634 , prenez ce nombre et copier/coller
le sur ce site internet qui va convertir ce nombre de secondes en une date: http://www.timestamp.fr/)

13/13

Vous aimerez peut-être aussi