33.6. Configuration d'un serveur proxy transparent

Normalement, le navigateur web envoie les demandes à un port donné du serveur proxy et le serveur proxy fournit les objets demandés, qu'ils soient ou non en cache. Dans un vrai réseau, différentes situations peuvent se présenter :

Vous pouvez utiliser un serveur proxy transparent dans chacun des cas mentionnés ci-dessus. Le principe est très simple : le serveur proxy accepte les demandes du navigateur web et les traite de manière à ce que le navigateur web obtienne les pages demandées sans savoir d'où elles proviennent. Le processus complet s'exécute de manière transparente, d'où son nom.

33.6.1. Configuration du noyau

Vous devez commencer par vous assurer que le noyau du serveur proxy prend en charge un serveur proxy transparent. Le noyau livré avec SUSE LINUX est déjà configuré de façon appropriée. Dans le cas contraire, ajoutez ces options au noyau et recompilez-le. Vous trouverez des informations précises à ce sujet dans le Chapitre 9, Le noyau Linux.

33.6.2. Options de configuration de /etc/squid/squid.conf

Vous devez activer les options suivantes dans le fichier /etc/squid/squid.conf pour définir un serveur proxy transparent :

  • httpd_accel_host virtual

  • httpd_accel_port 80

    Port, sur lequel se trouve le véritable serveur HTTP.

  • httpd_accel_with_proxy on

  • httpd_accel_uses_host_header on

33.6.3. Configuration du pare-feu avec SuSEfirewall2

Toutes les demandes entrantes qui passent au travers du pare-feu doivent être redirigées vers le port de Squid à l'aide d'une règle de redirection de port. Utilisez pour ce faire l'outil SuSEfirewall2 fourni. Il se configure à l'emplacement /etc/sysconfig/SuSEfirewall2. Le fichier de configuration se compose de déclarations bien documentées. Même si vous souhaitez seulement installer un serveur proxy transparent, il vous faut configurer quelques options de pare-feu :

  • L'interface est du côté de l'Internet : FW_DEV_EXT="eth1"

  • L'interface est du côté du réseau interne : FW_DEV_INT="eth0"

Définissez sur le pare-feu les ports et services (voir /etc/services) qui sont accessibles depuis des réseaux (externes) non dignes de confiance comme Internet. Dans cette exemple, seuls les services web sont offerts à l'extérieur :

FW_SERVICES_EXT_TCP="www"

Définissez sur le pare-feu les ports et services (voir /etc/services) qui sont accessibles depuis des réseaux (internes) dignes de confiance, par 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 « domain » signifie DNS (Domain Name Service). Il s'agit d'un service utilisé fréquemment. Sinon, vous devez simplement supprimer la déclaration ci-dessus et définir l'option suivante à no :

FW_SERVICE_DNS="yes"

L'option la plus importante est le nombre 15 :

Exemple 33.1. L'option 15 de la configuration du pare-feu

#
# 15.)
# Quel accès aux différents services doit être redirigé vers un 
# port local de l'ordinateur pare-feu ?
#
# Cette option permet d'obliger tous les utilisateurs internes à 
# utiliser le serveur proxy pour naviguer ou de transférer 
# tout le trafic web entrant à un serveur web sécurisé.
#
# Choix : n'insérer aucune nouvelle déclaration ou utiliser la syntaxe
# de règle de redirection suivante séparée par des espaces.
# Une règle de redirection se compose de : 1) IP/réseau source, 
# 2) IP/ réseau cible, 3) port cible précédent et 4) port local 
# vers lequel le trafic doit être redirigé, séparés par des 
# virgules, par exemple : 
# "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080"
#

La syntaxe à respecter est indiquée dans le commentaire ci-dessus. D'abord, indiquez les adresses IP et le masque réseau des réseaux internes qui accèdent au pare-feu du serveur proxy. Ensuite, configurez les adresses IP et le masque réseau auxquels sont envoyées les demandes des clients. Pour les navigateurs web, on choisit les réseaux 0/0. Il s'agit d'un joker qui signifie « dans toutes les directions. » Vient ensuite le port d'origine auquel ces demandes ont été envoyées et enfin le port vers lequel les demandes sont redirigées. Comme Squid prend en charge d'autres protocoles que le seul HTTP, redirigez les demandes provenant d'autres ports au serveur proxy, comme par exemple FTP (port 21), HTTPS ou SSL (port 443). Dans cet exemple, les services web (port 80) sont redirigés vers le port du serveur proxy (port 3128. Si plusieurs réseaux ou services doivent être ajoutés, ils doivent être séparés par un espace dans la ligne correspondante.

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, vous devez modifier une ligne du fichier /etc/sysconfig/SuSEfirewall2. Le paramètre START_FW doit être défini à "yes" :

Démarrez Squid comme expliqué dans la Section 33.4, « Démarrer Squid ». Utilisez les fichiers journaux dans /var/log/squid/access.log pour vérifier que tout fonctionne correctement.

Pour vérifier que tous les ports sont correctement configurés, exécutez une analyse des ports de l'ordinateur à partir de n'importe quel ordinateur extérieur au réseau. Seul le port du service web (port 80) doit être ouvert. Pour analyser les ports avec nmap, la syntaxe de la commande est nmap -O adresse_IP.


SUSE LINUX Guide de l'administrateur 9.2