Configurer iptables pour utiliser squid comme proxy

Utiliser Iptables pour utiliser SQUID en tant que proxy transparent

Ou comment obliger vos machines a utiliser le proxy pour aller sur internet

J'attire votre attention sur le fait qu'un serveur dns (relayant les requêtes DNS locales sur internet ) est nécessaire sur le réseau local afin que les 'machines visiteuses' connaissent le chemin a emprunter , et qu'elles passent donc par le routeur par défaut , qui sera bientôt notre proxy transparent. Ce serveur DNS peut etre le meme que le proxy pour simplifier les choses.

Une configuration rapide de dnsmasq permet de monter un relai DNS en un rien de temps

Première solution : Squid et iptables sur la meme machine

Cette première methode est la plus simple a mettre en oeuvre : Elle tient en une ligne, par contre , elle est moins sécurisée car le serveur proxy est accessible directement via le port TCP 3128. un petit malin peut parfaitement utiliser un tunnel http pour utiliser ses applications favorites ...

pour activer le proxy transparent il suffit de taper la ligne suivante :

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Cette ligne indique a la machine d'intercepter toutes les requêtes sur un port 80 , et de les rediriger vers le proxy.

afin d'eviter les problemes si un serveur web accessible depuis internet tourne sur la machine en question d'utiliser la ligne suivante (le réseau est en 192.168.6.x)

iptables -t nat -A PREROUTING -i eth0 -s 192.168.6.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128

Cette ligne provoque le même effet que la ligne précédente , a la différence qu'elle restreint son action uniquement au réseau local.

Avec les deux lignes citées précedemment , les machines clientes de notre réseau local qui tentent d'acceder par exemple à www.google.fr sur le port 80 seront tout simplement redirigées sur le serveur proxy http.

Mais par contre , des programmes comme ping , telnet , ou autres ssh ne fonctionnent pas , et donc par conséquent , toutes les applications de type peer2peer sont également bloquées.

Par défaut , SQUID ne permet pas de faire du proxy transparent avec du ftp. Pour cela je vous propose l'utilitaire frox

Deuxième solution : Linux et Squid sur deux machines différentes :

Cette methode permet d'augmenter la sécurité car le proxy n'est plus accessible directement par les machines clientes

Imaginons donc que le routeur iptables possède l'adresse IP 192.168.6.2 du coté des machines clientes , et l'adresse IP 172.16.0.4 du coté proxy; et que le proxy possède l'adresse IP 172.16.0.1. Nous devrons configurer la table iptables du routeur de la facon suivante :

iptables -t nat -A PREROUTING -i eth0 -s ! 172.16.0.1 -p tcp --dport 80 -j DNAT --to 172.16.0.1:3128
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.6.0/24 -d 172.16.0.1 -j SNAT --to 172.16.0.4
iptables -A FORWARD -s 192.168.6.0/24 -d 172.16.0.1 -i eth0 -o eth1 -p tcp --dport 3128 -j ACCEPT

ce qui signifie que les paquets ne provenant pas du proxy mais étant a destination du port 80 seront redirigés vers le proxy ; que les paquets revenant depuis le proxy, passeront obligatoirement par le routeur ; et que nous autorisons les paquets provenant du réseau local à être redirigés vers le proxy.

Une mise en place récente m'a amené à n'utiliser qu'une seule ligne.

iptables -t nat -A PREROUTING -i eth0 -s ! 172.16.0.1 -p tcp --dport 80 -j DNAT --to 172.16.0.1:3128

Seulement dans ces deux dernières configurations , des problèmes peuvent se poser si le proxy est directement connecté à internet (utilisation du proxy par d'autres internautes externes au réseau), auquel cas nous allons avoir recours aux Access Control Lists (acl) de Squid

Dans le dernier cas cité, nous opererons de la manière suivante : en editant le fichier squid.conf :

acl machines_locales src 172.16.0.0/16
http_access allow machines_locales
http_access deny !machines_locales

et dans le premier cas :

acl machines_locales src 192.168.6.0/24
http_access allow machines_locales
http_access deny !machines_locales

Ou en ajoutant un firewall entre le proxy et l'accès internet (Solution recommandée ... d'autant plus si il réside une faille de sécurité dans votre version de squid.

4 Pages dans cet article
Le contenu de cette page a été vu 21915 fois / Contenu mis a jour le Mercredi 3 Décembre 2008 à 00:13

Citation 15 sur 50

C'est par la porte qu'on sort. Pourquoi personne ne veut-il utiliser cette sortie ?

Confucius

0 Index
0 Unix/Linux
0 OpenBsd
0 Internet
0 Le Webmaster

Les meilleures randonnées pedestres de bretagne.