Ceci est une ancienne révision du document !
Squidguard est un plugin de filtrage d'URL à associer au programme squid. Il faut installer et paramétrer le proxy squid en premier lieu.
$ sudo apt-get install squid
Editer le fichier /etc/squid3/squid.conf
On définit ci-dessous un réseau local lan auquel on donnera le droit d’accès.
acl lan src 192.168.0.0/24
Avant la directive d'interdiction globale, autoriser le réseau lan précédemment déclaré
http_access allow lan http_access deny all
Le démarrage/arrêt/redémarrage dus service squid ce fait via la commande service:
$ sudo service squid3 restart
Pour prendre en compte les modifications du fichier de configuration sans arrêter le service:
$ sudo squid3 -k reconfigure
Le module squidguard permet de filtrer l’accès au contenu web.
$ sudo apt-get install squidguard
A l'installation le fichier de configuration consulte le dossier /var/lib/squidguard/db
Modifier la configuration de squid pour qu'il utilise squidguard:
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf url_rewrite_children 10 startup=0 idle=1 concurrency=0
Modifier le fichier de configuration /etc/squidguard/squidGuard.conf.
Indiquer le répertoire conteneur des listes:
Déclarer les sources
Déclarer les destinations
Déclarer les ACL mettant en relation les sources et des destinations autorisées:
Lorsque une ressource destination non autorisée est demandée, la directive redirect est utilisée par squiGuard. Des fichiers cgi d'exemples sont disponibles sous /usr/share/doc/squidguard/examples. Pour servir ces fichiers cgi, un serveur web doit être installé/fonctionnel. Pour ces modestes besoins lighttpd a été installé.
Le script:
Le mode transparent permet de filtrer les postes clients sans configuration spécifique coté client. Il a cependant ces limites notamment avec https. Le filtrage transparent ne fonctionnera pas pour tous les sites en https qui considéreront une attaque “man in the middle”. Pour que cela fonctionne, des règles de NAT devront autoriser systématiquement le flux https et donc rendre le filtrage inopérant.
Activer le mode transparent en modifiant le fichier de configuration de squid3:
http_port 3128 transparent
Modifier la configuration du système pour autoriser le routage de paquets. La procédure est décrite dans le wiki activer-routage.
Dans les règles présentées ci-dessous:
Règles de bypass du flux https
iptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t filter -A FORWARD -i lan -p tcp --dport 443 -j ACCEPT iptables -t nat -A POSTROUTING -o wan -j SNAT --to-source 192.168.0.254
Règle de NAT rendant squid transparent:
iptables -t nat -A PREROUTING -i lan -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.254:3128 iptables -t nat -A PREROUTING -i wan -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
Les fichiers pac, à placer sur un serveur web permettent de configurer automatiquement le proxy sur le navigateur demandant l'URL (javascript).
function FindProxyForURL(url, host) { if ( isInNet(myIpAddress(), "127.0.0.0", "255.0.0.0") || isInNet(myIpAddress(), "192.168.0.0", "255.255.255.0")) { return "DIRECT"; } else { if (shExpMatch(url, "http:*")) return "PROXY 192.168.1.28:3128" ; if (shExpMatch(url, "https:*")) return "PROXY 192.168.1.28:3128" ; return "DIRECT"; } }
Le mime-type associé au fichiers .pac doit être modifié si nécessaire dans la configuration du serveur web:
application/x-ns-proxy-autoconfig .pac;