Outils pour utilisateurs

Outils du site


netadmin:filtrage-web-squidguard

Ceci est une ancienne révision du document !


Filtrage du web avec SquidGuard

:TODO_DOCUPDATE:

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).

Installation

apt install -y squidguard{,-doc}
 
 
/usr/bin/squidGuard -v
SquidGuard: 1.6.0 Berkeley DB 5.3.28: (September  9, 2013)

Configuration

Configuration Squid

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

Configuration SquidGuard

C'est dans le fichier de configuration /etc/squidguard/squidGuard.conf qu'on va déclarer :

  • les plages horaires (time) ;
  • les sources (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 ;
  • les listes (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

Redirection

# 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

Mise à jour des listes

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

Script de mise à jour des listes

Le script:

  • Récupère les liste maintenues par l'académie sous forme d'archive.
  • Décompresse l'archive et donne les droit a l'utilisateur proxy.
  • Lance la construction des bases Berkeley DB

Configuration des clients

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;

Références

netadmin/filtrage-web-squidguard.1763593830.txt.gz · Dernière modification : 2025/11/19 23:10 de yoann