Serveur proxy Squid3 et SquidGuard 1. Prérequis & installation Une adresse fixe le paquet wget, squid3 et squidguard apt-get install wget squid3 squidguard Il faut ensuite créer les répertoires suivants : mkdir /var/cache/squid/ mkdir /var/lib/squid Donner les droits aux répertoires créés : chmod 700 /var/cache/squid3 chmod 700 /var/lib/squid3 Il faut changer le propriétaire de ces dossiers pour que ce soit le proxy : chown -R proxy /var/cache/squid3 chown -R proxy /var/lib/squid3 Une fois cela fait, on va télécharger l'archive contenant les sites, les URLs à bloquer : wget ftp://ftp.ut-capitole.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz On déplace ensuite l'archive dans /var/lib/squidguard/ et on le décompresse : mv blacklists.tar.gz /var/lib/squidguard/ cd /var/lib/squidguard/ tar xvf blacklists.tar.gz Très important : on donne aussi les droits à ces dossiers pour le proxy : chown -R proxy /var/lib/squidguard 2. Configuration simple de Squid On va ensuite configurer un Squid tout simple, pour cela fait une une sauvegarde de votre fichier de configuration et créer en un nouveau squid.conf : root@proxy:/var/lib/squidguard# cd /etc/squid3/ root@proxy:/etc/squid3# mv squid.conf squid.conf.save root@proxy:/etc/squid3# touch squid.conf On édite ensuite le fichier : vi squid.conf : Ne pas mettre les commentaires, je les ai mis juste pour expliquer les différentes options du squid.conf. Mettre des commentaires peut faire buguer votre configuration!!
Nous allons maintenant éditer le fichier mot_bannis avec des mots. Ces mots, si ils apparaissent dans une URL, bloqueront alors la page. Ce n'est pas du «blocage» d'url, cela sera fait avec SquidGuard. Vi /var/lib/squid3/mot_bannis On redémarre le service squid3, on renseigne le proxy avec le port défini dans le fichier de configuration dans les options de votre navigateur ou de votre système (sous linux notamment) : puis on teste une page contenant l'un de nos mots interdits : service squid3 restart On teste ensuite avec un client que cela fonctionne :
3. Une configuration un peu plus poussée Nous allons maintenant gérer l'authentification d'utilisateur (avec une méthode simple par contre). Pour cela on va créer un répertoire contenant les utilisateurs : touch /etc/squid3/users Changer bien sûr le propriétaire et changer les droits : chown root:proxy /etc/squid3/users/ chomd 640 /etc/squid3/users Puis pour gérer les mots de passes, nous allons installer le paquet apache2-utils qui permet l'utilisation de la commande htpasswd : apt-get install apache2-utils Maintenant, nous allons créer un mot de passe pour l'utilisateur «test» : htpasswd -m /etc/squid3/users test L'option -m permet de forcer le cryptage du mot de passe (pour plus d informations sur les options de la commande MAN)
Pour tester que tout s'est bien passé utiliser la commande : /usr/lib/squid3/ncsa_auth /etc/squid3/users <login> <mdp> Il faut maintenant ajouter quelques lignes à votre fichier de configuration : vi /etc/squid3/squid.conf http_access deny mots_interdit http_access deny!safe_ports auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/users auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours acl ncsa_users proxy_auth REQUIRED http_access allow ncsa_users http_access deny!ncsa_users http_access allow lan http_access deny all Comme vous pouvez le voir, j'ai rajouter les lignes entre deux directives : http_access deny!safe_ports http_access allow lan Cela a son importance : l'ajout de règles se fait selon un certain ordre pour éviter qu'une règle en bloque une autre. Par exemple si j'avais ajouté les règles pour l'authentification après http_access deny all, elles ne seraient jamais appliquées (http_access deny all bloque toutes connexions qui n'ont aucun rapport avec les règles définies avant elle). Les options permettent un maximum de 5 utilisateurs, il va afficher un message pour se connecter et la connexion est ensuite valable pour 2 heures, l'utilisateur devra ensuite se relogguer. On redémarre le proxy puis nous allons de nouveau tester notre nouvelle configuration via un client : service squid3 restart
4. Configuration de SquidGuard SquidGuard est un logiciel qui va bloquer des URLs ou des noms de domaine. Il a deux grands principes de fonctionnement à SquidGuard : On décide de bloquer des sites : une blacklist On décide d'autoriser que certains sites pour lesquels nous savons qu'il n'y aucun problème (par exemple autoriser que des sites gouvernementaux ou de l'éducation national) : une whitelist La configuration pour une whitelist est plus ou moins la même : nous allons renseigner des domaines et des urls dans un fichier et nous autoriserons que l'accès à ces URLs, tout le reste est bloqué. La blacklist étant l'inverse, nous allons bloquons à un tas d'urls (suivant un thème) et on autorise tout le reste. Nous allons configurer SquidGuard pour une blacklist :
mv/etc/squidguard/squidguard.conf /etc/squidguard/squidguard.conf.save root@proxy:/etc/squid3# touch /etc/squidguard/squidguard.conf root@proxy:/etc/squid3# vi /etc/squidguard/squidguard.conf dbhome /var/lib/squidguard/blacklists/ logdir /var/log/squidguard src lan { ip 192.168.0.0/24 dest adult { domainlist dating/domains urllist dating/urls redirect http://www.google.fr/ dest porn { domainlist porn/domains urllist porn/urls redirect http://www.google.fr/ acl { lan { pass!adult!porn all redirect http://www.google.fr/ default { pass none On définit le répertoire de nos blacklists, et notre fichier de log. (2 premières lignes) On définit ensuite les différents objets : les réseaux auxquels on veut appliquer des règles, les sites à bloquer. Puis via les acl nous définissons pour chaque réseau les règles de navigation. Par exemple pour le LAN, les sites de rencontre sont bloqués (!adult), sites à caractère pornographique aussi (!porn) puis nous autorisons le reste (all) L'option redirect permet de définir une page de redirection (ici www.google.com) Il faut maintenant activer la liste des sites interdits : squidguard -C all Cela peut être long. Une fois cela fini, nous allons ajouter à la configuration de Squid une ligne pour que SquidGuard soit utilisé par squid : redirect_program /usr/bin/squidguard -c /etc/squidguard/squidguard.conf
On redémarre, et on teste avec un client une URL présente dans les acl (dans mon cas meetic.com par exemple) : Qui devrait renvoyer vers Il se peut qu'il y ait un problème de droit pendant le redémarrage de Squid/SquidGuard, aller voir vos logs /var/log/squidguard/squidguard.log et si c'est bien un problème de droits, taper alors ces deux commandes : chown -R proxy /var/lib/squidguard/db chown -R proxy /var/libsquidguard/blacklists Pour aller un peu plus loin : Si vous vouliez définir une whitelist, il aurait fallu créer les fichiers domains et urls dans un dossier /var/lib/squidguard/blacklists/white (Par exemple), y mettre les urls et les noms de domaine qui sont autorisés puis créer une configuration de ce genre : dbhome /var/lib/squidguard/blacklists/ logdir /var/log/squidguard
src lan { ip 192.168.0.0/24 dest whitelist { domainlist white/domains urllist white/urls acl { lan { pass whitelist none redirect http://www.google.fr/ default { pass none