Proxy web - pfsense

De Wiki doc


Cette documentation a pour but de décrire la mise en place d'un service proxy sur le pare-feu pfSense via Squid. Des règles de blocage de flux pour les clients du proxy seront mise en œuvre via SquidGuard. La journalisation des accès sera conservée un an, conformément à l'article 3 du décret n° 2011-219 du 25 février 2011 relatif à la loi n° 2004-575 du 21 juin 2004 - LCEN (article 6).

Téléchargement des paquets

De base, pfSense ne comporte pas de proxy. Il faut passer par le menu System > Package Manager > Available Packages > Search term > taper "squid" et installer les paquets Squid ainsi que SquidGuard.

Par défaut, aucune connexion via Squid n'est possible. Nous allons y remédier.

Configuration de Squid

Pour configurer Squid, il faut aller dans le menu Services > Squid Proxy Server.

Dans cette page, il faut:

  • Cocher la case Enable Squid Proxy
  • Faire écouter le proxy sur le LAN dans Proxy Interface
  • Activer la journalisation via Enable Access Logging et donner 365 jours pour la durée de conservation (/var/squid/logs)

Ne pas oublier de sauvegarder.

Désormais, il convient de tester le fonctionnement du réseau en configurant le proxy sur le navigateur WEB du client. Le flux doit passer sans problème.

Configuration de SquidGuard

Activation du service

Par défaut, SquidGuard ne laisse passer aucun trafic, il va falloir changer ça.

Deux solutions:

  • laisser tout le flux et interdire les accès à des listes d'adresses (listes noires)

ou

  • bloquer tout le flux et n'autoriser les accès qu'à des listes d'adresses (listes blanches).

Nous choisirons ici de faire des listes noires.

Dans General settings, cocher la case Enable pour activer SquidGuard.

INFORMATION

Notez la présence du bouton Apply juste en dessous, il faudra cliquer dessus à chaque changement de configuration pour qu'elle soit prise en compte.

Enregistrer la modification via le bouton save. À ce stade, plus aucune communication n'est autorisé (politique par défaut). Il va falloir changer ça.

Aller dans l'onglet Common ACL et dans Target Rules List, déplier le menu via le bouton +. Passer la règle Default access [all] à allow. Enregistrer la modification via le bouton save. Revenir sur sur l'onglet General settings et cliquer sur le bouton Apply.

La communication est de nouveau fonctionnelle. Il va falloir appliquer nos listes noires pour rendre tout ceci utile.

Ajout de listes noires

Les listes noires doivent respecter une arborescence pré-définie comme suit:

blacklists/{toto/{domains,urls},titi/{domains},tata/{domains,urls}}"domains" et "urls" sont des fichiers textes comportant une adresse par ligne. Le tout doit être compressé en tar.gz (le nom de cette archive compressée n'est pas important).

Il est donc possible de créer des listes noires à partir de rien par vos propres moyens. Pour l'exemple, nous téléchargerons une archive compressée de listes déjà faites et entretenue par Fabrice Prigent de l'université Toulouse 1 Capitole.

ASTUCE

Rien ne vous empêches de télécharger une archive compressée de règles près-faites et de modifier son contenu à votre guise (ajout, suppression ou modification). Un tar czvf blacklists.tar.gz ./blacklists la recréera. Il vous suffira de la téléversée dans pfSense.

Je vous propose 2 façons de faire pour donner des listes noires à SquidGuard:

  • Soit télécharger le fichier directement depuis la source via l'interface WEB: dans l'onglet blacklist donner le chemin HTTP ou FTP du tgz (ftp://ftp.ut-capitole.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz pour l'exemple - mis en cache ici le 19/06/2019) et faire Download. La zone de texte du journal montre l'avancée de la tâche. Notez la ligne "Copy DB to workdir.". À titre d'information, le Workdir fait référence à /var/db/squidGuard. Son arborescence est faite du contenu du fichier tar.gz, soit des répertoires contenant des listes de règles, préfixés du terme blk_blacklists_ (chaque dossier représente une catégorie).
  • Soit héberger vous même le fichier sur votre machine et mettre à disposition l'archive compressée via le serveur WEB embarqué à Busybox:
    • Sur votre PC: busybox -fvv -h <chemin_du_répertoire_du_tgz> et utiliser la méthode de l'onglet blacklist décrite au premier point. Ou bien...
    • Ou bien, depuis le SHELL de pfSense: curl --output /tmp/blacklists.tar.gz http://<IP_PC>/blacklists.tar.gz:
      • Le fichier est alors présent sur le disque dur du pfSense, il faudra passer par le menu General Settings > Blacklist URL, renseigner le chemin du fichier (/tmp/blacklists.tar.gz), sauvegarder pour pré-remplir le champ de Blacklist Update de l'onglet blacklist et procéder au Download.

Bon ça fait beaucoup d'explications pour pas grand chose au final. Actuellement, notre Proxy laisse tout passer, nous allons donc définir des catégories à interdire. Pour ce faire, revenir dans Common ACL, le menu Target Rules List s'est rempli d'autant de lignes que de dossiers dans le workdir. Il est alors possible de définir le traitement de chaque règles (autoriser ou refuser). Terminer la configuration par un save en bas de page et appliquer les modifications via le bouton Apply de l'onglet General settings.