Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

12.3. Configuration Squid

Pour configurer Squid, ajuster les directives dans le fichier de configuration. Squid est normalement configuré selon les prérequis d'un réseau donné en ligne de commande et en modifiant le fichier de configuration Squid situé dans /etc/squid/squid.conf, qui contient le minimum de configurations conseillées.

12.3.1. Configuration de base et /etc/squid/squid.conf

Procédure 12.1. Configuration de base

  1. Sauvegarde du fichier de configuration original.
    mv /etc/squid/squid.conf /etc/squid/squid.conf.org
  2. Créer un nouveau fichier /etc/squid/squid.conf avec le contenu suivant. Modifier l'ACL (de l'anglais Access Control List) à la ligne mynetwork pour définir le réseau d'origine pour votre réseau local. Il s'agit du réseau où les systèmes client utilisent le serveur de Squid comme proxy.

    Note

    L'ordre des éléments qui se trouvent dans le fichier de configuration /etc/squid/squid.conf est important car Squid le lit à partir du début.
    acl mynetwork src xxx.xxx.xxx.0/24
    http_access allow mynetwork
    
    #defaults
    acl localnet src 10.0.0.0/8 
    acl localnet src 172.16.0.0/12  
    acl localnet src 192.168.0.0/16 
    acl localnet src fc00::/7
    acl localnet src fe80::/10
    acl SSL_ports port 443
    acl Safe_ports port 80      
    acl Safe_ports port 21      
    acl Safe_ports port 443     
    acl Safe_ports port 70      
    acl Safe_ports port 210     
    acl Safe_ports port 1025-65535  
    acl Safe_ports port 280     
    acl Safe_ports port 488     
    acl Safe_ports port 591     
    acl Safe_ports port 777     
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localnet
    http_access allow localhost
    http_access deny all
    http_port 3128
    hierarchy_stoplist cgi-bin ?
    coredump_dir /var/spool/squid
    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
  3. Démarrer le service et l'activer au démarrage :
    ~]#  systemctl enable squid
    ~]#  systemctl start squid
  4. Si le parefeu est activé, autoriser le port de Squid.
    ~]#  firewall-cmd --add-port=3128/tcp --permanent
  5. Configurer votre navigateur web pour qu'il utilise le serveur proxy. Cela dépendra du navigateur et de la version utilisés. Ainsi, pour configurer Firefox version 46.0.0 :

    Procédure 12.2. Configurer Firefox avec le serveur Proxy

    1. Dans le menu Firefox situé en haut à droite, sélectionner Avancé, puis Réseau à partir des onglets, puis, sélectionner Réseau à partir des onglets situés en haut sur la barre de navigaiton.
    2. Dans la section Connexion, ouvrir Paramètres de configuration.
    3. Dans la nouvelle fenêtre qui vient de s'ouvrir, cochez Configuration de serveur proxy manuelle et saisir le serveur proxy auquel vous êtes connecté dans le champ Proxy HTTP. Si vous avez besoin de saisir un port particulier, le saisir dans le champ Port.
Pour plus d'informations sur /etc/squid/squid.conf, voir la page man squid(8).

12.3.2. Configurer Squid en tant que serveur proxy HTTP

Procédure 12.3. Configurer Squid en tant que serveur proxy HTTP

  1. Ajouter les lignes suivantes en haut du fichier /etc/squid/squid.conf pour remplacer l'exemple d'adresse IP :
    cache_dir ufs /var/spool/squid 500 16 256
    acl my_machine src 192.0.2.21 # Replace with your IP address
    http_access allow my_machine
  2. Créerdes répertoires cache par la commande suivante :
    ~]# systemctl restart squid
    Squid commence maintenant à écouter le port 3128 (port par défaut) sur toutes les interfaces de réseau de la machine.
  3. Configurer votre navigateur, par exemple Firefox, afin d'utiliser Squid en tant que serveur proxy HTTP avec l'hôte comme adresse IP de la machine et le port 3128: pour plus d'informations, voir Procédure 12.2, « Configurer Firefox avec le serveur Proxy »

12.3.2.1. Configuration du port HTTP

La directive http_port est utilisée pour spécifier le port où Squid va pouvoir écouter les connexions. Le comportement par défaut est d'écouter le port 3128 sur toutes les interfaces de la machine. Vous pouvez forcer Squid à écouter plusieurs interfaces sur différents ports, sur différentes interfaces.

Exemple 12.1. Spécifier le port HTTP

Ouvrir /etc/squid/squid.conf et modifier la ligne qui convient. Dans cet exemple, Squid est configuré pour écouter le port 8080.
# Squid normally listens to port 3128
http_port 8080
Le serveur Squid peut écouter différents ports en même temps.

Exemple 12.2. Spécifier deux ports ou davantage

Avec la configuration actuelle, Squid écoute à la fois le port 8080 et le port 9090:
http_port 8080 9090

Note

N'oubliez pas de démarrer à nouveau le serveur de Squid pour appliquer les nouvelles configurations :
~]# systemctl restart squid
Vous pouvez également spécifier la combinaison port et adresse IP dans /etc/squid/squid.conf. Normalement, cette approche est utilisée lorsque vous avez plusieurs interfaces sur la machine et que Squid écoute uniquement l’interface connectée à un réseau local (LAN).

Exemple 12.3. Configurer les adresses IP

Les commandes suivantes ordonnent à Squid d'écouter le port 3128 sur l'interface ayant pour adresse IP 192.0.2.25:
http_port 192.0.2.25:3128
De plus, vous pouvez spécifier http_port en utilisant une combinaison nom d'hôte et port. Le nom d'hôte sera traduit en adresse IP par Squid, qui écoutera alors sur le port 8080 sur cette adresse IP particuliére.
http_port myproxy.example.com:8080
Un autre aspect de la directive http_port est que cela peut prendre plusieurs valeurs sur des lignes distinctes. Les lignes suivantes déclencheront Squid pour écouter trois combinaisons d'adresses IP / port différentes. C’est généralement utile lorsque vous avez des clients dans différents réseaux locaux (LAN) configurés pour utiliser des ports différents pour le serveur proxy. Modifiez le fichier /etc/squid/squid.conf comme suit :
http_port 192.0.2.25:8080
http_port lan1.example.com:3128
http_port lan2.example.com:8081

12.3.2.2. Contrôle d'accès HTTP et ACL

Les listes des contrôle d'accès (ACL) sont les éléments de base du contrôle d'accès et sont normalement utilisées en combinaison à d'autres directives, comme http_access, pour contrôler l'accès à divers composants de Squid ou ressources web.

Exemple 12.4. Contruire un ACL pour un nom de domaine

Cet exemple vous montre comment éditer l'instruction (générale) suivante :
acl example_site dstdomain example.com
comme suit. Donnez un nom à votre ACN en remplaçant example_site par un nom. Le type utilisé ici est dstdomain, qui indique que la valeur (le site web) est un nom de domaine.
acl FB dstdomain facebook.com
Si vous devez construire un ACL pour un certain nombre de sites web, vous pouvez :
  • Écrire les valeurs en une seule ligne :
    acl example_sites dstdomain example.com example.net example.org
  • Écrire les valeurs sur plusieurs lignes si les valeurs augmentent beaucoup :
    acl example_sites dstdomain example.com example.net
    acl example_sites dstdomain example.org
  • Vous pouvez mettre les valeurs dans un fichier dédié à ce but, puis instruire Squid de lire les valeurs de ce fichier :
    acl example_sites dstdomain '/etc/squid/example_sites.txt'
    Le contenue de /etc/squid/example_sites.txt ressemble à ceci :
    # Write one value (domain name) per line
    example.net
    example.org # Temporarily remove example.org from example_sites acl
    example.com

Important

Les ACL doivent être combinés à des directives de contrôle d'accès pour permettre ou interdire l'accès à certaines ressources. http_access est une de ces directives utilisées pour donner l'accès en vue d'effectuer des transactions HTTP via Squid :
Contrôler l'accès HTTP par les ACL
Pour autoriser ou interdire l'accès aux clients, vous devez combiner les ACL à la directive http_access.
Dans le fichier /etc/squid/squid.conf, modifiez la directive http_access, où ACL_NAME indique les ressources auxquelles on peut accéder ou non :
http_access allow|deny [!]ACL_NAME

Exemple 12.5. Autoriser ou refuser l'accès aux clients

Les paramètres de configuration suivants donnent accès à l'hôte local :
http_access allow localhost
Cette configuration refuse l'accès à l'hôte local :
http_access deny localhost
Certains noms d'ACL commencent par un point d'exclamation. Si tel est le cas, inclure le point d'exclamation également :
http_access deny !Safe_ports