Skip to Content

Installation de Squid et SquidGuard sur une Debian ETCH

But de ce document

Ce document me sert de mémo pour installer Squid et SquidGuard sur une Debian ETCH. Je le diffuse en espérant qu’il puisse servir à d’autres personnes.

Pré-requis

Avoir installé une Debian de Base :

  •  cf mon autre document sur ce sujet : http://www.coagul.org/article.php3 ?id_article=158

    Installation Squid

    Paquet à installer :

    # aptitude install squid

    Configuration de Squid

    Fichier de configuration de Squid :

    /etc/squid/squid.conf

    Le fichier de configuration de Squid comporte de nombreuses pages (surtout des commentaires), mais il y a très peu de choses à changer pour le faire fonctionner.

    Personnellement, j’ai supprimé les commentaires après avoir fait une copie de sauvegarde du fichier d’origine :

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

    Rechercher la partie concernant la déclaration des acl et ajouter une ligne correspondante à la configuration du réseau :

    acl VotreDomaine src 192.168.0.0/255.255.255.0

    Ensuite, quelques lignes plus bas avant la dernière ligne « http_access deny all » ajouter la ligne suivante :

    http_access allow  VotreDomaine

    Redémarrer le serveur pour prendre en compte les modifications :

    /etc/init.d/squid restart

    Configuration du poste client

    Dans la partie configuration du proxy, il faut indiquer le nom ou l’adresse IP du proxy et le port par défaut 3128.

    Il est possible de désactiver le cache du navigateur en le mettant à 0 car celui du proxy est suffisant.

    Il est possible aussi d’indiquer une liste de serveurs accessibles sans passer par le proxy (ex : Intranet)

    Vérification du fonctionnement

    La commande suivante permet de surveiller les logs du proxy pour vérifier que tout fonctionne correctement :

    tail - f /var/log/squid/access.log

    Problème pour accéder aux serveurs internes

    Si sur votre réseau, vous avez des serveurs Web accessibles par exemple à l’adresse « monserveur », vous allez certainement rencontrer ce message si vous tentez d’y accéder en passant par squid :

    The requested URL could not be retrieved

    Unable to determine IP address from host name for { intranet }

    Pour résoudre ce problème, il y a trois solutions :

  •  Ajouter dans la configuration du proxy de votre navigateur le nom de votre serveur pour qu’il n’utilise pas Squid
  •  Ajouter le nom de votre domaine dans l’URL pour accéder à votre serveur : http://monserveur.mondomaine.net
  •  Configurer « Squid » pou qu’il ajoute automatiquement le nom de votre domaine aux urls en ajoutant cette ligne dans « squid.conf » :

    append_domain .mondomaine.net

    Remarque : Après chaque modification du fichier « squid.conf », il faut recharger la configuration :

    /etc/init.d/squid reload

    Modifier la taille du cache

    Si votre disque dur dispose de suffisant de place, vous pouvez augmenter la taille du cache de Squid.

    Pour cela, il faut ajouter ou modifier cette ligne dans « squid.conf » :

    cache_dir ufs /var/spool/squid 1024 256 256

    Voici la signification des différentes valeurs :

  •  Type de stockage
  •  Emplacement du cache
  •  Taille totale du cache en MB
  •  Nombre de répertoires de niveau 1 et de niveau 2

    Ensuite, il faut initialiser le cache avec ces commandes :

    # /etc/init.d/squid stop
    # squid -z
    # /etc/init.d/squid start

    Remarque : Vous pouvez vérifier que l’arborescence est correctement créée dans « /var/spool/squid ».

    Comment créer un cache supplémentaire

    Pour augmenter les performances de squid, il faut répartir les caches sur le maximum de disques. Si le serveur comporte deux disques, il est donc conseillé de créer un nouveau cache sur ce deuxième disque. Voici la procédure à suivre pour créer ce nouveau cache :

    Création du répertoire sur le deuxième disque (ex : /sdb1) :

    # mkdir /sdb1/squid

    Affectation des mêmes droits que le répertoire du premier cache « /var/spool/squid » créé lors de l’installation :

    # chmod 750 /sdb1/squid
    # chown proxy.proxy /sdb1/squid  

    Ligne à ajouter dans « /etc/squid/squid.conf » pour paramétrer le nouveau cache :

    # cache_dir ufs /sdb1/squid 200 16 256

    Commandes pour initialiser le nouveau cache (Création des sous-répertoires) :

    # /etc/init.d/squid stop
    # squid -z
    # /etc/init.d/squid start

    Optimisation des performances

    Il est possible de modifier quelques variables dans « squid.conf » pour optimiser les performances du cache :

    Taille maximum de mémoire vive utilisée pour stocker du cache :

    cache_mem 128 MB

    Taille maximum des objets stockés dans le cache :

    maximum_object_size 15 MB

    Utilisation illimitée de la bande passante :

    delay_parameters 1 -1/-1 -1/-1

    Installation de SquidGuard

    Paquets à installer :

    # aptitude install squidguard

    Récupération de la liste des sites sensibles :

    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/* .
    /usr/bin/squidGuard -C all
    chown -R proxy: /var/lib/squidguard/db/

    ATTENTION : Si les bases de données ne sont pas générées ou les droits incorrectes au lancement de squid, squidGuard va monopoliser toute la puissance du serveur et la seule solution sera de tuer les processus de squidGuard avec par exemple cette commande :

    # kill `ps aux | grep squidGuard | grep -v grep | awk '{print $2}' | xargs`

    ATTENTION : Le temps de compilation des blacklists avec la commande « squidGuard -C all » est très long (plus de 10mn)

    Ajouter les deux lignes suivantes dans /etc/squid/squid.conf

    redirect_program /usr/bin/squidGuard
    redirect_children 10

    J’ai commencé par épurer le fichier de configuration de SquidGuard :

    # cd /etc/squid/

    # mv squidGuard.conf squidGuard.conf.sav
    # cat squidGuard.conf.sav | grep -v ^# | grep -v ^$ > squidGuard.conf                        

    J’ai ajouté les lignes suivantes dans /etc/squid/squidGuard.conf pour filtrer les sites adultes :

    dest adult {
           domainlist      adult/domains
           urllist         adult/urls
           expressionlist  adult/expressions
           redirect        http://votresite/interdit.html
    }

    acl {
           default {
                   pass     !adult
                   redirect http://votresite/interdit.html
           }
    }

    Redémarrer le serveur pour prendre en compte les modifications :

    /etc/init.d/squid restart

    Exemple complet et commenté du fichier /etc/squid/squid.conf

    # Le fichier de configuration fourni par défaut sous Debian
    # est très long et contient énormément de commentaires.
    # -> Cette version est épurée de tous les commentaires

    # Pas d'infos sur ces lignes
    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    no_cache deny QUERY

    # Taille maximum de mémoire vive utilisée pour stocker du cache
    cache_mem 16 MB
    # Taille maximum des objets stockés dans le cache
    maximum_object_size 15 MB

    # Paramétrage du cache N°1 sur le premier disque
    # - Type de stockage
    # - Emplacement du cache
    # - Taille totale du cache en MB
    # - Nombre de répertoires de niveau 1 et de niveau 2
    cache_dir ufs /var/spool/squid 200 16 256

    # Paramétrage du cache N°2 sur le deuxième disque
    cache_dir ufs /mnt/sdb1/squid 200 16 256

    # Format des logs :
    # -> Avec off, squid utilise son propre format de logs,
    #    mais la date et l'heure ne sont pas lisible.
    # -> Avec on, squid utilise le format standard CLF
    emulate_httpd_log off

    # Ces deux lignes permettent d'intégrer le plugin SquidGuard
    redirect_program /usr/bin/squidGuard
    redirect_children 4

    # Pas d'infos sur ces lignes
    refresh_pattern ^ftp:                1440        20%        10080
    refresh_pattern ^gopher:        1440        0%        1440
    refresh_pattern .                0        20%        4320

    # **********************************************************
    # ** Définition des restrictions pour l'accès au cache    **
    # **********************************************************

    # Liste des acl par défaut -> A conserver
    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl to_localhost dst 127.0.0.0/8
    acl SSL_ports port 443 563        # https, snews
    acl SSL_ports port 873                # rsync
    acl Safe_ports port 80                # http
    acl Safe_ports port 21                # ftp
    acl Safe_ports port 443 563        # https, snews
    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

    # ACL qui définit le réseau utilisant le cache
    acl MonReseau src 192.168.0.0/255.255.255.0

    # Accès par défaut -> A conserver
    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localhost

    # Donne accès au cache au réseau
    http_access allow  MonReseau

    # Interdit tout le reste
    http_access deny all

    # Autorise les réponses pour tout le monde (par défaut)
    http_reply_access allow all
    # Autorise le protocole icp pour tout le monde (par défaut)
    icp_access allow all

    coredump_dir /var/spool/squid

    Proxy transparent avec Squid et Shorewall

    Dans « /etc/shorewall/rules » il faut ajouter cette ligne pour rediriger le port 3128 sur le port 80 sauf pour les adresses internes

    REDIRECT  loc:192.0.0.16  3128  tcp    www        -            !192.168.0.0/24

    De plus, il faut configurer Squid pour activer le mode transparent en ajoutant cette ligne au fichier « /etc/squid/squid.conf » :

    http_port 3128 transparent

    ATTENTION : Pour l’accès à certains site https via ssl, il est nécessaire d’indiquer le proxy dans la configuration du navigateur pour que ça fonctionne

    Installation de Webalizer

    Webalizer permet de générer des graphiques à partir des fichiers de logs d’Apache, de serveur FTP ou de Squid.

    Installation :

    # aptitude install webalizer

    Ensuite, il faut modifier les lignes suivantes du fichier « /etc/webalizer/webalizer.conf  » :

    LogFile  /var/log/squid/access.log

    LogType squid

    Cette commande permet d’exécuter l’analyse des logs :

    # webalizer

    Le résultat de l’analyse est stocké par défaut dans « /var/www/webalizer »

    Remarques :

  •  Une analyse sera exécuté automatiquement tous les soirs par le script « /etc/cron.daily/webalizer »
  •  Pour analyser plusieurs fichiers de logs, il faut créer plusieurs fichiers de configuration dans « « /etc/webalizer  »

    Liens pour avoir plus d’informations

    Document très complet, récent et surtout en français sur la configuration de Squid :

  •  http://igm.univ-mlv.fr/ dr/XPOSE2003/Squid/

    Site officiel de Squid :

  •  http://www.squid-cache.org/

    Historique des modifications

    Version Date Commentaire
    0.1 25/11/04 Création par Tony GALMICHE
    0.2 03/12/04 Mise à jour
    0.3 06/01/05 Mise à jour suite à installation serveur Pentium Pro 200
    0.4 14/01/05 Ajout des chapitres « Exemple complet et commenté du fichier /etc/squid/squid.conf », « Comment créer un cache supplémentaire » et « Liens pour avoir plus d’informations »
    0.5 26/01/09 Mise à jour suite à installation sur nouveau serveur
  • Commentaires

    > Installation de Squid et SquidGuard sur une Debian Testing

    bonjour,

    est ce que quelqu’un sait si on peut faire de la résolution inverse comme avec les virtualhosts pour apache2 ?
    et si oui comment on peut faire ?

    > Installation de Squid et SquidGuard sur une Debian Testing

    Merci ! Merci ! Merci !

    Installation de Squid et SquidGuard sur une Debian Testing

    Merci pour cet article, qui m’a bien servi.

    J’avais besoin de mettre en place un squid rapidemment, et c’est vraiment top de l’installer a 18h le soir et d’avoir un truc parfaitement op le lendemain matin pour tout le monde au bureau !

    Installation de Squid et SquidGuard sur une Debian Testing

    bonjour

    peut etre :
    http://cri.univ-tlse1.fr/documentations/cache/squidguard.html

    mais il faut faire un paquet debian

    Installation de Squid et SquidGuard sur une Debian Testing

    Bonjour,

    Je sais que ce paquet n’est plus maintenu, mais je n’ai pas encore eu le temps de trouver une autre solution. De plus, en terme de filtrage, c’est toujours mieux que rien.

    Mais si tu as une bonne adresse à me donner pour remplacer le paquet "chastity-list", je suis preneur.

    Installation de Squid et SquidGuard sur une Debian Testing

    Bonjour,

    excellent article, merci. J’entend dire autours de moi que chastity-list n’est plus mis à jour. d’ailleurs le paquet debian n’existe plus dans etch. voilà, mes deux sous.

    Philippe

    Installation de Squid et SquidGuard sur une Debian Testing

    Je voudrais savoir si dans le fichier
    tail -f /var/log/squid/access.log, il est pmossible d’avoir le nom des postes plutot que leur adresse ip. J’ai un serveur dns mais je ne sais pas si cela est possible.

    > Installation de Squid et SquidGuard sur une Debian Testing

    J’ai juste oublié de préciser que le fichier squidGuard-chastity.conf se trouve dans /etc/chastity/

    > Installation de Squid et SquidGuard sur une Debian Testing

    Exellent article qui me dépanne dès que j’ai besoin de remettre le nez dans squid.
    Juste un a-parté pour préciser qu’il existe un fichier d’exemple "squidGuard-chastity.conf" qu’il suffit de copier dans /etc/squid/squidGuard.conf pour obtenir une config très propre de ce fichier qui supporte mal les fautes de Casse.
    Ce site est très instructif et de grande qualité, Je vous encourage à continuer ces documentations.

    > Installation de Squid et SquidGuard sur une Debian Testing

    J’ai corrigé le problème avec l’espace et merci pour les informations complémentaires.