User Tools

Site Tools


informatique:logiciels:squid

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:logiciels:squid [2009/06/08 20:15] – édition externe 127.0.0.1informatique:logiciels:squid [2021/09/24 08:10] (current) – [Désactiver le cache] pteu
Line 1: Line 1:
-{{tag>proxy http}} 
  
-======Squid======+======Squid / Squidguard======
  
-Squid est un proxy libre.+{{ :informatique:logiciels:squid_logo.jpg|}}
  
-Il se peut qu'il ne se lance pas pour cause de :+[[http://www.squid-cache.org/|Squid]] est un proxy libre. Il permet de relayer des requêtes de différents protocoles dont HTTP ou HTTPS après filtrage, QoS ou autre. Par défaut Squid utilise sur le port 3128.
  
-  FATALCould not determine fully qualified hostnamePlease set 'visible_hostname'+[[http://www.squidguard.org/|Squidguard]] est un redirecteur d'URL qui se greffe sur Squid ; il permet notamment de gérer facilement et rapidement des bases de blacklistes.
  
-A ce moment-là il faut, comme indiqué, compléter ''/etc/squid/squid.conf'' par+=====Installation du couple Squid + Squidguard=====
  
-  visible_hostname <n'importe quoi sauf rien>+Installation : 
 +<code bash> 
 +aptitude install squidguard 
 +</code>
  
-En l'état actuel des choses squid se lance sur le port 3128, il faut donc le spécifier dans les propriétés de connexion de votre navigateur.+====Config de Squid====
  
-Il faut maintenant permettre à votre IP d'accéder au serviceet ça se règle dans ''/etc/squid/squid.conf'' vers la ligne 2578En suivant la syntaxe proposée on permet l'accès à tout notre LAN :+Réduction du fichier de conf de Squidun peu trop verbeux : 
 +<code bash> 
 +cd /etc/squid/ 
 +mv squid.conf squid.conf.orig 
 +grep -Ev '^$|^[[:blank:]]*#' squid.conf.orig > squid.conf 
 +</code>
  
-  acl my_lan src 192.168.0.0/24 +Personnalisation du squid.conf : 
-  http_access allow my_lan +<code bash> 
-  [..] +# timestamp des logs avec la date "human-readable" 
-  And finally deny all other access to this proxy +logformat squid %tl.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt 
-  http_access deny all+# permettre aux IPs e notre LAN de sortir ! 
 +acl localnet src 192.168.0.0/16 
 +http_access allow localnet 
 +</code> 
 + 
 +Les connexions HTTPS utilisent la méthode connect et sont permises par les directives: 
 +<code bash> 
 +acl SSLPort 443 4443 8443 
 +acl CONNECT method CONNECT 
 +http_access allow CONNECT SSLPort 
 +</code> 
 + 
 +Ajout gestion du FTP (à ajuster selon la conf en place): 
 +<code bash> 
 +acl SSL_ports port 21 
 +acl ftp proto FTP 
 +http_access allow ftp 
 +</code> 
 + 
 +Tester la conf de Squid et relancer le service si OK : 
 +<code bash> 
 +squid -k parse 
 +systemctl reload squid 
 +</code> 
 + 
 +====Ajout de Squidguard==== 
 + 
 +Editer le fichier dsuid.conf : 
 +<code bash> 
 +# conf squidguard 
 +url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf 
 +url_rewrite_children 4 
 +</code> 
 + 
 +Copier le template de page d'erreur sur Squidguard : 
 +<code bash> 
 +gunzip /usr/share/doc/squidguard/examples/squidGuard-simple.cgi.gz 
 +mv /usr/share/doc/squidguard/examples/squidGuard-simple.cgi /usr/lib/cgi-bin/ 
 +chown www-data:www-data /usr/lib/cgi-bin/squidGuard-simple.cgi 
 +chmod +x /usr/lib/cgi-bin/squidGuard-simple.cgi 
 +</code> 
 + 
 +Télécharger et installer des blacklistes : 
 +<code bash> 
 +cd /var/lib/squidguard/db/ 
 +wget ftp://ftp.univ-tlse1.fr/blacklist/blacklists.tar.gz 
 +tar xzf blacklists.tar.gz 
 +chown -R proxy:proxy blacklists 
 +cd blacklists 
 + 
 +vérifier le contenu de ce qu'on vient de télécharger : 
 +ls -l 
 +</code> 
 + 
 +Configurer les blacklistes "porn" dans squidguard.conf : 
 +<code bash> 
 +dbhome /var/lib/squidguard/db 
 +logdir /var/log/squidguard 
 +src localnet { 
 +        ip 192.168.0.0/16 
 +
 +dest porn { 
 +        urllist         blacklists/porn/urls 
 +        domainlist      blacklists/porn/domains 
 +        expressionlist  blacklists/porn/very_restrictive_expression 
 +
 +acl { 
 + localnet { 
 + pass !porn any 
 +
 + default { 
 + pass     local none 
 + redirect http://127.0.0.1/cgi-bin/squidGuard-simple.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u 
 +
 +
 +</code> 
 + 
 +Compiler les blacklistes 
 +<code bash> 
 +su proxy 
 +squidGuard -C all 
 + 
 +# Vérification : 
 +tail -f /var/log/squid/squidGuard.log 
 +</code> 
 + 
 + 
 +=====En vrac===== 
 + 
 +On peut aussi tuner les paramètres suivants (toujours dans le même fichier) : 
 +<code bash> 
 +# numéro du port d'écoute 
 +http_port 3128 
 +# taille du cache en mémoire vive 
 +# (attention le cache est perdu lors d'un squid reload/restart) 
 +cache_mem 8 MB 
 +# format, emplacement et taille du cache sur le disque 
 +# ici 100 MB de cache dans le fichier /var/spool/squid au format ufs 
 +# 16 et 256 correspondent au nombre de dossiers niveau 1 et niveau 2 utilisés pour le cache 
 +cache_dir ufs /var/spool/squid 100 16 256 
 +</code> 
 + 
 +====Proxy transparent==== 
 + 
 +Pour créer un proxy transparent, on peut utiliser la règle de redirection **iptables** suivante sur un routeur : 
 +<code bash> 
 +iptables -t nat -A PREROUTING -p tcp --dport 80  -j DNAT --to-dest proxyhost:3128 
 +iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-dest proxyhost:3128 
 +</code> 
 +Cela redirige toutes les requêtes HTTP et HTTPS vers le proxy Squid de manière transparente. 
 + 
 + 
 +=====Tips===== 
 + 
 +  * Tester la configuration sans redémarrer le process : ''squid -k parse'' 
 +  * afficher les timestamp des logs au format //human readable// : 
 +<code bash> 
 +cat access.log | perl -p -e 's/^([0-9]*)/"[".localtime($1)."]"/e' 
 + 
 +# ou avec le très bon viewer de logs ccze : 
 +cat access.log | ccze -CA 
 + 
 +# ou modifiant le logformat dans le fichier de conf de squid (/etc/squid/squid.conf) 
 +logformat squid %tl.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt 
 +</code> 
 + 
 +====Lenteur au redémarrage==== 
 + 
 +Squid est long à redémarrer car il attend que les sockets se ferment d'elles-même jusqu'à 30s par défaut, avant de les forcer à se fermer en [[http://www.squid-cache.org/Doc/config/shutdown_lifetime/|envoyant un timeout aux clients]]. Pour baisser ce temps d'attente : 
 +<code bash squid.conf> 
 +shutdown_lifetime 10 seconds 
 +</code> 
 +====Debug==== 
 + 
 +Pour [[https://wiki.squid-cache.org/KnowledgeBase/DebugSections|débugger Squid]], on utilise la directive ''debug_options section,level'' dans le fichier de conf. **section** vaut ALL ou de 0 à 93 ; **level** vaut de 0 à 9, avec 9 le plus verbeux. Les logs de debug seront redirigés vers le cache.log. 
 + 
 +Pour débugguer les ACLs (section 28) : 
 +<code bash squid.conf> 
 +debug_options 28,9 
 +</code> 
 +Redémarrer le service pour activer l'option. Comme toujours, penser à désactiver le debug une fois le soucis réglé, pour ne pas exploser le ''/var/log''
 + 
 +====Désactiver le cache==== 
 + 
 +Pour désactiver le cache il suffit, soit de bloquer le cache avec l'ACL : 
 +<code bash> 
 +cache deny all 
 +</code> 
 +... soit de commenter les directives ''cache_dir''
 +=====Erreurs===== 
 + 
 +Il se peut qu'il ne se lance pas avec l'erreur suivante : 
 +<code bash> 
 +FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname' 
 +</code> 
 + 
 +A ce moment-là il faut compléter le fichier de configuration ''/etc/squid/squid.conf'' par : 
 +<code bash> 
 +visible_hostname <n'importe quoi sauf rien> 
 +</code> 
 + 
 + 
 +=====Ressources===== 
 + 
 +  * http://irp.nain-t.net/doku.php/220squid:060_squidguard
informatique/logiciels/squid.1244492135.txt.gz · Last modified: 2013/10/14 20:55 (external edit)