Académique Documents
Professionnel Documents
Culture Documents
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
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
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.
Interfaces rseau.
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.
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.
5
Configuration
6
Relancez le service du server dhcp afin que a configuration soit oprationnel :
/etc/init.d/isc-dhcp-server restart
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
Ensuite, il faut installe des dpendances lies a squid affin de prparer notre systme a a
compilation.
7
Rpter lopration pour openssh et openssl qui sont ncessaire afin de compiler sans erreurs.
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.
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
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
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.
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
Cette partie du fichier de configuration concerne les ports sur lesquelles Squid coute pour
recevoir le flux HTTP / HTTPS
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.
Rgle daccs
Les rgles daccs permettent, dautoriser, de restreindre ou bloquer le flux HTTP des
utilisateurs, elles se prsentent sous la forme suivante :
Cette rgle dfinit laccs au protocole HTTP lacl rseau qui correspond notre rseau LAN.
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.
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.
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.
12
Une fois la configuration de Squid termin, dmarrer le service grce la commande suivante :
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
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.
SquidGuard
Linstallation de SquidGuard se fait de faon traditionnelle grce aux paquets apt-get ou bien
aptitude.
13
Base de Donne SquidGuard
Figure 27 : dplacement de la base de donne dans le rpertoire cre lors de linstallation du paquet
Une fois ces oprations effectuer nous allons diter la configuration de SquidGuard dans le
fichier /etc/SquidGuard/SquidGuard.conf.
Ensuite il faut dfinir les sources sur lesquelles nous allons appliquer le filtrage.
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.
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.
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.
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
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 :
Une fois cette opration effectuer nous allons mettre a jour la base de donnes de ClamAV
grce la commande freshclam.
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
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
Il faut la modifier afin de dfinir quel page web sera affich lors dune redirection si une analyse
clamav trouve un virus
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.
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 :
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.
20