Formations à l'informatique et à l'électronique

Auteur : SD
Créé le : 25-11-2014

Sécurité - pfSense - Firewall - Proxy

Objectifs du TP

Logo de la distribution linux pfsense
  • Mettre en place une solution de filtrage afin de limiter l'accès aux utilisateurs à des sites inappropriés
  • Configurer un pare-feu (créer une règle)
  • Installer un antivirus sur la passerelle
  • Planifier des tâches

Préparation

Réaliser le câblage de l'installation à partir du plan du réseau ci-dessous. Utiliser la carte réseau intégrée à la carte mère pour se connecter au réseau SEN.

Afin de gagner du temps, vous lirez et répondrez aux questions ci-dessous pendant l'installation de pfSense.

pfSense (Packet Filter Sense) est une distribution Linux basée sur FreeBSD optimisée pour être utilisé comme firewall et/ou routeur tout comme la célèbre distribution IPCop. FreeBSB est réputé pour sa stabilité. La version 2.1.5 de pfSense est sortie en aout 2014.

L'administration de pfSense se fait essentiellement par une interface de gestion WEB. L'utilisation de la C.L.I est réduite au minimum.

Plan du réseau (Cliquer pour zoomer)

Plan du réseau TP pfSense Proxy squid squidguard firewall antivirus

Installation de pfSense

Réaliser l'installation de la distribution pfSense à partir des indications de cette vidéo

Se connecter à l'interface de gestion WEB de pfSense.

Faire constater au professeur.

Configuration initiale

Dans le menu "System", cliquer sur "Setup Wizard" et réaliser la configuration suivante :

Filtrage Web

Le filtrage Web sera réalisé avec les logiciels squid et squidguard. Le filtrage est basé sur plusieurs listes de domaines qui peuvent être placées soit en liste blanche (sites autorisés) soit en liste noire (sites interdits).

Installation des packages nécessaire

L'installation de fonctionnalité supplémentaires se fait par l'installation de "packages" comme sur toutes les distributions Linux. Par exemple avec Ubuntu nous avons l'habitude d'utiliser la commande "sudo apt-get install NomDuNouveauPaquet" pour installer un nouveau paquet.

Ici tout se fait dans l'interface de gestion WEB. Dans le menu "System", cliquer sur "Packages". Installer les packages "squid", "Squidguard" et "Lightsquid".

Attention : Bien attendre la fin de l'installation du package en cours avant de faire autre chose.

Configuration de squid

Capture d'écran page de configuration Squid pfSense

Dans le menu "Services", cliquer sur "Proxy server".

Dans l'onglet "General" réaliser la configuration ci-contre(cliquer pour zoomer).

Ne pas oublier de cliquer sur "Save" en bas de la page.

Configuration de squidguard

Dans le menu "Services", cliquer sur "Proxy filter".

Téléchargement des listes de sites

Le nombre de site potentiellement interdits étant relativement important il est indispensable de télécharger des listes toutes faites. L'université de Toulouse fournit ce type de liste.

Dans l'onglet "Blacklist" entrer l'adresse et cliquer sur "Download" comme indiqué ci-dessous :

Capture d'écran configuration téléchargement ftp blacklist squidguard

Remarque : l'extension .tar.gz indique qu'il s'agit d'une archive compressée (équivalent d'un .zip, .7z ou .rar sous Windows).
Le .tar indique qu'il s'agit d'une archive : regroupement de plusieurs fichiers en un seul mais pas forcément compressé comme un .iso par exemple.
Le .gz indique que l'archive est compressé avec l'utilitaire Linux GZip.

Configuration des listes

Activer la prise en compte des listes

Aller dans l'onglet "General settings" et cocher "Blacklist" dans la rubrique "Blacklist options".

Cliquer sur "Save" en bas du formulaire, puis sur "Apply" en haut du formulaire :

Copie d'écran de la page de configuration de Squidguard pfSense

Copie d'écran de la page de configuration de Squidguard pfSense

Remarque : Il est indispensable de recliquer sur "Apply" après chaque modification de la configuration.

Affectation des listes en "liste blanche" ou "liste noire"

Comme indiqué plus haut, certaines listes peuvent être déclarées en "liste blanche" et d'autres en en "liste noire". Par défaut Squiguard n'utilise pas les listes et bloque l'intégralité du trafic HTTP. Le site http://cri.univ-tlse1.fr/blacklists/ donne une explication sur chacune des listes afin que l'utilisateur puisse décider quelles listes placer en liste blanche. Vous configurerez votre proxy de la manière la plus restrictive possible.

Aller dans l'onglet "Common ACL" et cliquer sur l'icône comme indiqué ci-dessous :

Copie d'écran de la page de configuration des ACL de Squidguard pfSens

La liste des listes configurées apparait et comme indiqué plus haut, tout est bloqué par défaut (dernière ligne : "Default access [all]" = deny).

Dans son traitement, lorsque Squidguard traite une URL, il regarde d'abord dans les listes blanches (whitelist) si l'URL est en liste blanche, l'accès est autorisé. Si l'URL n'est pas en liste blanche, Squidguard regarde si elle est en liste noire. Si elle est en liste noire, l'accès est interdit (deny) ensuite Squidguard regarde si l'URL est dans une list dont l'accès est autorisé (allow).
Enfin si l'URL est dans aucune liste Squidguard applique la politique par défaut (dernière ligne) qui peut-être soit allow ou deny.

Mettre en "whitelist" les listes de sites "recommandables".

Copie d'écran de la page de configuration des ACL de Squidguard pfSens

Enregistrer et appliquer les changements.

Tester.

Faire constater au professeur.

Rapports d'activité

Sur un tel système il est indispensable de surveiller l'activité des utilisateurs afin de contrôler s'ils n'ont pas par exemple trouvé une faille dans le filtrage. C'est le rôle du package "Lightsquid" installé en début de TP.

Remarque : Pour que cette partie fonctionne, il faut que "les logs" soient activés dans Squidguard.

Dans le menu "Status", cliquer sur "Proxy report". Configurer la langue. Naviguer sur quelques sites pendant 2 minutes, mettre à jour votre antivirus.

Retourner dans l'interface de gestion de pfSense, aller dans le menu "Status" et cliquer sur "Proxy report", cliquer sur le bouton "Refresh full". Cliquer sur l'onglet "Lightsquid Report".

Insérer une copie d'écran du rapport indiquant la liste des sites consultés dans votre compte rendu.

Au vue du rapport, de quelle(s) information(s) dispose l'administrateur réseau pour identifier un utilisateur dans les rapports.

Dans le menu "Service", cliquer sur "DNS Forwarder", cocher "Register DHCP leases in DNS forwarder".

Sur le poste client, résilier votre adresse IP et la renouveler. Quelles commandes avez-vous tapé ?

Relever votre adresse IP et le nom de votre ordinateur.

Naviguer de nouveau sur quelques sites pendant 2 minutes.

Insérer une copie d'écran du nouveau rapport indiquant la liste des sites consultés dans votre compte rendu.

Faire constater au professeur.

Sauvegarde de la configuration

pfSense fait automatiquement une sauvegarde de la configuration après chaque modification. Il est donc possible après une mauvaise manipulation de facilement revenir en arrière (un peu comme les points de restauration sous Windows). Pour voir les sauvegardes faites, aller dans "Diagnostics" puis "Backup/Restore" Onglet "Config History ".

Insérer une copie d'écran dans votre rapport.

Aller dans l'onglet "Backup/Restore" et faire une sauvegarde manuelle (sous forme d'un fichier XML).

Faire constater au professeur.

Capture d'écran Backup/Restore pfSense

Configuration du firewall

Une des failles du système consiste à d'accéder à certains sites interdits en utilisant https au lieu de http. Par exemple, aller sur https://www.facebook.com.

Quel port utilise le protocole https ?

Tester que l'accès https fonctionne en accédant à https://www.sfr.fr. Joindre une copie d'écran dans votre rapport.

Dans le menu "Firewall", cliquer sur "Rules". Dans l'onglet "Floating", créer une règle bloquant tout le trafic https.

Tester de nouveau l'accès aux sites : https://lyc-louis-armand-villefranche.elycee.rhonealpes.fr et https://www.sfr.fr. Joindre une copie d'écran dans votre rapport.

Déterminer l'adresse IP du site lyc-louis-armand-villefranche.elycee.rhonealpes.fr. Comment avez-vous procédé ?

Créer des nouvelles règles dans le pare-feu afin de rendre possible l'accès au site https://lyc-louis-armand-villefranche.elycee.rhonealpes.fr.

Tester.

Faire constater au professeur.

Toujours dans le but de vérifier qu'il n'y a pas de faille dans le système, il est possible de surveillé les logs du firewall : Dans le menu "Status", cliquer sur "System Logs". Cliquer sur l'onglet "Firewall".

Joindre une copie d'écran à votre rapport.

Antivirus

Capture d'écran configuration HAVP Antivirus http clamAV pfSense

L'antivirus placé sur le firewall analyse tout le trafic HTTP évitant ainsi que les utilisateurs téléchargent des virus et infectent les postes du réseau.

Installer le package "HAVP antivirus".

Dans le menu "Service", cliquer sur "Antivirus" puis aller dans l'onglet "http Proxy" et faire les réglages ci-contre (cliquer pour zoomer).

Capture d'écran Settings HAVP Antivirus http clamAV pfSense

Dans l'onglet "Settings" :

  • Mise à jour de la base toute les 24 heures
  • Miroir : Europe
  • Activer log et syslog
Capture d'écran General page HAVP Antivirus http clamAV pfSense

Dans l'onglet "General page", si le service n'est pas démarré, le démarrer.

Pour les tests, le site "eicar.com" permet de "simuler" des signatures de virus. Tenter de télécharger le fichier http://eicar.org/download/eicar.com.

Faire constater au professeur.

Planification de tâches

Tout comme il est indispensable de maintenir la base des signatures de l'antivirus à jour il faut également maintenir à jour les "blacklists" de squidguard. Dans Sous Linux, la planification de tâches se fait avec "Cron".

Installer le package "Cron".

Dans le menu "Services", cliquer sur "Cron".

La liste des tâches déjà planifiées apparait.

Vous devez voir apparaitre les tâches planifiées de mise à jour de la base antivirus et des rapports LightSquid.

Chaque ligne du tableau correspond à une tâche. Il se lit de la manière suivante :

Capture d'écran Cron settings pfSense

Ligne 1 : Toutes les 2h00, exécuter en tant que root la commande :

/usr/bin/perl/usr/local/www/lightsquid/lightparser.pl today

Ligne 2 : Tous les jours à 0h15, exécuter en tant que root la commande :

/usr/bin/perl/usr/local/www/lightsquid/lightparser.pl yesterday

Il est possible de mettre à jour manuellement les blacklists :

Aller dans le menu "Services", cliquer sur "Proxy filter". Aller dans l'onglet "Blacklist" et cliquer sur le bouton "Download".

Il est possible de "récupérer" le script qui fait cette mise à jour sur le serveur : /tmp/squidGuard_blacklist_update.sh

Sur le serveur : Sélectionner "shell" (appuyer sur 8, attention le clavier est en qwerty)

A l'invite, taper "kbdmap" et choisir le clavier "French ISO-8859-1 (accent keys)" puis "Ok".

Copier le fichier "/tmp/squidGuard_blacklist_update.sh" dans le dossier "/usr/local/bin/".

Quelle commande avez-vous tapé ?

Taper "exit" pour revenir au menu.

Dans l'interface de gestion Web de pfSense, créer une tâche planifiée appelant le script /usr/local/bin/squidGuard_blacklist_update.sh tous les jours à 07h30 en tant que root.

Joindre une copie d'écran dans votre rapport.

Changer l'heure d'exécution du script de telle sorte qu'il se lance dans 3 minutes.

Faire constater au professeur.

Vérifier la bonne mise à jour des blacklists dans les logs : Menu "Services", cliquer sur "Proxy filter", onglet "Log" puis "Filter log". (L'information peut mettre quelques minutes à apparaitre dans les logs).

Joindre une copie d'écran dans votre rapport.

Création de listes personnalisées

Afin de gérer plus finement les sites interdits, il est nécessaire, en plus des listes téléchargées de créer ses propres listes noires et liste blanche.

Dans le menu "Services", cliquer sur "Proxy filter", onglet "Target categories" Ajouter 2 listes : une nommée "ListeBlanche" contenant un nom de domaine interdit dans les listes téléchargées (facebook.com par exemple), l'autre "ListeNoire" contenant un nom de domaine autorisé dans les listes téléchargées (01net.com par exemple). Configurer les 2 nouvelles listes dans l'onglet "Common ACL".

Tester, l'accès à 01net.com doit être maintenant interdit et l'accès à facebook.com autorisé (il reste néanmoins bloqué par le proxy de la salle ! Le message de blocage est différent.).

Remarque : il est possible de bloquer un domaine entier comme 01net.com par exemple ou simplement une URL, il faut dans ce cas là placer l'URL dans la catégorie "URLs list".
Il est également possible de filtrer par expressions, par exemple touts les sites dont l'URL contient "jeux", il faut à ce moment là mettre "jeux" dans le catégorie "Expressions".

Dé-câbler l'installation. Restaurer les ordinateurs.

Ranger le matériel.

Faire constater au professeur.


Vous avez apprécié cet article ? Partagez le !

Article connexe : Installation de pfSense - Distribution Linux Firewall