Tut's pfSense

[pfSense 2.3.4] Portail captif et proxy transparent SSL avec Squid

Dans un précédent article, l’idée était de mettre en place un proxy transparent. Désormais, nous allons plus loin en poussant ce proxy pour filtrer les URL aussi bien en clair que chiffré (port 80 et 443).

Objectif : capturer le flux HTTPS de façon transparente et le déchiffrer via pfSense, dans Squid et son portail captif pour bloquer certains sites web.

Réalisation :

  1. Créer un certificat SSL dans pfSense (ou en importer un)
  2. Récupérer ce certificat et l’installer dans les machines qui devront accéder au portail captif et au proxy transparent (sans quoi toutes les pages visitées en HTTPS seront en échec)
  3. Configurer Squid dans pfSense
  4. Tester la connexion / voir les logs en « Realtime »

Législation à prendre en compte

Avant de se lancer dans l’interception SSL sur votre réseau, tenez-vous informé des lois qui régissent ces manipulations. Vous devez stipuler dans la charte informatique que vous effectuez une interception SSL sur le réseau pour bloquer certains sites. Si vous ne le dites pas aux utilisateurs, ces derniers peuvent se retourner contre vous et vous demander de rendre des comptes…

Le site web « silicon.fr » a rédigé tout un article dessus, à cette adresse.


Avant de pouvoir commencer l’interception SSL et le blocage des sites, il faut créer une autorité de certification dans votre pfSense. En effet, nous considérons que celui-ci est votre routeur principal sur le réseau – tous les utilisateurs vont / devront passer par pfSense pour pouvoir accéder au net. C’est donc pfSense qui va se charger d’être (en plus le routeur) le « déchiffreur » et le bloqueur.

La création d’un « Certificat Authorities » dans pfSense se fait via le menu « System » puis sur « Cert. manager« . Utilisez le bouton vert « + Add » pour créer un nouveau certificat. Remplissez bien toutes les lignes de façon correct, pour avoir un certificat et une autorité fiable et réelle.

L’importance de la saisie est primordiale : il permet d’assurer à vos utilisateurs qu’ils utilisent le bon pfSense, le bon réseau et qu’il ne s’agit pas d’une tierce personne. Vous devez donc remplir toutes les lignes comme il le faut (Ville, département, adresse e-mail de contact en cas de pb…).

Le portail captif doit déjà être mis en place – vous pouvez le voir dans « Services » / « Captive Portal« . Pour rappel, le portail captif se met en place pour l’interface LAN. Si ce n’est pas déjà le cas, vous pouvez retrouver la procédure de mise en place à cette adresse – CZS.

Dans la partie « Services » / « Squid Proxy Server » / partie « General« , il faut modifier la partie suivante comme suit dans l’image :

En bref :

  • Activation du filtrage SSL
  • Le mode « Splice ALL » permet à pfSense de capturer à la volée et d’effectuer le contrôle sur le flux sans devoir faire une quelconque manipulation sur les machines clientes ; De plus, il permet de bloquer les sites web interdits via la rubrique « ACL » de Squid
  • Sélection de l’autorité CA (local dans l’exemple, donc notre pfSense)
  • Possibilité de modifier les ports d’écoute de Squid (3128 pour HTTP, 3129 pour HTTPS par défaut)

Les options les plus importantes sont celles citées ci-dessus. Je ne vous conseille pas de modifier les ports d’écoute de Squid, certaines applications pourraient en être victime et ne pourrait plus fonctionner.

Enfin, pour bloquer des sites web, vous devez vous diriger dans la partie « ACL » et y ajouter le nom des sites interdits dans la rubrique « blacklist » :

La cellule « Blacklist » utilise la norme des regex – vous pouvez donc affiner votre blocage de façon très stricte. Attention toutefois à l’utilisation du web, nombreux sont les sites qui ont besoin de ressources externes…

Lors de la visite d’un site autorisé, la page s’affichera une fois que l’utilisateur se sera authentifié. Lors de la visite d’un site interdit, la page sera tout simplement pas affichée et un message d’erreur du navigateur s’ouvrira.

L’onglet « Realtime » de Squid dans pfSense permet de voir les flux de tout le réseau (LAN dans notre cas), aussi bien réussi qu’en échec ; dans l’article, l’idée est de bloquer le site « computerz.solutions » à un client qui a uniquement connecté son PC sur le réseau et s’est authentifié sur le portail captif – résultat dans pfSense :

Le site web est bien bloqué par Squid par pfSense. Le navigateur de l’utilisateur affichera non pas la page de blocage Squid habituel mais une erreur 403. Tout est loggé dans pfSense, si vous avez bien coché la case « log ».

Des listes pré-définies de blocage sont existantes et trouvables sur le net ; il faut (pour le moment) ajouter le fichier entier dans la case « blacklist », puisqu’il n’existe pas de fonction pour faire un regex dans un fichier .txt dans pfSense. Je mettrai à jour cette astuce pendant le weekend du 09/09/2017.

En voir plus

Laisser un commentaire

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

Close