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. 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é.L'ACL va pouvoir utiliser les précédentes déclarations pour contrôler l'accès au contenu des listes pour les différentes sources.
Syntaxe de déclaration des plages horaires :
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
}
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 |
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;