Outils pour utilisateurs

Outils du site


netadmin:filtrage-web-squidguard

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
netadmin:filtrage-web-squidguard [2017/12/29 14:15] – créée yoannnetadmin:filtrage-web-squidguard [2025/11/19 23:13] (Version actuelle) yoann
Ligne 3: Ligne 3:
 ====== Filtrage du web avec SquidGuard ====== ====== Filtrage du web avec SquidGuard ======
  
-===== Installation du proxy =====+: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.+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 [[netadmin:proxy:squid:installer-squid3]]. 
 + 
 +Dans cette note, SquidGuard est installé sur une Debian 12 (bookworm). 
 + 
 + 
 +===== Installation =====
  
 <code bash> <code bash>
-$ sudo apt-get install squid +apt install -y squidguard{,-doc}
-</code>+
  
-===== Configuration de squid ===== 
  
-Editer le fichier **/etc/squid3/squid.conf**+/usr/bin/squidGuard -v 
 +SquidGuard: 1.6.0 Berkeley DB 5.3.28: (September  9, 2013) 
 +</code>
  
-On définit ci-dessous un réseau local **lan** auquel on donnera le droit d’accès. 
-<file> 
-acl lan src 192.168.0.0/24 
-</file> 
  
-Avant la directive d'interdiction globale, autoriser le réseau **lan** précédemment déclaré +===== Configuration =====
-   +
-<file> +
-http_access allow lan +
-http_access deny all +
-</file>+
  
-===== Contrôle du service ===== 
  
-Le démarrage/arrêt/redémarrage dus service squid ce fait via la commande **service**:+==== Configuration Squid ====
  
-<code> +Modifier le fichier de configuration de Squid ''/etc/squid/squid.conf'' pour qu'il utilise SquidGuard:
-$ sudo service squid3 restart +
-</code>+
  
-Pour prendre en compte les modifications du fichier de configuration sans arrêter le service:+<file> 
 +url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf 
 +url_rewrite_children 10 startup=0 idle=1 concurrency=0 
 +</file> 
 + 
 +Valider la syntaxe après modification :
  
 <code bash> <code bash>
-$ sudo squid3 -k reconfigure+squid -k parse
 </code> </code>
  
-===== Filtrage ===== 
  
-Le module squidguard permet de filtrer l’accès au contenu web.+==== Configuration SquidGuard ====
  
-<code bash> 
-$ sudo apt-get install squidguard 
-</code> 
  
-A l'installation le fichier de configuration consulte le dossier /var/lib/squidguard/db+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é.
  
-Modifier la configuration de squid pour qu'il utilise squidguard: 
-<file> 
-url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf 
-url_rewrite_children 10 startup=0 idle=1 concurrency=0 
-</file> 
  
-Modifier le fichier de configuration **/etc/squidguard/squidGuard.conf**.+Via les ACLs va pouvoir utiliser les précédentes déclarations pour contrôler l'accès aux différentes listes.
  
-Indiquer le répertoire conteneur des listes:+ 
 +Syntaxe de déclaration d'une plage horaire :
 <file> <file>
 +time workhours { 
 +  weekly mtwhf 08:00 - 16:30 
 +  date *-*-01  08:00 - 16:30 
 +}
 </file> </file>
  
-Déclarer les sources+Un exemple de déclaration de source
 <file> <file>
 +src admin {
 +  ip      1.2.3.4  1.2.3.5
 +  user    root foo bar
 +  within    workhours
 +}
 </file> </file>
  
-Déclarer les destinations+Un exemple de liste
 <file> <file>
 +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 
 +  
 +}
 </file> </file>
  
Ligne 77: Ligne 85:
 </file> </file>
  
-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é.+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:
-  +
-===== Script de mise à jour des listes =====+
  
-Le script: +^ % | Adresse IP du client | 
-  * Récupère les liste maintenues par l'académie sous forme d'archive. +^ %i | Identifiant utilsateur (RFC931, LDAP or mySQL) ou "unknown"  
-  * Décompresse l'archive et donne les droit l'utilisateur proxy+^ %n | nom de domaine du client ou "unknown"
-  * Lance la construction des bases Berkeley DB+^ %p | URI de la requête | 
 +^ %s | source group du client ou "unknown"
 +^ %t | target group: la destination évaluée or "unknown". | 
 +^ %u | URL    | 
  
  
-===== Rendre le proxy transparent =====+===== Redirection =====
  
-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. +<code bash> 
 +# Installation du serveur web 
 +apt install -y apache2
  
-==== Configurer squid ====+# activer les support des scripts CGI 
 +a2enmod cgi 
 +systemctl restart apache2.service 
 +</code>
  
-Activer le mode transparent en modifiant le fichier de configuration de squid3:+On utilise le script CGI fournit en exemple :
  
-<file+<code bash
-http_port 3128 transparent  +mkdir -p /srv/proxy/cgi 
-</file>+cp /usr/share/doc/squidguard/examples/squidGuard-simple.cgi /srv/proxy/cgi 
 +chmod a+x /srv/proxy/cgi/squidGuard-simple.cgi 
 +</code>
  
-Modifier la configuration du système pour autoriser le routage de paquets. La procédure est décrite dans le wiki [[netadmin:linux:activer-routage]].+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.
  
-==== Règles iptables ==== 
  
-Dans les règles présentées ci-dessous: +Après modification du fichier de configuration de SquidGuard, recharger la configuration du service Squid et vérifier les logs
-  * **lan** est le nom de l'interface écoutant sur le LAN +
-  * **wan** est le nom de l'interface reliée à Internet +
-  * **192.168.0.254** est l'adresse sur le LAN du serveur+
  
 +<code bash>
 +systemctl reload squid.service
  
-Règles de bypass du flux https+tail /var/log/squidguard/squidGuard.log 
 +</code> 
 + 
 + 
 +===== 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''** :
  
 <code bash> <code bash>
-iptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT +# L'option -b affiche la barre de progression 
-iptables -t filter -A FORWARD -i lan -p tcp --dport 443 -j ACCEPT +squidguard --b
-iptables -t nat -A POSTROUTING -o wan -j SNAT --to-source 192.168.0.254+
 </code> </code>
  
-Règle de NAT rendant squid transparent+ 
-<code> +===== Script de mise à jour des listes ===== 
-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 +Le script
-</code>+  * 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 ===== ===== Configuration des clients =====
Ligne 150: Ligne 176:
 application/x-ns-proxy-autoconfig .pac; application/x-ns-proxy-autoconfig .pac;
 </code> </code>
 +
  
  
Ligne 160: Ligne 187:
   * http://stackoverflow.com/questions/2601400/squidiptables-how-do-i-allow-https-to-pass-through-and-bypassing-squid   * http://stackoverflow.com/questions/2601400/squidiptables-how-do-i-allow-https-to-pass-through-and-bypassing-squid
   * http://www.pihomeserver.fr/2015/09/01/un-controle-parental-grace-au-raspberry-pi-squid-et-squidguard/   * http://www.pihomeserver.fr/2015/09/01/un-controle-parental-grace-au-raspberry-pi-squid-et-squidguard/
 +  * http://squidguard.org/Doc/redirect.html
 +  * https://dsi.ut-capitole.fr/documentations/cache/squidguard.html
 +  * https://memo-linux.com/installer-un-proxy-squid-et-un-filtrage-avec-squidguard-sous-debian/
 +  * [[https://wiki.ncad.fr/index.php?title=SquidGuard|Filtrage web avec SquidGuard (ncad.fr)]]
 +  * https://httpd.apache.org/docs/current/fr/howto/cgi.html
netadmin/filtrage-web-squidguard.1514556932.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)