======Squid / Squidguard====== {{ :informatique:logiciels:squid_logo.jpg|}} [[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. [[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. =====Installation du couple Squid + Squidguard===== Installation : aptitude install squidguard ====Config de Squid==== Réduction du fichier de conf de Squid, un peu trop verbeux : cd /etc/squid/ mv squid.conf squid.conf.orig grep -Ev '^$|^[[:blank:]]*#' squid.conf.orig > squid.conf Personnalisation du squid.conf : # timestamp des logs avec la date "human-readable" logformat squid %tl.%03tu %6tr %>a %Ss/%03>Hs % Les connexions HTTPS utilisent la méthode connect et sont permises par les directives: acl SSLPort 443 4443 8443 acl CONNECT method CONNECT http_access allow CONNECT SSLPort Ajout gestion du FTP (à ajuster selon la conf en place): acl SSL_ports port 21 acl ftp proto FTP http_access allow ftp Tester la conf de Squid et relancer le service si OK : squid -k parse systemctl reload squid ====Ajout de Squidguard==== Editer le fichier dsuid.conf : # conf squidguard url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf url_rewrite_children 4 Copier le template de page d'erreur sur Squidguard : 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 Télécharger et installer des blacklistes : 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 Configurer les blacklistes "porn" dans squidguard.conf : 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 } } Compiler les blacklistes su proxy squidGuard -C all # Vérification : tail -f /var/log/squid/squidGuard.log =====En vrac===== On peut aussi tuner les paramètres suivants (toujours dans le même fichier) : # 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 ====Proxy transparent==== Pour créer un proxy transparent, on peut utiliser la règle de redirection **iptables** suivante sur un routeur : 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 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// : 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 % ====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 : shutdown_lifetime 10 seconds ====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) : debug_options 28,9 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 : cache deny all ... soit de commenter les directives ''cache_dir''. =====Erreurs===== Il se peut qu'il ne se lance pas avec l'erreur suivante : FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname' A ce moment-là il faut compléter le fichier de configuration ''/etc/squid/squid.conf'' par : visible_hostname =====Ressources===== * http://irp.nain-t.net/doku.php/220squid:060_squidguard