Squidguard est un plugin de filtrage d'URL à associer au programme Squid. Il faut installer et paramétrer le proxy Squid en premier lieu. La procédure est détaillé dans le wiki installer-squid3.
Dans cette note, SquidGuard est installé sur une Debian 12 (bookworm).
apt install -y squidguard{,-doc} /usr/bin/squidGuard -v SquidGuard: 1.6.0 Berkeley DB 5.3.28: (September 9, 2013)
Modifier le fichier de configuration de Squid /etc/squid/squid.conf 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
Valider la syntaxe après modification :
squid -k parse
C'est dans le fichier de configuration /etc/squidguard/squidGuard.conf qu'on va déclarer :
time) ;src) : des adresse IP d’hôtes, de réseaux ou des utilisateurs (si Squid fonctionne en demandant aux utilisateurs de s’authentifier). Désigne les clients du service ;dest) : regroupe les domaines, URL et mots clé.Via les ACLs va pouvoir utiliser les précédentes déclarations pour contrôler l'accès aux différentes listes.
Syntaxe de déclaration d'une plage horaire :
time workhours {
weekly mtwhf 08:00 - 16:30
date *-*-01 08:00 - 16:30
}
Un exemple de déclaration de source
src admin {
ip 1.2.3.4 1.2.3.5
user root foo bar
within workhours
}
Un exemple de liste
dest adult {
domainlist BL/adult/domains
urllist BL/adult/urls
expressionlist BL/adult/expressions
redirect http://admin.foo.bar.de/cgi-bin/blocked.cgi clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u
log adult-access.log
}
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. On peut alors rediriger la requête vers une page statique ou dynamique en spécifiant des variables. 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é.
Ci dessous les variables disponibles lors de la redirection:
| %a | Adresse IP du client. |
|---|---|
| %i | Identifiant utilsateur (RFC931, LDAP or mySQL) ou “unknown” |
| %n | nom de domaine du client ou “unknown” |
| %p | URI de la requête |
| %s | source group du client ou “unknown” |
| %t | target group: la destination évaluée or “unknown”. |
| %u | URL |
# Installation du serveur web apt install -y apache2 # activer les support des scripts CGI a2enmod cgi systemctl restart apache2.service
On utilise le script CGI fournit en exemple :
mkdir -p /srv/proxy/cgi cp /usr/share/doc/squidguard/examples/squidGuard-simple.cgi /srv/proxy/cgi chmod a+x /srv/proxy/cgi/squidGuard-simple.cgi
Exemple de message de redirection :
La ressource demandée n'est pas accessible depuis ce réseau car elle est associée à une catégorie non appropriée.
Après modification du fichier de configuration de SquidGuard, recharger la configuration du service Squid et vérifier les logs
systemctl reload squid.service tail /var/log/squidguard/squidGuard.log
On peut mettre à jour les fichiers .db à l'aide de fichiers .diff
On déclanche le processus de mises à jour des fichiers .db via l'arugment -u :
# L'option -b affiche la barre de progression squidguard -u -b
Le script:
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;