Introduction
La plupart des routeurs domestiques proposent de base de nombreuses fonctionnalit s.
Parmi ces fonctionnalit s on peut retrouver des fonctionnalit s de pare-feu. Le probl me avec ces
routeurs est quils nint grent que des fonctionnalit s basiques pour un usage basique du
p riph rique et ne permettent pas de mettre en place une solution pouss e.
Cest pourquoi en milieu professionnel on a tendance se tourner vers des pare-feu et routeurs
int grant des fonctionnalit s beaucoup plus pouss es, permettant alors aux administrateurs r seaux
de mieux s curiser leur r seau et de fournir une meilleure qualit de service leurs clients.
La plupart de ces solutions sont assez on reuses alors que parfois peu de fonctionnalit s sont
r ellement utilis es.
Dans cet article, nous allons voir comment mettre en place un routeur/pare-feu avec des
fonctionnalit s d quilibrage de charge pour permettre lacc s des serveurs web laide de pfSense
et HAProy.
a. Pare-feu
Pour faire simple, un pare-feu permet de s curiser un r seau. Cependant, il faudra noter que les
pares-feux connaissent certaines vuln rabilit s lorsque les communications sont crypt es.
Par exemple, il est possible de filtrer certains sites ou mots-cl s avec un pare-feu lorsque que ceux-ci
passent par le protocole HTTP (port 80) car la requ te est envoy e en clair et le pare-feu peut donc
avec aise analyser toutes les donn es la composant.
En revanche si le trafic passe par le protocole HTTPS (port 443) via le protocole SSL (ou plus r cent
TLS), les donn es ne seront plus envoy es en clair, mais seront bel et bien chiffr es, rendant possible
son d cryptage uniquement par linterm diaire dun certificat num rique. Nous ne d taillerons pas
plus si ce nest que pour dire que le client d chiffre les donn es re ues par le serveur gr ce la cl
envoy e et le serveur de m me, d chiffre les donn es envoy es par le client gr ce la cl de
d cryptage envoy e par celui-ci.
Par cons quent, une r gle de pare-feu permettant de bloquer le mot-cl facebook , sera inutile si
le client y acc de depuis https://facebook.
N anmoins, il faut savoir quil reste malgr tout certaines solutions pour filtrer le trafic s curis . La
solution la plus simple tant de bloquer le protocole HTTPS, vous laurez compris, quasiment tous les
sites utilisent ce protocole et nest donc pas viable, il est galement possible de bloquer le trafic au
niveau de la r solution DNS, cependant cette m thode reste peu flexible car elle demande la saisie
manuelle des noms de domaine et dans le cas de la restriction de multiple enregistrements DNS, cela
peut vite devenir une t che de longue haleine.
Heureusement, plusieurs solutions existent et certains pares-feux int grent une fonctionnalit de
relayeur DNS permettant de r aliser un filtrage plus pouss en servant dinterm diaire entre DNS et
client. Bien videmment de multiples autres techniques existent.
La plupart des pare-feu r cents comme pfSense embarquent galement de nombreuses
fonctionnalit s comme la possibilit de cr er des tunnels, servir de proxy et bien dautres.
b. Proxy
Un serveur mandataire ou serveur proxy, est un serveur jouant le r le dinterm diaire dans un
r seau informatique ayant pour but de relayer des requ tes entre un client et un serveur.
Un serveur proxy poss de de nombreuses fonctionnalit s et permet entre autres de stocker en
m moire des donn es pour acc l rer la navigation etc.
Tout comme un pare-feu, un proxy permet galement de s curiser un r seau en r alisant un filtrage
et permet aussi de contourner un filtrage par exemple lors de lacc s un site internet o seules
certaines adresses IP publique sont autoris es, en passant par un proxy se trouvant dans un pays
dont ladresse IP publique est autoris e, un utilisateur peut facilement contourner cette restriction.
Bien videmment, il reste possible de refuser la connexion un serveur proxy effectuant une requ te
mais cela demande une saisie manuelle de chaque entr e.
Les proxys permettent galement la connexion un serveur de fa on totalement anonyme,
diminuant le risque de tra abilit , toutefois il est toujours possible de bloquer une requ te anonyme
avec un pare-feu.
c. PfSense et HAProxy
PfSense est un routeur/pare-feu open source bas sur le syst me dexploitation FreeBSD
(Syst me dexploitation UNIX libre). Comme tout pare-feu, il permet de cr er des r gles de trafic sur
le r seau et permet entre autres davoir un contr le sur les flux entrants et sortant.
Il peut galement permettre de cr er une connexion s curis e entre deux h tes via un tunnel
IPSec ou encore via VPN.
pfSense int gre de nombreuses fonctionnalit s tel que le proxy invers qui contrairement au
serveur proxy basique, permet aux utilisateurs internet dacc der un r seau interne mais pas que !
Un proxy inverse peut aussi avoir des fonctionnalit s de r partition de charge entre divers
serveurs, qui par d finition permet d viter un serveur d tre surcharg par un nombre de
requ tes.
Dans cet article nous nutiliserons pas la fonctionnalit de proxy inverse de pfSense mais celle de
HAProxy (High Availability Proxy), qui est beaucoup plus rapide dans la gestion des requ tes et la
r partition de charge.
Publicité
Dans le cadre de la haute disponibilit , la r partition de charge est une tape tr s importante car
elle permet dassurer la continuit de services car si un serveur venait recevoir norm ment de
requ tes il y a de fortes chances que le d lai de r ponse soit beaucoup plus long et dans le pire des
cas, quil tombe.
d. Topologie
Dans cet article nous allons permettre un client dacc der un serveur web distant situ dans un
r seau interne. Les clients passeront donc par les pare-feu/proxy invers s pour acc der un serveur
web.
Nous utiliserons HAProxy pour soccuper de la r partition de charge entre les deux serveurs web afin
de permettre de multiples connexions simultan es sans engendrer de perte de performance.
Dans votre logiciel de virtualisation, cr ez deux sous r seaux, lun ayant acc s Internet et lautre
non. Dans mon cas sous VMWare, jai cr un sous-r seau NAT pour simuler lacc s Internet et un
autre en Host-Only.
1. Installation
Pour cet article nous utiliserons une machine virtuelle pfSense, et deux distributions linux, nous
utiliserons Debian.
a. Pare-feu pfSense
Notre premier serveur pfSense fera linterface avec le client, le client acc de aux serveurs web
situ s New York ou Texas de fa on transparente.
La derni re version en date est le 2.4 sortie r cemment, on peut la retrouver via ce lien pour la
t l charger en 32 ou 64 bits. : https://www.pfsense.org/download/
Si vous avez un processeur supportant le jeu dinstructions 64 bits, pr f rez la version AMD64 pour
obtenir de meilleures performances.
Pr f rez lISO pour proc der l'installation directement.
En termes de configuration requise, je fais tourner Pfsense sur une VM disposant d'un processeur, 512
Mo de RAM et 8Go de disque, Pfsense se contente de tr s peu, nous le verrons plus loin.
Lors de la configuration de la machine virtuelle, veillez ce quil y ait deux adaptateurs r seaux.
Le premier servira linterface WAN, on aura une carte permettant dacc der Internet, ici on utilisera
du NAT et en LAN une carte r seau qui nous permettra dadministrer localement notre serveur, pour
cet adaptateur, cr ez un r seau priv . Par d faut ladministration depuis linterface WAN est
d sactiv e car il serait dommage daccorder un tiers dadministrer notre routeur.
Lors du d marrage de l'ordinateur avec le CD ou l'ISO mont , un menu de boot appara t. Selon les
besoins on peut choisir de d marrer Pfsense avec certaines options activ es. Si aucune touche n'est
appuy e, Pfsense bootera avec les options par d fauts (choix 1) au bout de 8 secondes.
L'installation d marre, d s le premier cran nous pouvons r gler diff rents param tres notamment
la police le type de clavier que lon utilisera, ici on choisira notre clavier fran ais AZERTY.
Apr s avoir s lectionn le clavier, il est possible de le tester en choisissant Test puis si cela vous
convient, s lectionnez Continue.
Dans l cran qui suit, choisissez Auto(UFS) si vous ne voulez pas partitionner de fa on particuli re le
disque dur pour passer la suite.
Si tout sest correctement pass , dans l cran qui suit choisissez NO puis REBOOT pour red marrer la
machine.
Une fois la machine red marr e, vous arriverez cet cran
Nos deux cartes r seaux sont bien reconnues, par d faut, une interface leur est automatiquement
affect e, pour v rifier que vos interfaces correspondent bien la bonne carte r seau, entrez 1. Vous
verrez alors dans l cran qui suit, ladresse MAC correspondante chaque interface.
Si cela correspond bien, faites simplement Ctrl + C pour annuler. Sinon vous entrez le nom de
linterface correspondante
De retour au menu s lectionnez 2 pour configurer les adresses IP des adaptateurs r seaux.
Si vous obtenez une adresse IP de fa on automatique depuis votre fournisseur, laissez linterface
WAN en DHCP, par d faut ladresse IP publique est renouvel e automatiquement aupr s de votre
fournisseur dacc s internet sauf si vous avez demand ce quelle soit statique car en effet, en
situtation r elle un utilisateur acc de un site Internet depuis son nom de domaine et non par IP.
Dans cette d monstration nous allons affecter une adresse IP notre interface WAN et LAN.
Je rappelle que dans mon cas, mon r seau Internet est le 192.168.11.0/24 et mon r seau LAN
192.168.136.0/24
Mon interface WAN a pour IP 192.168.11.3, de masque 255.255.255.0 et bien videmment, il ne
faut pas oublier dindiquer la passerelle par d faut pour lacc s ext rieur.
Si vous ne la connaissez pas, repassez en DHCP, vous pourrez configurer lIP statique plus tard. Sous
VMWare, allez dans Virtual Network Editor et cliquez sur NAT Settings.
R it rez la proc dure cette fois-ci pour configurer linterface LAN. Notez que contrairement
linterface WAN, il ne vous est pas propos daffecter une IP de mani re automatique.
Linterface LAN est configur e avec ladresse 192.168.136.3/24
Nous pouvons maintenant administrer notre serveur pfSense !
Par d faut le login est admin et le mot de passe pfsense
Si votre interface WAN est bien configur e, vous aurez en page daccueil, un message vous indiquant
Publicité
de quand a eu lieu la derni re recherche de mise jour.
Etant donn que nous avons affect une adresse IP de r seau priv notre interface WAN (voir
https://tools.ietf.org/html/rfc1918) , il nous faudra autoriser lutilisation de celle-ci. Par d faut, une
adresse IP dite publique est une adresse IP nayant pas comme pr fixe 192.168, 172.16 ou 10/8.
Pour cela rendez-vous dans les param tres de linterface
Et d s lectionnez lavant derni re option, sauvegardez, puis appliquez.
Si vous n tes pas en DCHP, le serveur DNS permettant au r seau interne de communiquer avec
lext rieur nest pas d fini, il faudra le d finir, dans System>General Setup. Appliquez et
sauvegardez.
Cest tout pour cette partie, nous reviendrons plus tard dessus pour configurer notre load balancer.
b. Serveurs web
Nous allons maintenant passer la configuration de nos serveurs web.
Dans cet article on utilisera Debian pour son c t universel, vous trouverez liso cette adresse :
https://www.debian.org/CD/http-ftp/
Lors de la cr ation de la machine virtuelle, affectez un adaptateur r seau la machine de sorte ce
quelle soit sur le m me r seau local que ladaptateur r seau local de notre pfSense.
Pour moi, cest le r seau 192.168.136.0/24.
Apr s avoir d fini les param tres linguistiques et les param tres utilisateurs ainsi que le
partitionnement du disque, le syst me t l chargera le reste des fichiers n cessaires.
Vous serez amen s configurer le r seau, ce m me si vous aviez activer le service DHCP sur
linterface LAN du routeur. La principale raison est que pfSense demande en LAN de ne pas saisir de
passerelle par d faut.
Vous pouvez tre confront s cet cran, choisissez Non et configurez comme ci-dessous.
Vous pouvez galement avoir un autre message derreur indiquant quil est impossible dacc der au
serveur FTP. Retournez dans le menu et choisissez Configurer le r seau, puis Configurer le r seau
moi-m me
Suivez lassistant, entrez une adresse IP disponible sur le r seau local, en passerelle par d faut,
mettez ladresse locale du pare-feu pfSense, et en DNS pareil.
Une fois que les paquets t l charg s, installez un serveur web.
https://doc.ubuntu-fr.org/installer_un_serveur_debian
Nos deux serveurs web auront respectivement les adresses IP 192.168.136.4/24 et 192.168.136.5/24
Vous pouvez v rifier vos param tres en tapant la commande nano /etc/network/interfaces
c. R partition de charge
Maintenant que nos deux serveurs web et notre pfSense install s, nous allons maintenant passer la
partie de l quilibrage de charge.
Comme je lai expliqu plus haut, lobjectif dune r partition de charge est avant tout de permettre
aux diff rents serveurs dun r seau faisant partis dun m me pool de ne pas tre surcharg s pour
permettre aux clients finaux davoir un service avec de tr s faibles d lais de r ponse lors de lenvoi
dune requ te.
Dun autre c t cela permet aussi de fournir une meilleure qualit de service.
Pour mettre en place cela, il vous faudra t l charger le paquet HAProxy pour pfSense.
Pour cela rendez-vous dans la page de gestion des paquets situ e dans le menu System > Package
Manager
Le Package Manager permet linstallation de diff rents paquets con us pour tre utilis s et
accessibles directement depuis linterface dadministration de pfSense.
Pour installer un nouveau paquet, il suffit de cliquer sur longlet Available Packages et de rechercher
le paquet souhait .
NB : La liste des paquets pr sents dans le package manager est une liste non exhaustive du nombre
de paquets existants pour pfSense. Seuls les paquets v rifi s sont disponibles depuis le package
manager. https://doc.pfsense.org/index.php/Installing_FreeBSD_Packages
Une fois le paquet HAProxy install vous aurez un r capitulatif qui saffichera, vous indiquant les
diff rentes tapes de linstallation. En cas d chec, v rifiez que linterface WAN ait bien acc s
Internet et que le serveur distant contenant les diff rents paquets soit jour et bien configur .
Vous constaterez alors quune nouvelle option a fait son apparition dans le menu Services
Il ne reste plus qu configurer notre r partiteur de charge !
2. Configuration
a. Backend
Dans longlet Backend, cliquez sur le bouton Add, puis ajoutez affectez un nom ce Backend.
Le Backend server pool, permet la configuration des diff rentes options et comportement des
serveurs balancer, en gros il sagit du produit.
Dans la partie Server list, ajoutez un serveur balancer en cliquant sur la petite fl che.
Le mode active, indique que le serveur sera utilis dans le balancement.
Le mode backup, indique que le serveur sera utilis lorsque les autres serveurs seront indisponibles.
Par exemple, si jamais tous vos serveurs tombent, pour ce serveur de backup pourrait afficher une
version plus ancienne de vos fichiers, il servira de failover.
Le mode inactive, indique que le serveur ne sera pas utilis .
Publicité
Nos serveurs web tournant sur le port 80, nous ne configurerons pas les options SSL. On laissera
galement le champs Weight vide car nos deux serveurs ont les m mes capacit s. En revanche si lon
avait un serveur plus puissant que lautre, le champs Weight deviendrais utile dans la mesure ou plus
sa valeur est lev e, plus le nombre de requ tes quil recevra sera lev par rapport aux autres
serveurs du pool.
Ensuite il nous faudra s lectionner un mode de balancement.
En choisissant :
- None : Sil ny a quun seul serveur ou si vous voulez passer en avanc .
- Round robin : Les requ tes seront balanc es aux serveurs web chacun leur tour. Cest le plus
-
-
-
simple
Static round robin : Utilise moins de ressources que Round robin basique, la seule diff rence
cest que si jamais vous voulez modifier chaud le poids dun des serveurs, il ne sera pas pris
en compte.
Least Connections : Le serveur qui a le moins de requ tes redirig s vers lui sera privil gi lors
du round robin sur les diff rents groupes de serveurs. Recommand pour de longues
sessions.
Source : HAProxy v rifie ladresse IP du client pour lui permettre datteindre toujours le
m me serveur. Recommand lorsque les clients refusent les cookies.
Nous utiliserons le Round Robin pour cet article.
Plus bas, vous avez galement la possibilit de cr er des ACL (Acces Control List).
Expliquer le fonctionnement des ACL serait trop long, je vous invite consulter :
https://www.haproxy.com/documentation/aloha/7-0/haproxy/acls/
Plus bas, vous avez la possibilit de g rer la fa on dont laquelle vous voulez que HAProxy v rifie que
chacun des serveurs soient disponible au balancement.
HAProxy nest pas limit aux serveurs web ! Vous pouvez tout fait faire du balancement entre des
serveurs MySQL par exemple. Dans notre cas, on choisira le protocole HTTP.
Vous pouvez d finir ensuite un intervalle de v rification. Par d faut pour http, lintervalle est de 1
seconde.
Ensuite indiquez la m thode qui sera utilis e pour tester la disponibilit du serveur en fonction du
protocole d fini plus haut.
Et enfin, lURL, par d faut cest /, si par exemple vous voulez que HAProxy pointe sur
http://serveur_web/test plut t que http://serveur_web/ indiquez le dans ce champ.
A la fin de la page vous trouverez une section Statistics. Cela permet depuis lIP d finie dans le
frontend de consulter les statistiques.
NB : En production il est recommand de d finir une authentification pour lacc s cette page dans
les options suivantes ou tout simplement de ne pas cocher cette case.
b. Frontend
Maintenant que notre Backend est configur , le plus important reste la configuration du frontend.
Pour cela, cette fois-ci on va cliquer sur longlet frontend et cliquer sur Add.
Comme pour le backend, donnez un nom au frontend, puis dans Status, choisissez Active pour
indiquer quil sera actif sinon la configuration ne sera pas charg e par HAProxy lors du d marrage du
service.
Au niveau du champs External address, vous avez la possibilit de choisir ladresse laquelle ce
frontend fonctionnera. On choisira WAN address (IPv4), port 80.
Plus bas vous avez la possibilit dindiquer le nombre maximal de connexions que doit supporter ce
frontend, dans le type on choisira http.
Comme pour le backend, il est possible de cr er des ACL. Au niveau frontend cela peut vous
permettre deffectuer divers contr les. Par exemple, si votre site web est en HTTPS et que le client
renvoie un certificat HTTPS erron , vous avez la possibilit de lui affecter backend autre que celui par
d faut. Il est galement possible de rediriger la requ te ou tout simplement la refuser.
Encore une fois, nous ne d taillerons pas plus les ACL car on ne les utilisera pas, cependant sachez
quil est aussi possible de cr er des ACL personnalis s.
A la section Default Backend, on choisira le backend que lon vient de cr er.
Plus bas encore, vous avez une section Avanc e avec diverses options o vous pourrez activer
forwarfor pour renvoyer lIP originale du client.
Sans cette option, ladresse IP du serveur pfSense sera renvoy e aux serveurs de balancement en
tant quadresse client, cela peut tre utile si vous voulez v rifier que la requ te est au pr alable
pass par le pare-feu.
Sauvegardez et appliquez les changements.
Maintenant que la configuration est termin e rendez-vous dans longlet Settings, et cochez la case
Enable HAProxy.
Plus bas vous avez la possibilit de d finir le nombre de connexions que HAProxy supportera, il sagit
du nombre total de requ tes qui passeront pas le service HAProxy. Ces connexions clientes seront
gard es en m moire.
Publicité
Par exemple pour 10 000 connexions, HAProxy allouera un minimum de 488 Mo de m moire.
Pour terminer cochez la case Reload Behaviour. Si vous vous souvenez, lors de linstallation javais
nonc le fait quune interface WAN poss de une IP publique et que sauf cas sp cial, cette IP tait
renouvel e aupr s du fournisseur dacc s internet apr s expiration du bail.
En cochant cette case, on indique HAProxy quil doit arr ter tous les processus lorsquun
changement dadresse IP est d tect et ce sur nimporte quelle interface.
Si jamais vous veniez modifier votre IP Statique et que le service tourne, il serait galement
int ressant darr ter les processus en cours sinon HAProxy aura une mauvaise configuration et les
requ tes seront mal interpr t es.
Sauvegardez les changements et appliquez pour d marrer les services HAProxy.
c. Stats
Pour consulter l tat de vos serveurs et diverses statistiques, il vous suffit de vous rendre longlet
Stats.
Vous avez remarqu quil y avait un formulaire en bas de page ?
HAProxy vous donne la possibilit dagir sur vos serveurs depuis cette page.
Vous avez la possibilit de :
- Modifier l tat dun serveur
- Modifier son statut
-
- &
Supprimer les sessions existantes
Ces modifications nauront aucun impact sur vos serveurs balanc s. Ces modifications affecteront
uniquement le comportement de HAProxy. Si par exemple vous passez l tat dun serveur MAINT, il
passera en mode maintenance et HAProxy ne redirigera plus de requ tes vers ce serveur.
Cela vous permettra de rendre virtuellement un serveur indisponible sans avoir toucher vos
configurations.
Place au test !
3. Test
Pour cette derni re partie, nous allons tester notre solution.
Nous avons vu que nos serveurs sont bien l tat READY et sont en ligne depuis notre page de
statistiques. Nous avions galement configur le frontend pour quil puisse couter sur linterface
WAN des nouvelles connexions avant de les rerouter.
Pourtant, lorsque lon acc de ladresse IP suppos e publique du serveur pfSense, rien ne se passe.
En tant que pare-feu, pfSense refuse logiquement toute requ tes venant de lext rieur, mais si on ne
peut pas y acc der pourquoi avoir fait tout cela me direz-vous.
Eh bien noublions pas quil sagit dun pare-feu ! Pour autoriser les requ tes venant de lext rieur, il
faut donc cr er une r gle.
Pour cela dans le menu Firewall, vous trouverez un sous menu Rules et cest ici que nous allons
d finir nos r gles de pare-feu.
Par d faut, une seule r gle concernant linterface WAN existe, celle permettant de bloquer les
adresses IP sources correspondant RFC1918, les adresses de r seaux priv s et les fausses adresses
IP.
On cr e donc une nouvelle r gle de pare-feu et on la configure comme tel
Nous avons autoris les connexions sur linterface WAN pour le port 80. Interface et port sur lequel
tourne notre frontend.
R essayez nouveau dacc der ladresse WAN, et a marche !
Si vous avez install Apache en tant que serveur web, modifiez la page de d monstration dun des
serveurs web situ e dans :
/var/www/html/index.html
Et vous verrez que le Round robin, fonctionne bien car la page renvoy e diff re chaque fois que vous
rafraichissez la page.
Maintenant, retournez la page de statistiques de HAProxy et changez l tat dun des serveurs en
tant que MAINT. Vous remarquerez que lun des serveurs web ne renvoie plus sa page et pour cause,
HAProxy la virtuellement rendu indisponible au balancement.
Merci davoir suivi cet article, dans un prochain article je vous montrerai comment faire
communiquer deux r seaux diff rents avec pfSense.
Webographie
https://www.pfsense.org/
https://tools.ietf.org/html/rfc1918
https://www.debian.org/
https://doc.ubuntu-fr.org/installer_un_serveur_debian
https://www.haproxy.com/documentation/aloha/7-0/haproxy/
https://www.netgate.com/solutions/pfsense/
https://fr.wikipedia.org/wiki/Proxy_inverse
https://fr.wikipedia.org/wiki/Proxy
https://fr.wikipedia.org/wiki/Pare-feu_(informatique)