33.5. Le fichier de configuration /etc/squid/squid.conf

Vous devez effectuer tous les réglages du serveur proxy Squid dans le fichier /etc/squid/squid.conf. Pour pouvoir démarrer Squid la première fois, aucune modification n'est nécessaire, mais dans un premier temps l'accès est interdit aux clients externes. Le serveur proxy est accessible à localhost. C'est le port 3128 qui est utilisé par défaut. Vous trouverez des explications complètes des options et de nombreux exemples dans le fichier /etc/squid/squid.conf préinstallé. Presque toutes les lignes sont précédées d'un signe # (les lignes sont mises en commentaire) et les réglages correspondants se trouvent en fin de ligne. Les valeurs indiquées correspondent presque toujours aux valeurs par défaut, si bien que la suppression du signe de commentaire sans modifier le paramètre de l'option n'a, à quelques exceptions près, aucun effet. Il est donc préférable de conserver l'exemple en l'état et de recopier l'option avec le paramètre modifié sur la ligne en-dessous. Vous pouvez ainsi distinguer sans problème les valeurs prédéfinies et les modifications qui y sont apportées.

[Tip]Adapter le ficher de configuration après une mise à jour

Si vous avez effectué une mise à jour à partir d'une version plus ancienne de Squid, il est recommandé d'utiliser le nouveau fichier /etc/squid/squid.conf et de ne reprendre que les modifications du fichier précédent. Si vous essayez de continuer à utiliser l'ancien squid.conf, vous courez le risque que votre configuration ne fonctionne plus, parce que les options sont parfois modifiées et que de nouvelles sont ajoutées.

33.5.1. Quelques options de configuration générales

http_port 3128

C'est le port sur lequel Squid écoute les demandes des clients. La valeur par défaut est 3128, mais 8080 est également fréquemment utilisé. Il est possible d'indiquer ici plusieurs numéros de port en les séparant par des espaces.

cache_peer nom_hote type port_proxy port_icp

Saisissez ici un serveur proxy de niveau supérieur, par exemple lorsque vous souhaitez utiliser celui de votre fournisseur d'accès. Indiquez dans nom_hote le nom et l'adresse IP du serveur proxy à utiliser et comme type, parent. Indiquez dans port_proxy le numéro de port du gestionnaire du serveur parent qui doit être utiliser dans le navigateur, en général 8080. Réglez port_icp à 7 ou 0 si vous ne connaissez pas le port ICP du parent ou si l'utilisation de celui-ci n'a pas été convenue avec le fournisseur d'accès. Vous devez encore préciser default et no-query après le numéro de port pour empêcher complètement l'utilisation du protocole ICP. Squid se comporte alors comme un navigateur normal vis-à-vis du serveur proxy du fournisseur d'accès.

cache_mem 8 MB

Cette déclaration indique la taille maximale de la mémoire centrale utilisée par Squid pour les caches. La valeur par défaut est 8 Mo.

cache_dir ufs /var/cache/squid 100 16 256

La déclaration cache_dir indique le répertoire dans lequel tous les objets sont stockés sur le disque. Les nombres derrière indiquent l'espace disque maximal à utiliser en « Mo » et le nombre des répertoires dans les premier et deuxième niveaux. Ne modifiez pas le paramètre ufs. L'espace disque défini par défaut est de 100 Mo dans le répertoire /var/cache/squid, soit 16 sous-répertoires contenant chacun environ 256 répertoires. Lorsque l'on indique l'espace disque à utiliser, il faut prévoir suffisamment de marge. Des valeurs comprises entre 50 et 80 pour cent du disque disponible sont raisonnables, 80 pour cent étant un maximum. N'augmentez les deux derniers valeurs c'est-à-dire le nombre de répertoires qu'avec la plus grande précaution, dans la mesure où trop de répertoires peuvent également avoir des répercussions sur la performance. Si vous disposez de plusieurs disques sur lesquels répartir le cache, insérez autant de lignes cache_dir que nécessaire.

cache_access_log /var/log/squid/access.log

Chemin des fichiers journaux

cache_log /var/log/squid/cache.log

Chemin des fichiers journaux

cache_store_log /var/log/squid/store.log

Chemin des fichiers journaux

Ces trois déclarations indiquent les chemins d'accès où Squid consigne ses actions dans des journaux. Si Squid doit être fortement sollicité, il peut être judicieux de répartir le cache et les fichiers journaux sur différents disques.

emulate_httpd_log off

Si vous réglez ce paramètre à on, vous obtiendrez des fichiers journaux lisibles. Certains programmes n'arrivent toutefois pas à les exploiter.

client_netmask 255.255.255.255

Cette déclaration permet de masquer les adresses IP enregistrées dans les fichiers journaux et ainsi de dissimuler l'identité des clients. Si vous indiquez 255.255.255.0 ici, le dernier chiffre de l'adresse IP est mis à zéro.

ftp_user Squid@

Vous pouvez définir ici le mot de passe que Squid doit utiliser pour une connexion FTP anonyme. Il peut être intelligent d'indiquer ici une adresse électronique valable car certains serveurs FTP en vérifient la validité.

cache_mgr adresse

Une adresse électronique à laquelle Squid envoie un message lorsqu'il s'arrête de manière inattendue. L'adresse par défaut est webmaster.

logfile_rotate 0

Squid peut effectuer une rotation des fichiers journaux sécurisés si vous lancez la commande squid -k rotate. Les fichiers sont à cet effet numérotés et lorsque la valeur spécifiée est atteinte, les fichiers les plus anciens sont écrasés. Cette valeur est par défaut fixée à 0, car l'archivage et la suppression des fichiers journaux dans SUSE LINUX est effectué par une tâche cron propre configurée dans le fichier /etc/logrotate/squid.

append_domain domaine

Avec append_domain, vous pouvez indiquer quel domaine doit être automatiquement ajouté lorsqu'aucun n'est spécifié. On indique ici la plupart du temps son propre domaine et il suffit alors de saisir www dans le navigateur pour accéder à son propre serveur web.

forwarded_for on

Si vous réglez ce paramètre à off, Squid retire les adresses IP et les noms de machine des clients contenus dans les requêtes HTTP.

negative_ttl 5 minutes; negative_dns_ttl 5 minutes

Vous n'avez normalement pas besoin de modifier ces valeurs. Si toutefois vous disposez d'une liaison commutée, il se peut que l'Internet ne puisse parfois pas être joint. Squid note les demandes qui ont échoué et refuse ensuite de procéder à de nouvelles requêtes même si la connexion Internet a été rétablie. Dans ce cas, vous devez remplacer minutes par seconds puis, en cliquant sur recharger dans le navigateur, la connexion devrait être rétablie après quelques secondes.

never_direct allow nom_acl

Si vous souhaitez empêcher que Squid n'interroge directement l'Internet, utilisez la commande ci-dessus pour forcer l'utilisation d'un autre serveur proxy. Vous devez avoir au préalable saisi celui-ci sous cache_peer. Si vous indiquez all en tant que nom_acl, vous forcez le transfert de toutes les demandes au parent. Cela peut être utile, par exemple, si vous passez par un fournisseur d'accès qui exige que vous utilisiez son serveur proxy, ou si le pare-feu n'autorise aucun accès direct à l'Internet.

33.5.2. Options liées au contrôle d'accès

Squid propose un système détaillé pour gérer l'accès au serveur proxy. L'utilisation d'ACL (listes de contrôle d'accès) permet de le configurer facilement et complètement. Il s'agit de listes de règles traitées en séquence. Vous devez commencer par définir des ACL pour pouvoir les utiliser. Quelques ACL usuelles telles que all et localhost sont déjà disponibles. La définition d'une ACL en soi n'a cependant aucun effet. Ce n'est qu'une fois réellement installée en relation avec http_access qu'une règle définie est appliquée.

acl nom_acl type donnees

Pour définir une ACL, il faut au moins trois informations. Vous pouvez choisir son nom nom_acl librement. Pour le type, vous pouvez choisir parmi un large éventail de possibilités que vous pouvez consulter dans la section ACCESS CONTROLS du fichier /etc/squid/squid.conf. Les données, donneesdépendent du type de l'ACL et peuvent également être lues depuis un fichier, il peut par exemple s'agir de noms d'ordinateur, d'adresses IP ou d'URL. En voici quelques exemples simples :

acl mes_surfeurs srcdomain .mon_domaine.com
acl professeur src 192.168.1.0/255.255.255.0
acl etudiants src 192.168.7.0-192.168.9.0/255.255.255.0
acl midi time MTWHF 12:00-15:00
http_access allow nom_acl

Utilisez http_access pour définir qui est autorisé à utiliser le serveur proxy et à quoi il peut accéder sur l'Internet. Pour ce faire, saisissez des ACL qui interdiront l'accès avec deny ou l'autoriseront avec allow ; localhost et all ont déjà été définis plus haut. Vous pouvez créer ici une liste comprenant plusieurs déclarations http_access ; ainsi, selon ce qui se produit en premier, l'accès à l'URL demandée sera ou non autorisé. La dernière déclaration doit toujours être http_access deny all. Dans l'exemple suivant, localhost, c'est-à-dire l'ordinateur local a un accès libre à tout, tandis que tout est complètement bloqué pour tous les autres :

http_access allow localhost
http_access deny all

Encore un exemple dans lequel sont utilisées les ACL définies précédemment : le groupe professeurs a tout le temps accès à l'Internet, tandis que le groupe etudiants n'y a accès que du lundi au vendredi et seulement pendant la pause de midi :

http_access deny localhost
http_access allow professeurs
http_access allow etudiants midi time
http_access deny all

Pour des raisons de clarté, n'insérez dans la liste vos propres déclarations http_access qu'à l'endroit prévu à cet effet dans le fichier /etc/squid/squid.conf. Cela signifie entre le texte

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR 
# CLIENTS

et la déclaration finale

http_access deny all
redirect_program /usr/bin/squidGuard

Vous pouvez utiliser cette option pour indiquer un redirecteur, comme squidGuard, qui est en mesure de bloquer l'accès aux URL indésirables. Il est donc possible de gérer individuellement l'accès à l'Internet de différents groupes d'utilisateurs à l'aide de l'authentification sur le serveur proxy et des ACL adaptées. squidGuard est un paquetage indépendant que l'on peut installer et configurer.

auth_param basic program /usr/sbin/pam_auth

Si les utilisateurs doivent s'authentifier auprès du serveur proxy, vous pouvez indiquer ici un programme responsable de l'authentification, comme pam_auth. Lorsque pam_auth est utilisé, une fenêtre d'authentification s'ouvre lors de sa première tentative de connexion, dans laquelle l'utilisateur doit saisir son nom d'utilisateur et son mot de passe. Vous avez besoin, en outre, d'une ACL supplémentaire pour n'autoriser que les clients disposant d'un login valable à naviguer sur l'Internet :

acl password proxy_auth REQUIRED

http_access allow password
http_access deny all

Vous pouvez remplacer le mot-clé REQUIRED après proxy_auth par une liste de noms d'utilisateurs autorisés ou par le chemin d'accès à cette liste.

ident_lookup_access allow nom_acl

Cette option permet qu'une demande d'identification soit adressée à tous les clients définis à l'aide d'ACL pour vérifier l'identité de chaque utilisateur. Si vous attribuez à nom_acl la valeur all, cela s'applique de manière générale à tous les clients. De plus, un démon ident doit fonctionner sur tous les clients. Pour cela, installez sous Linux le paquetage pidentd. Sous Windows, il existe un logiciel gratuit pouvant être téléchargé sur l'Internet. Pour que seuls soient autorisés les clients dont la recherche d'identité a réussi, il faut ici définir une ACL correspondante :

acl identhosts ident REQUIRED

http_access allow identhosts
http_access deny all

Vous pouvez ici aussi remplacer le terme REQUIRED par une liste de noms d'utilisateurs autorisés. L'utilisation d'ident peut considérablement ralentir l'accès dans la mesure où la recherche d'identité est répétée en entier à chaque demande.


SUSE LINUX Guide de l'administrateur 9.2