Vous êtes sur la page 1sur 14

Mise en place d’un serveur

proxy mandataire avec Squid et


SquidGuard

Table des matières


A. Objectif ......................................................................................................................... 2
B. Pré-requis ....................................................................................................................... 2
C. Schémas ......................................................................................................................... 2
D. Installation & Configuration .......................................................................................... 3
E. Pour conclure avec SquidGuard ................................................................................... 5

1 Par Brunel MALONGA DSUP/DPI/DSIT 2015


A. Objectif
Le contrôle et le filtrage de l’accès à internet ; ceci en se servant des URI (en français Identifiant
Uniforme de Ressource). L’URI est une courte chaîne de caractères identifiant une ressource
sur un réseau, par exemple une ressource Web.
En travaillant au niveau du protocole HTTP, il devient possible de mettre en place des filtres
d’URI, des analyses de contenu dans les documents, alors qu’au niveau IP, nous ne pourrions
filtrer que sur des adresses et des ports.
Tout responsable d’un réseau local à usage professionnel et connecté à l’Internet se doit de
mettre en place un tel système de filtrage de manière à éviter, autant que possible, l’accès à
des sites que la morale professionnel réprouve, d’autant qu’il s’agit d’une obligation légale.
Nous utiliserons des solutions libres, à savoir Squid pour le proxy HTTP et SquidGuard pour
l’élément de filtrage.
Le proxy agira de manière « transparente », c’est à dire dans la totale ignorance du client.
Dans cette situation, le client croit s’adresser directement à la cible finale, mais la requête est
interceptée et traitée par notre serveur.

Ce serveur Proxy permettra de filtrer le trafic réseau et de garder en cache les pages internet
visitées par les utilisateurs dans le but de rendre la navigation internet plus rapide.

Squid, principal composant de ce système, assure les fonctions de:


– Cache, pour optimiser la bande passante
– Identification des utilisateurs
– Filtrage d’accès basique

SquidGuard propose un filtrage très puissant d’accès au web, en fonction:


– De groupes d’utilisateurs, définis de diverses manières.
– De listes de domaines et d’URI qui serviront à définir soit des cibles autorisées, soit des
cibles interdites (listes blanches, listes noires).
– De plages horaires pendant lesquelles l’accès sera autorisé ou interdit.

2 Par Brunel MALONGA DSUP/DPI/DSIT


B. Pré-requis

Software N/A
Prerequisites
Système d’exploitation:
Mageia 5 - 64bits - Interface Graphique KDE
ou
Mandriva 64bits

Paquets: Squid, SquidGuard

3 Par Brunel MALONGA DSUP/DPI/DSIT


Hardware N/A
Prerequistes Minimum CPU 3GHz
RAM 2 Go
2 Cartes réseaux pour les entrées et sorties LAN/WAN :
>LAN: Pour le réseau local l’interface eth0 est configuré sur une IP privée, ici:
192.168.0.1/24(IP test), celle-ci définira l’adresse de notre serveur proxy.

>WAN: l’interface eth1 est configurée pour accéder à internet, ici en IP fixe :
172.16.122.144/16 (IP Test) sur un DHCP statique et un DNS :

4 Par Brunel MALONGA DSUP/DPI/DSIT


C. Schémas

5 Par Brunel MALONGA DSUP/DPI/DSIT


D. Installation & Configuration

Préparation
- Depuis le centre de contrôle de Mageia ou de Mandriva, activez le « partage de connexion
internet avec d’autre machines locales », ce qui va vous installer Bind (DNS), un DHCP et
Squid.
- Dans sécurité, désactivez le pare-feu sur l’interface LAN (ici eth0) et laissez accessible les
serveurs web et ssh sur l’interface WAN (eth1)
- Modifiez le fichier /etc/shorewall/rules.drakx en désactivant les 2 et 3emes lignes comme
indiqué ci-dessous afin d’empêcher la redirection du firewall.

> En mode console tapez « mc » pour lancer Midnight Commander.

> Redémarrez le pare-feu : # service shorewall restart

Attention à chaque changement de configuration du pare-feu par l’interface graphique ce


fichier sera réinitialisé et devra donc être reconfiguré.

Vérifiez que vos services dns, dhcp, squid sont actifs en allant dans « gérer les services
systèmes » depuis le centre de contrôle ou en tapant dans la console « service «
nom_du_service status » . Sinon démarrez-les.

Note : le service DNS se nomme « named », le service dhcp « dhcpd »

SQUID
– Squid est à présent installé, nous allons devoir éditer son fichier de configuration.

squid.conf

squid.conf se trouve dans /etc/squid/squid.conf


Une fois le fichier ouvert on peut remarquer toute une liste d’ACL, les ACL (Access Control
Lists) permettent de définir des conditions sur les IPs, les ports, le contenu de certains textes.
Elles définissent par exemple, une plage d’adresses IP, celles qui constituent notre réseau
local.
Les « http_access » (restrictions) définissent l’autorisation ou l’interdit, pour un acl donné.
Sur la première ligne nous constatons tout d’abord que squid utilise le port 3128 et qu’il
fonctionne bien en proxy transparent :

http_port 3128 transparent

Pour la configuration avec notre réseau la ligne qui nous intéresse est:
« acl mynetwork src 192.168.0.0 »

6 Par Brunel MALONGA DSUP/DPI/DSIT


acl mynetwork src 192.168.0.0/24
http_acces allow mynetwork

Nous relançons squid: #service squid reload

/!\ Note pour Mandriva2010 : si le service squid ne se lance pas remplacez dans le fichier
squid.conf la ligne ERR_CUSTOM_ACCES DENIED par ERR_ACCES DENIED

Vérification du fonctionnement avec Mozilla Firefox en rentrant les paramètres de notre


proxy dans les paramètres réseaux du navigateur.

Test :
1) Avant de tester le proxy, il convient de vérifier si notre serveur web fonctionne correctement,
tapez l’IP du serveur (192.168.0.1) ou l’IP localhost (127.0.0.1) dans le navigateur, sinon
vérifiez que le serveur apache est bien installé.
2) Entrez ensuite les paramètres de connexion comme indiqué ci-dessus, relancez le
navigateur et testez si l’accès internet est possible.
Nous disposons à présent d’un proxy pour notre réseau local mais qui ne filtre pas grand-
chose pour l’instant d’où l’utilité de lui ajouter un module qui va contrôler les accès.
La mise en place du service squid étant relativement simple il n’en n’est pas de même pour
squidGuard qui nécessite un peu plus de rigueur.

7 Par Brunel MALONGA DSUP/DPI/DSIT


SQUIDGUARD

Pour installer une version de squidGuard compatible avec notre système, nous avons dû faire
quelques recherches. En effet la version téléchargée depuis le gestionnaire de logiciel
semblait poser des problèmes de compatibilité, par exemple il nous a été impossible de
compiler les bases en gardant la version proposée.
L’installation se fera donc après téléchargement du paquet sur internet. Vous la trouverez sur
ftp.free.fr ou sur rpmfind.net,
Sur notre configuration et après quelques essais la version suivante est passée correctement:
squidguard-1.4-6mdv2010.0.x86_64.rpm

– En version graphique cliquez simplement sur le fichier téléchargé ici en l’occurrence


« squidguard-1.4-6mdv2010.0.x86_64.rpm »

– En ligne de commandes: # rpm -ivh squidguard-1.4-6mdv2010.0.x86_64.rpm


Attention à la fin de l’installation on vous indique que la ligne suivante doit être rajoutée à la
fin du fichier squid.conf.
« url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf »

– Rajoutez la ligne et relancez le service squid.

# service squid reload

L’installation a créé un répertoire /usr/share/squidguard-1.4/ dans lequel nous trouvons le


dossier « db », c’est la base de données, qui est vide pour l’instant.
Nous trouvons également deux scripts cgi dans le dossier ../sample, qui serviront pour les
redirections.
Nous devons à présent alimenter la base de données « db », nous téléchargerons nos
blacklists depuis le site d’une université de Toulouse qui met à jour les listes noires 2 à 3 fois
par semaine.
Cette base est largement utilisée par les écoles et entreprises, ce qui en fait un gage de qualité,
elle peut s’intégrer dans un grand nombre d’outils libres ou commerciaux.
Lien: http://dsi.ut-capitole.fr/blacklists/

– Installation: # tar -xzvf blacklists.tar.gz


Vous créez ainsi le dossier « blacklists » contenant les listes noires sous forme de fichiers
textes classés par catégories. Le contenu de ce dossier est à mettre dans le répertoire « db
».
– Effacez le contenu du répertoire /db et mettre le contenu du répertoire /blacklist à la place
puis changez les droits d’accès au dossier db afin de pouvoir y compiler les bases :
rm -rf /usr/share/squidguard-1.4/db
mkdir /usr/share/squidguard-1.4/db || true
mv -f /usr/share/squidguard-1.4 /blacklists/* /usr/share/squidguard-1.4/db/
chmod 2770 /usr/share/squidguard-1.4/db

Dans ce dossier « db » nous trouvons donc les sous-répertoires regroupant les catégories de
sites sensibles que nous appellerons les destinations (dest), nous verrons pourquoi plus tard
lors de l’édition du fichier de configuration de squidGuard.
Ces sous répertoires contiennent les fichiers suivants :
– domains ; dans lesquels sont inscrits les noms de domaines des sites à bloquer
– urls ; contenant les adresses

8 Par Brunel MALONGA DSUP/DPI/DSIT


Deux autres fichiers contiennent des expressions et usages mais nous ne nous y attarderons
pas pour l’instant.
Ces fichiers peuvent être édités avec un éditeur de texte afin d’y rajouter nos propres
entrées.

 Quelle est l’utilité des .db de SquidGuard ?


Il faut bien comprendre le fonctionnement de SquidGuard : celui-ci, à chaque
lancement, prend les fichiers textes, les lit, puis génère une base de données indexée
afin d’augmenter sa rapidité. Au lieu de faire ceci à chaque lancement de Squidguard
(donc à CHAQUE redirecteur lancé) on peut lui préciser, à l’aide de la commande
squidguard -C all de générer ces bases de données une fois pour toutes. Il n’a donc
plus à le faire à chaque lancement. Le gain de temps est très important lors de fortes
utilisations.

squidGuard.conf
Nous allons à présent nous intéresser au fichier de configuration de squidGuard:
/etc/squid/squidGuard.conf
Dans lequel nous trouvons divers paramètres comme la définition de l’accès horaire :
« time workhours » mais plus particulièrement les src, dest et acl

src :
ce sont les sources d’adresses qui serviront à définir un utilisateur ou un groupe ainsi qu’une
IP ou plage d’IP

9 Par Brunel MALONGA DSUP/DPI/DSIT


dest:
les destinations font références aux catégories contenues dans le répertoires « db » qui sont
dans /usr/share/squidGuard-1.4/ et dans lesquels « domainlist » et « urllist » pointent vers
leurs fichiers respectifs.
« redirect » indique le lien de redirection, ici non actif (diésé) car il sera ajouté plus bas sur
un ensemble de sources (src):

acl:
autorise ou non à nos sources (src) les accès aux destinations (dest)

10 Par Brunel MALONGA DSUP/DPI/DSIT


Dans l’exemple ci-dessus :
– admin a accès à tout:
pass any (tous les accès)

– foo-client ne sera filtré que pendant les horaires de travail


pass good >les sites dans good sont acceptés
!in-addr >le ! marque l’interdiction, ici les adresses IP ne sont pas permises
!adult >les sites dans adult seront bloqués
!agressif >les sites dans agressif seront bloqués
…et ainsi de suite

any > « tronqué » sur l’image il vient clôturer la liste des interdictions, il
indique que tous les autres sites seront acceptés)
redirect > redirige les pages bloquées vers l’url contenant le scriptcgi suivant :
http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u

> Les bases ne sont toujours pas générées, effectuez la commande suivante :
# squidGuard -C all
Cette commande servira à la compilation et devra être exécutée à chaque changement
relatif aux
bases (modification du squidGuard.conf)

> suivi de :
# chown -R squid:squid db
qui remet les bons droits propriétaires sur les fichiers
# service squid reload
pour relancer le service

 La compilation se bloque :
Si la compilation se bloque, ceci est sûrement dû à une faute de caractère dans votre
fichier squidGuard.conf qui ne correspond pas avec le nom de vos catégories, vous
avez sûrement fait une faute de frappe, pour savoir quelle opération vous bloque
consultez les logs dans : /var/log/squidguard/squidguard.log

 Note importante sur « blacklist »:


– Si vous utilisez la blacklist de l’université de Toulouse, vous devrez autoriser le
répertoire /liste_bu , c’est une liste contenant principalement des sites éducatifs pour
la bibliothèque « univ-tlse1.fr » et qui contient entre autres google.fr, ainsi que /child
( qui est une liste blanche pour tout ce qui est autorisé pour des enfants) et /cleaning
pour les sites de mise à jour, les autres dossiers sont à bloquer, pour plus d’infos sur
ces listes consultez la page suivante :
http://irp.nain-t.net/doku.php/220squid:start

Nous pouvons dès à présent effectuer un test sur un poste client en dhcp sur le réseau
192.168.0.0.
Pour une configuration en statique veillez à ce que l’IP corresponde à votre plage d’adresses
inscrites dans squidGuard.conf, la passerelle et le DNS du poste client doivent être l’IP de
l’interface locale du serveur proxy, à savoir 192.168.0.1

11 Par Brunel MALONGA DSUP/DPI/DSIT


Lors d’une tentative d’accès à l’un des sites inscrits dans notre base, le script nous affiche
alors une page web nous indiquant que l’accès est refusé avec certaines infos comme l’IP, le
nom du groupe (src), l’URL bloquée et dans quelle base celle-ci est inscrite (target
class=interdit). Suivis éventuellement de la plage horaire durant laquelle vous y aurez accès.

 A retenir :
Il est important que la liste de nos ACL (acl) soit en relation avec nos destinations (dest)
ainsi qu’avec la liste des catégories dans le répertoire « blacklist »
Notre fichier squidGuard.conf ne devra comporter aucune erreur, une faute de
caractère et cela ne pardonne pas, la base ne se compilera pas.
Lors de l’ajout de données il est conseillé de compiler la base et de tester au fur et à
mesure en n’oubliant pas de relancer le service.
Si erreur il y a lors de la compilation, le fichier : /var/log/squidGuard/squidGuard.log
nous en indiquera la cause.

12 Par Brunel MALONGA DSUP/DPI/DSIT


SARG
Squid Analysis Report Generator (SARG) est un module pour Webmin qui génère des rapports
sur les logs de navigation internet des utilisateurs et qui permet de les retrouver facilement.
Il va nous permettre ainsi de vérifier les évènements de connexion des clients en regardant
les logs dans /etc/squid/acces.log
Il s’installe comme un paquet standard # urpmi sarg , cliquez ensuite sur « Generate Report
» dans Webmin.

Sur cette image, l’interface locale était configurée sur le réseau 192.168.10.0 et l’IP du client
était 192.16.10.21 , on peut constater les sites visités par l’utilisateur de ce poste.

 Problème rencontre:
Si Sarg ne génère pas de rapport allez dans /etc/sarg/sarg.conf et modifiez la ligne :
« resolve_ip yes » par « resolve_ip no »

 Vie privée ?
Attention toutefois à la forme. Le contrôle des connexions peut entraîner l’invocation
d’atteinte à la vie privée dans certains litiges. En contrepartie, un employé qui consulte,
par l’intermédiaire de son poste de travail, des sites interdits par les lois françaises,
demeure sous la responsabilité de l’entité qui lui a fourni la possibilité d’accéder à ceux-
ci, c’est-à-dire l’entreprise qui l’emploie ou qui l’héberge.

13 Par Brunel MALONGA DSUP/DPI/DSIT


E. Pour conclure avec SquidGuard
Nous avons utilisé la stratégie de filtrage en se servant d’une liste noire, mais l’inverse est
également possible si l’on se sert d’une liste blanche. Tout l’intérêt ici réside dans la facilité de
filtrage que squidGuard peut nous fournir, tout en gardant une grande efficacité en se basant
sur une liste noire mise à jour régulièrement. Nous gardons également la possibilité de rajouter
simplement nos propres entrées. Tout ceci de manière transparente pour l’utilisateur.

14 Par Brunel MALONGA DSUP/DPI/DSIT

Vous aimerez peut-être aussi