Vous êtes sur la page 1sur 20

Solution

de filtrage web Libre


SQUID
CheminadeJulien


SQUID SQUIDGUARD CLAMAV
Table of Contents
I) Introduction .................................................................................................................................. 3
Prsentation des objectifs du projet .......................................................................................................... 3
Solution proposer .............................................................................................................................................. 3
Annonce du plan ................................................................................................................................................. 3
Solution de filtrage web libre. .......................................................................................................... 4
Configuration du serveur ............................................................................................................................... 4
Configuration matrielle ................................................................................................................................. 4
Configuration logicielle ................................................................................................................................... 4
Interfaces rseau. ............................................................................................................................................... 4
Infrastructure rseau. ...................................................................................................................................... 5
Installation dun serveur DHCP ................................................................................................................... 5
Configuration ....................................................................................................................................................... 6
Serveur mandataire libre Squid3. ............................................................................................................... 7
Dfinition et prsentation de Squid3 ......................................................................................................... 7
Installation de Squid3. ..................................................................................................................................... 7
Configuration Squid .......................................................................................................................................... 9
Firewall Iptables ............................................................................................................................................... 13
SquidGuard ......................................................................................................................................................... 13
Base de Donne SquidGuard ....................................................................................................................... 14
Dfinition des groupes ................................................................................................................................... 14
Dfinition des filtres ....................................................................................................................................... 15
Intgration de SquidGuard Squid ......................................................................................................... 16
ClamAV ................................................................................................................................................................. 17
Installation ......................................................................................................................................................... 17
SquidClamAV ..................................................................................................................................................... 18
Test ......................................................................................................................................................................... 19
Conclusion ........................................................................................................................................................... 20

2
I) Introduction

Prsentation des objectifs du projet

Lobjectif du projet est lutilisation dun serveur mandataire (proxy) afin de filtrer tous les accs
sur les protocoles lis lutilisation dinternet, principalement HTTP et HTTPS puis le filtrage
des URL et des noms de domaines qui envoie de la publicit sur les pages web et ,faire une
analyse antivirale du flux web.

Solution proposer

Installation dun serveur mandataire transparent pour le protocole HTTP / HTTPS et gnration
automatique de certificat, avec filtrage de la publicit grce une analyse de SquidGuard sur
une liste noire est analyse antiviral grce ClamAV de tout le flux WEB.

Annonce du plan

Premirement, je prsenterai la configuration matrielle et logicielle du serveur et un plan de


linfrastructure du rseau, puis nous enchainerons avec la prsentation du serveur mandataire
(proxy) Squid dans sa version 3, et enfin je dtaillerai sa configuration et son implication dans le
projet.

Deuximement, nous verrons le programme SquidGuard, a configuration, sont intgration


squid et la place quil a au sein de la solution propose.

Ensuite je ferais la prsentation de lantivirus libre CLAMAV, sa configuration et son intgration


squid grce au plug-in SquidClamAV.

Enfin je terminerais cette prsentation de projet avec une srie de tests et une conclusion sur la
solution apporte.

3
Solution de filtrage web libre.

Configuration du serveur

Configuration matrielle

Jai mis en application cette solution sur une machine physique, disposant dun processeur Intel
64 bits, 1 GO de mmoire RAM, 2 interfaces rseau Ethernet et dun disque dur de 500 GO.

Configuration logicielle

Le systme dexploitation sur lequel repose cette solution est un Linux Debian Wheezy 7.8
Jai fait le choix de ne pas installer dinterface graphique, car je nen ai pas besoin pour mettre
en place cette solution, ce qui permet dconomiser les ressources du systme et de le rendre
plus performant.

Afin de pouvoir installer Debian, voici un lien qui vous sera utile :
Pour systme 32 bits : https://www.debian.org/releases/stable/i386/
Pour systme 64 bits : https://www.debian.org/releases/stable/amd64/

Une fois Debian installer il est trs important daller diter dans le fichier : /etc/sysctl.conf
la ligne ou ce trouve #net.ipv4.ip_forward =0 il faut : enlever le caractre # en dbut de ligne
et passer la valeur de 0 1 pour obtenir le rsultat suivant :
net.ipv4.ip_forward =1

Cette ligne permet de dire au systme que lon veut quil agisse comme un routeur au sein du
rseau en faisant de la redirection de paquets.

Figure 1 : configuration ip_forward

Interfaces rseau.

Le paramtrage des interfaces rseau du serveur est les suivantes :


Eth0 : carte avec une interface paramtre dynamiquement sur le pool dadresse du
DHCP de lentreprise.

4
Eth1 : carte paramtre avec une interface statique en 10.0.0.1/24, cest cette carte qui
fait la liaison directe avec le rseau LAN de la solution.

Infrastructure rseau.

Figure 2 : schma de linfrastructure rseau

Installation dun serveur DHCP

Dans un premier temps, aprs avoir install et paramtr Debian puis configur les interfaces
rseau nous allons procder la configuration dun serveur DHCP afin de pouvoir administrer
dynamiquement des adresses IP aux ordinateurs prsents sur notre rseau LAN.

Rcuprer le paquet isc-dhcp-server grce la commande aptitude

Figure 3 : installation serveur DHCP

5
Configuration

La configuration du serveur DHCP me permet dattribuer des adresses IP dynamiquement sur la


plage dadresse 10.0.0.10/16 10.0.0.100/16. Jai dfini linterface eth1 comme routeur. Le
serveur DNS est celui de la box internet.

Figure 4 : configuration isc-dhcp-server

Quelques petites prcisions sur les paramtres prsents dans la figure 4 :


Default-lease-time : temps par dfaut du renouvellement du bail.
Max-lease-time : dure maximale du bail.
Log-facility local7 ; enregistre les logs dans un fichier ddi dans /var/log/
Subnet / netmask : prcise sur quel rseau nous voulons appliquer le pool DHCP.
Rang 10.0.0.10 10.0.0.100 : dfinit le rang dadresse qui sont attribus
dynamiquement.
Option subnet-mask : dfinis le masque rseau des adresses IP administres
dynamiquement.
Option broadcast-address : dfinis ladresse de broadcaste pour les IP adresss
dynamiquement.
Option routers : dfinis le routeur pour les adresses IP du rang.

Il y a un deuxime fichier de configuration dans le rpertoire /etc/default.


Modifiez le fichier isc-dhcp-server.conf afin de prciser sur quelle interface coute le serveur
DHCP, dans mon cas jai choisi linterface eth1.

6
Relancez le service du server dhcp afin que a configuration soit oprationnel :
/etc/init.d/isc-dhcp-server restart

Serveur mandataire libre Squid3.

Dfinition et prsentation de Squid3

Squid3 est un serveur mandataire (proxy) et un mandataire inverse libre et trs performant il est
capable dutiliser les protocoles FTP, HTTP, Gopher, et HTTPS. Contrairement aux serveurs
proxy classique un serveur Squid gre toutes les requtes en un seul processus dentre/sortie,
non bloquant.

Squid est gnralement utilis dans certaines entreprises et universits pour des fonctions de
filtrage dURL en tant que tampon (les pages internet sont stockes localement ce qui vite
daller les recharger plusieurs fois et permet dconomiser la bande passante dinternet).

Installation de Squid3.

Afin de pouvoir appliquer un filtrage avec squid3 sur le protocole HTTPS, pour la ralisation de
cette solution nous ne pouvons pas linstaller par la forme classique dun apt-get ou
dAPTITUDE. Il va falloir rcuprer la source du paquet et de ses dpendances et compiler
squid avec loption --enable-ssl.

Premirement nous devons rcuprer les sources du paquet squid3 et de ses dpendances ainsi
que les paquets qui nous seront ncessaires la compilation :

Dans un premier temps, nous aurons besoin des paquets suivant afin de pouvoir compiler
Squid3 : build-essential fackroot devscripts gawk gcc-multilib dpatch

Figure 5 : source ncessaire a la compilation de squid3

Ensuite, il faut installe des dpendances lies a squid affin de prparer notre systme a a
compilation.

Figure 6 : rcupration de la source de squid3

7
Rpter lopration pour openssh et openssl qui sont ncessaire afin de compiler sans erreurs.

Figure 7 : rcupration dpendances squid3 lies au filtrage HTTPS

Figure 8 : source ncessaire lors de la compilation de squid3

Une fois ces oprations effectues il va falloir que nous tlchargions le paquet Squid3, mais
non compil. Pour ce faire, un rpertoire est prvu a cet effet dans Debian : /usr/src

Jai choisi de baser la solution sur Squid3 dans a version 3.1.20 qui est celle proposer lors dun
aptitude install.

Afin de la rcuprer, utilisez la commande suivante :


wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.20.tar.gz

Larchive peut aussi tre rcupr avec la commande :


aptitude source squid3

Une fois tlcharg, dcompressez larchive laide de la commande tar


tar xvfz squid-3.1.20.tar.gz

Figure 9 : extraction squid

Changer de rpertoire : cd squid-3.1.20 puis ditez le fichier rules avec la commande :


nano /debian/rules affin dy ajouter la ligne --enable-ssl \

Une fois cette option spcifier retournez la racine du dossier de squid et, utiliser la commande
./configure afin dappliquer les paramtres de configuration pour la compilation. (Cette
opration peut tre longue)

Maintenant nous allons compiler le paquet afin de produire des fichiers installables sous format
.deb pour faire cette action nous allons utiliser la commande debuild

Figure 10 ; cration de .deb pour squid et ces dpendances

8
Cette opration qui cre linstallateur de squid avec loption que nous lui avons spcifi peut
tre trs longue. Lors de la ralisation de la solution, la dure de cette opration est dau moins
20 minutes.

Si elle a tait ralise sans erreurs, le rpertoire parent /usr/src, contient dsormais plusieurs
fichiers .deb :
Squid-cgi 3.1.20.deb
Squid3-common 3.1.20.deb
Squid3-dbg_3.1.20.deb
Squid3_3.1.20.deb
Squidclient_3.1.20.deb

Tous ces paquets sont ncessaires au fonctionnement de squid. Installez-les en utilisant la


commande dpkg i comme prsent dans les captures qui vont suivre.

Figures 11, 12, 13, 14, 15 : installation des paquets compils

Une fois les paquets installs, nous allons passer la configuration de squid. Cette configuration
sera en fonction de larchitecture du rseau, il vous sera surement ncessaire de ladapter
votre environnement.

Configuration Squid

La configuration de Squid se fait toutes dans un seul fichier : le fichier squid.conf qui contient
des centaines de lignes. Ce fichier est prsent dans le rpertoire /etc/squid3, je prsenterai les
parties les plus importantes de la configuration et celles qui sont ncessaires la solution. Ces
paramtres seront adapter selon votre rseau et les choix que vous feriez dans votre politique
de filtrage.

9
Les ACL

Les ACL sont des paramtres qui vous permettent de dfinir quelles adresses IP peuvent ou ne
peuvent pas accder au serveur mandataire. Cela peut tre une autorisation par rapport une
adresse source qui est alors dfinie par le mot cl src ou une adresse IP de destination dfinit
par le mot cl dst.

La figure suivante montre les acl prsents sur la configuration de mon serveur squid.

Figure 16 : ACL Squid

Figure 17 : ACL squid

Ici dans la figure 16 sont dfini des acl pour des rseaux : par exemple notre rseau LAN
10.0.0.0/16 est dcrit ici

Dans la deuxime partie de la configuration des ACL de squid sont dfini, des ports dits
surs ses ACL nous serviront plus tard dfinir des rgls daccs notre serveur mandataire
avec un filtrage plus fin

Configuration des ports de Squid

Cette partie du fichier de configuration concerne les ports sur lesquelles Squid coute pour
recevoir le flux HTTP / HTTPS

Figure 18 ; Configuration ports Squid

10
En premier lieu jai attribu le port 3128 pour le protocole HTTP. Le paramtre intercept
permet de dire Squid dagir sur ce port de manire quil intercepte toutes les trames HTTP.

Jai attribu le port 3129 au filtrage du protocole HTTPS , le paramtre ssl-bump permet
dtablir une connexion SSL entre le serveur proxy Squid et le site internet : google par exemple.
Ensuite, il utilise le certificat mis en paramtre afin dtablir la connexion entre le serveur proxy
et lutilisateur.

Certificat SSL

Le certificat tait gnrer avec le paquet Openssl, je prsenterai a gnration plus tard.
Pour linstant, voici la partie de la configuration de Squid o sont dfinis les certificats SSL.

Figure 19 : dfinition du certificat ssl dans la configuration de squid

Rgle daccs

Les rgles daccs permettent, dautoriser, de restreindre ou bloquer le flux HTTP des
utilisateurs, elles se prsentent sous la forme suivante :

http_access allow reseau

Cette rgle dfinit laccs au protocole HTTP lacl rseau qui correspond notre rseau LAN.

Figure 20 rgles daccs pour le flux http

11
Ici dans la figure 20 lon peut observer deux mots cls aprs http_access, allow et deny.

Allow, permets de dire que lacl qui se trouve aprs ce terme est autoris utiliser et recevoir le
flux HTTP.

Deny, quant lui, refuse laccs lacl qui le suit.

La ligne de configuration http_access deny !Safe_ports fait rfrence aux acl dfinit plus haut
dans la figure 17 elle permet de rajouter un peut de scurit notre serveur proxy en refusant
laccs au flux HTTP tous les ports qui sont diffrents de ceux dfinit comme tant des ports
dits sur .

SSL_Bump

SSL_bump est le paramtre qui va nous permettre dtablir une connexion SSL entre notre
serveur proxy et le site demander par le client, puis aprs grce au certificat de connexion SSL
dfinit plus haut la connexion est tablit entre le client et le serveur proxy. Ce qui nous permet
au final de pouvoir filtrer les trames HTTPS.

Figure 21 rglages SSL_bump

Le paramtre SSL_bump est considr comme une rgle daccs qui peut tre dfini sur des
ACL. Ici, nous refusons laccs aux sites qui nont pas de certificat vrifi par une autorit de
certification, sinon nous autorisons laccs au flux HTTPS toutes les connexions. Ses
paramtres peuvent tre affins selon les rgles de filtrages que vous souhaitez appliquer.

Rpertoire de cache

Le rpertoire de cache correspond lespace que vous dfinissez dans la configuration de Squid
qui servira la mise en cache des pages web, afin de les charger en local si elles sont
redemandes par les clients pour librer la bande passante internet.

Figure 22 : Dfinition du rpertoire de mise en cache

12
Une fois la configuration de Squid termin, dmarrer le service grce la commande suivante :

Figure 23 : dmarrage du service squid

Firewall Iptables

Maintenant que notre serveur proxy est oprationnel, nous allons configurer Iptables afin de
dfinir des rgles de redirection pour le bon fonctionnement de notre configuration

Premirement, nous allons dfinir des rgles de redirection dans la chaine PREROUTING de la
table NAT pour rediriger le trafique des ports 80 et 443 vers les ports dfinit dans la
configuration de Squid qui sont 3128 pour le 80 et 3129 pour le 443

Figure 24 : rgles de redirection des ports 80 et 443.

Puis nous dfinirons une rgle avec le mot cl MASQUERAD dans la chaine POSTROUTI NG
de la table NAT afin que toutes les connexions en sorties de notre serveur proxy aient toutes la
mme adresse IP.

Figure 25 rgle de post routage

SquidGuard

Linstallation de SquidGuard se fait de faon traditionnelle grce aux paquets apt-get ou bien
aptitude.

Une fois le paquet rcupr, la configuration de SquidGuard ce situe dans /etc/SquidGuard.


Elle est compose de 3 parties :
La dfinition du rpertoire qui contient les logs, et celui o est contenue la base de
donnes de SquidGuard.
La dfinition de groupes de restriction par ladresse IP
la dfinition des restrictions appliquer selon le filtrage du contenu voulu et
lapplication de ces restrictions sur les ACL

13
Base de Donne SquidGuard

La base de donnes de SquidGuard est essentiellement constitue de fichiers textes regroupent


les noms de domaines et les URL classes par catgories, elle peut tre compar avec une liste
de sites internet. Pour constituer la base de donnes de SquidGuard, jai utilis une liste gratuite
dite par lUniversit de Toulouse Capitole.

Premirement, nous allons rcuprer cette liste grce wget.

Figure 26 : rcupration de la basse de donne squidguard

Puis nous la dplaons dans un rpertoire cr lors de linstallation de SquidGuard.

Figure 27 : dplacement de la base de donne dans le rpertoire cre lors de linstallation du paquet

Enfin, il faut extraire larchive grce la commande tar xvz.

Une fois ces oprations effectuer nous allons diter la configuration de SquidGuard dans le
fichier /etc/SquidGuard/SquidGuard.conf.

La premire partie du fichier concerne la base de donnes et les fichiers logs

Figure 28 : emplacement de la base de donnes squidguard et des fichiers de logs

Ensuite il faut dfinir les sources sur lesquelles nous allons appliquer le filtrage.

Dfinition des groupes

Figure 29 : cration dun groupe pour le filtrage du contenu bas sur le rang dadresse IP du rseau LAN

14
Nous crons donc un groupe sur la plage IP que notre serveur DHCP applique qui correspond
au rseau LAN.

Ensuite nous allons tablir les filtres que nous voulons appliquer selon les fichiers qui sont
disponibles dans notre base de donnes, ici je dfinis uniquement un filtre sur les publicits,
mais sachez que la liste de luniversit de Toulouse est compose de plein dautres catgories
couvrant un large panel de sites internet diffrents.

Dfinition des filtres

Figure 30 : dfinition des filtres bass sur larborescence de la base de donnes squidguard

Ici sont crit les chemins ou ce situe les listes concernant les filtres prsents dans la base de
donnes de SquidGuard.

Le mot cl ads dfini les listes prsentes dans le rpertoire :


/var/lib/squidguard/db/blacklists/ads .

Cette partie de la configuration permet dinclure les listes de nom de domaines ou les URL sur
laquelle nous voulons appliquer des filtres.

La lise white correspond quand a elle a une liste dURL et de nom de domaine ayant un
contenu consultable par tous les utilisateurs.

Une fois les listes de filtrages tablies la partie suivante de la configuration concerne
lapplication de ces listes aux groupes dfinit plus haut.

Figure 31 : dfinition des filtres appliqus sur les groupes dutilisateurs

15
Pour autoriser un contenu il suffit dcrire le nom de la liste comme white or si vous
souhaiter le bloquer il faut lcrire comme cela !ads

Ainsi pour le groupe localnetwork naura accs quaux contenus prsents dans la
whitelist, tous les noms de domaines et URL de la liste ads seront bloqus, tout le reste du
contenu internet ntant pas prsent dans la whitelist sera bloqu.

Une fois le paramtrage de SquidGuard effectuer il faut mettre a jours la base de donnes grce
a la commande : SquidGuard C all d

Figure 32 : dtaille opration mise jour base de donnes squidguard

Le bon droulement de la mise jour est termin lors de lapparition du message :


db update done

Intgration de SquidGuard Squid

La dernire partie de la configuration est la liaison entre SquidGuard et Squid.


Afin que cette liaison soit effective, il faut crire quelque ligne dans la configuration de Squid
qui est le fichier : /etc/squid/squid.conf

Figure 33 : intgration de SquidGuard dans la configuration de squid

Cette ligne permet de dire Squid quil doit rediriger les URL vers le binaire SquidGuard en
prcisant sont paramtre dexcution et le fichier de configuration qui lui est associ.

16
ClamAV

Clam AntiVirus ou ClamAV est un anti virus GPL pour UNIX. Ici dans cette solution nous allons
nous intresser a sont plug-in SquidClamav qui permet lintgration de lantivirus a notre serveur
proxy Squid.

Installation

Premirement, il faut commencer par tlcharger ClamAV ainsi que quelques dpendances :

Figure 34 : tlchargement clamav

Nous allons prparer lintgration de ClamAV en tlchargeant installant et compilant le paquet


SquidClamAV.

Figure 35 : tlchargement compilation installation squidclamav

Une fois cette opration effectuer nous allons mettre a jour la base de donnes de ClamAV
grce la commande freshclam.

Figure 36 : mise jour base de signatures de virus clamav


s
Ensuit il faut tlcharger compiler et installer le paquet c-icap qui nous permettra danalyser le
flux web avec ClamAV.

Figure 37 : tlchargement compilation et installation serveur c-icap

Aprs la compilation et linstallation du paquet, nous allons modifier quelques lignes dans les
fichiers de configuration de c-icap.

17
Premirement, il faut ajouter la ligne : START=yes au fichier /etc/default/c-icap affin quil
dmarre automatiquement

Ensuite dans le fichier /etc/c-icap/c-icap.conf entrer la ligne de configuration suivante :

Figure 38 : intgration de squidclamav dans la configuration de c-icap

Cette dernire permet dinclure le service squidclamav notre server c-icap.

La partie suivante de la configuration porte sur lintgration de notre serveur c-icap notre
proxy. Affin de rendre cette tape plus claire voici un rsum des lignes modifi.

icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_client_username_header X-Authenticated-User
icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_req allow all
icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav
adaptation_access service_resp allow all

La plupart de ces lignes sont dj prsentes dans le fichier /etc/squid/squid.conf avec quelques
exemples et les paramtres qui leur sont associs.

SquidClamAV

La configuration du plug-in SquidClamAV est place dans le fichier


/etc/squidclamav/squidclamav.conf

Il faut la modifier afin de dfinir quel page web sera affich lors dune redirection si une analyse
clamav trouve un virus

Figure 39 : configuration plug-in squidclamav

Clamd_local fait rfrence au chemin ou est plac la base de donne de clamav.

18
Une fois ces oprations effectues notre solution de filtrage et scurisation du flux web est
oprationnel.

Test

Premirement nous pouvons tester si Squid fait bien sont travail de proxy en analysant les
fichiers logs contenus dans /var/log/squid/cache.log nous pouvons voir les requtes HTTP
effectues par les utilisateurs placs dans lACL rseau dfinit dans la configuration de squid.

Figure 40 : extrait des log de squid

Afin de tester lefficacit de Squidguard, un procder consiste taper une adresse qui est cense
tre bloqu dans une des listes que vous avez dfinies dans la configuration si squidguard est
oprationnel vous devrez tomber sur une page web semblable celle-ci :

Figure 41 : blocage URL par SquidGuard

Dernirement, il faut vrifier si le plug-in SquidClamAV est oprationnel en essayant de


tlcharger un des fichiers suivant qui sont au format zip sur la page web
http://securite-informatique.info/virus/eicar/

Si votre antivirus est actif, votre navigateur internet ne devrait pas pouvoir tlcharger le fichier
et vous redirigera sur cette page internet :

19
Figure 42 : Virus dtecter par SquidClamAV

Conclusion
La problmatique de ce projet tait dinstaller un systme de proxy filtrant le plus possible de
publicit afin de rendre plus agrable lutilisation dinternet dans linfrastructure, de pouvoir
grer les requtes HTTP et HTTPS de manire transparente, afin que lutilisateur ne puisse
contourn le serveur mandataire et dintgrer lantivirus ClamAV la solution afin de bloquer
les virus et autres malware pour rendre internet plus sur pour les utilisateurs.

La solution proposer rpond ces objectifs et, grce lambivalence de squid et des plug-ins
qui sont dvelopps par la communaut qui lentoure cette solution peut sadapter sur de trs
nombreuses infrastructures, pouvant rpondre a de nombreux besoins.

Une fois de plus, lutilisation dapplication venant du monde libre permet le dveloppement
dune solution gratuite et trs complte.

Ce projet a tait trs intressant, car il ma permit dapprendre et de comprendre le


fonctionnement et lutilisation dun serveur proxy ce qui est un rel plus pour ma formation, car
ce genre de solution est une obligation dans les lieux publics offrant un accs internet ou au
sein dune entreprise, dune association ou dun tablissement scolaire.

20

Vous aimerez peut-être aussi