[pfSense 2.3.3] Créer un proxy transparent sans authentification avec Squid

pfSense est un formidable pare-feu / routeur. Vous pouvez encore améliorer ses performances et ses capacités en y ajoutant un proxy, via le paquet Squid.

L’ajout de paquets / outils / services complémentaires à pfSense se fait simplement, via le « Package Manager« . Vous trouverez le lien dans le menu « System« .


0. Vous avez dit, « proxy transparent » ?

Mais qu’est-ce que c’est ?! Il s’agit d’un service dans un serveur permettant l’interception automatique des requêtes / flux web d’un réseau vers l’internet. Le proxy transparent est souvent utilisé dans les établissements scolaires pour des raisons de filtrage web, de blocage de connexion ou autre…
L’intérêt d’avoir un proxy transparent permet plusieurs points :

  • selon la mise en place, possibilité de filtrer les sites web
  • effectuer du cache de site web (pour distribuer plus rapidement les images d’une page web par exemple)
  • effectuer du cache de mise à jour (utile pour Windows Update)
  • comprendre l’utilisation de son réseau en analysant les trames / flux qui transitent au travers de ce proxy.

Un serveur proxy se place entre votre routeur et votre LAN. Tous les utilisateurs de votre LAN accéderont forcément à ce serveur proxy et ce de manière automatique sans avoir de manipulations à effectuer. La mise en place de ce service a été très simple sous pfSense. Je n’ai pas effectué de modification au niveau des routes, du pare-feu ou de tout autre service. J’ai mis en place tel quel dans la procédure ci-dessous.

Le proxy transparent va écouter uniquement les requêtes / flux du port 80, c’est-à-dire les requêtes HTTP. Le HTTPS et donc le SSL ne seront pas couvert dans cet article et n’est pas mis en place par défaut. En effet, si vous souhaitez que les flux HTTPS passent aussi par le proxy transparent, vous avez deux solutions :

  • effectuer du « SSL interception » (attention aux législations et à la mise en place)
  • configurer des options spécifiques dans les serveurs DNS et DHCP.

Je ne traiterai pas le mode proxy transparent HTTPS dans cet article.


I. Installation de Squid dans pfSense

Le serveur proxy le plus connu dans le monde GNU/Linux est incontestablement « Squid ». Derrière son image de poulpe 8 bits se cache un formidable outil performant et robuste. La configuration en ligne de commandes est assez complexe (compte-tenu du fait que vous pouvez personnaliser au maximum l’outil) mais pas sous pfSense. En effet, vous bénéficierez de l’interface web de pfSense pour configurer votre serveur proxy Squid.

Comme dit plus haut, dirigez-vous dans le menu « System » puis sur « Package Manager« . Cliquez sur le lien « Available package« . Une liste de tous les packages disponible pour pfSense va alors s’afficher. Dans cette liste, recherchez « squid« .

Pour lancer l’installation du paquet, vous devez cliquer sur le bouton vert « Install » – le paquet étant léger, le téléchargement et l’installation se feront très rapidement. Au 01/03/2017 (heure de saisie de l’article), la version de Squid installée sera la 3.5.23. Une fois l’installation effectuée, il n’est pas nécessaire de redémarrer pfSense.
Vous aurez un nouveau lien dans le menu « Services » :


II. Configuration du cache du proxy (étape obligatoire et préliminaire)

« Squid Proxy Server » est donc le lien vous permettant toute la configuration de Squid, aussi bien en proxy transparent qu’en proxy de filtrage web. Dans notre cas, nous utiliserons la partie « proxy transparent ».
Avant de configurer votre proxy transparent, il faut au préalable configurer le cache. Ce cache est nécessaire pour stocker les objets statiques des pages web (images, fichiers css et autres fichiers qui ne sont pas dynamiques). La configuration est assez simple, vous devrez choisir l’espace de stockage attribué pour ce cache, quel mode de vidange vous souhaitez avoir pour le cache et quels sont les objets que vous ne souhaitez pas mettre en cache.

J’ai laissé pour la plupart des options tout par défaut. Elles conviennent pour une utilisation simple d’un proxy – notamment pour le cas de cet article. Si vous souhaitez en savoir plus ou avoir des configurations plus fines, n’hésitez pas à me faire part de vos besoins.
L’option que j’ai modifié est le « hard disk cache size » – Au lieu des 100mo de base attribué par Squid/pfSense, j’ai mis 1 Go (1000mo). La configuration se fait obligatoirement en méga-octets. Faites attention à ne pas saturer votre disque dur avec votre cache, sans quoi pfSense serait inutilisable et donc votre routeur/pare-feu/proxy aussi. Lorsque les modifications sont faites, vous pouvez enregistrer les modifications en cliquant sur le bouton « save » tout en bas de la fenêtre.


III. Configuration générale du proxy

En retournant dans l’onglet « General« , les options par défaut sont cette fois-ci à modifier.

  • première option à cocher, « check to enable the Squid proxy« . Si vous ne cochez pas l’option, Squid ne fonctionnera pas.
  • L’interface de proxy correspond à l’interface de pfSense sur laquelle vous souhaitez mettre en place le proxy transparent – il s’agit là de mettre l’interface LAN, pour que les utilisateurs de votre LAN passent automatiquement sur le proxy transparent.
  • Le port 3128 par défaut peut être laissé tel quel – Je vous le conseille fortement, sinon vous devrez modifier les règles de routage, filtrage, les antivirus…

Enfin, la seconde partie la plus importante concerne l’option « Transparent HTTP proxy« . Il faut absolument cocher la case « Enable transparent mode to forward all requests for destination port 80 to the proxy server« . Toutes les requêtes HTTP sur le port 80 transiteront forcément dans Squid, sur votre pfSense. Il ne s’agit pas là de filtrer les requêtes HTTPS, donc le SSL.

En effet, un proxy transparent n’a pas vocation de base à intercepter les requêtes pour les analyser ou les modifier. L’interception et le déchiffrement du SSL est réalisable, mais c’est une opération qui est coûteuse en terme de puissance matérielle d’une part et d’un point de vue légal vous devrez anonymiser toutes les données récoltées.
La configuration du proxy transparent Squid pour le HTTPS / SSL n’est pas traité dans cet article.

Enfin, pour vous assurer que tout fonctionne correctement, vous pouvez ajouter des logs en cochant la case à côté de « Enable access logging« , un peu plus bas dans la page « General ». Tous les logs seront dans « /var/squid » dans votre pfSense, aussi bien pour les logs que pour les cache.

Pour être sûr que le proxy Squid est le bon, j’ai modifié les variables de la rubrique « Headers handling… ». Libre à vous de faire de même.


L’installation et la configuration de Squid comme proxy transparent est dès à présent terminée ! Désormais, tous les utilisateurs du LAN naviguant sur le web (sites en HTTP) passeront automatiquement par le proxy transparent et ce, sans qu’ils ne s’en aperçoivent !
Vous pouvez récupérer les informations en temps réel retournant dans l’onglet « Services« , puis « Squid Proxy Server » et en cliquant sur l’onglet « Real Time« . En naviguant sur Qwant.com, voici un petit aperçu des logs :

Julien H

Passionné depuis toujours par l'informatique, je transforme ma passion en expertise. J'utilise quotidiennement les outils et systèmes Microsoft. Je ne délaisse pas mon côté ouvert, notamment via l'utilisation des OS Debian et Archlinux. L'infosec m'ouvre les yeux sur les enjeux actuels et futurs de l'IT.

11 Comments

  1. Petite précision tout de même concernant l’archi. Le pare-feu de sortie n’est pas nécessairement la même machine que le proxy, c’est même rarement le cas dès que l’on dépasse plusieurs centaines de salariés. Dans cette configuration le proxy transparent devient impossible et il faut alors opter pour un proxy.pac (avec ou sans autodétection DNS).

  2. A quoi bon ? 90% du trafic passe maintenant par https.
    Autant nous faire un article sur l’install d’un Windows XP…

    1. Il s’agissait d’une demande que j’ai eu plusieurs fois de la part d’étudiants en informatique – alors j’ai accepté la demande et ai fait l’article pour présenter le début de configuration vis-à-vis de la mise en place du proxy transparent 🙂
      Il est aussi réalisable de faire un proxy transparent pour le HTTPS, c’est en cours de saisie 😉
      Quant à l’article pour Windows XP, ça pourrait être une idée, dans la catégorie « Retro-Computing » ou encore « Memories », « Old Success »… A étudier !

        1. Salut ! Je n’ai clairement pas encore pris le temps de le faire, notamment parce qu’il faut effectuer un peu plus de manipulations (ssl interception) – je vais m’y mettre, au plus vite !

      1. C’est bien là le problème : l’éthique ! En plus de la question : Qui est responsable ?
        Bien que techniquement c’est réalisable, la mise en oeuvre dans une entreprise peut être très lourde de conséquence. Le lien de Bortzmeyer dont tu fais référence donne aussi un autre lien, celui de l’ANSSI qui dépose ses recommandations : https://www.ssi.gouv.fr/administration/guide/recommandations-de-securite-concernant-lanalyse-des-flux-https/

  3. bonjour je suis entrain de configurer un serveur pfsense, mon problème est que quand j’active le proxy transparent je n’arrive plus à accéder sur les pages http:!!

        1. Bonjour 🙂
          Les recherches avancent ! Les manipulations sont plus fastidieuses mais réalisables dans l’ensemble. Saisie de l’article en cours… 🙂

          EDIT : article prévu pour le 07/09/2017 – je n’ai pas le temps de tout saisir, j’ai mis uniquement la démarche à suivre pour faire fonctionner la chose. Je reviendrai au plus tôt pour mettre plus d’explications 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. Apprenez comment les données de vos commentaires sont utilisées.

Close
Close