29.5. Configuration d'un proxy transparent

La méthode habituelle de travail avec des serveurs proxy est la suivante : le navigateur Web envoie des requêtes à un port donné dans le serveur proxy et le proxy fournit ces objets demandés, qu'ils se trouvent ou non dans son cache. Lorsque vous travaillez dans un réseau, plusieurs situations peuvent se produire :

Dans tous ces cas, il est possible d'utiliser un proxy transparent. Le principe est très simple : le proxy intercepte et répond aux requêtes du navigateur Web, de sorte que ce dernier reçoit les pages demandées sans savoir d'où elles viennent. Comme le nom l'indique, le processus complet s'effectue de façon transparente.

29.5.1. Options de configuration dans /etc/squid/squid.conf

Les options à activer dans le fichier /etc/squid/squid.conf pour que le proxy transparent fonctionne sont les suivantes :

  • httpd_accel_host virtual

  • httpd_accel_port 80

    Le numéro de port où se trouve le serveur HTTP

  • httpd_accel_with_proxy on

  • httpd_accel_uses_host_header on

29.5.2. Configuration du pare-feu avec SuSEfirewall2

Redirige toutes les requêtes entrantes via le pare-feu à l'aide d'une règle de transfert de port au port Squid. Pour ce faire, utilisez l'outil intégré SuSEfirewall2, décrit à Section 4.1.4.1, « Configuration avec YaST ». Son fichier de configuration se trouve dans /etc/sysconfig/SuSEfirewall2. Le fichier de configuration est constitué d'entrées bien documentées. Pour configurer un proxy transparent, vous devez configurer plusieurs options de pare-feu :

  • Périphérique pointant vers Internet : FW_DEV_EXT="eth1"

  • Périphérique pointant vers le réseau : FW_DEV_INT="eth0"

Définissez les ports et les services (reportez-vous au fichier /etc/services) du pare-feu via lequel l'accès s'effectue à partir de réseaux non sûrs (externes) tels qu'Internet. Dans cet exemple, seuls des services Web sont offerts à l'extérieur :

FW_SERVICES_EXT_TCP="www"

Définissez les ports ou les services (reportez-vous au fichier /etc/services) du pare-feu via lequel l'accès s'effectue à partir du réseau sécurisé (interne), tous deux via TCP et UDP :

FW_SERVICES_INT_TCP="domain www 3128"
FW_SERVICES_INT_UDP="domain"

Cela permet d'accéder aux services Web et à Squid (dont le port par défaut est 3128). Le service « domaine » remplace DNS (service de noms de domaine). Ce service est couramment utilisé. Sinon, retirez-le simplement des entrées ci-dessus et définissez l'option suivante sur no :

FW_SERVICE_DNS="yes"

L'option la plus importante est la numéro 15 :

Exemple 29.1. Configuration du pare-feu : option 15 :

# 15.)
# Which accesses to services should be redirected to a local port
# on the firewall machine?
#
# This can be used to force all internal users to surf via your
# Squid proxy, or transparently redirect incoming Web traffic to
# a secure Web server.
#
# Choice: leave empty or use the following explained syntax of
# redirecting rules, separated with spaces.
# A redirecting rule consists of 1) source IP/net,
# 2) destination IP/net, 3) original destination port and
# 4) local port to redirect the traffic to, separated by a colon,
# e.g. "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080"

Les commentaires ci-dessus décrivent la syntaxe à respecter. Entrez d'abord l'adresse IP et le masque du réseau des réseaux internes accédant au pare-feu du proxy. Ensuite, entrez l'adresse IP et le masque du réseau vers lequel ces clients envoient leurs requêtes. Dans le cas de navigateurs Web, spécifiez les réseaux 0/0, un caractère joker qui signifie « partout ». Après cela, entrez le port d'origine vers lequel ces requêtes sont envoyées et, enfin, le port vers lequel toutes ces requêtes sont redirigées. Du fait que Squid prend en charge d'autres protocoles que HTTP, les requêtes sont redirigées d'un autre ports vers le proxy, tel que FTP (port 21), HTTPS ou SSL (port 443). Dans cet exemple, les services Web (port 80) sont redirigés vers le port proxy (port 3128). Si d'autres réseaux ou d'autre services doivent être ajoutés, ils doivent être séparés par un espace dans leur entrée respective.

FW_REDIRECT_TCP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"
FW_REDIRECT_UDP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"

Pour démarrer le pare-feu et la nouvelle configuration avec lui, changez une entrée dans le fichier /etc/sysconfig/SuSEfirewall2. L'entrée START_FW doit être définie sur "yes".

Démarrez Squid comme illustré à la Section 29.3, « Démarrage de Squid ». Pour vérifier si tout fonctionne correctement, reportez-vous aux journaux Squid dans /var/log/squid/access.log. Pour vérifier que tous les ports sont configurés correctement, effectuez une analyse de port sur la machine à partir de n'importe quel ordinateur situé hors du réseau. Seuls les services Web (port 80) doivent être ouverts. Pour analyser les ports avec nmap, la syntaxe de la commande est nmap -O IP_address.