Demande d'information sur proxy

Bonjour à tous,

Je souhaite filtrer le trafic en forçant les postes utilisateurs à passer par un proxy, sans avoir à les toucher.

Sauf erreur, il faut donc que j’installe un proxy transparent.

Si on trouve de nombreux tutos expliquant comment installer et configurer SQUID en lui même, il y a certaines choses qui m’échappent au niveau de l’infrastructure et je n’ai pas trouvé de réponse claire à ce sujet.

En effet, mon réseau se compose (classiquement) ainsi :
{INTERNET} <—> MODEM ROUTEUR <—> FIREWALL <—> {LAN}

La passerelle indiquée sur les postes clients est l’IP interne du FIREWALL.

Les questions que je me posent sont :

  1. Où placer la machine proxy ? Sur le LAN ?
  2. Comment faire pour “intercepter” tout le trafic, puis le rediriger sur le proxy, qui va ensuite faire son boulot ? Y a-t-il des choses à faire sur le FIREWALL et/ou le ROUTEUR ? La personne qui gère le FIREWALL me dit qu’il n’y a rien à faire à son niveau, mais j’ai comme un doute…

Merci !

Will

La meilleur place pour ton prox c’est effectivement juste après ton routeur. On mets généralement l’interface connecter en direct sur ton routeur avec un adressage IP indépendant (style 10.0.0.0).

Ensuite dans ton proxy il faut que tu configure la journalisation (si je ne me trompe) pour effectuer l’enregistrement proprement de tes logs de traffics.

Du coup l’IP passerelle de tees client sera bien ton proxy. Il n’y a effectivement aucune intervention à faire sur ton routeur sauf en cas de changement d’adressage IP. Il Faut par contre configurer ta route de proxy pour passer de ton réseau interne au reste.

Bonne chance !

Salut TrashHard, et merci pour ta réponse.

En fait, j’ai oublié de préciser le firewall que j’ai est un boîtier Cisco sur lequel je n’ai pas vraiment la main.

Firewall et proxy seront deux machines indépendantes (proxy sera un PC sous Debian+Squid). Donc, passerelle et proxy auront des IP différentes.
Du coup, je ne sais pas si ce que tu me décris convient à ma situation…

Si non, dans ce cas, où placer le proxy ? Sur la partie “outside” du Firewall (la DMZ si je ne me gourre) ? Ou sur le LAN, avec une IP privée ?
De plus, qui redirige les requêtes sur port 80 vers le proxy ? Le Firewall ou le routeur ?

Thanks

Ta passerelle devras obligatoirement être ton proxy sinon rien n’empêche tes users de le contourner, si tu peux pas faire autrement il faut le mettre en amont de ton routeur mais du coup il faudra faire des modif sur le routeur car c’est ton proxy qui devra répondre aux requêtes de ton IP publique, le problème c’est que ton proxy sera du coup “à la vue de tout le monde” et là ça crain.

Le mieux est de le mettre dans ton lan et configurer ton dhcp pour attribuer cette adresse comme passerelle. Ensuite avec ta carte 2 de ton proxy tu la mets en liens direct avec ton routeur ça fera une séparation physique pour empêcher tout le monde de le contourner. C’est un peux barbare mais ça fonctionne !

Re !

Et merci de ta réponse.
Finalement, au vu de ce que tu dis, ce ne sera pas si simple…

D’autant que je ne maîtrise pas du tout Squid, donc avant de mettre la charrue avant les boeufs, je vais commencer par le commencement 8)

Premièrement, le tester d’abord comme proxy “simple”, en le configurant dans le navigateur du client.

Je viens d’installer squid3 et de le configurer : il démarre, pas de message d’erreur au start.

root@squid:/etc/squid3# netstat -laputen | grep squid tcp6 0 0 :::3128 :::* LISTEN 0 19143 5645/(squid) udp 0 0 0.0.0.0:58235 0.0.0.0:* 13 18932 5645/(squid) udp6 0 0 :::58327 :::* 13 18931 5645/(squid)

MAIS, le poste client a le message d’erreur “Connexion refusée par le serveur proxy”

Pourtant, mon fichier de conf découle du fichier par défaut, auquel j’ai juste ajouté une ACL pour mon réseau, puis l’autorise :

[code]
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl monlan src 192.168.1.0/24
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
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 localhost
http_access allow monlan
http_access deny all
http_port 3128

coredump_dir /var/spool/squid3

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[/code]

Où est-ce que j’ai fait une erreur ?

Salut,

Ton squid n’a pas l’air d’écouter en ipv4…

Bonjour,

Si votre routeur est un Cisco vous pouvez utiliser le protocole WCCP pour faire un proxy transparent.

Cordialement,

Si tu n’utilise qu’un seul port de ton cisco dans l’idée je dirais :

WEB --> ROUTEUR ==> FIREWALL ==> SQUID --> LAN

Si tu désire utilisais plusieurs ports de ton cisco tout dépendra alors de ton matériel disponible car cela complexifie bien plus la mise en place.

Sinon il y a des appliances très sympa faites à base de PFsense qui remplisse les deux objectifs de ‘filtrer’ et de ‘proxyfier’.

Ton proxy c’est pour le cache ou pour autres chose ?

Merci à tous pour vous être penché sur mon pb.

La raison pour laquelle cela ne fonctionnait pas, c’est que je n’avais pas mis la bonne IP du proxy sur le poste client… Sorry pour ce mode gros boulet :079

P’tit Nico :wink:
Le routeur n’est pas un Cisco.
Par contre, notre Firewall (un PIX 501) semble être une antiquité et ne permettrait pas de rediriger les requêtes vers le proxy.
N’ayant que trop peu de connaissances en la matière, j’ignore si cela est vrai. Si un connaisseur pouvait confirmer, je suis preneur :slightly_smiling:

Clochette
Je n’utilise qu’un port sur le FW.
Le but est surtout de filtrer la navigation WEB.
Ton schéma suggère-t-il que j’ai deux cartes sur le SQUID, et que celui ci fasse “entonnoir” devant le LAN ?
Dans ce cas, faudrait-il faire ainsi :

  1. Une carte reliée au FW avec le même type d’adressage IP
  2. Sur l’autre se branche le switch du LAN
  3. Modifier les @IP des clients pour avoir le même type que la seconde carte et indiquer comme passerelle l’@ du SQUID
    Dans ce cas, comment transvaser les requêtes provenant d’une carte vers l’autre ?

Merci !!

[quote=“will7991”]Merci à tous pour vous être penché sur mon pb.

La raison pour laquelle cela ne fonctionnait pas, c’est que je n’avais pas mis la bonne IP du proxy sur le poste client… Sorry pour ce mode gros boulet :079

P’tit Nico :wink:
Le routeur n’est pas un Cisco.
Par contre, notre Firewall (un PIX 501) semble être une antiquité et ne permettrait pas de rediriger les requêtes vers le proxy.
N’ayant que trop peu de connaissances en la matière, j’ignore si cela est vrai. Si un connaisseur pouvait confirmer, je suis preneur :slightly_smiling:

Clochette
Je n’utilise qu’un port sur le FW.
Le but est surtout de filtrer la navigation WEB.
Ton schéma suggère-t-il que j’ai deux cartes sur le SQUID, et que celui ci fasse “entonnoir” devant le LAN ?
Dans ce cas, faudrait-il faire ainsi :

  1. Une carte reliée au FW avec le même type d’adressage IP
  2. Sur l’autre se branche le switch du LAN
  3. Modifier les @IP des clients pour avoir le même type que la seconde carte et indiquer comme passerelle l’@ du SQUID
    Dans ce cas, comment transvaser les requêtes provenant d’une carte vers l’autre ?

Merci !![/quote]

Des règles de NAT devraient amplement suffire, attention à ne pas effectuer de boucle au passage.

admettons :

  • eth0 relié au firewall

  • eth1 relié à ton LAN via un switch et re dirigeant tous ce que tu désire vers eth0 et rejette le reste.

deux sujets abordant un peu le sujet :

http://www.debian-fr.org/rediriger-le-traffic-avec-iptables-t22344.html
http://www.debian-fr.org/regle-iptables-t20495-50.html#p215479

Par contre quel est le type de proxy que tu cherche à mettre ne place exactement ?

Il y a divers placements possibles pour un proxy “transparent”, chacun avec ses avantages et ses inconvénients.

a) Intégré dans le firewall.
C’est le plus simple d’un point de vue réseau puisqu’on n’ajoute pas d’équipement. Mais il faut que système qui fait tourner le firewall le permette.

b) En cascade avec le firewall, soit côté internet soit côté LAN.
L’interception des flux est simple puisque ceux-ci traversent obligatoirement la machine qui sert de proxy. D’un point de vue réseau, celle-ci doit avoir deux interfaces (éventuellement une seule interface physique avec deux VLAN si le switch du LAN le permet) et fonctionne soit comme un routeur IP soit comme un pont ethernet. La configuration en routeur est plus simple, mais comme un routeur sépare les réseaux il faut changer l’adressage IP d’un côté, donc soit le modem-routeur, soit le firewall soit le LAN. La configuration en pont est plus délicate mais évite de modifier l’adressage.

Non, dans ce schéma la passerelle reste le firewall. Ce n’est que si le proxy est placé entre le firewall et le LAN qu’il devient la passerelle pour le LAN.

Changement qui sera nécessaire soit dans le routeur soit dans le firewall si le proxy fonctionne en routeur.

c) A côté du firewall, soit côté internet soit côté LAN.
D’un point de vue réseau c’est une simple machine avec une interface et non plus un routeur ou un pont. L’interception requiert que le firewall redirige les flux concernés vers le proxy. Si le proxy est situé dans le LAN (avantage : protégé par le firewall), il faut bien sûr faire une exception pour les flux émis par le proxy lui-même, sinon ça boucle. Le placement côté extérieur évite cette contrainte mais enlève la protection du firewall.

C’est faux. Il suffit que le firewall redirige les flux concernés vers le proxy et bloque leur passage direct sauf en provenance du proxy.

Clochette :
Merci pour les liens. Je vais lire cela avec attention.

PascalHambourg :
Ce que tu décris en a) était effectivement l’idéal. Malheureusement, notre firewall n’a pas de fonction de proxy :’(
En c), c’est effectivement la configuration à laquelle j’ai pensé. Mais on m’a indiqué que ce firewall ne permettait pas de rediriger les flux vers un proxy. Là dessus, n’étant pas compétent en la matière, je me demandais si c’était vrai et qu’il fallait des fonctionnalité additionnelles à un Firewall rediriger des flux ? Ou est-ce qu’à la base, un FW n’est pas déjà censé le faire ? Faire du NAT, ce n’est pas déjà rediriger des flux ?
Du genre : tout ce qui vient d’Internet en port 80 vas sur le proxy et ce qui vient du proxy, le laisser sortir sur Internet. Et du coup, créer une règle qui bloque le 80 sur tout le LAN sauf le proxy ?

Merci pour l’info, je n’y avais pas du tout pensé…

A la base, un firewall est juste un filtre : il laisse passer ou il bloque. Le NAT, c’est en plus même si c’est assez répandu pour des raisons pratiques.

Ensuite, rediriger un flux peut se faire de différentes façons. Le NAT destination, qui remplace l’adresse IP de destination de la connexion par l’adresse IP du proxy, en est une. Elle a l’inconvénient de masquer l’adresse de destination originelle au proxy, qui ne pourra se baser que sur le nom d’hôte du site transmis dans la requête HTTP/1.1 (mais pas HTTP/1.0) pour la retrouver. Une autre façon qui n’a pas cet inconvénient consiste à “simplement” router les connexions HTTP vers le proxy sans changer leur adresse de destination, c’est-à-dire en définissant le proxy comme passerelle pour ces connexions. Le routage avancé de Linux le permet, je ne sais pas si c’est le cas de ton firewall.

Ca m’a l’air un peu bric broc.
Comme tu as l’intention d’utiliser une machine dédiée pour squid…

Pourquoi tu n’installes pas pfsense sur cette machine et la faire travailler comme firewall, proxy transparent squid et dhcp pour ton lan.

Ou a la rigueur tu configures une debian, mais c’est plus compliqué ou du moins beaucoup plus chronophage.

( il faut juste une machine avec 2 cartes réseau, le reste ça dépend la taille de l’infra et ton budget )

internet >>> modem/box >>> pfsense ( ou machine dédiée ) >>> switch lan / wifi

Mais non, comme je l’ai déjà écrit une seule carte réseau suffit avec un OS et un switch qui supportent les VLAN IEEE 802.1Q.

oui, avec du matos “récent” tu as tout a fait raison :slightly_smiling:

Les VLAN, ce n’est pas vraiment récent, même avec des guillemets.

Pourtant de souvenir le PIX 501 permet le NAT il devrait donc être possible de trouver de la documentation … à mon taff nous nous efforçons de les remplacer par des appliance du type Sophos (anciennement Astaro).

Mais je doit avouer être bien plus enjoué à utiliser du Pfsense comme déjà abordé.

C’est vrai c’était vraiment précis de ma part :blush:

Merci pour pfsense. Je ne connaissais pas, et ça a l’air très bien…

Le PIX 501 fait effectivement du NAT. De là, que faire ? “Juste” créer une règle “inside” avec l’ip de mon proxy + outside avec une IP publique ?

Cela veut-il dire qu’on ne verra pas dans les logs de Squid qui fait quoi ?

Si je comprends bien, il faut que le firewall ait, en plus des fonctionnalité FW et NAT, des instructions de routage (donc que ce soit un Routeur Firewall en fait) ?