Installation d`un service mandataire (Proxy SQUID) Installer Squid

Transcription

Installation d`un service mandataire (Proxy SQUID) Installer Squid
Installation d’un service mandataire (Proxy SQUID)
∎ Serveur mandataire et serveur de cache
Le serveur mandataire (proxy) est une machine souvent physiquement située entre un réseau et son accès à
Internet. Il fait office à la fois de passerelle pour l’accès à Internet et de cache de pages web.
– Passerelle, parce que tous les accès à Internet passent par le Proxy,
– Cache, parce que le Proxy conserve en mémoire cache (sur disque), une copie des pages consultées par les
utilisateurs du réseau. Cela évite de télécharger à nouveau la même page sur le site d’origine, si un utilisateur
revient fréquemment dessus.
Si un hôte du réseau demande l’adresse d’un noeud distant situé sur un autre réseau, et que cet hôte passe par
un srevice proxy, le proxy va renvoyer à l’hôte sa propre adresse Ethernet. Une fois cette opération réalisée, tous les
paquets envoyés par l’hôte seront à destination de l’adresse Ethernet du proxy. Le proxy aura en charge de transmettre
ces paquets à l’adresse effective du noeud distant.
Pour les réponses, un processus identique est mis en place. Le site consulté, ne retourne les réponses qu’au
serveur proxy. Le serveur proxy se charge de ventiler les pages au bon destinataire du réseau local.
Voir, pour le fonctionnement des serveurs cache et la configuration des navigateurs avec ce type de serveur, le
document sur le W3 et les scripts CGI.
Squid est un service serveur proxy-cache sous linux. Les objets consultés par les clients sur internet, sont stockés
en cache disque par le serveur. A partir du deuxième accès, la lecture se fera en cache, au lieu d’être réalisée sur le
serveur d’origine. De ce fait il permet « d’accélérer » vos connexions à l’internet en plaçant en cache les documents les
plus consultés. On peut aussi utiliser la technique du service serveur mandataire pour effectuer des contrôles d’accès
aux sites.
Les services proxy peuvent être organisés de façon hiérarchique :
Les serveurs peuvent être paramétrés pour les autorisations d’accès et les synchronisations.
Les postes clients sont souvent configurés pour utiliser un serveur proxy. Le client s’adresse au serveur proxy, et
c’est ce dernier qui traite la requête sur internet. Un fois la réponse reçue, le serveur met en cache la réponse et la
retourne au client interne. Le service proxy est fréquemment configuré sur un routeur qui remplit aussi le service de
translation d’adresse ou translation de port, mais toutes ces fonctions sont bien différentes.
Dans certains cas, on peut ne pas souhaiter que la configuration soit réalisée au niveau du client. On souhaite que
celle-ci soit faite au niveau du serveur. Cela peut arriver par exemple si vous avez plusieurs centaines de postes à
configurer ou bien si vous ne souhaitez pas que les utilisateurs puissent modifier ou avoir accès à cette partie de la
configuration. On parlera de « service proxy transparent ». Le service serveur proxy peut être sur le routeur d’accès à
l’internet ou sur une autre machine.
Service proxy tranparent : La configuration des navigateurs, sur les postes clients, n’est pas concernée.
Vers internet
<———————-> <—————————–> Figure 1 Figure 2
Sur la Figure 1, le service proxy est installé sur le routeur.
Sur la figure 2, les requêtes du client (1), sont redirigées vers le proxy par le routeur (2), qui retourne au client la
réponse ou redirige vers le routeur (3) pour un envoi sur l’extérieur.
Installer Squid
Sur debian apt-get install squid.
Squid comporte de très nombreux paramètres. L’optimisation n’en est pas toujours simple. Nous allons voir uniquement quelques options permettant un fonctionnement du service. Il sera nécessaire, pour un site en production, de se
référer à la documentation officielle.
Pour démarrer une configuration simple, il est possible d’utiliser le fichier de configuration /etc/squid.conf, dont
chaque paramètre est documenté.
Configuration de squid
Toute la configuration de Squid se trouve dans le fichier squid.conf. La plupart des options par défaut du fichier ne
sont pas à changer (vous pouvez alors laisser le # pour conserver les options en commentaire.)
http_port : le port que vous souhaitez utiliser. Le plus fréquent est 8080. Il faut donc changer cette valeur car par
défaut Squid utilise 3128.
icp_port : conserver le port 3130. Ceci vous permet de communiquer avec des proxy-cache parents ou voisins.
cache_mem : correspond au cache mémoire, la valeur dépend de votre système. Par défaut squid utilise 8 Mo.
Cette taille doit être la plus grande possible afin d’améliorer les performances (Considérez 1/3 de la mémoire que vous
réservez à Squid). Il faut avec cache_mem régler cache_mem_low et cache_mem_high qui sont les valeurs limites de
1
remplissage du cache mémoire. Par défaut les valeurs sont 75 % et 90 %. Lorsque la valeur de 90 % est atteinte le
cache mémoire se vide jusqu’à 75 %. Les valeurs par défaut sont correctes dans la plupart des cas.
cache_swap : correspond à la taille de votre cache disque. Si la taille du disque le permet, et en fonction de la taille
de votre établissement (nombre de clients qui utilisent le cache), mais aussi de la durée de rafraîchissement de votre
cache et du débit de votre ligne, vous devez mettre la valeur qui vous semble correspondre à votre situation.
acl QUERY urlpath_regex cgi-bin ċgi ṗl ṗhp3 ȧsp : Type de page à ne pas garder dans le cache afin de pas avoir
les données d’un formulaire par exemple.
maximum_object_size : taille maximale de l’objet qui sera sauvegardé sur le disque. On peut garder la valeur par
défaut.
cache_dir : Vous indiquez ici le volume de votre cache. Si vous avez plusieurs disques, utilisez plusieurs fois cette
ligne. Si squid ne fonctionne pas bien ou s’arrête parfois sans raison apparente, vérifiez que vous avez un cache assez
important ou bien configuré.
cache_dir ufs /cache1 100 16 256 (cache de 100 Mb)
cache_dir ufs /cache2 200 16 256 (cache de 200 Mb)
Les valeurs 16 et 256, indiquent le nombre de sous-répertoires créés respectivement dans le premier niveau et
suivants pour le stockage des données du cache.
cache_access_log ; cache_log ; cache_store_log : Indique l’endroit où se trouve les logs (fichiers de journalisation).
Si vous ne souhaitez pas avoir de log (par exemple des objets cache_store_log) indiquer cache_store_log none.
debug_options ALL,1 : niveau de debug. Indiquer 9 pour avoir toutes les traces à la place de 1. Attention cela donne
de gros fichiers.
dns_children : par défaut le nombre de processus simultanés dns est de 5. Il peut être nécessaire d’augmenter ce
nombre afin que Squid ne se trouve pas bloqué. Attention de ne pas trop l’augmenter cela peut poser des problèmes
de performance à votre machine (indiquer 10 ou 15).
request_size : taille maximale des requêtes. Conserver la valeur par défaut, concerne les requêtes de type GET,
POST...
refresh_pattern : permet de configurer la durée de mise à jour du cache. Utiliser -i pour ne pas tenir compte des
minuscules ou des majuscules. (voir le fichier squid.conf). Les valeurs Min et Max sont indiquées en minutes. Exemple :
# refresh_pattern ˆftp : 1440 20% 10080
visible_hostname : indiquer ici le nom de votre serveur proxy.
logfile_rotate : pour faire tourner vos logs et garder un nombre de copies. par défaut 10. attention si votre cache est
très utilisé , il peut générer un grand volume de logs, pensez donc à réduire ce nombre.
error_directory : Pour avoir les messages d’erreurs en français (indiquer le répertoire où ils se trouvent). Exemple :
#error_directory /etc/squid/errors
#Créer un lien vers le répertoire où sont logés les messages en Français.
Initialisation de Squid
Cela n’est réalisé que la première fois afin de générer le cache.
squid -z
Les options de démarrage de Squid
On peut démarrer Squid en lui passant des commandes sur la ligne de commande. Différents paramètres peuvent
être passés sur la ligne de commande. Les options passées de cette façon remplacent les paramètres du fichier de
configuration de Squid squid.conf.
-h : Pour obtenir les options possibles
-a : Pour indiquer un port particulier
-f : pour utiliser un autre fichier de conf au lieu de squid.conf
-u : spécifie un port pour les requêtes ICP. (3110 par défaut)
-v : pour indiquer la version de Squid
-z : Pour initialiser le disque cache.
-k : Pour envoyer des instructions à Squid pendant son fonctionnement. Il faut faire suivre -k d’une instruction
(rotate|reconfigure|shutdown|interrupt|kill|debug|check).
-D : pour démarrer squid lorsque vous n’êtes pas connecté en permanence à internet (évite de vérifier si le serveur
DNS répond).
2
Contrôler les accès
Pour contrôler tout ce qui passe par votre serveur proxy, vous pouvez utiliser ce que l’on appelle les ACL (Access
Control List). Les ACL sont des règles que le serveur applique. Cela permet par exemple d’autoriser ou d’interdire
certaines transactions.
On peut autoriser ou interdire en fonction du domaine, du protocole, de l’adresse IP, du numéro de port, d’un mot,
on peut aussi limiter sur des plages horaires.
La syntaxe d’une ACL est la suivante :
acl
http_access
aclname
allow|deny
acltype
[ !]aclname
string[string2]
acltype peut prendre comme valeur :
src (pour la source) : indication de l’adresse IP du client sous la forme adresse/masque. On peut aussi donner une
plage d’adresses sous la forme adresse_IP_debut-adresse_IP_fin
dst (pour la destination) : idem que pour src, mais on vise l’adresse IP de l’ordinateur cible.
srcdomain : Le domaine du client
dstdomain : Le domaine de destination.
url_regex : Une chaîne contenu dans l’URL
(on peut utiliser les jokers ou un fichier).
urlpath_regex : Une chaîne comparée avec le chemin de l’URL
(on peut utiliser les jokers).
proto : Pour le protocole.
3