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

11

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« .

[divider style= »solid » top= »20″ bottom= »20″]

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.

[divider style= »solid » top= »20″ bottom= »20″]

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 » :

[divider style= »solid » top= »20″ bottom= »20″]

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.

[divider style= »solid » top= »20″ bottom= »20″]

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.

[divider style= »solid » top= »20″ bottom= »20″]

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 :

11 Commentaires

  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…

  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:!!

        • 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

S'il vous plaît entrez votre commentaire !
S'il vous plaît entrez votre nom ici

10 − huit =

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