Pour installer le proxy SQUID 2.7 + Squidguard 1.2.0 sans authentification, il faut installer les paquets squid, squidguard, squid-common, squid-cgi

sudo apt-get install squid squidguard squid-common squid-cgi

Par défaut, vous aurez dans /etc/squid 2 fichiers de configuration :

squid.conf & squidGuard.conf

Le fichier squid.conf est énormément commenté, je vous conseille de faire un copie de sauvegarde en exécutant :

cd /etc/squid
sudo cp squid.conf squid.conf.old

puis exécuter la commande suivante pour supprimer les commentaires :

sudo sed '/^\#/d' /etc/squid/squid.conf > /etc/squid/squid.conf 

(au cas ou le fichier squid.conf d'origine serait effacé, il est disponible dans le répertoire /usr/share/doc/squid/examples/squid.conf)

Nous obtenons normalement le fichier suivant :

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443          # https
acl SSL_ports port 563          # snews
acl SSL_ports port 873          # rsync
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 Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
icp_access allow localnet
icp_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
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
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
coredump_dir /var/spool/squiddeny manager

Pour rendre squid transparent, il faut modifier la ligne :

http_port 3128

en

http_port 3128 transparent

il faut aussi gérer la redirection vers squidGuard en ajoutant a la fin du fichier squid.conf ces 2 lignes :

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 10

La configuration de Squid est terminée, essayez de lancer squid avec les commandes suivantes :

sudo squid -z

puis :

sudo /etc/init.d/squid start

Pour vérifier que squid a bien démarré, tapez la commande :

ps -A | grep squid

vous devriez obtenir ceci :

xxxx ?        00:00:00 squid
xxxx ?        00:00:00 squid

Sinon allez voir dans les fichiers de logs suivants les erreurs que squid retourne :

less +F /var/log/messages

less +F /var/log/daemon.log

less +F /var/log/squid/cache.log

Nous allons maintenant télécharger une blackliste qui sera ensuite intégrée à squidGuard grâce aux commandes suivantes :

cd ~
wget http://cri.univ-tlse1.fr/blacklists/download/blacklists.tar.gz
sudo tar zxvf blacklists.tar.gz -C /var/lib/squidguard/db/
sudo su
cd /var/lib/squidguard/db
mv blacklists/* .
rm -rf blacklists

il faut maintenant éditer le fichier /etc/squid/squidGuard.conf pour lui insérer sa configuration, mais nous allons faire un copie de sauvegarde avant :

sudo cd /etc/squid
sudo cp squidGuard.conf squidGuard.conf.old

Voici une configuration d'exemple que je vous laisse adapter a vos besoins :

#
# Configuration File for SquidGuard
#

dbhome /var/lib/squidguard/db
logdir /var/log/squid

# ------------------------------------------------------------
# Definition de la base de données de filtrage utilisée
# ------------------------------------------------------------

dest adult {
        domainlist adult/domains
        urllist adult/urls
}

dest publicite {
        domainlist publicite/domains
        urllist publicite/urls
}

dest warez {
        domainlist warez/domains
        urllist warez/urls
}

dest porn {
        domainlist porn/domains
        urllist porn/urls
}

dest violence {
        domainlist violence/domains
        urllist violence/urls
}

# ajoutez ici les thèmes supplémentaires de votre choix présents dans la blacklist de la façon suivante
# dest <nom du thème> {
#        domainlist <nom du thème>/domains
#        urllist <nom du thème>/urls
# }

# ------------------------------------------------------------
# Definition des ACL
# ------------------------------------------------------------

acl {
  default {
# les thèmes supplémentaires sont à ajouter avant le mot-clé all par !<nom du thème>
         pass !porn !adult !publicite !warez !violence all
                 redirect http://roozeec.free.fr/interdiction.html
                   }
                 }
# ------------------------------------------------------------

Il faut désormais que suidGuard construise sa base de données avec la blackliste que nous avons téléchargé :

sudo squidGuard -C all

Pour fonctionner, squid et squidGuard ont besoin d'accès a différents répertoires, pour donner ces accès, nous avons besoin de savoir avec quel utilisateur est lancé le processus squid grâce à la commande suivante (lorsque Squid est démarré) :

ps aux | grep squid

vous devriez obtenir ceci :

root     xxxx  0.0  0.0   4976   672 ?        Ss   18:12   0:00 squid -sY -f /etc/squid/squid.conf
proxy    xxxx  0.0  0.1   7620  5008 ?        S    18:12   0:00 (squid) -sY -f /etc/squid/squid.conf

nous pouvons donc constater ici que squid est lancé avec l'utilisateur “proxy”

Il faut donc donner les accès a l'utilisateur proxy aux répertoires suivants :

/etc/squid /var/log/squid 
/var/spool/squid 
/usr/lib/squid 
/usr/sbin/squid 
/var/lib/squidguard

avec la commande :

sudo chown -R proxy.proxy /etc/squid /var/log/squid /var/spool/squid /usr/lib/squid /usr/sbin/squid /var/lib/squidguard

Il faut maintenant rédémarrer squid avec les commandes :

sudo /etc/init.d/squid stop

puis :

sudo /etc/init.d/squid start

Vous devriez obtenir :

 * Starting Squid HTTP proxy squid                                                                                                                             [OK] 

Vous pouvez vérifier que squid s'est bien lancé à l'aide des commandes citées précedemment.

Si vous souhaitez administrer plus facilement squid et squidGuard, vous pouvez aussi vous servir de webmin et du module squidGuard.

Pour installer webmin, vous pouvez suivre ce tuto :

http://doc.ubuntu-fr.org/webmin

Pour installer le plugin squidGuard compatible avec webmin, il faut télécahreger le module :

cd ~
wget http://www.niemueller.de/webmin/modules/squidguard/squidguard-0.91.2.wbm.gz

lorsque vous êtes connecté à webmin, cliquer sur webmin :

Puis configuration de Webmin et enfin cliquez sur modules webmin :

il faut ensuite aller chercher le module a installer :

puis cliquer sur “installer le module” :

Déconnectez-vous puis reconnectez vous à webmin.

Vous devriez avoir maintenant dans la liste “Serveur proxy Squid” & “SquidGuard”

Pour commencer, il faut cliquer sur “Serveur proxy Squid” puis cliquer sur “configuration du module”

Il faut modifier la ligne “Chemin de l'exécutable 'cachemgr.cgi'” en insérant :

/usr/lib/cgi-bin/cachemgr.cgi

Puis sauvegarder :

Vous pouvez à partir de cette interface graphique configurer les listes d'accès (ACL) et d'autres options des Squid.

Maintenant, si vous cliquez sur “SquidGuard”, vous avez la possibilité de voir la blackliste que nous avons insérer auparavant. cliquez sur “listes noires”

il apparait ici les différentes catégories de sites répertoriés. Si Webmin affiche qu'aucune liste noire n'est présente, il faut exécuter la commande :

ln -s /var/lib/squidguard/db/ /var/lib/squidguard/db/blacklists

puis :

chown proxy.proxy /var/lib/squidguard/db/blacklists

Actualisez l'interface webmin de squidguard et vous devriez voir apparaitre toutes les catégories.