Installation et Configuration de Squid et SquidGuard sous Debian 7 Table des matières Installation et Configuration de Squid et SquidGuard...1 Squid...2 squid.conf...2 SquidGuard...4 squidguard.conf...4 Blacklists...5
Squid Tout d abord commencer par exécuter ces deux commandes : # apt-get update # apt-get upgrade Maintenant installer Squid : # apt-get install squid3 Il faut sauvegarder le fichier de configuration de base de squid avant de l éditer : # cp /etc/squid3/squid.conf /etc/squid3/squid.conf.old Il faut enlever les lignes vides et lignes de commentaires : # cat squid.conf.old egrep -v -e '^[[:blank:]]*# ^$' > squid.conf Maintenant éditer le fichier squid.conf : # nano /etc/squid3/squid.conf squid.conf acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny!safe_ports http_access deny CONNECT!SSL_ports http_access allow localhost http_access deny all http_port 3128 coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/ \?) 0 0% 0 refresh_pattern.
Il faut ensuite définir les acl et les autoriser afin que le proxy soit accessible depuis votre réseau local qui sera filtré : acl LAN src 192.168.29.0/24 acl admin src 192.168.29.1 acl blockdomain dstdomain.facebook.com.nba.fr acl blockregex url_regex jeu http_access allow admin http_access deny blockdomain http_access deny blockregex http_access allow LAN acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny!safe_ports http_access deny CONNECT!SSL_ports http_access allow localhost http_access deny all http_port 3128 transparent coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/ \?) 0 0% 0 refresh_pattern. 0 20% 4320 logformat squid %tl.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt cache_dir ufs /var/spool/squid3 1024 256 256 cache_mem 128 MB maximum_object_size 15 MB J ai donc rajouté les acl suivantes : LAN : définit le réseau local Admin : définit l adresse IP du poste admin Blockdomain : définit les noms de domaines bloqués
Blockregex : définit les sites contenant «jeu» dans leur url Egalement rajouter «transparent» à la fin de la ligne http_port 3128 Ensuite il faut définir les accès http, les bloquer ou les autoriser ; c est à vous de mettre ce que vous voulez afin de bloquer ce qui vous semble nécessaire. Et nous terminons sur la définition des logs et des caches afin de perfectionner les réglages de squid. SquidGuard Pour commencer installer squidguard : # apt-get install squidguard Ensuite il faut enlever les lignes en commentaires qui sont dans le fichier de configuration de squidguard : # cat /etc/squidguard/squidguard.conf.default egrep -v -e '^[[:blank:]]*# ^$' > /etc/squidguard/squidguard.conf squidguard.conf dbhome /var/lib/squidguard/db logdir /var/log/squidguard time workhours { weekly mtwhf 08:00-16:30 date *-*-01 08:00-16:30 src admin { ip 1.2.3.4 1.2.3.5 user root foo bar within workhours src foo-clients { ip 172.16.2.32-172.16.2.100 172.16.2.100 172.16.2.200 src bar-clients { ip 172.16.4.0/26 dest good { dest local { dest porn { acl { admin { pass any foo-clients within workhours { pass good!in-addr!porn any
else { pass any bar-clients { pass local none default { pass local none redirect http://admin.foo.bar.de/cgibin/blocked.cgi?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t &url=%u Blacklists Il nous faut maintenant télécharger les blacklists : # mkdir /var/lib/squidguard/db/blacklists # cd /var/lib/squidguard/db/blacklists Nous allons prendre les blacklists de l université de Toulouse. # wget ftp://ftp.ut-capitole.fr/pub/reseau/cache/squidguard_contrib/audiovideo.tar.gz # tar xvzf audio-video.tar.gz # rm audio-video.tar.gz Voilà maintenant que les blacklists sont décompressées ; nous pouvons passer à la configuration de squidguard. Il faut maintenant rajouter à squid la ligne qui lui permet d invoquer squidguard à la fin du fichier squid.conf : url_rewrite_program /usr/bin/squidguard -C /etc/squidguard/squidguard.conf Il faut redémarrer squid : # service squid3 restart Il faut ensuite donner les droits d utilisation de ce dossier à l utilisateur proxy : # chown -R proxy:proxy blacklists/ Maintenant il faut générer les bases Berckley : # su proxy
# squidguard -C all d Nous pouvons voir que les bases ont été correctement générées : Ainsi ces fichier générés en «.db» sont visibles dans /var/lib/squidguard/db/blacklists/audiovideo/domains.db et urls.db Voilà squidguard est maintenant opérationnel, il ne reste plus qu à mettre en place la partie proxy http transparent : # nano /etc/squid3/squid.conf Il faut modifier la ligne contenant http_port 3128 pour y rajouter transparent à la fin. http_port 3128 transparent Maintenant on peut enlever les paramètres de proxy côté clients, pour cela aller dans Options Internet/Connexion/Paramètres Réseaux et décocher l utilisation d un proxy.
Sauf que si vous avez testé comme ça, les pages web ne vont pas s afficher ou elles ne vont pas être filtrées. C est tout à fait normal car il n y a pas encore de redirection dans le pare-feu du port 80 vers le port 3128, ce qui fait que les paquets passent ou non selon les paramètres du pare-feu mis en place précédemment. Redirection du flux http (80) vers le port du proxy 3128 : iptables -t nat -A PREROUTING -i eth1 -p TCP --dport 80 -j REDIRECT --to-port 3128 Maintenant les postes sont obligés dans un premier temps à passer par le proxy.