Proxy filtrant sur Mac OS X

Parce qu’on a beau vouloir éradiquer Linux et Windows de la maison, y’a quand même des fonctions assurées par le serveur Linux qu’il faut maintenir.

Le proxy filtrant en est une. C’est un dispositif qui me permet de filtrer les urls visitables à la maison. L’inconvénient est qu’il faut absolument configurer un proxy explicite, car le mac mini n’est pas en coupure de l’accès à Internet. Qu’a cela ne tienne, les enfants sont encore trop jeunes pour comprendre de quoi il retourne, donc je configure le proxy explicite sur leurs PC et basta. Mais avant, il faut compiler le truc, parce que Macports et consort, c’est quand même super intrusif. La bonne nouvelle, c’est qu’Apple fournit de base les outils de développements sur le DVD OS X. J’attrape donc mon DVD Leopard (la version d’OS X installée sur mon Mac Mini G4) et j’installe l’environnement de développement. J’attaque ensuite la compilation de Squid. Là c’est super simple, l’admin Unix/Linux que je suis connait très bien les commandes : ./configure && make && sudo make install. C’est aussi simple que cela. Quelques minutes après, j’ai donc un squid tout beau tout neuf fraichement compilé et déposé dans /usr/local/squid. Il convient de faire un peu de configuration, j’édite donc (en root) le fichier /usr/local/squid/etc/squid.conf pour l’adapter à mon réseau : je commente les lignes acl localnet qui ne correspondent pas, et laisse celle qui va bien (192.168.0.0/16) J’ajoute ensuite la ligne visible_hostname pour que squid sache comment il s’appelle. Je peux ensuite démarrer squid par la commande magique /usr/local/squid/sbin/squid -z Squid répond bien sur le port 3128, mais pour l’instant il n’y a aucun filtrage d’aucune sorte, il ne sert que de cache. Pour avoir du filtrage, il faut installer SquidGuard (ou alors customiser finement le filtrage d’url de squid, mais ça c’était ce qu’on faisait quand Squid tournait sur un 486 …). Pour ça, on télécharge squidguard sur le site éponyme. On installe BerkeleyDB qu’on télécharge depuis le site d’Oracle (si si). On complique BerkeleyDB avec les options par défaut (./configure && make && sudo make install fait un très bon boulot). On peut ensuite compiler SquidGuard avec les commandes suivantes : /// ./configure –with-db-inc=/usr/local/BerkeleyDB.4.8/include/ –with-db-lib=/usr/local/BerkeleyDB.4.8/lib/ && make && sudo make install /// Il faut ensuite ajouter les lignes suivantes dans le fichier squid.conf : /// redirect_program /usr/local/bin/squidguard -c /usr/local/squidGuard/squidGuard.conf redirect_children 8 redirector_bypass on /// On peut maintenant passer à la configuration de squidguard. Attention, il y’a du travail : On attaque par le téléchargement des bases d’URL. Pour ça, je me fie aux bases de l’université de Toulouse : [|http://cri.univ-tlse1.fr/documentations/cache/squidguard.html|fr] Un p’tit script très simple va permettre de renseigner le fichier squidGuard.conf avec tout ça : /// for dir in $(find . -type d | sed « s#./##g ») ; do echo « ecriture de la configuration pour $dir  » echo « dest $dir { » >> ../configuration echo « domainlist $dir/domains » >> ../configuration echo « urllist $dir/urls » >> ../configuration echo « } » >> ../configuration done /// Cela génère un fichier appelé configuration dans /usr/local/squidGuard, qu’il faut ensuite merger manuellement avec squidGuard.conf. Puis on peut simplement filtrer les url accessibles ou non depuis les clients, en les nommant comme suit dans squidGuard.conf : foo-clients { pass !in-addr !adult !violence !tricheur any } A partir du moment ou foo-clients correspond bien à votre sous réseau IP, pas de soucis, ça va filtrer. On peut ensuite ajouter squid au démarrage du système. Pour ça, si vous êtes sous Tiger au minimum (enfin si tiger c’est bien la 10.4 … ), vous devez configurer launchd. Pour ça, j’ai rien trouvé de mieux que d’aller chercher sur google, ce qui m’a conduit sur cette page : [|http://nomo17k.wordpress.com/2010/03/22/installing-squid-proxy-server-on-mac-os-x-snow-leopard/|en] La seule différence ici est que j’ai placé squid.plist dans /System/Library/LaunchDaemons, afin que le proxy démarre avec le système, et non avec l’ouverture de la session. Au reboot suivant, pour tester, je me suis rendu compte que squid était bien démarré, mais qu’il n’avait accès à rien au niveau HTTP, pour la bonne raison que quand le service démarre, le réseau n’est pas monté et qu’il n’y a pas les DNS dans /etc/resolv.conf. De ce fait, squid ne sait pas les récupérer, et donc n’a pas accès à Internet. Pour contourner ce problème, j’ai utilisé la ligne dns_nameservers dans /usr/local/squid/etc/squid.conf comme suit : dns_nameservers 208.67.222.222 208.67.220.220 Vous noterez que j’en ai profité pour utiliser les serveurs DNS d’OpenDNS. Une fois ceci fait, j’ai pu tester la protection fournie par la solution, et je me suis rendu compte que j’avais encore un souci, sur lequel je bute pour l’instant : le module squidGuard.cgi déposé dans /Library/WebServer/CGI-Executables/ n’accepte pas les paramètres dans les URL, ce qui conduit à une erreur de syntaxe au niveau du navigateur quand j’essaye d’aller sur un site interdit. Mais bon, le principal est fait …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *