Squid et SquidGuard

Squid

réf : http://www.squid-cache.org/Versions/v3/3.0/cfgman/
      http://irp.nain-t.net/doku.php/220squid:start

       http://www.coagul.org/article.php3?id_article=184
       http://www.linux-france.org/prj/edu/archinet/systeme/ch40.html

Un VPS nommé cache.iut-rodez.fr est créé sur truffade.
Squid et Squidguard sontinstallés dessus.

apt-get install squid3 squidguard

Configuration de Squid

Le fichier de configuration de Squid étant extrêmement verbeux à cause des commentaires, on en fait une copie non commentée plus accessible en modification :

cd /etc/squid/
mv squid.conf squid.conf.sav
cat squid.conf.sav | grep -v ^# | grep -v ^$ > squid.conf

dans /etc/squid3/squid.conf, on va respectivement :

  • déclarer nos réseaux internes (administratifs et étudiants), puis autoriser les accès depuis ces réseaux,
  • déclarer l'endroit où sera stocké le cache sur disque et sa taille (ici : 2 Go répartis dans deux niveaux de 256 répertoires),
  • ajuster quelques paramètres sur le cache en RAM, les limites de régénération du cache, les limites de taille des objets.


acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
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

# définition des ACL de l'IUT
acl reseau_admin src 192.168.0.0/24
acl reseau_etudiant src 10.0.0.0/8


http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# application des ACL de l'IUT
http_access allow localhost
http_access allow reseau_admin
http_access allow reseau_etudiant


http_access deny all
icp_access deny all
htcp_access deny all

http_port 8080
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid3/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
visible_hostname cache.iut-rodez.fr
icp_port 3130
coredump_dir /var/spool/squid3

# Tuning pour truffade
cache_dir ufs /var/spool/squid3 2048 256 256
maximum_object_size 50 MB
maximum_object_size_in_memory 32 KB
cache_swap_low 96
cache_swap_high 98
cache_mem 682 Mb



Pour activer le cache sur disque et les paramètres de limite de RAM  :
/etc/init.d/squid3 stop
squid3 -z
/etc/init.d/squid3 start

Configuration de SquidGuard

Attention : SquidGuard, dans l'installation par défaut, se retrouve dans /etc/squid, et non dans /etc/squid3. Idem pour les logs de SquidGuard qui sont dans /var/log/squid.

On n'oublie pas pour commencer de donner l'accès en écriture à l'utilisateur proxy sur le log de squidGuard :
chown -R proxy: /var/log/squid

On récupère les blacklists tenues à jour à UT1 et on les installe au bon endroit :
cd
wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
tar zxvf blacklists.tar.gz -C /var/lib/squidguard/db/

cd /var/lib/squidguard/db
mv blacklists/* .

On s'assure de donner les droits ad hoc sur les fichiers pour SquidGuard :

chown -R proxy: /var/lib/squidguard/db/

On demande à Squid d'utiliser SquidGuard en ajoutant à la fin de /etc/squid3/squid.conf ceci :
# utilisation de SquidGuard
redirect_program /usr/bin/squidGuard
redirect_children 20

On épure un peu le fichier de configuration de SquidGuard en gardant une copie de l'original :
cd /etc/squid/
mv squidGuard.conf squidGuard.conf.sav
cat squidGuard.conf.sav | grep -v ^# | grep -v ^$ > squidGuard.conf  

On compile en tant que 'proxy' (ça peut prendre une dizaine de minutes) :
su proxy
/usr/bin/squidGuard -C all

On peut vérifier que la compilation s'est bien passée :
tail -f /var/log/squid/squidGuard.log

On édite enfin une configuration minimale de SquidGuard  (filtrage porn, jeux, téléchargements, blogs, warez) :
time workhours {
    weekly mtwhf 08:00 - 16:30
    date *-*-01  08:00 - 16:30
}
dest good {
}
dest local {
}
dest adult {
       domainlist      adult/domains
       urllist         adult/urls
       expressionlist  adult/very_restrictive_expression
}
dest telechargement {
    domainlist     filehosting/domains
    urllist        filehosting/urls
}
dest hacking {
    domainlist     hacking/domains
        urllist        hacking/urls
}
dest jeu {
        domainlist     games/domains
        urllist        games/urls
}
dest controle {
        domainlist     remote-control/domains
        urllist        remote-control/urls
}
dest tricheur {
        domainlist     tricheur/domains
        urllist        tricheur/urls
}
dest warez {
        domainlist     warez/domains
        urllist        warez/urls
    expressionlist warez/expressions
}
dest blog {
        domainlist     blog/domains
        urllist        blog/urls
}

acl {
       default {
               pass     !adult !controle !hacking !jeu !tricheur !warez !telechargement !blog any
               redirect http://lamp.iut.rdz/interdit.html
       }
}


Et on relance Squid :
/etc/init.d/squid3 stop
/etc/init.d/squid3 start
Comments