Vous êtes sur la page 1sur 5

SQUID - SQUIDGUARD : PROXY CACHE ET PROXY FILTRANT.

1 - Squid.

Site officiel : http://www.squid-cache.org/ Doc de squid : http://mail.linuxmall.com/squid/Doc/ Description complte trs bien faite en Francais : http://users.info.unicaen.fr/~ggaudre/reseau/index.html L'intret majeur d'un cache proxy est d'optimiser le temps de consultation des contenus les plus frquemment demands. Squid est parfait avec une connexion permanente de type ADSL, ou si la ligne Numris peut tre monte la demande. Par contre, pour un accs internet intermittent ou pour viter les connexions intempestives, on prferera WWWoffle (www offline explorer), concu pour de tels usages : http://www.linux-france.org/article/wwwoffle.html. Il permet par exemple de planifier la mise jour automatique de certaines choses, puis de repasser offline, pratique pour avoir ses sites d'information mis jour tous les matins. Squid possde un unique fichier de configuration, /etc/squid.conf. De base, il est configur convenablement, il peut tre dangereux (pour le disque) de modifier des choses dans ce fichier si l'on ne sait pas exactement ce que l'on fait. Structure du fichier de configuration (37 pages) : 1 - Network Options ICP signifie Internet Cache protocol, RFC 2186 et 2187, avec htcp comme version plus rcente pour communication entre caches. 2 - Options pour les cache parents Cela ne permet pas de passer par une black list de hirarchie suprieure. Donc cela ne sert pas grand chose, si squid n'a pas un fichier et le demande un cache parent qui ne l'a pas non plus parce qu'il est blacklist, il contournera le filtrage du cache parent et ira le chercher lui mme. Le seul intrt est l'optimisation de la bande passantesur un rseau local de dimensions importantes. 3 - Options qui affectent la taille du cache en RAM. Squid est trs gourmand en ressources mmoire, il ne fonctionnera pas de manire optimale sur une petite configuration, typiquement un firewall. 4 - Fichiers de logs et repertoires. C'est l, dans cache_dir, premire option, que se trouve la taille du cache sur le disque, par dfaut 100 Megas. 5 - Options pour le support de programmes extrieurs Ici se trouve la ligne renseigner pour squidguard : redirect_program /usr/bin/squidGuard 6 - Options pour affiner le cache. Deux options interessantes : request body max size, pour limiter l'upload (1 M par dfaut), et reply body max size, pour limiter les tlchargements (inactif par dfaut).

7 - Timeouts Pas de commentaire particulier, les options par dfaut sont tout fait convenables. 8 - ACLs Les ACLs, pour accs control list, doivent tre regards de prs, dans un premier temps pour autoriser les machines du rseau local utiliser le cache. On commence par dfinir une ACL comportant une plage d'adresses ip : acl localnet src 192.168.28.1-192.168.28.254/255.255.255.0 et on dit ensuite comment squid doit se comporter avec cette ACL : http_access allow localnet Les ACLs sont intressantes pour viter le rapatriements de certains types de fichiers comme des virus ou des mp3 : acl nimda urlpath_regex .eml$ et http_access deny nimda. Attention, ces ACLs doivent etre placs en tte de liste pour etre efficaces. Le filtrage de sites indsirables avec les ACLs de squid n'est pas recommand, il vaut mieux utiliser squidguard pour cela, en particulier cause de la maintenance des listes de sites filtrer. 9 - Paramtres administratifs Nom de l'admin du cache, nom sous lequel le cache apparait. 10 - Options pour la manire dont le cache s'annonce. Les paramtres par dfaut sont tout fait convenables. 11 - Httpd accelerator Option pour un SERVEUR httpd. Il ne s'agit pas du tout d'acclrer la consultation de sites extrieurs, mais d'optimiser pour l'extrieur la consultation de ce que l'on offre. Toutefois la transparence se configure dans cette section, c'est de cette manire que l'on peut configurer squid pour qu'il ne puisse etre contourn. Pour cela, indiquer l'ip du squid comme passerelle dans les stations clientes, et n'autoriser sur le routeur que l'ip du cache (ceci suppose la connaissance du fonctionnement du firewall iptables). Les options de configuration de squid comme proxy transparent : http_port 8080 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on Et pour iptables : iptables -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.22.33:3128 Quelques URLs sur les proxy transparents : http://www.cru.fr/renater-cache/transparent_proxy_how_to.html http://www.freenix.fr/unix/linux/HOWTO/Firewall-HOWTO-9.html et paragraphe 3.12 de http://netfilter.samba.org/FAQ/fr/netfilter-faq-3.html

2 - SquidGuard
Squiguard permet de filtrer des sites et contenus indsirables, qui peuvent tre de tous ordres : Publicits, ce qui peut reprsenter une cnomie non ngligeable de bande passante. Contenus pornographiques Messageries sur le web et sites de chat Sites warez, piratage, etc... Il ne faut toutefois pas perdre de vue qu'aucun filtrage ne peut tre complet, et que filtrer des contenus en milieu scolaire ne dispense pas du travail pdagogique de responsabilisation de chacun propos de ce qui est fait et consult sur le rseau de l'tablissement. Site officiel : Squidguard : http://www.squidguard.org/ Module webmin pour squidguard : http://www.niemueller.de/webmin/modules/squidguard/ L'universit de Toulouse propose un site complet sur squidguard, avec des listes de sites indsirables rgulirement mises jour et la possibilit d'automatiser la mise jour priodique des rgles locales au moyen d'un script : http://cri.univ-tlse1.fr/documentations/cache/squidguard.html Cette page, malheureusement en Anglais, explique trs clairement comment commencer par le plus simple pour aller au plus complexe : http://www.squidguard.org/config/ Voici un fichier de configuration de squiguard, extrait d'une distribution Mandrake, qui montre certaines options intressantes. Il est possible de filtrer trs finement en fonction des adresses des machines mais aussi les heures et jours de semaine, etc.. #Repertoires des donnes : dbhome pour les regles de filtrage, logdir pour les logs. dbhome /usr/share/squidGuard/db logdir /var/log/squidGuard #Rgles de temps : # abbreviations pour les jours de la semaine s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat # Adresses Sources : on dfinit que dans /usr/share/squidGuard/db existe un repertoire privileged sources, que ce repertoire contient un fichier texte ips, contenant la liste des ips qu'on veut laisser passer. Il est noter que si le nom des fichiers et des rpertoires n'a aucune importance, les mots iplist et plus loin domains, expressionlist, etc sont eux interprts par squidguard comme dcrivant certains types de contenus et doivent donc figurer tels quels dans le fichier. src privilegedsource { iplist privilegedsource/ips } #Idem pour celles que l'on veut bannir. src bannedsource { iplist bannedsource/ips } s

#Le rseau local src lansource { iplist lansource/lan } # Classes de destination : le contenu des regles de filtrage. On dfinit que dans /usr/share/squidGuard/db existe un rpertoire banned destinations, qui va contenir trois fichiers : l'un dfinit des domaines entiers exclure, l'autres de simples URLs, le troisime des listes d'expressions rgulires. Attention, cette dernire possibilit de filtrage est trs consommatrice en ressources CPU. dest banneddestination { domainlist banneddestination/domains urllist banneddestination/urls expressionlist banneddestination/expressions } #Filtrage de la pub selon le mme principe. dest advertising { domainlist advertising/domains urllist advertising/urls redirect http://127.0.0.1:8444/nulbanner.png log /var/log/squidGuard/advertising.log } # Les ACLs : comment ces rgles s'appliquent elles aux machines qui utilisent le proxy. #On ne filtre que la pub pour les adresses privilgies, et on redirige vers un script CGI, il peut aussi s'agir d'une image servie par un serveur Apache local. acl { privilegedsource { pass !advertising all redirect http://127.0.0.1:8444/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } #Les Ips bannies ne peuvent pas utiliser leproxy. bannedsource { pass none redirect http://127.0.0.1:8444/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u }

#Le rseau local se voit appliquer le filtrage le plus fort lansource { pass !banneddestination !advertising all redirect http://127.0.0.1:8444/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } #Si un autre cas de figure se prsente, le proxy n'est pas utilisable. default { pass none redirect http://127.0.0.1:8444/squidGuard.cgi?clientaddr=%a&srcclass=%s&targetclass=%t&url=%u } }