Your SlideShare is downloading. ×
Squid
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Squid

2,258
views

Published on

Présentation de Squid. Ce chapitre fait partie d'une formation "Intégration Apache - JBoss - Squid"

Présentation de Squid. Ce chapitre fait partie d'une formation "Intégration Apache - JBoss - Squid"

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,258
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
79
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Squid
  • 2. Proxy serverantislashn.org Apache JBoss Squid - Squid 6 - 2 / 62
  • 3. Proxy server ● Proxy = mandataire ● Proxy côté clients ● Proxy installé à la sortie du réseau dentreprise ● Les navigateurs de lentreprise passent par le proxy pour se connecter à internet ● paramétrage des clients pour utiliser le proxy ● Permet ● de cacher les pages les plus fréquemment appelées ● de filtrer les URLantislashn.org Apache JBoss Squid - Squid 6 - 3 / 62
  • 4. Reverse proxy internet reverse SERVEUR proxy WEBantislashn.org Apache JBoss Squid - Squid 6 - 4 / 62
  • 5. Reverse proxy ● Reverse proxy = mandataire inverse ● surrogate proxy ● Proxy installé côté serveur ● en frontal du serveur web ● pas de paramétrage des clients pour utiliser le serveur web ● Permet ● de faire du cache ● de la répartition de charge ● ...antislashn.org Apache JBoss Squid - Squid 6 - 5 / 62
  • 6. Présentation Squid ● Squid ● permet la réalisation dun cache pour les clients dun site web ● peut aussi jouer le rôle de filtre HTTP ● disponible sur de nombreuses plateformes ● distribué sous licence GPL ● site de référence : www.squidguard.org ● initiateurs du projet – Päl Balzersen – Lars-Erik Hälandantislashn.org Apache JBoss Squid - Squid 6 - 6 / 62
  • 7. Présentation Squid ● Produit structuré et modulaire ● squid : programme principale de gestion de cache ● autres modules : – dnsserver : serveur de cache de noms de domaine – réécriture des URL – authentificationantislashn.org Apache JBoss Squid - Squid 6 - 7 / 62
  • 8. Présentation Squid ● Protocoles supportés ● HTTP – Hyper Text Transfert Protocol ● FTP – File Transfert Protocol ● SSL – Secur Socket Layer ● ICP - Internet Cache Protocole : protocole généraliste de communication entre serveurs de cache ● Gopher ● WAIS ● HCTP – Hyper Cache Transfert Protocol : protocole de cache orienté HTTPantislashn.org Apache JBoss Squid - Squid 6 - 8 / 62
  • 9. Présentation Squid ● Peut jouer les rôles de ● proxy server ● reverse proxy – server surrogate – forward caching proxy – ne supporte pas tous les protocoles ● Limitations ● Squid nest pas un firewall ● ne gère pas les protocoles de news, real audio, vidéo conférenceantislashn.org Apache JBoss Squid - Squid 6 - 9 / 62
  • 10. Installation sous Windows ● Télécharger le binaire stable le plus récent ● http://squid.acmeconsulting.it/index.html ● Décompresser larchive sous c : ● Un répertoire c:squid est crééantislashn.org Apache JBoss Squid - Squid 6 - 10 / 62
  • 11. Répertoires et fichiers ● bin/squidclient ● client HTTP pour tester Squid en proxy server ● etc ● répertoire des fichiers de configuration ● libexec ● répertoire contenant des utilitaires utilisés lors de la compilation de Squid ● libexec/cachemgr.cgi ● Cache Manager : interface web CGI de gestion du cache de Squidantislashn.org Apache JBoss Squid - Squid 6 - 11 / 62
  • 12. Répertoires et fichiers ● share ● répertoire de divers fichiers utilisés par Squid – répertoire des messages derreur ● un répertoire par langue – répertoire des icônes ● var ● répertoire de sauvegarde lors de lexécution de Squid ● var/cache : répertoire du cache Squid ● var/log : répertoire des logsantislashn.org Apache JBoss Squid - Squid 6 - 12 / 62
  • 13. Répertoires et fichiers ● sbin/squid ● application Squid ● doit être exécuté en root ou avec des privilèges de super utilisateurantislashn.org Apache JBoss Squid - Squid 6 - 13 / 62
  • 14. Gestion du cache ● Squid est un cache proxy ● le proxy agit pour un autre ● le cache stocke les informations les plus utilisées ● Squid ● reçoit les requêtes du client ● transmet la requête au serveur HTTP ● stocke linformation retournée par le serveur ● si linformation est demandée plusieurs fois, cest le contenu stocké qui est renvoyéeantislashn.org Apache JBoss Squid - Squid 6 - 14 / 62
  • 15. Gestion du cache requête info dans le cache ? oui : linfo est prise CACHE dans le cache SQUID non : la requête est transmise réponse au serveur info retournée par le serveur SERVEUR cache mis à jourantislashn.org Apache JBoss Squid - Squid 6 - 15 / 62
  • 16. Gestion du cache ● Lors de la réception dun requête Squid renvoie une ressource du cache ou demande au serveur la ressource ● en fonction de lage de la ressource dans le cache ● si la ressource est "fraîche", elle est envoyée directement au client ● sinon Squid envoie une requête au serveur – if-modified-sinceantislashn.org Apache JBoss Squid - Squid 6 - 16 / 62
  • 17. Gestion du cache ● Un bon cache nécessite de la mémoire ● Algorithme de cache ● trois types de variables sont utilisées – variables liées à la ressource dans le cache – variables fournies par le client – variables du fichier de configurationantislashn.org Apache JBoss Squid - Squid 6 - 17 / 62
  • 18. Gestion du cache ● Variables associées à la ressource dans le cache ● AGE : temps écoulé depuis lentrée dans le cache ● LM_AGE : temps écoulé entre la dernière modification de la ressource sur le serveur et son entrée dans le cache ● LM_FACTOR : rapport entre AGE et LM_AGE – plus LM_FACTOR est grand, plus la ressource du cache à des chances dêtre périmée ● EXPIRES : valeurs éventuelle fournit par le serveur lors de lentrée de la ressource dans le cache – contient la date dexpiration de la ressourceantislashn.org Apache JBoss Squid - Squid 6 - 18 / 62
  • 19. Gestion du cache ● Variables associées à la ressource dans le cache LM_AGE AGE temps dernière entrée de la requête maj de la ressource client ressource dans le cachesur le serveurantislashn.org Apache JBoss Squid - Squid 6 - 19 / 62
  • 20. Gestion du cache ● Variables fournies par le client ● Squid tient compte de la présence éventuelle de la variable CLIENT_MAX_AGE ● Variables du fichier de configuration ● directive refresh_pattern refresh_pattern [-i] <url_regexp> MIN_AGE PERCENT MAX_AGE <options> ● -i : ne pas tenir compte de la casse dans lexpression régulière ● la minute est utilisée comme unité temporelleantislashn.org Apache JBoss Squid - Squid 6 - 20 / 62
  • 21. Gestion du cache ● MIN_AGE : durée dune ressource à prendre en compte si une durée explicite nest pas fournie ● PERCENT : pourcentage à prendre en compte sans durée explicite ● MAX_AGE : age maximum à prendre en compte sans durée expliciteantislashn.org Apache JBoss Squid - Squid 6 - 21 / 62
  • 22. Gestion du cache ● Exemple de valeurs par défaut ● fichier squid.conf.default 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 ● MAX_AGE envoyée par le client prévaut sur celui du fichier ● MIN_AGE est prioritaire à EXPIRES renvoyé par le serveurantislashn.org Apache JBoss Squid - Squid 6 - 22 / 62
  • 23. Gestion du cache ● Algorithme ● AGE > MAX_AGE : la ressource en cache est déclarée comme périmée ● AGE <= MIN_AGE : ressource en cache déclarée comme fraîche ● EXPIRES définit et dépassé : périmée ● EXPIRES définit mais pas dépassé : fraîche ● AGE > MAX_AGE : périmée ● LM_FACTOR < PERCENT : fraîche ● si aucune règle n’aboutit à la détermination : périméeantislashn.org Apache JBoss Squid - Squid 6 - 23 / 62
  • 24. Fichier de configuration minimal ● Le fichier de configuration squid.conf se trouve ● Windows : c:squidetc.squid.conf ● Ubuntu : /etc/squid/squid.conf ● si installation par compilation et préfixe spécifique le fichier de conf se trouve sous ${prefix}/etc/squid.conf où ${prefix} est la valeur de loption - - prefix lors de la compilationantislashn.org Apache JBoss Squid - Squid 6 - 24 / 62
  • 25. Fichier de configuration minimal ● Configuration dun proxy server ● écoute sur le port 3128 par défaut ● fichier etc/squid.conf cache_dir ufs c:/squid/var/cache 100 16 256 acl my_machine src 192.168.3.48 http_access allow my_machine http_port 3128 ● cache_dir : répertoire swap du cache – ufs : format de cache Squid – 100Mo exploitable – 16 sous répertoires de premier niveau – 256 sous-répertoires de second niveauantislashn.org Apache JBoss Squid - Squid 6 - 25 / 62
  • 26. Fichier de configuration minimal ● acl : directive Access Control List (ACL) ● my_machine : nom de la directive ACL ● src : type dacl basé sur ladresse IP dun client – ici 192.168.3.49 ● http_access : règle daccès sur un type daccès HTTP ● allow : permission daccès pour lACL – ici lACL nommé my_machine ● http_port : port découte de Squidantislashn.org Apache JBoss Squid - Squid 6 - 26 / 62
  • 27. Fichier de configuration minimal ● Test de la configuration ● configurer le navigateur pour utiliser le proxy – indiquer lIP de la machine où Squid est installé et le port du proxy (3128 par défaut)antislashn.org Apache JBoss Squid - Squid 6 - 27 / 62
  • 28. Fichier de configuration minimal ● Test de la configuration ● démarrer Squid ● tester une URL existante dans le navigateur ● tester une URL inexistante dans le navigateurantislashn.org Apache JBoss Squid - Squid 6 - 28 / 62
  • 29. Directives de base : http_port ● http_port : port découte de Squid ● par défaut écoute sur toutes les interfaces, sur le port 3128 ● on peut préciser – une adresse IP – un nom de machine – un nom de domaine – une URL ● plusieurs directives http_port peuvent être présentesantislashn.org Apache JBoss Squid - Squid 6 - 29 / 62
  • 30. Directives de base : http_port ● Exemples http_port 8080 http_port 192.0.2.25:8080 http_port lan1.example.com:3128 http_port lan2.example.com:8081 http_port 3128 intercept http_port 80 accel default=www.example.comantislashn.org Apache JBoss Squid - Squid 6 - 30 / 62
  • 31. Directives de base : acl ● Access Control List ● directive acl ● directive de contrôle daccès – utilisé par dautre directives comme http_access, cache, … ● chaque ACL – possède un nom – possède un type, suivi de sa valeur ● la valeur peut être contenue dans un autre fichier acl ACL_NAME ACL_TYPE valuec acl ACL_NAME ACL_TYPE "path/to/filename"antislashn.org Apache JBoss Squid - Squid 6 - 31 / 62
  • 32. Directives de base : acl ● ACL pour le domaine example.com acl example_site dstdomain example.com ● si plusieurs domaines sont utilisés pour un même nom acl example_sites dstdomain example.com example.com example.net acl example_sites dstdomain example.com example.com acl example.sites dstdomain example.net acl example_site dstdomain "/opt/sqid/sites.txt" example.com example.netantislashn.org Apache JBoss Squid - Squid 6 - 32 / 62
  • 33. Directives de base : acl ● Les noms des ACL ● ne sont pas case-sensitive par défaut – peut-être changés avec une installation par compilation ● ils sont multivalués ● les valeurs sont agrégées les unes aux autres ● Les ACL nont pas dutilité en soi, elles sont utilisées par les directives daccèsantislashn.org Apache JBoss Squid - Squid 6 - 33 / 62
  • 34. Directives de base : acl ● Types ACL ● src : ACL basée sur lIP du client ● dst : ACL basée sur lIP demandée dans la requête ● srcdomain : ACL basée sur le domaine du client ● dstdomain : ACL basée sur le domaine demandé ● port : ACL basée sur le port de destination ● proto : ACL basée sur un protocole ● consulter la documentation pour les autres types – time, url_regex, browser, ...antislashn.org Apache JBoss Squid - Squid 6 - 34 / 62
  • 35. Directives de base : http_access ● Syntaxe de base http_access allow|denay ACL_NAME ● autorise ou non laccès HTTP sur AC_NAME ● Aucune ligne http_access nest présente ● aucun accès nest possible ● Si aucune ligne daccès ne correspond ● lopposé de la dernière ligne est appliquée – si cette dernière ligne autorise laccès, le comportement par défaut sera de bloquer laccèsantislashn.org Apache JBoss Squid - Squid 6 - 35 / 62
  • 36. Directives de base : http_access ● Bonne pratique ● mettre en dernière ligne http_access allow all – ou http_access deny all ● le comportement opposé sera utilisé si aucune ligne daccès ne correspondantislashn.org Apache JBoss Squid - Squid 6 - 36 / 62
  • 37. Directives de base : http_access ● Exemples acl my_machines src 192.168.3.49 192.168.3.48 http_access allow my_machines ● autorise laccès de certaines machines, et bloque les autresantislashn.org Apache JBoss Squid - Squid 6 - 37 / 62
  • 38. Directives de base :http_reply_access ● Contrôle la réponse reçu du serveur web ● syntaxe similaire à http_access acl my_machine src 192.0.2.21 http_access allow my_machine http_reply_access deny my_machine – autorise les accès de la machine 192.0.2.21 – bloque les accès vers les sites installés sur la machine 192.0.2.21antislashn.org Apache JBoss Squid - Squid 6 - 38 / 62
  • 39. Directives de base ● Autres directives daccès ● icp_access : accès ICP (Internet Cache Protocol) ● htcp_access : accès HTCP (HyperText Cache Protocol) ● htcp_clr_access : accès HTCP pour supprimer les caches – requête CLR ● autres directives – miss_access, ident_lookup_accessantislashn.org Apache JBoss Squid - Squid 6 - 39 / 62
  • 40. Directives de base ● Quelques exemples acl bad_clients src 192.0.2.0/24 miss_access deny bad_clients miss_access allow all ● bad_clients : machines de 192.0.2.0 à 192.0.2.255 – cf. https://en.wikipedia.org/wiki/IPv4_subnetting_reference ● interdit aux machines bad_clients dutiliser le serveur proxy comme proxy parent ● autorise les autres machines qui passent laccès HTTP (http_access) dutiliser le serveur proxy comme parentantislashn.org Apache JBoss Squid - Squid 6 - 40 / 62
  • 41. Cache mémoire ● Les documents mis en cache RAM sont servis beaucoup plus rapidement que ceux en cache disque ● lespace RAM est moins important que lespace disque ● lespace RAM ne peut pas recevoir lensemble des documents web à mettre en cacheantislashn.org Apache JBoss Squid - Squid 6 - 41 / 62
  • 42. Cache mémoire ● Objets mis en cache RAM ● ressources de la requête courante ● ressources les plus demandées – sont mis sur le disque si besoin de RAM ● ressources derreur – réponse 404 par exemple – sont mis sur le disque si besoin de RAMantislashn.org Apache JBoss Squid - Squid 6 - 42 / 62
  • 43. Cache mémoire ● Taille mémoire ● par défaut : 256 Mb ● lors de la définition de la taille du cache RAM – tenir compte des besoins des autres applications ● sous Linux : free -m – par exemple pour 4 Go ● l’ensemble des processus utilise 1 Go ● moins 512 Ko si les processus ont besoin de plus de mémoire ● le cache mémoire peut être dimensionné à 2,5 Go cache_mem 2500 MBantislashn.org Apache JBoss Squid - Squid 6 - 43 / 62
  • 44. Configuration du moniteur Squid ● Squid est livré avec une interface web de gestion du cache ● cachemgr ● Configuration du serveur Apache pour activer cachemgr ● dans le fichier httpd.conf ScriptAlias /Squid/cgi-bin/cachemgr.cgi C:squidlibexeccachemgr.cgi <Location /Squid/cgi-bin/cachemgr.cgi> order allow,deny allow from 127.0.0.1 </Location>antislashn.org Apache JBoss Squid - Squid 6 - 44 / 62
  • 45. Configuration du moniteur Squid ● Dans le fichier de configuration de Squid il faut ajouter les lignes suivantes cache_mgr admin@antislashn.org cachemgr_passwd franck all ● Redémarrer Apache et Squid et tester lURL ● http://localhost/Squid/cgi-bin/cachemgr.cgiantislashn.org Apache JBoss Squid - Squid 6 - 45 / 62
  • 46. Configuration du moniteur Squid valeur de la directive cache_mgr valeur de la directive cachemgr_passwdantislashn.org Apache JBoss Squid - Squid 6 - 46 / 62
  • 47. Configuration du moniteur Squid ● Le moniteur propose alors un ensemble de liensantislashn.org Apache JBoss Squid - Squid 6 - 47 / 62
  • 48. Squid configuré en surrogate server ● Surrogate server, ou reverse proxy, ou HTTP accelerator ● sert des requêtes pour le compte dun serveur Squid internet en mode SERVEUR HTTP WEB accelerator on sert ce qui vient du cache on cache tout ce que lon peutantislashn.org Apache JBoss Squid - Squid 6 - 48 / 62
  • 49. Squid configuré en surrogate server ● Squid doit écouter sur le port 80 pour répondre aux requêtes HTTP ● attention si le serveur web est sur la même machine – Squid peut écouter sur le port 80 de ladresse IP publique – le serveur HTTP peut écouter sur le port 80 de la boucle locale (127.0.0.1)antislashn.org Apache JBoss Squid - Squid 6 - 49 / 62
  • 50. Squid configuré en surrogate server ● Directive http_port ● syntaxe : http_port 80 accel [options] – 80 : port découte – accel : mode surrogate server ● Options de la directive http_port ● defaultsite : site par défaut à utilisé si nom précisé dans len-tête HTTP ● vhost : support des domaines multiples ● vport : support des domaines multiples basé sur IPantislashn.org Apache JBoss Squid - Squid 6 - 50 / 62
  • 51. Squid configuré en surrogate server ● Options de la directive http_port ● allow-direct: permet le direct forwarding ● ignore-cc : ignore les en-tête HTTP Cache- controlantislashn.org Apache JBoss Squid - Squid 6 - 51 / 62
  • 52. Squid configuré en surrogate server ● Directive https_port ● syntaxe : https_port [IP_ADDRESS :]port accel cert=cert.pem [key=key.pem][options] ● cert : chemin absolu vers le certificat SSL contenant la clé publique et la clé privée – si cert.pem ne contient pas la clé privée, key contient chemin vers la clé privéeantislashn.org Apache JBoss Squid - Squid 6 - 52 / 62
  • 53. Squid configuré en surrogate server ● Options de la directive https_port ● defaultsite : site par défaut à utilisé si nom précisé dans len-tête HTTPS ● vhost : support des domaines multiples ● version : version SSL – entier – 1 : détection automatique (par défaut) – 2 : SSLv2 – 3 : SSLv3 – 4 : TLSv1 ● cf. la documentation pour les autres optionsantislashn.org Apache JBoss Squid - Squid 6 - 53 / 62
  • 54. Squid configuré en surrogate server ● Directive cache_peer ● indique comment Squid contact ses pairs et comment il communique avec eux ● syntaxe – cache_peer hostname_or_ip type port icp_port [options] – hostname_or_ip : adresse du proxy, serveur, ou cache cible – type : type de cible (parent, sibling ou multicast) – port : port HTTP de la cible – icp_port : port ICP ou HTCP de la cible ● 0 pour désactiverantislashn.org Apache JBoss Squid - Squid 6 - 54 / 62
  • 55. Squid configuré en surrogate server ● Directive cache_peer ● quelques options – no-query : déselectionne ICP/HTCP – round-robin : algo appliqué sil y plusieurs parents – originserver : le pair est vu comme un serveur web – name : nom donné au pair cibleantislashn.org Apache JBoss Squid - Squid 6 - 55 / 62
  • 56. Squid configuré en surrogate server ● Directive cache_peer_access ● permet de déterminer avec quelle règle Squid fait suivre, ou non, une requête ● syntaxe – cache_peer_access peername allow|deny [!] acl_nameantislashn.org Apache JBoss Squid - Squid 6 - 56 / 62
  • 57. Squid configuré en interception proxy ● Le mode server proxy nécessite une configuration des navigateurs ● Le mode mode "interception proxy" est une mode de "server proxy" sans configuration des navigateurs ● autres nom : transparent caching, cache redirection, interception cachingantislashn.org Apache JBoss Squid - Squid 6 - 57 / 62
  • 58. Squid configuré en interception proxy ● Le mode server proxy nécessite une configuration des navigateurs ● Le mode mode "interception proxy" est une mode de "server proxy" sans configuration des navigateurs ● autres nom : transparent caching, cache redirection, interception cachingantislashn.org Apache JBoss Squid - Squid 6 - 58 / 62
  • 59. Squid configuré en interception proxy ● En général ce mode est configuré à laide dun routeur qui re-route les demandes des clients vers Squid ● Avantages ● pas de configuration des clients ● meilleur contrôle des utilisateurs, car ils ne peuvent pas contourner le serveur proxy ● le routeur peut faire suivre les requêtes vers Internet si le serveur Squid tombeantislashn.org Apache JBoss Squid - Squid 6 - 59 / 62
  • 60. Squid configuré en interception proxy ● Inconvénients ● violation des standards TCP/IP – les routeurs et switchs sont censés faire suivre les paquets vers lhôte destinataire ● problèmes potentiels de routage – si les routes sont déterminées dynamiquement ● pas dauthentification – le proxy ne fonctionne pas comme un navigateur, et le navigateur ne "savent pas" quils ne sont pas connectés à un serveurantislashn.org Apache JBoss Squid - Squid 6 - 60 / 62
  • 61. Squid configuré en interception proxy ● Inconvénients ● support uniquement de HTTP – Squid ne sait intercepter que le trafic HTTP ● problèmes sur les routes – si les routes sont déterminées dynamiquement ● exposition des clients – car Squid ne peut intercepter que HTTP, le client doit toujours aller directement sur Internet pour HTTPS, FTP, ...antislashn.org Apache JBoss Squid - Squid 6 - 61 / 62
  • 62. Ressources ● Squid Proxy Server 3.1 Beginners Guide – auteur : Kulbir Saini – éditeur : PACKT Pubisshing – PDF open source ● Squid - The definitive guide – auteur : Duane Wessels – éditeur : OReillyantislashn.org Apache JBoss Squid - Squid 6 - 62 / 62