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 :
Pour des raisons de sécurité, il vaut mieux que tous les clients utilisent un serveur proxy pour naviguer sur l'Internet.
Il est indispensable que tous les clients utilisent un serveur proxy qu'ils en soient ou non informés.
Si le serveur proxy d'un réseau déménage, les clients existants doivent quand même conserver leur ancienne configuration.
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.
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.
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
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.