GNU/Linux >> Tutoriels Linux >  >> Panels >> Webmin

Serveur proxy Squid

Cet article explique ce qu'est un serveur proxy HTTP ou FTP, puis explique comment Webmin peut être utilisé pour configurer le populaire serveur proxy Squid.

Contenu

Introduction au proxy et à Squid

Un serveur proxy HTTP est essentiellement un programme qui accepte les demandes d'URL des clients, les récupère au nom du client et renvoie les résultats au client. Les proxys sont utilisés sur les réseaux où les clients n'ont pas d'accès direct à Internet mais doivent quand même pouvoir afficher des pages Web. Un proxy est également utilisé pour mettre en cache les pages fréquemment demandées afin que si plusieurs clients souhaitent afficher la même page, celle-ci ne doit être téléchargée qu'une seule fois.

De nombreuses entreprises et organisations ont leurs pare-feu configurés pour bloquer tout le trafic entrant et sortant par des systèmes sur des réseaux locaux internes. Cela peut être fait pour des raisons de sécurité ou pour limiter ce à quoi les employés peuvent accéder sur Internet. Étant donné qu'il est extrêmement utile de pouvoir afficher des pages Web, un proxy est souvent configuré pour que les sites Web soient accessibles via celui-ci.

Les grandes organisations et les FAI avec de nombreux PC clients accédant au Web peuvent également souhaiter exécuter un serveur proxy pour réduire la charge sur leurs réseaux. Étant donné que l'une des tâches principales d'un proxy est de mettre en cache les pages demandées par les clients, toute page demandée plus d'une fois sera renvoyée du cache au lieu d'être extraite du serveur d'origine. Pour cette raison, les systèmes clients sont souvent configurés ou forcés d'utiliser un proxy de mise en cache pour accéder au Web.

Un proxy n'est utile que si les navigateurs clients sont configurés pour l'utiliser au lieu de se connecter directement aux sites Web. Heureusement, tous les navigateurs Web existants et presque tous les programmes qui téléchargent des fichiers via HTTP à diverses fins peuvent être configurés pour utiliser un proxy. Cela leur indique d'établir une connexion HTTP proxy spéciale avec le serveur proxy à la place, en spécifiant l'URL complète à télécharger.

Les proxys ne sont pas seulement pour HTTP - ils peuvent également prendre en charge les requêtes de protocole FTP et Gopher des clients, qu'ils traitent en établissant une connexion FTP ou Gopher avec le serveur réellement demandé. Même les connexions SSL chiffrées peuvent être gérées par un proxy, même s'il ne peut pas déchiffrer la demande. Au lieu de cela, le proxy transfère simplement toutes les données du client au serveur de destination et inversement.

Squid est le serveur proxy le plus populaire pour les systèmes Unix/Linux. Il est open source et est disponible gratuitement en téléchargement sur www.squid-cache.org, et est inclus en tant que package standard avec toutes les distributions Linux et de nombreux autres systèmes d'exploitation. Squid prend en charge à la fois le proxy, la mise en cache et l'accélération HTTP, et dispose d'un grand nombre d'options de configuration pour contrôler le comportement de ces fonctionnalités.

Squid lit sa configuration à partir du fichier texte squid.conf, généralement trouvé dans ou sous le répertoire /etc. Ce fichier consiste en une série de directives, une par ligne, chacune ayant un nom et une valeur. Chaque directive définit une option, telle que le port TCP sur lequel écouter ou un répertoire dans lequel stocker les fichiers en cache. Le module Squid de Webmin édite ce fichier directement, ignorant tout commentaire ou directive qu'il ne comprend pas.

De nombreuses versions de Squid ont été publiées au fil des ans, chacune prenant en charge différentes directives de configuration ou attribuant des significations différentes aux mêmes directives. Cela signifie qu'un fichier squid.conf de la version 2.0 peut ne pas être compatible avec Squid 2.5 - et un de Squid 2.5 ne fonctionnera certainement pas avec la version 2.0. Heureusement, Webmin connaît les directives prises en charge par chaque version et n'autorise la modification que de celles qui sont connues de la version en cours d'exécution de Squid.

Les pages Web mises en cache sont stockées dans des fichiers dans une structure de répertoires à plusieurs niveaux pour des performances accrues du système de fichiers. Squid peut être configuré pour utiliser plusieurs répertoires de cache distincts, de sorte que vous puissiez répartir les fichiers sur différents disques pour améliorer les performances. Chaque fois qu'une page pouvant être mise en cache est demandée, elle est stockée dans un fichier, de sorte que lorsqu'une demande ultérieure pour la même page arrive, le fichier peut être lu et les données servies à partir de celui-ci. Étant donné que certaines pages Web changent avec le temps (ou sont même générées dynamiquement), Squid garde une trace des dates de dernière modification et d'expiration des pages Web afin qu'il puisse effacer les données du cache lorsqu'elles sont obsolètes.

Le programme réel qui gère les demandes des clients est un processus serveur en cours d'exécution appelé squid. Il peut également démarrer plusieurs autres sous-processus pour des tâches telles que les recherches DNS ou l'authentification des clients, mais tout le traitement réel du protocole HTTP est effectué dans le processus à maître unique. Contrairement à d'autres serveurs similaires tels qu'Apache ou Sendmail, Squid ne démarre pas ou n'utilise pas de sous-processus pour gérer les demandes des clients.

Squid peut être compilé sur toutes les versions d'Unix prises en charge par Webmin et fonctionne presque de la même manière sur chacun d'eux. Cela signifie que l'interface utilisateur du module Webmin est également la même sur tous les systèmes d'exploitation, à l'exception des chemins par défaut qu'il utilise pour les programmes Squid et les fichiers de configuration.

Le module serveur proxy Squid

Si vous souhaitez installer ou configurer Squid depuis Webmin, vous devrez utiliser le module Squid Proxy Server, qui se trouve dans la catégorie Serveurs. Lorsque son icône est cliqué, la page montrée dans la capture d'écran ci-dessous apparaîtra, en supposant que Squid est installé et configuré correctement. Comme vous pouvez le voir, la page principale se compose uniquement d'un tableau d'icônes, sur lesquelles il est possible de cliquer sur chacune pour faire apparaître un formulaire permettant de modifier les paramètres de cette catégorie.


La page principale du module Squid

Si vous n'avez pas encore configuré ou démarré Squid sur votre système, le répertoire de cache n'a probablement pas encore été configuré. Le module le détectera et affichera un message du type *Votre répertoire de cache Squid /var/spool/squid n'a pas été initialisé* au-dessus du tableau des icônes. Pour initialiser le cache, suivez ces étapes :

  1. Si vous n'êtes pas satisfait du répertoire de cache affiché, il est maintenant temps de le changer. Suivez les instructions de la section *Ajout de répertoires de cache* pour définir vos propres répertoires avant de continuer.
  2. Dans le en tant qu'utilisateur Unix entrez le nom de l'utilisateur qui sera propriétaire des fichiers de cache et sous lequel le processus démon s'exécutera. Typiquement, ce sera un utilisateur squid spécial créé à cet effet (et le champ par défaut sera squid si un tel utilisateur existe), mais en fait n'importe quel utilisateur fera l'affaire. Je recommande d'utiliser le module Utilisateurs et groupes (traité au chapitre 4) pour créer un utilisateur appelé squid dont le répertoire personnel est le répertoire de cache si nécessaire.
  3. Cliquez sur Initialiser le cache bouton. La configuration de Squid sera mise à jour pour utiliser le nom d'utilisateur que vous avez choisi et la commande squid -z sera exécuté pour configurer les répertoires de cache. Toutes les sorties qu'il produit seront affichées afin que vous puissiez voir comment l'initialisation progresse.
  4. Lorsque le processus est terminé, revenez à la page principale du module et le message d'erreur devrait avoir disparu.

Si Squid n'est pas du tout installé sur votre système (ou installé à un emplacement différent de celui attendu par Webmin), un message d'erreur du type Le fichier de configuration de Squid /etc/squid.conf n'existe pas apparaîtra sur la page principale au lieu du tableau des icônes. Si vous l'avez vraiment installé, lisez la section *Configuration du module Squid Proxy Server* pour savoir comment modifier les chemins utilisés par le module. D'autre part, s'il n'est vraiment pas installé, vous devez utiliser le module Software Packages (couvert sur SoftwarePackages) pour installer le package squid à partir de votre CD de distribution Linux ou de votre site Web.

Si aucun package de ce type n'existe pour votre système d'exploitation, vous devrez télécharger, compiler et installer la dernière version de Squid depuis www.squid-cache.org. Tant qu'un compilateur est installé sur votre système, il s'agit d'un processus relativement simple sans dépendances.

Une fois le serveur installé, si vous souhaitez l'utiliser à long terme, vous devez faire en sorte qu'il démarre au démarrage, à l'aide du module Bootup and Shutdown (dont le chapitre 9 explique l'utilisation). Tous les packages Linux incluent un script d'action de démarrage pour Squid, bien qu'il puisse être désactivé par défaut, ce qui vous oblige à l'activer dans ce module. Sinon, vous devrez créer une action qui exécute une commande comme
/usr/local/squid/bin/squid  -sY
, en supposant que Squid est installé dans /usr/local/squid.

Une fois Squid installé et initialisé, vous pouvez commencer à utiliser ce module. Lorsque Squid est en cours d'exécution, chaque page comporte deux liens en haut - Appliquer les modifications qui force la relecture de la configuration courante, et Stop Squid qui arrête le serveur proxy. Si le serveur ne fonctionne pas, ces liens sont remplacés par *Start Squid* à la place, qui, comme son nom l'indique, tente de le démarrer. S'il n'est pas encore en cours d'exécution, vous souhaiterez probablement le démarrer maintenant.

Parce que chaque version de Squid a introduit de nouvelles directives de configuration, l'interface utilisateur de ce module apparaîtra différemment selon la version de Squid qu'il détecte sur votre système. Toutes les instructions de ce chapitre sont écrites pour Squid 2.4 car il s'agit actuellement de la version la plus largement déployée. Si vous exécutez une version plus ancienne ou plus récente, différents champs peuvent apparaître sur les formulaires ou avoir plus ou moins d'options. Par exemple, chaque nouvelle version a introduit différents types d'ACL et l'authentification a été gérée de trois manières différentes tout au long de l'historique du programme. Cependant, les concepts de base ont toujours été les mêmes.

Lorsque vous utilisez ce module, assurez-vous que votre navigateur est configuré pour ne pas utiliser le proxy Squid pour accéder à votre serveur Webmin. Sinon, vous courez le risque de couper votre propre accès au module si vous faites une erreur de configuration ou arrêtez le processus serveur. Tous les navigateurs qui peuvent utiliser un proxy ont un champ pour lister les hôtes auxquels se connecter directement, dans lequel vous pouvez entrer le nom d'hôte de votre serveur Webmin.

Modification des ports et des adresses proxy

Par défaut, Squid écoute les requêtes proxy sur le port TCP 3128 sur toutes les adresses IP de votre système. Parce que ce n'est pas le port habituel sur lequel les proxys sont exécutés (8000 et 8080 semblent être les plus courants), vous voudrez peut-être le changer. Vous pouvez également modifier l'adresse d'écoute afin que seuls les clients de votre réseau interne puissent se connecter, si votre système dispose de plusieurs interfaces réseau.

Pour spécifier les ports utilisés par Squid, procédez comme suit :

  1. Sur la page principale du module, cliquez sur Ports et mise en réseau icône pour afficher le formulaire illustré à la Figure 44-2.
  2. Dans les adresses proxy et ports tableau, sélectionnez l'option *Liste ci-dessous*. Dans le tableau ci-dessous, chaque ligne définit un port d'écoute et éventuellement une adresse à laquelle se lier. Tous les ports et adresses existants seront répertoriés, suivis d'une seule ligne vide pour en ajouter un nouveau. Dans le premier champ vide du Port colonne, entrez un numéro de port comme 8000 ou 8080 . Dans la colonne * Nom d'hôte/Adresse IP*, sélectionnez Tous pour accepter les connexions sur l'une des interfaces de votre système, ou la deuxième option pour entrer une adresse IP dans la zone de texte adjacente. En utilisant ce tableau, Squid peut être configuré pour écouter sur autant de ports que vous le souhaitez. Cependant, étant donné qu'une seule ligne vide apparaît à la fois, vous devrez enregistrer et rouvrir le formulaire pour ajouter plusieurs nouveaux ports.
  3. ICP est un protocole utilisé par Squid pour communiquer avec d'autres proxys dans un cluster. Pour écouter sur un port autre que le port par défaut de 3130 pour ICP, remplissez le port ICP domaine. Ce n'est généralement pas nécessaire, car seuls d'autres proxys utilisent ce protocole.
  4. Squid acceptera normalement les connexions ICP sur n'importe quelle adresse IP. Pour changer cela, sélectionnez le deuxième bouton radio dans le champ *Adresse UDP entrante* et entrez l'une des adresses IP de l'interface de votre système dans son champ de texte. Cela peut être utile si tous les autres proxys avec lesquels votre serveur peut vouloir communiquer se trouvent sur un seul réseau local interne.
  5. Cliquez sur Enregistrer en bas de la page pour mettre à jour le fichier de configuration avec vos nouveaux paramètres, puis cliquez sur le lien * Appliquer les modifications * de retour sur la page principale pour les activer.


Le formulaire ports et réseau

Ajout de répertoires de cache

Dans sa configuration par défaut habituelle, Squid utilise un seul répertoire pour stocker les pages mises en cache. Au plus 100 Mo de données seront stockées dans ce répertoire, ce qui ne sera probablement pas suffisant si vous servez un grand nombre de clients actifs. Si votre système possède plusieurs disques durs, il est logique de répartir le cache sur plusieurs disques pour améliorer les performances. Cela peut être fait en spécifiant plusieurs répertoires, chacun avec sa propre taille maximale.

Sur un système dédié à l'exécution d'un serveur proxy, la quantité maximale à mettre en cache dans chaque répertoire doit être d'environ 90 % de l'espace disponible. Il n'est pas judicieux de configurer ou d'autoriser Squid à utiliser tout l'espace disque libre, car de nombreux systèmes de fichiers souffrent de performances réduites lorsqu'ils sont presque pleins. En outre, l'espace disque peut également être utilisé par les fichiers journaux et les données utilisateur. Si Squid remplit tout votre disque dur, des problèmes peuvent survenir car d'autres programmes sont incapables de créer des fichiers temporaires ou d'écrire dans les journaux.

Pour ajouter un nouveau répertoire de cache et spécifier la taille maximale du répertoire existant, procédez comme suit :

  1. Cliquez sur les Options de cache sur la page principale du module pour faire apparaître le formulaire illustré dans la capture d'écran ci-dessous.
  2. Dans les répertoires de cache champ, sélectionnez le champ Répertorié option. Si par défaut a été choisi auparavant, Squid aura utilisé le seul répertoire de cache par défaut compilé affiché entre parenthèses. Si vous souhaitez continuer à utiliser ce répertoire, il doit être explicitement entré dans la table. La taille par défaut est de 100 Mo et utilise 16 répertoires de 1er niveau et 256 répertoires de 2e niveau. Chaque ligne du tableau spécifie un seul répertoire de cache. Tous les répertoires existants (à l'exception de celui par défaut) seront répertoriés afin que vous puissiez les modifier, suivis d'une seule ligne vide. Chaque ligne comporte des champs dans les colonnes suivantes :
    • Répertoire Le chemin d'accès complet au répertoire de cache de niveau supérieur, tel que /var/spool/squid ou /disk2/cache . Ce répertoire doit déjà exister et appartenir à l'utilisateur sous lequel Squid s'exécute (généralement appelé squid) - le module ne le créera pas pour vous.
    • Tapez Le type de stockage utilisé dans le répertoire. Vous devez toujours sélectionner UFS ici.
    • Taille (Mo) La quantité maximale de données qu'il contiendra, en mégaoctets. Une fois cette limite atteinte, les plus anciens fichiers non demandés seront remplacés par de nouveaux.
    • Répertoires de 1er niveau Le nombre de sous-répertoires qui seront créés sous le répertoire de cache. La valeur par défaut de 16 convient généralement, mais vous souhaiterez peut-être l'augmenter pour les caches très volumineux.
    • Répertoires de 2e niveau Le nombre de sous-répertoires qui seront créés sous chaque répertoire de premier niveau. Vous devez simplement entrer 256 à moins que votre cache ne soit très volumineux.
    • Options Laissez ce champ vide - il n'est utilisé que pour les autres types de répertoires. Si vous vous demandez pourquoi Squid a besoin de créer deux niveaux de sous-répertoires sous chaque répertoire de cache, la raison en est la mauvaise performance de nombreux systèmes de fichiers lorsqu'un répertoire contient un grand nombre de fichiers. Étant donné que chaque page ou image HTML mise en cache est stockée dans un fichier séparé, le nombre de fichiers sur un système proxy occupé peut être énorme. Les répartir sur plusieurs répertoires résout ce problème.
  1. Après avoir ajouté un répertoire, cliquez sur Enregistrer bouton en bas de la page. Si vous souhaitez en ajouter plusieurs, vous devrez cliquer sur les Options de cache à nouveau pour afficher à nouveau le tableau avec une nouvelle ligne vide.
  2. Lorsque vous avez fini de définir les répertoires, revenez à la page principale du module. Si un nouveau a été ajouté, un message d'erreur du type Vos répertoires de cache Squid n'ont pas été initialisés sera affiché. Cliquez sur Initialiser le cache pour que Squid crée tous les sous-répertoires dans tous les nouveaux répertoires de cache. Le serveur sera arrêté pendant le processus, et

redémarré lorsqu'il est terminé.

  1. Une fois l'initialisation terminée, cliquez sur Appliquer les modifications lien sur n'importe quelle page pour commencer à utiliser vos nouveaux répertoires.


Le formulaire d'options de cache

Modification des options de mise en cache et de proxy

Squid possède de nombreux paramètres qui limitent la taille des objets mis en cache, la taille des requêtes des clients et les types de pages à mettre en cache. Ils peuvent être utilisés pour empêcher le serveur de stocker d'énormes fichiers (tels que des images ISO téléchargées), pour limiter la taille des fichiers que les clients peuvent télécharger ou télécharger, et pour empêcher le cache des pages qui changent fréquemment (comme celles générées par les scripts CGI ). Les valeurs par défaut fonctionnent généralement bien, à l'exception peut-être de la taille de téléchargement maximale qui n'est que de 1 Mo.

Pour modifier les options de mise en cache, procédez comme suit :

  1. Cliquez sur les Options de cache icône sur la page principale pour afficher à nouveau le formulaire ci-dessus.
  2. Pour définir la taille maximale du nombre de fichiers téléchargés, sélectionnez la deuxième option dans la Taille maximale du corps de la demande champ, entrez un nombre dans la zone de texte et sélectionnez des unités dans le menu. 10 ou 100 Mo devraient être plus que suffisants pour n'importe qui.
  3. Pour empêcher les clients de télécharger des fichiers volumineux, remplissez le champ *Taille maximale du corps de réponse* de la même manière. Cela peut être utilisé pour empêcher l'abus de votre réseau par des clients qui téléchargent d'énormes films ou des fichiers ISO, mais peut souvent être renversé en téléchargeant un gros fichier en morceaux.
  4. Si vous souhaitez définir une limite supérieure sur le fichier qu'une page peut être stockée dans le cache, remplissez le Temps de cache maximum champ au lieu de le laisser défini sur Par défaut . Sinon, les données seront mises en cache jusqu'à un an, ou jusqu'à la date d'expiration définie par le serveur d'origine.
  5. En plus de mettre en cache les fichiers téléchargés, Squid se souviendra des messages d'erreur des serveurs et les renverra aux clients qui demandent la même page. Vous pouvez modifier la durée pendant laquelle les erreurs sont mises en cache en saisissant un nombre et en sélectionnant des unités dans le champ Échec de la durée du cache des demandes domaine. Si par défaut est choisi, les erreurs seront mises en cache pendant 5 minutes. Même cela peut être extrêmement long si vous venez de corriger une erreur sur un site Web.
  6. Squid mettra en cache les réponses aux recherches de nom d'hôte pour réduire la quantité d'activité DNS, quelles que soient les TTL fournies par les serveurs DNS. Si par défaut est sélectionné dans le champ *Durée du cache de recherche DNS*, les réponses seront mémorisées pendant 6 heures. Si cela vous semble long, sélectionnez le deuxième bouton radio et entrez votre propre temps de cache à la place.
  7. Le Ne pas mettre en cache les URL pour les ACL peut être utilisé pour empêcher complètement la mise en cache de certaines URL, serveurs Web ou clients. Toute requête correspondant à l'une des ACL cochées dans ce champ ne sera jamais mise en cache et sera donc toujours récupérée directement. Vous pouvez utiliser cette fonctionnalité pour bloquer la mise en cache des pages générées dynamiquement en créant une URL Path Regexp ACL pour .cgi ou cgi-bin et en le sélectionnant ici. Consultez la section *Utilisation des listes de contrôle d'accès* pour plus de détails sur le fonctionnement et la définition des ACL.
  8. Cliquez sur Enregistrer bouton en bas de la page pour revenir au menu principal. Étant donné que certaines options de mise en cache supplémentaires se trouvent sur le formulaire d'utilisation de la mémoire et du disque, cliquez sur Utilisation de la mémoire icône pour l'afficher.
  9. Pour limiter la quantité de mémoire utilisée par Squid, remplissez la Limite d'utilisation de la mémoire domaine. Notez que cette limite affecte uniquement la mémoire maximale utilisée pour stocker les fichiers en transit et fréquemment consultés, ainsi que les réponses négatives. Parce que Squid utilise la mémoire à d'autres fins, il consommera certainement plus que ce que vous entrez ici. Si par défaut est sélectionné, une limite de 8 Mo sera appliquée, ce qui est probablement trop bas pour un serveur occupé.
  10. Pour éviter la mise en cache de fichiers volumineux, renseignez le champ *Taille maximale des objets mis en cache*. La valeur par défaut n'est que de 4 Mo, donc si vous avez beaucoup d'espace disque, il devrait certainement être augmenté.
  11. Cliquez sur Enregistrer bouton en bas du formulaire, puis le bouton Appliquer les modifications sur la page principale pour activer tous vos nouveaux paramètres.

Introduction aux listes de contrôle d'accès

Les ACL (listes de contrôle d'accès) sont probablement la fonctionnalité la plus puissante de Squid. Une ACL est simplement un test qui est appliqué à une demande client pour voir si elle correspond ou non. Ensuite, en fonction des ACL auxquelles chaque demande correspond, vous pouvez choisir de la bloquer, d'empêcher la mise en cache, de la forcer dans un pool de retard ou de la transférer à un autre serveur proxy. Il existe de nombreux types d'ACL différents - par exemple, un type vérifie l'adresse IP d'un client, un autre correspond à l'URL demandée, tandis que d'autres vérifient le port de destination, le nom d'hôte du serveur Web, l'utilisateur authentifié, etc.

L'utilisation la plus courante des ACL consiste à bloquer les connexions des clients extérieurs à votre réseau. Si vous exécutez un serveur proxy connecté et accessible à partir d'Internet, les hôtes extérieurs à votre réseau local ne doivent pas être autorisés à l'utiliser. Les personnes malveillantes utilisent souvent d'autres proxys pour blanchir les connexions utilisées pour le piratage, l'envoi de spam ou l'accès à des sites Web auxquels elles ne devraient pas être autorisées.

Étant donné que la demande spéciale de proxy CONNECT peut être utilisée pour se connecter à n'importe quel port, une ACL est souvent utilisée pour bloquer son utilisation pour tous les ports autres que 443 (valeur SSL par défaut). Cela empêche les utilisateurs d'utiliser votre proxy pour se connecter à des serveurs autres que des serveurs Web, tels que AIM, ICQ ou MSN. De même, une ACL peut être configurée pour bloquer les requêtes HTTP normales vers des ports tels que 22, 23 et 25 qui sont normalement utilisés pour SSH, telnet et SMTP.

Le simple fait de définir une ACL dans la configuration de Squid ne fait rien - elle doit être appliquée d'une manière ou d'une autre pour avoir un effet. Cette section explique comment les utiliser pour contrôler quelles demandes adressées à votre serveur sont autorisées ou refusées. D'autres sections expliquent leur lien avec la mise en cache et l'accès à d'autres serveurs.

Lorsqu'il reçoit une requête, Squid détermine d'abord à quelles ACL elle correspond. Il compare ensuite cette liste de correspondances à une liste de restrictions de proxy, chacune contenant une ou plusieurs ACL et une action à effectuer (Autoriser ou Refuser). Dès qu'une restriction correspondant aux ACL de la demande est trouvée, son action détermine si la demande est autorisée ou refusée. Si aucune restriction ne correspond, l'inverse de la dernière action de la liste est appliqué. Pour cette raison, l'action finale dans la plupart des configurations Squid est Autoriser tout ou Tout refuser .

Les requêtes ICP provenant d'autres proxys sont également vérifiées pour voir à quelles ACL elles correspondent, et comparées à une liste similaire mais différente de restrictions ICP pour voir si elles seront autorisées ou non. Voir la section Connexion à d'autres proxys section plus loin pour une explication plus complexe de ce qu'est ICP et quand il est utilisé.

La configuration typique par défaut de Squid comprend plusieurs ACL et restrictions de proxy. Pour des raisons de sécurité, toutes les demandes de n'importe où sont refusées par défaut. Cela signifie que vous devrez modifier la liste des restrictions avant que quiconque puisse utiliser votre proxy. Lisez la suite pour savoir comment.

Pour afficher les listes des ACL définies, des restrictions de proxy et des restrictions ICP, cliquez sur Contrôle d'accès icône sur la page principale du module. Comme le montre l'image ci-dessous, un tableau des ACL indiquant leurs noms, types et correspondances s'affiche à gauche. À droite se trouvent des tableaux de proxy et de restrictions ICP indiquant leurs actions et les ACL auxquelles elles correspondent. Les tables de restriction ont des flèches vers le haut et vers le bas à côté de chaque entrée pour les déplacer dans la liste, car leur ordre est important.


La page des listes de contrôle d'accès

Avant que les clients puissent utiliser votre proxy, vous devrez le configurer pour autoriser l'accès à partir de certaines adresses. Pour ce faire, procédez comme suit :

  1. Sur la page de contrôle d'accès, sélectionnez Adresse du client dans le menu sous la liste des ACL existantes. Lorsque vous cliquez sur Créer une nouvelle ACL , un formulaire de saisie des adresses correspondantes apparaîtra.
  2. Dans le nom ACL saisissez un nom court tel que votreréseau .
  3. Dans le champ vide sous Depuis IP entrez l'adresse IP de départ dans la plage à autoriser, par exemple 192.168.1.1.
  4. Si le champ sous Vers IP entrez l'adresse de fin dans la plage, telle que 192.168.1.100 . Seuls les clients compris dans cette plage correspondront à l'ACL. N'entrez rien dans le Netmask domaine.
  5. Alternativement, vous pouvez spécifier un réseau IP en saisissant l'adresse réseau dans le champ Depuis IP champ et le masque de réseau (comme 255.255.255.0 ) dans le masque de réseau domaine. Pour en saisir plusieurs, vous devrez enregistrer et rééditer cette ACL afin que de nouveaux champs vides apparaissent.
  6. Cliquez sur Enregistrer pour ajouter l'ACL et revenir à la page de contrôle d'accès sur laquelle votre nouvelle ACL sera répertoriée.
  7. Cliquez sur Ajouter une restriction de proxy sous les restrictions proxy table.
  8. Dans le formulaire qui s'affiche, sélectionnez Autoriser de l'Action domaine.
  9. Dans les Match ACLs liste, sélectionnez votre nouveau votreréseau LCA.
  10. Cliquez sur Enregistrer sur ce formulaire pour revenir à nouveau à la page de contrôle d'accès. La nouvelle restriction sera affichée au bas du tableau, très probablement sous le Refuser tout entrée.
  11. Cliquez sur la flèche vers le haut à côté de votre nouvelle restriction pour la déplacer au-dessus de Tout refuser . Cela indique à Squid d'autoriser les connexions à partir de votre réseau et de refuser tout le monde.
  12. Enfin, cliquez sur Appliquer les modifications lien en haut de la page. Le proxy sera désormais utilisable par les clients de votre réseau interne, mais par personne d'autre !

Ces instructions supposent que vous démarrez avec la configuration Squid par défaut. Si le proxy a déjà été configuré pour autoriser l'accès depuis n'importe où (en modifiant le paramètre Deny all restriction à Tout autoriser ), vous devez le modifier à nouveau pour bloquer les clients extérieurs à votre réseau. Pour en savoir plus sur les types d'ACL disponibles et sur leur utilisation, lisez les deux sections suivantes.

Création et modification d'ACL

Avant de pouvoir bloquer ou autoriser les demandes provenant d'une adresse, d'un serveur ou d'une page, vous devez créer une ACL appropriée. Les étapes de base pour ce faire sont :

  1. Sélectionnez le type d'ACL à créer dans le menu déroulant sous le tableau *Listes de contrôle d'accès* et cliquez sur le bouton* Créer une nouvelle ACL*.
  2. Sur le formulaire qui s'affiche, saisissez un nom pour votre nouvelle ACL dans le champ Nom de l'ACL domaine. Si plusieurs ont le même nom, elles seront traitées comme correspondantes si une ACL portant ce nom correspond. Le nom doit être composé uniquement de lettres et de chiffres, sans espaces ni caractères spéciaux.
  3. Remplissez le reste du formulaire comme expliqué dans le tableau ci-dessous.
  4. Dans l'URL d'échec , saisissez une URL complète vers laquelle les clients refusés par cette ACL seront redirigés. Cela vous permet de définir des pages d'erreur personnalisées à afficher à la place des réponses Squid par défaut.
  5. Cliquez sur Enregistrer bouton en bas du formulaire.

Une fois qu'une ACL a été créée, vous pouvez la modifier en cliquant sur son nom dans la liste, en modifiant les champs et en cliquant sur Enregistrer . Ou vous pouvez le supprimer (s'il n'est pas utilisé par un proxy ou une restriction ICP) avec le Supprimer bouton. Comme d'habitude, le bouton Appliquer les modifications Le lien doit être utilisé pour activer les modifications que vous apportez.

Squid a un nombre incroyable de types d'ACL, bien que tous ne soient pas disponibles dans toutes les versions du serveur. Le tableau ci-dessous répertorie celles que vous pouvez créer pour Squid 2.4, et explique ce qu'elles font et ce que signifient les champs du formulaire de création d'une ACL de chaque type :

De nombreux types d'ACL sont inappropriés pour certaines situations. Par exemple, si un client envoie une requête CONNECT, le chemin de l'URL n'est pas disponible, et donc une URL Path Regexp ACL ne fonctionnera pas. Dans de tels cas, l'ACL est automatiquement supposée ne pas correspondre.

Créer et modifier des restrictions de proxy

Une fois que vous avez créé des ACL, elles peuvent être utilisées en créant, modifiant et déplaçant les restrictions de proxy. Squid comparera chaque demande à toutes les restrictions définies dans l'ordre, s'arrêtant lorsqu'il en trouve une qui correspond. L'action définie pour cette restriction détermine ensuite si la demande est autorisée ou refusée. Ce système de traitement combiné à la puissance des ACL vous permet de mettre en place des règles de contrôle d'accès incroyablement complexes - par exemple, vous pouvez refuser tout accès aux sites avec quake dans l'URL entre 9h et 17h du lundi au vendredi, sauf pour certaines adresses clients.

Pour créer une restriction de proxy, procédez comme suit :

  1. Cliquez sur Contrôle d'accès icône sur la page principale du module pour faire apparaître la page affichée dans la capture d'écran ci-dessus.
  2. Cliquez sur Ajouter une restriction de proxy en dessous de la liste des restrictions existantes pour accéder au formulaire de création.
  3. À partir de l'action champ sélectionnez soit Autoriser ou Refuser selon que vous souhaitez que les demandes correspondantes soient traitées ou non.
  4. Les Match ACLs list peut être utilisé pour sélectionner plusieurs ACL qui, si elles correspondent toutes, déclencheront l'action. De même, les Ne correspondent pas aux ACL peut être utilisé pour sélectionner les ACL qui ne doivent pas correspondre pour que l'action soit déclenchée. Il est parfaitement valide d'effectuer des sélections dans les deux listes pour indiquer que l'action ne doit être déclenchée que si toutes les ACL de gauche correspondent et si celles de droite ne correspondent pas. Dans sa configuration par défaut, Squid a une ACL appelée all qui correspond à toutes les demandes. Cela peut être utile pour créer des restrictions qui autorisent ou refusent tout le monde, dont l'une existe généralement par défaut.
  5. Cliquez sur Enregistrer pour créer la nouvelle restriction et revenir à la page de contrôle d'accès.
  6. Utilisez les flèches à côté dans les restrictions de proxy tableau pour le déplacer à l'emplacement correct. Si votre liste se termine par un Tout refuser entrée, vous devrez le déplacer vers le bas pour qu'il ait un effet. Si la liste contient une entrée qui autorise tous les clients de votre réseau et que vous venez d'ajouter une restriction pour refuser l'accès à certains sites, vous devrez la déplacer au-dessus de Autoriser entrée ainsi pour qu'il soit utilisé.
  7. Lorsque vous avez terminé de créer et de positionner des restrictions, cliquez sur Appliquer les modifications lien en haut de la

page pour les rendre actifs.

Une fois qu'une restriction de proxy a été créée, vous pouvez la modifier en cliquant sur le lien dans l'Action colonne pour sa ligne dans le tableau. Cela fera apparaître un formulaire d'édition identique à celui utilisé pour créer la restriction, mais avec Enregistrer et Supprimer boutons en bas. Le premier enregistrera toutes les modifications que vous apportez à l'action ou aux ACL correspondantes, tandis que le second supprimera complètement la restriction. Encore une fois, le bouton Appliquer les modifications Le lien doit être utilisé après la mise à jour ou la suppression d'une restriction pour rendre la modification active. Si, pour une raison quelconque, vous supprimez toutes les restrictions de proxy, Squid autorisera toutes les requêtes de tous les clients, ce qui n'est probablement pas une bonne idée.

La page de contrôle d'accès contient également un tableau permettant de modifier et de créer des restrictions qui s'appliquent aux demandes ICP. As the *Connecting to other proxies* section explains, ICP is a protocol used by Squid proxies in a cluster or hierarchy to determine what URLs other servers have cached. You can add to and edit entries in the ICP restrictions table in exactly the same way as you would for proxy restrictions. If you really are running a cluster of proxies, it may make sense to block ICP requests from sources other than your own network. If not, the default setup that allows all ICP packets is fine.

Setting up proxy authentication

Even though it is possible to configure Squid to allow access only from certain IP addresses, you may want to force clients to authenticate themselves to the proxy as well. This might make sense if you want to give only certain people access to the web, and cannot use IP address validation due to the use of dynamically assigned addresses on your network. It is also handy for keeping track of who has requested what through the proxy, as usernames are recorded in the Squid logs.

All browsers and programs that can make use of a proxy also support proxy authentication. Browsers will pop up a login window for entering a username and password to be sent to the proxy the first time it requests them, and automatically send the same information for all subsequent requests. Other programs (such as wget or rpm) require the username and password to be specified on the command line.

Each login and password received by Squid is passed to an external authentication program which either approves or denies it. Typically this program checks against a separate users file, but it is possible to write your own programs that use all sorts of methods of validating users - for example, they might be looked up in a database, or an LDAP server, or the Unix user list. Webmin comes with a simple program that reads users from a text file in the same format as is used by Apache, and this module allows you to edit users in such a file.

The steps to turn on authentication for your Squid proxy are :

  1. On the module's main page, click on the Access Control icon to bring up the form shown in Figure 44-4.
  2. Select External Auth from the menu below the ACL table and hit the Create new ACL bouton.
  3. In the form that appears, enter auth for the ACL name and select All users in the External auth users domaine. Then, hit the Save button.
  4. Click on Add proxy restriction below proxy restrictions table.
  5. Select Deny in the Action field and choose your new auth ACL from the Don’t match ACLs liste. This will block any proxy requests that are not authenticated, thus forcing clients to log in.
    Selecting Allow and then choosing auth from the Match ACLs field can be used for a slightly different purpose. This creates a proxy restriction that allows access to all authenticated clients, which can be positioned to force clients outside your network to log in while not requiring it for those inside the network.
  6. Cliquez sur Enregistrer button to return to the access control page again.
  7. Use the up arrow next to the new restriction to move it above any entry in the table that allows all access from your own network. If it is below this entry, clients from the network will be able to use the proxy without needing to log in at all. Of course, this may be what you want in some cases.
  8. Click on the Authentication Programs icon back on the main page.
  9. From the Authentication program field, select Webmin default . This tells the module to use the simple text-file authenticator that comes with the module so that you don’t have to write your own. Of course, you can specify your own custom program by selecting the last radio button and entering the full path to a script with some parameters in the adjacent text box. This program must continually read lines containing a username and password (separated by a space) as input, and for each output either the line OK or ERR for success or failure, respectively. Squid will run several instances of the program as permanent daemon processes when it is started.
  10. The login window that appears in browsers includes a description of the proxy server that the user is logging into. By default, this is Squid proxy-caching web server, but you can enter your own (such as Example Corporation Proxy) by filling in the Proxy authentication realm field.
  11. Normally, Squid will cache valid logins for one hour to avoid calling on the authentication program for every single request. This means that password changes may take up to an hour to take effect, which can be confusing. To lower this limit, at the cost of increased system load and slightly slower request processing, edit the Time to cache passwords for field.
  12. Hit the Save button and then click on Apply Changes on the main page.

Now that authentication is enabled, any attempts to use your proxy from a web browser will cause a login window to appear. Because no valid users have been defined yet, no logins will be accepted, which is not particularly useful! To create some users for authentication, follow these steps:

  1. Click on the Proxy Authentication icon on the module’s main page to bring up a table listing proxy users. At first, this will be empty.
  2. Click on the Add a new proxy user link above or below the table to display the user creation form. Configuring Logging 595
  3. Enter a login name into the Username field and a password for the user in the Password field.
  4. To temporarily disable this user without deleting him, change the Enabled? field to No.
  5. Hit the Create button to add the user and then click the Apply Changes link. This last step is necessary after creating a user for the changes to take effect, as Webmin’s Squid authentication program only reads the user file when first started.

A user can be edited by clicking on its name in the proxy users list, changing the username, password, or enabled status, and hitting the Save bouton. You can also completely remove a user with the Delete button on its editing form. Again, Apply Changes must be clicked to make anymodifications or deletions active. Squid will also cache valid passwords (as explained above) to reduce the load on theauthentication program, so a password change may take some time to take effect.

The module’s user management feature will only work if you choose Webmin default in the Authentication program field or if your own custom program takes the full path to an Apache-style users file as a parameter. If your program validates users against some other database or server, or if the module cannot figure out which file contains users from the command, the Proxy Authentication icon will not appear. Sometimes you may want to allow normal UNIX users to log in to your program with the same passwords that they use for telnet and FTP. Even though it is possible to write a program that does proxy authentication against the UNIX user database, there is another solution—configuring the module to add, delete, and update proxy users whenever a UNIX user is created, removed, or renamed. This is most useful for keeping usernames and passwords in sync without needing to grant access to every single UNIX user. Once you have normal authentication set up as explained above, synchronization can be turned on by following these steps:

  1. On the module’s main page, click on the Module Config link in the top-left corner.
  2. As their names suggest, the Create proxy users when creating system users, Update proxy users when updating system users, and Delete proxy users when deleting system users fields control the automatic creation, modification, and deletion of proxy users when the same thing happens to a UNIX user. For each one, you can either select Yes or No. You should probably turn on synchronization for updates and deletions, but leave it off for creations so that you can explicitly control who gets access to the proxy.
  3. Hit the Save button at the bottom of the form to activate the new settings. From now on, actions performed in Webmin’s Users and Groups module will also affect the Squid user list in the ways you have chosen. Adding a user at the command line with useradd or changing a password with the passwd command, however, will not.

Webmin
  1. Comment installer et configurer Squid Proxy sur Ubuntu 20.04

  2. Comment installer Squid Proxy sur AlmaLinux 8

  3. Comment installer le serveur proxy Squid sur Ubuntu 18.04 LTS

  4. Installer le serveur proxy Squid sur Ubuntu 14.04

  5. Comment configurer un serveur proxy squid sur CentOS/RHEL 7

Comment configurer Squid Proxy Server sur Ubuntu 20.04 LTS

Comment installer le dernier serveur proxy Squid sur Linux

Installer le serveur proxy Squid sur Ubuntu 20.04 LTS Linux

Installer Squid Proxy Server sur Rocky Linux 8 et AlmaLinux 8

Comment créer un proxy HTTP à l'aide de Squid sur CentOS 8

Comment installer le serveur proxy Squid sur Ubuntu 18.04