Dans un précédent article, l’idée était de mettre en place un proxy transparent. Nous allons aller plus loin 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 dans le proxy Squid pour bloquer certains sites web.

Réalisation :

  1. Créer un certificat SSL dans pfSense (ou en importer un)
  2. Récupérer le certificat et l’installer dans les machines clientes
  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 légalement contre vous…

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

Configuration des certificats

Avant commencer l’interception SSL et le blocage des sites, il faut créer une autorité de certification dans 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…).

Configuration du portail

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…

Tests finaux

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 ne sera 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, aussi bien réussi qu’en échec ; l’idée est de bloquer un site à un client qui a uniquement connecté son PC sur le réseau et s’est authentifié sur le portail captif. Le 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 ajouter le fichier entier dans la case « blacklist », puisqu’il n’existe pas de fonction regex dans pfSense.

Auteur

Bercé par l'informatique depuis mon plus jeune âge, je transforme ma passion en expertise.

Écrire un commentaire