Configurer Squid comme serveur proxy
ArticleCategory: [Choose a category, do not translate
this]
SystemAdministration
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in en D.S.
Oberoi
en to fr Paul Delannoy
AboutTheAuthor:[A small biography about the author]
D.S. Oberoi vit � Jammu, aux Indes et rencontre des probl�mes r�currents
pour se connecter � Internet, suite aux tensions politiques.
Abstract:[Here you write a little summary]
Linux est devenu synonyme de mise en r�seau. Il est utilis� aussi bien au
bureau qu'� la maison comme serveur de fichiers, d'impression, de courrier ou
d'applications et il est de plus en plus souvent serveur "proxy".
Un serveur "proxy" permet de partager un acc�s Internet entre
plusieurs utilisateurs avec une seule connexion. Un bon serveur proxy
propose �galement un m�canisme de cache des requ�tes, qui permet d'acc�der
aux donn�es en utilisant les ressources locales au lieu du web, r�duisant les
temps d'acc�s et la bande passante consomm�e. Squid est un logiciel de cette
cat�gorie, qui autorise le proxy, le cache des protocoles HTTP, ftp, gopher, etc.
Il supporte �galement SSL, les contr�les d'acc�s, le cache de DNS et
fournit une trace compl�te (log) de toutes les requ�tes. Squid
est aussi disponible pour Windows NT chez Logi Sense.
L'objet de cet article est de proposer des lignes directrices pour la
configuration d'un serveur proxy et les moyens de fournir un
acc�s contr�l� aux utilisateurs.
ArticleIllustration:[This is the title picture for your
article]
ArticleBody:[The article body]
Squid est-il install� ?
Le fichier rpm Squid est inclus dans la distribution RedHat 7.1 et
s'installe automatiquement si l'option r�seau est s�lectionn�e.
La commande rpm ci-dessous permet de v�rifier sa pr�sence :
rpm -q squid
La derni�re version de Squid est toujours disponible sur la page Squid et ses sites miroirs.
Squid peut �tre install� sur un syst�me par la commande :
rpm -ivh squid-2.3.STABLE4-10.i386.rpm
Configurer Squid
Le fonctionnement et le comportement de Squid sont g�r�s par les
indications de configuration figurant dans le fichier squid.conf; ce
fichier est en g�n�ral plac� dans le r�pertoire /etc/squid. Pr�parer
ce fichier est une op�ration de longue haleine, car il comporte de
nombreuses pages, mais chaque option est accompagn�e d'explications
pr�cises.
La premi�re chose � d�finir est la valeur http_port, qui sp�cifie le
num�ro de port que Squid va �couter pour satisfaire les requ�tes des
clients; c'est par d�faut 3128, mais ce peut �tre une autre valeur
� votre convenance. En m�me temps que ce num�ro de port, vous pouvez
pr�ciser l'adresse IP de la machine qui ex�cute Squid; par exemple :
http_port 192.168.0.1:8080
Cette d�claration lie Squid � l'adresse IP 192.168.0.1 sur le port 8080.
Tout num�ro de port est utilisable; mais assurez-vous qu'aucune autre
application n'utilise le port choisi. Des lignes semblables permettent
de d�clarer d'autres ports pour d'autres services.
Contr�le d'acc�s
Les possibilit�s de contr�ler l'acc�s � Internet sont nombreuses, comme
limiter cet acc�s � des plages horaires particuli�res, fournir des
informations depuis le cache, autoriser seulement certains sites ou groupes de
sites, etc... Squid dispose pour ces contr�les de deux types de composants :
les �l�ments ACL (Access Control List) et la liste d'acc�s.
Une liste d'acc�s, autorise ou refuse l'acc�s au service.
Ci-dessous quelques uns des plus importants �l�ments ACL
- src : Source c-�-d. l'adresse IP du client
- dst : Destination c-�-d. l'adresse IP du serveur
- srcdomain : Source c-�-d. le nom de domaine du client
- dstdomain : Destination c-�-d. le nom de domaine du serveur
- time : Heure du jour et jour de la semaine
- url_regex : Expression r�guli�re d�crivant une cat�gorie d'URL
- urlpath_regex: Expression r�guli�re d�crivant un ensemble d'URL
sans le protocole ni le nom d'h�te
- proxy_auth : Proc�d� externe d'authentification d'un utilisateur
- maxconn : Nombre maximum de connexions pour une adresse IP cliente
Pour activer le contr�le, il faut d'abord d�finir un ensemble d'ACL et ensuite
y appliquer des r�gles. Le format d'une ACL suit la syntaxe
acl acl_element_name type_of_acl_element
values_to_acl
Note :
- acl_element_name peut �tre n'importe quel nom attribu� par
l'utilisateur � un �l�ment ACL.
- Deux �l�ments distincts ne peuvent avoir le m�me nom.
- Chaque ACL est une liste de valeurs. Pendant la v�rification, les
valeurs multiples utilisent un OU logique. Autrement dit un �l�ment ACL
correspond si l'une des valeurs est reconnue.
- Tous les �l�ments ACL ne sont pas utilisables avec tous les types de
listes d'acc�s.
- Diff�rents �l�ments ACL occupent plusieurs lignes et Squid les amalgame
en une seule liste.
Diff�rentes listes d'acc�s sont disponibles. Celles que nous utiliserons
sont d�crites ci-dessous
- http_access: Autorise les clients HTTP � acc�der au port HTTP.
C'est l'ACL primaire.
- no_cache: D�finit le cache pour les r�ponses aux requ�tes
Une r�gle de liste d'acc�s comporte les mots allow ou deny; ce qui autorise
ou refuse un service pour un �l�ment ACL particulier ou pour un groupe
d'�l�ments.
Note:
- Les r�gles sont v�rifi�es dans l'ordre o� elles ont �t� �crites
et se terminent d�s qu'une correspondance a �t� �tablie.
- Une ACL peut comporter plusieurs r�gles.
- Si aucune correspondance n'est trouv�e, l'action par d�faut est
l'inverse de la derni�re r�gle de la liste; il est donc pr�f�rable
d'�tre explicite sur l'action par d�faut.
- Tous les �l�ments d'une m�me entr�e d'acc�s sont associ�s par un ET
s'ex�cutant de la mani�re suivante
http_access Action statement1 AND (ET) statement2 AND (ET) statement
OR (OU).
http_access Action statement3
Des r�gles multiples de http_access sont compar�es par des OU alors que les
r�gles d'une entr�e d'acc�s sont associ�es par des ET.
- Rappelez-vous que les r�gles sont lues de haut en bas.
Retour � la configuration
Par d�faut, Squid ne fournit aucun acc�s aux clients et vous devez
modifier les contr�les pour le leur donner. Il faudra au moins une r�gle
pour autoriser l'acc�s. Dans le fichier squid.conf allez jusqu'� la ligne
http_access deny all, et ins�rez les lignes suivantes au-dessus:
acl mynetwork 192.168.0.0/255.255.255.0
http_access allow mynetwork
mynetwork est le nom ACL et la ligne suivante est la r�gle qui s'applique.
192.168.0.0 d�signe l'adresse r�seau dont le masque correspond � 255.255.255.
mynetwork est le nom du groupe de machines du r�seau et la r�gle suivante
autorise l'acc�s aux clients. Ces modifications et la d�finition de la valeur
http_port suffisent � rendre Squid op�rationnel. Vous pouvez le lancer par la
commande
service squid start
Note :
Squid peut aussi �tre lanc� automatiquement au d�marrage du syst�me en
l'activant dans ntsysv ou setup (System Service Menu). Apr�s toute
modification de squid.conf, le processus Squid doit �tre arr�t�, puis
red�marr� pour que la nouvelle configuration soit prise en compte.
Ces deux �tapes s'effectuent par les commandes suivantes
- service squid restart ou
- /etc/rc.d/init.d/squid restart
Configuration d'une machine cliente
Puisque le service fourni utilise un port particulier du serveur, les
machines clientes doivent bien s�r �tre configur�es en cons�quence. Nous
supposons que ces machines sont d�j� connect�es sur le r�seau local (avec une
adresse IP valide) et sont capables d'�tablir un 'ping' vers le serveur
Linux.
Pour Internet Explorer
- Aller dans Outils -> Options Internet
- S�lectionner l'onglet Connexion puis cliquer sur R�seau Local
- Cocher Serveur Proxy et entrer l'adresse IP de celui-ci et le num�ro
de port sur lequel il �coute les requ�tes (http_port address).
Pour Netscape Navigator
- Aller dans Edition -> Pr�f�rences -> Avanc�es ->
Proxies.
- Cocher le bouton Configuration manuelle du proxy.
- Cliquer sur le bouton Afficher&
- Entrer l'adresse IP du serveur proxy et le num�ro de port sur lequel
il �coute les requ�tes (http_port address).
Utiliser le contr�le d'acc�s
Les contr�les d'acc�s et les r�gles multiples offrent une grande souplesse
dans le contr�le des acc�s clients � Internet. Des exemples tr�s courants
sont donn�s ci-dessous; cela ne signifie pas du tout que ce soient les
seuls disponibles.
-
Autoriser l'acc�s � Internet � certaines machines
acl allowed_clients src 192.168.0.10
192.168.0.20 192.168.0.30
http_access allow allowed_clients
http_access deny !allowed_clients
Seules les machines dont l'adresse IP est �gale � 192.168.0.10, 192.168.0.20 et 192.168.0.30
ont acc�s � Internet et les autres (dont l'adresse n'est pas list�e) se voient
refuser ce service.
-
Restreindre l'acc�s selon les heures et les jours
acl allowed_clients src
192.168.0.0/255.255.255.0
acl regular_days time MTWHF 10:00-16:00
http_access allow allowed_clients regular_days
http_access deny allowed_clients
Tous les clients du r�seau 192.168.0.0 peuvent acc�der � Internet du Lundi au
Vendredi de 10h du matin � 4h de l'apr�s-midi.
-
Plusieurs plages horaires selon le client
acl hosts1 src 192.168.0.10
acl hosts2 src 192.168.0.20
acl hosts3 src 192.168.0.30
acl matin time 10:00-13:00
acl lunch time 13:30-14:30
acl soir time 15:00-18:00
http_access allow host1 matin
http_access allow host1 soir
http_access allow host2 lunch
http_access allow host3 soir
http_access deny all
La r�gle ci-dessus donne l'acc�s � la machine host1 aux heures du matin et du
soir; mais host2 et host3 n'acc�dent, respectivement, qu'� l'heure du
repas de midi et aux heures du soir.
Note:
Tous les �l�ments figurant dans la m�me entr�e d'acc�s sont associ�s par un ET
et ex�cut�s de la mani�re suivante
http_access Action statement1 AND (ET) statement2 AND (ET) statement OR
(OU)
Des r�gles multiples de http_access sont compar�es par des OU alors que les
r�gles d'une entr�e d'acc�s sont associ�es par des ET;
pour cette raison la r�gle
http_access allow host1 matin soir
ne fonctionnerait jamais (soir ET matin) puisqu'elle ne serait jamais
v�rifi�e.
-
Interdire des sites
Squid peut interdire l'acc�s � un site ou des sites qui contiennent tel
ou tel mot. Ceci peut �tre obtenu ainsi
acl allowed_clients src
192.168.0.1/255.255.255.0
acl banned_sites url_regex abc.com *()(*.com
http_access deny banned_sites
http_access allow allowed_clients
De la m�me fa�on, il est possible de bloquer l'acc�s � partir d'un mot,
par ex. dummy, fake
acl allowed_clients src
192.168.0.1/255.255.255.0
acl banned_sites url_regex dummy fake
http_access deny banned_sites
http_access allow allowed_machines
Etablir ici la liste des sites et des mots � proscrire n'est gu�re
pratique; cette liste peut �tre �tablie s�par�ment (ici dans
banned.list dans le r�pertoire /etc) et le m�canisme ACL viendra lire
les informations n�cessaires aux blocages d�sir�s.
acl allowed_clients src
192.168.0.1/255.255.255.0
acl banned_sites url_regex "/etc/banned.list"
http_access deny banned_sites
http_access allow allowed_clients
-
Pour optimiser l'usage
Squid peut limiter le nombre de connexions d'une machine cliente
gr�ce � l'�l�ment maxconn. Pour l'utiliser, activer d'abord la
fonction client_db.
acl mynetwork 192.168.0.0/255.255.255.0
acl numconn maxconn 5
http_access deny mynetwork numconn
Note:
l'ACL maxconn utilise la comparaison "inf�rieur �". Elle s'active
lorsque le nombre de connexion est plus grand que la valeur donn�e. C'est
pourquoi elle n'est pas utilis�e avec la r�gle http_access allow.
-
Mise en cache des donn�es
La r�ponse � une requ�te est mise en cache imm�diatement, ce qui est
excellent dans le cas des pages statiques. Il n'est pas n�cessaire de cacher
cgi-bin ou Servlet : on utilisera pour cela l'�l�ment ACL no_cache.
acl cache_prevent1 url_regex cgi-bin /?
acl cache_prevent2 url_regex Servlet
no_cache deny cache_prevent1
no_cache deny cache_prevent2
-
D�finir vos propres messages d'erreur
Chaque r�gle deny offre la possibilit�, gr�ce � l'option deny_info de
d�finir un message d'erreur. Tous les messages par d�faut de Squid sont
plac�s dans le r�pertoire /etc/squid/errors. Le r�pertoire d'erreurs peut
�tre chang� par l'option error_directory. Vous pouvez aussi personnaliser
les messages existants.
acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex abc.com *()(*.com
http_access deny banned_sites
deny_info ERR_BANNED_SITE banned_sites
http_access allow allowed_clients
Dans cet exemple, une tentative d'acc�s aux sites bannis entra�ne un
message sp�cial. Le fichier de nom ERR_BANNED_SITE doit bien s�r exister
dans le r�pertoire des erreurs. Ce fichier doit �tre au format HTML.
Ces exemples ne montrent qu'une petite partie des possibilit�s d'ACL;
pour en voir d'autres allez sur la Foire Aux Questions du serveur
Squid pour d'autres informations et des explications sur les autres �l�ments ACL.
Fichiers de trace (Log)
Tous les 'logs' de Squid se trouvent dans le r�pertoire /var/log/squid; il y
a des logs pour le cache, les acc�s et l'utilisation du disque. Le fichier
access.log garde trace des requ�tes des clients, de leur activit�, et fournit
une ligne pour chaque requ�te HTTP& ICP re�ue par le serveur proxy,
adresse IP du client, m�thode d'interrogation, URL demand�e, etc. Les
donn�es de ce fichier peuvent �tre analys�es pour disposer d'information sur
les acc�s. Des programmes comme sarg, calamaris, Squid-Log-Analyzer sont disponibles
pour analyser ces donn�es et g�n�rent des rapports (au format HTML). Ces
rapports peuvent �tre �tablis par utilisateurs, adresses IP, sites visit�s,
etc.
Les options suivantes permettent de modifier la destination de ces fichiers
de trace :
cache_access_log pour access.log
cache_log pour cache.log
cache_store_log pour store.log (gestion du stockage)
pid_filename nom indiquant l'ID du processus Squid
M�thodes d'authentification
La configuration par d�faut de Squid ne demande aucune identification
des utilisateurs. Pour authentifier ces derniers, c-�-d. pour n'autoriser
que les utilisateurs valides (depuis n'importe quelle machine du r�seau)
� acc�der � Internet, Squid s'appuiera sur un programme externe, pour lequel
un nom d'utilisateur et un mot de passe sont requis. Ceci est obtenu par
proxy_auth ACL et authenticate_program; qui forcent un utilisateur � donner
son nom et son mot de passe avant d'autoriser l'acc�s. Ces programmes sont
nombreux, et parmi eux on trouve
- LDAP : se base sur le protocole Linux Lightweight Directory Access
- NCSA : utilise un fichier de noms d'utilisateur et de mots de passe de
style NCSA
- SMB : utilise un serveur SMB comme SAMBA ou Windows NT
- MSNT : utilise l'authentification de domaine Windows NT
- PAM : utilise les modules Linux "Pluggable Authentication Modules"
- getpwam : utilise le fichier passwd de Linux.
Vous indiquerez votre choix gr�ce � l'option authenticate_program.
Assurez-vous d'abord que le programme choisi est install� et fonctionne
correctement.
Les modifications dans squid.conf devraient maintenant contenir le
m�me programme d'authentification /usr/local/bin/pam_auth
acl pass proxy_auth REQUIRED
acl mynetwork src 192.168.0.1/255.255.255.0
http_access deny !mynetwork
http_access allow pass
http_access deny all
Le programme d'authentification PAM est utilis� et chaque utilisateur doit
s'authentifier avant d'acc�der � Internet.
Des options comme authenticate_ttl et authenticate_ip_ttl permettent aussi
de modifier le comportement du processus d'authentification, c-�-d de forcer
la revalidation du nom d'utilisateur et du mot de passe.
R�f�rences
Cet article se contente d'effleurer la partie visible de l'iceberg Squid;
pour plus ample information, visitez ces sites web :