Projet fin d'année : Question sur SQUID et PFsense UTM



  • Bonjour,

    Actuellement, j'effectue un projet de fin d'année sur les Firewall et la sécurité informatique, en l'occurrence le projet est principalement basé sur pfsense.

    L'installation du pfsense - > ok

    Config réseau de pfsense – > ok

    L'installation du squid et squidGuard - > Ok

    Configuration - > ce n’est pas vraiment ça et je m'explique :

    J'ai configurer pfsense en mode transparent et squidguard gère bien les common ACL. Toutefois, j'ai un exercice donné par mon prof qui est de bloquer un site qui travail en HTTPS (notamment Facebook) et de faire une analyse réseau derrière, perso j'ai préféré bloquer un site qui est un gag à lui tout seul et anti productif : 9gag.com

    En proxy transparent :

    J'ai réussi à bloquer 9gag en HTTP mais maintenant ma machine se connecte directement sur le HTTPS de 9gag.

    En mode normale de squid :

    Le blocage se fait correctement (il y a juste la page d'erreur à changer), mais je suis obligé de modifier la config du navigateur, en plus du repository de mon Linux qui est derrière le pfsense/squid du coup c'est
    quelque peu dommage.

    J'aimerai savoir :

    • S’il y a moyen de filtrer par nom de Domain mais en mode transparent ? (ca passe tout seule en normale, mais pas en transparent)

    • Qu'elle est le mode qui prend le moins de ressource réseau ?

    • Es ce que le squid en mode normale, fonctionne correctement avec une connexion VPN via SSL et IPSec ou dois-je obligatoirement passer en mode transparent ?

    • Si le SSL et Ipsec fonctionne avec le proxy en mode normale, es ce que je vais devoir retoucher à la config de squid ?

    Ce sont les 4 interrogations que je me pose, en plus de savoir si je suis bien dans la bonne section, car c’est du Freebsd, mais il y a aussi bcp de notions de réseau

    Nb : j'ai lu le site suivant pour comprendre la différence entre transparent et normale mode : irp.nain-t.net/doku.php/ mais cela ne répond pas à mes interrogations  ???



  • Le seul intérêt, pour un prof, de faire configurer Squid sur un firewall, est de voir quels élèves vont comprendre les difficultés inhérences à cet emplacement de Squid !

    Il y aura donc 2 cas :

    • les élèves qui exécutent, sans rechigner, les instructions
    • les élèves qui comprennent les défauts d'un tel positionnement et l'indiquent

    Christian CALECA, en qui vous pouvez avoir confiance, expose bien les difficultés inhérents (insuffisances ?) à 'proxy transparent'.
    Cf http://irp.nain-t.net/doku.php/220squid:030_plus_sur_squid

    Relisez donc Christian CALECA, et pesez le poids de phrases anodines en apparence seulement.

    Vous ne semblez pas bien faire la différence entre Squid et SquidGuard : le rôle de chacun est différent.



  • Merci pour le lien, j'avais zappée, cette partie par manque de temps.

    Je joins le schéma de l'infra que je monte pour ce projet : sachant qu'il ne me reste plus qu'à faire le snort (IPS/IDS) + load balancing + fail Over et tout cela en moins de 2 semaines (tous les soirs et week-end)  :-\ (il ne me reste que quelques jours pour rendre)

    Effectivement squidguard et squid sont un peu obscur, je prends un peu de temps pour les comprendre, mais je dois aussi avancer  :-\ sur le projet.

    Après je ne cherche pas forcément à faire du transparent, la solution de ne pas activer le mode transparent fonctionne, mais c'est pour explorer d'autre possibilité entre 2 search & install of tech.




  • Pour faire court:

    • le mode transparent de Squid est une solution que tu devrais, autant que possible éviter, pour tout un tas de raisons, tant sécurité que confidentialité et fonctionnalités.
    • le fait qu'il faille configurer le navigateur dès lors que le proxy est en mode explicite n'est pas un gros problème, il y a des solutions comme WPAd pour aider à résoudre ce point.
    • je vois que tu as un annuaire LDAP dans ton design: le jour où tu vas vouloir appliquer des règles différentes de filtrage dans Squidguard selon les utilisateurs, tu vas les authentifier… et en mode transparent, ça ne fonctionne pas...

    en ce qui concerne le filtrage, Squidguard permet du filtrage d'URL et de domaine. En mode explicite, à cause de HTTPS, le filtrage d'URL n'est pas possible mais le filtrage de domaine persiste puisque la méthode CONNECT passe en clair. C'est ça qui va te permettre de filtre facebook ou 9gag.

    Je ne comprends pas ta question relative à la "consommation des ressources réseau" mais le proxy en mode explicite est clairement le plus "économique" car c'est le proxy qui se charge d'effectuer les requêtes DNS (et qui donc bénéficie de son propre cache). de plus, en mode transparent, il y a établissement de 2 tunnels différents.



  • Tu évoques, dans le texte et dans ton schéma, du load balancing.
    Qu'entends tu par là exactement ?

    De mon point de vue, compte tenu du schéma, il n'y a pas de load-balancing… et si du décidais d'en mettre en place au travers d'un deuxième accès WAN, cette fonctionnalité ne marcherait pas pour le proxy qui tourne "sur" pfSense car elle est mise en œuvre au niveau des règles de FW, donc sur l'interface entrante.

    Du coup, un proxy en dehors de pfSense serait nécessaire. Mais dans ce cas, pas de redondance de celui-ci => c'est un autre projet  ;)



  • Merci Chris4916 pour tes explications :D courte et concise.

    Effectivement à la lecture de pas mal de post sur ce forum et sur la toile, le mode transparent est décrier. Je cherchais surtout les possibilités, un genre de Transparent vs Normale afin d'avoir les + et - de chaque solution.

    J'ai lu un sujet qui en parle du WPAd pour déployer un proxy.pac sur les navigateurs via des GPO … Mais par manque de temps et de moyen (je virtualise tout sur mon PC perso) je n'ai pas privilégié cette solution et donc fait la config manuellement ds le navigateur.

    La question concernant la consommation du réseau :
    Le prof nous demande d'utiliser des outils comme Iperf … et je ne sais quel autre outil afin de voir la différence entre sans proxy et avec proxy et de trouver un équilibre entre performance et sécurité, car tout équipement sur le réseau mange du temps, de la Bande passante ... donc il faut pouvoir le mesurer et l'expliquer.

    load balancing ?
    Pour faire court, haute disponibilité des pfsenses et services proposés sur ces équipements :
    Je suis en train de créer le pfsense_master avec tout ce qui va bien et 3 cartes réseau (WAN, LAN, VLAN de synchro pour les firewall) le but par la suite (si j'ai le temps) est de provoquer une panne (Éteindre le Master) et voir si le Slave reprend le relai automatiquement. Bien sûr, je peux faire de la répartition de charge, mais ce n'est pas le but demandé par le prof.

    Pour le schéma, je l'ai posté sur le forum de la classe (cnam) et je leurs ai demandé d'être critique, de me dire s'il y a des erreurs et à part des félicitations, même du prof, je n'ai rien eux, donc je me suis dit que s'était bon.

    Même Si je mets les SQUID sur le Master et Slave (via un clone de VM dans VirtualBox et fait les config au niveau des nom NetBIOS, IP …) la Haute dispo ne pourra pas se faire au niveau proxy ?



  • salut salut

    La haute dispo de proxy n'est pas réalisable sur un cluster de Pf en l'état.
    Il est préférable de le faire avec une machine ou groupe de machines hors de pf et dans une zone en arrière de vos clusters, (dmz ou lan)

    Apres coté virtualisation il y a peu etre une chose a faire, cela reste tout aussi velu a faire.

    Deux virtualiseurs qui permettent le "live migration" ou "live motion" suivant l'hyperviseur professionnel utilisé (vmware / xensever / hyper-v) les autres oubliez vous aurez plus de soucis que de vrai solution.

    Dans cette solution vous pourrez bien que je ne suis pas favorable à cette manière de faire avoir un pf "standalone" avec squid sans avoir a géré le HA de pf et squid,

    c'est a dire que l'un est des deux est en mode passif, et passe actif au moment où la machine principale est indisponible pour x ou y raison, les vm seront basculer de manière presque transparentes pour les users.

    Je le répète c'est une solution qui n'a pas ma préférence mais qui peut se faire avec les risques liés à la compromission des machines de virtualisation.



  • @Sunwo:

    La question concernant la consommation du réseau :
    Le prof nous demande d'utiliser des outils comme Iperf … et je ne sais quel autre outil afin de voir la différence entre sans proxy et avec proxy et de trouver un équilibre entre performance et sécurité, car tout équipement sur le réseau mange du temps, de la Bande passante ... donc il faut pouvoir le mesurer et l'expliquer.

    La difficulté, lorsqu'on discute proxy, c'est que sans prendre des hypothèses sur la répartition entre le flux HTTP vs. HTTPS, on a aucune idée de l'impact du cache sur la performance de la solution. Et comme il y a de plus en plus de flux en HTTPS, l'intérêt du cache au niveau du proxy est moindre.
    a ce détail près, la solution "proxy explicite" est clairement la meilleure du point de vue du réseau (tant que le hardware utilisé pour servir de proxy ne devient pas le point limitant) car le browser se contente d'envoyer sa requête au proxy qui se charge de l'ensemble des requêtes, y compris la résolution du nom..

    Dans tous les cas, tu ne peux pas, dans l'optique de comparer les performances, te contenter de discuter proxy. Il est indispensable de décrire la solution DNS mise en œuvre.

    Par ailleurs, lié aux aspects "cache": si tu fais des mesures avec un faible nombre de client, la solution la plus efficace, c'est que le client n'utilise pas de proxy :-) car le bénéfice du cache, que ce soit pour le flux HTTP ou le cache de la résolution des FQDN n'intervient que si il y a assez de clients simultanés. Un peu comme dans les design d'infra pour des applications multi-tiers: si tu mets le front-end, l’application server et la base de données sur le même serveur, en testant avec un tout petit nombre de clients, c'est la solution la plus rapide car tous les flux entre les différents niveaux se fait en local, donc moins de latence. Mais ça ne marche plus dès que le nombre de client augment (et je ne parle pas ici des aspects sécurité et ségrégation.

    donc attention aux "mesures" sur le lab et aux hypothèses :-)

    @Sunwo:

    load balancing ?
    Pour faire court, haute disponibilité des pfsenses et services proposés sur ces équipements :
    …/...
    Même Si je mets les SQUID sur le Master et Slave (via un clone de VM dans VirtualBox et fait les config au niveau des nom NetBIOS, IP ...) la Haute dispo ne pourra pas se faire au niveau proxy ?

    Il n'y a pas de load balancing dans ce cas, quel que soit le design d'ailleurs. Et d'une manière générale, du load balancing sur le proxy, c'est compliqué parce que c'est l'IP du proxy (en HTTP) qui se connecte au serveur web. son IP ne peut pas "balancer" si par exemple tu accèdes une application web qui s'appuie sur l'IP du client.

    La problématique est plus souvent d'ailleurs du fail-over que du load-balancing.
    Dans ton design, il n'y a qu'un proxy actif, c'est celui qui tourne sur le pfSense actif. En cas de switch, coté client et serveur, c'est transparent parce que l'IP ne change pas 'c'est la VIP qui est utilisée, en IN comme OUT. Mais il n'y a pas de synchro de cache entre les 2 proxy. Est-ce bien un problème ?

    Avec un proxy en dehors de pfSense, la question reste la même: quel serait le design de ton cluster ? Actif/actif ? faut-il synchroniser le cache ?



  • Merci pour les précisions sur le fonctionnement du proxy.

    Concernant le load balancing, je m'étais emmêlés les pinceaux et je n'ai pas eu le temps de revenir pour corriger mon erreur  :-[
    Effectivement, mon explication est plus du fail over que du actif/passif ou répartition de charge (Haute dispo) que définir le load balancing.

    J'ai revu mon prof qui m'a dit : ne vous prenez pas la tête, il vous faudra encore 2 mois pour finir le projet alors qu'il doit être rendu ce mois ci.

    Pour la config des proxy et firewall réseau et au niveau des client :  le prof m'a expliqué qu'il y avait possibilité de créer un alias sur 2 adresse Ip et de communiquer cette alias aux postes client.

    pour le moment je suis sur le design de base (ci-joint) et en phase de test pour squid + snort.

    [quote]Dans ton design, il n'y a qu'un proxy actif, c'est celui qui tourne sur le pfSense actif. En cas de switch, coté client et serveur, c'est transparent parce que l'IP ne change pas 'c'est la VIP qui est utilisée, en IN comme OUT. Mais il n'y a pas de synchro de cache entre les 2 proxy. Est-ce bien un problème ?

    Avec un proxy en dehors de pfSense, la question reste la même: quel serait le design de ton cluster ? Actif/actif ? faut-il synchroniser le cache ?

    Quand je te lis, cela me rappel une question de cours et effectivement tu as raison, si l'actif est down, il va y avoir un problème de cache qui ne sera pas le même une fois basculé en mode dégradé sur le passif, ce qui peut générer des erreurs de navigation.

    En partant du principe que l'on travail en actif/actif à raison de 50%/50% cela permettra de corriger le tir. Je me trompe ?




  • Oui tu te trompes.
    J'essaie de t'expliquer ça plus en détail dans la soirée mais pour faire simple, le round robin du DNS que tu décris ne sert à rien ici sans synchro explicite du cache.



  • Au delà du fait que je ne vois qu'un seul pfSense sur ton schéma, je pense qu'il y a une incompréhension au niveau du fonctionnement du cluster pfSense:

    • ce n'est pas un mode actif / actif mais actif /passif

    Les 2 pfSense disposent chacun de leur propre adresse IP mais ils se partagent une IP virtuelle (VIP) (une coté LAN et une coté WAN) qui est attachée au pfsense actif. Il n'y en a donc un seul actif à un moment donné.
    donc un mode round robin pour faire du load balancing sur le proxy via des IP multiples dans le DNS, ça ne marche pas et c'est sans intérêt, à mon avis.

    En revanche, il n'y a pas de vrai problème de cache: si le proxy ne trouve ps sa page dans le cache, il va la chercher sur le serveur.

    Si tu persistes à vouloir faire, pour les besoins du TP, un proxy en mode load balancing alors ne le fait pas sur pfSense. Monte 2 proxy sur 2 machines (ou VM) et là tu peux faire du round robin. Attention, si tu mets en œuvre de l'authentification au niveau du proxy… ça ne marche plus, sauf à ajouter des fonctions de synchro entre tes proxy.



  • Je vais oublier les proxy en load balancing.

    Pour le moment le load balancing est facilement documenter pour PFsense, donc je vais déjà me contenter de cela et désactiver le Proxy sur le slave.
    J'étudierai ultérieurement les wpad, le proxy.pac …

    Autre Question, j'ai tenté de créer un tunnel VPN en me basant sur la vidéo suivante :

    Youtube Video

    Ensuite depuis mon PC windows qui héberge toute les VM j'installe OpenVPN et tente de me connecté et j'ai une erreur de ce type :

    Wed Jun 14 00:02:13 2017 OpenVPN 2.4.2 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [LZ4] [PKCS11] [AEAD] built on May 11 2017
    Wed Jun 14 00:02:13 2017 Windows version 6.2 (Windows 8 or greater) 64bit
    Wed Jun 14 00:02:13 2017 library versions: OpenSSL 1.0.2k 26 Jan 2017, LZO 2.10
    Wed Jun 14 00:02:57 2017 TCP/UDP: Preserving recently used remote address: [AF_INET]192.168.1.18:1194
    Wed Jun 14 00:02:57 2017 UDP link local (bound): [AF_INET][undef]:0
    Wed Jun 14 00:02:57 2017 UDP link remote: [AF_INET]192.168.1.18:1194
    Wed Jun 14 00:03:57 2017 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
    Wed Jun 14 00:03:57 2017 TLS Error: TLS handshake failed
    Wed Jun 14 00:03:57 2017 SIGUSR1[soft,tls-error] received, process restarting

    Avec quelques recherche et appel à un ami, j'ai vue que c'est mes règles de Firewall WAN qui sont en cause. Pourtant le wizard à crée la règle pour permettre la sortie, donc je ne voie pas où est l'erreur ???

    Au niveau des règles WAN, il n'y a rien de particulier, juste le blocage complet de la patte WAN (config de base de Pfsense) et une règle autorisant les packet ICMP (ping)



  • Mon explication n'est probablement pas claire et tu m'en vois désolé.
    J'essaie de le dire autrement : la mise en œuvre d'un cluster pfsense n' rien à voir avec du load-balancing, lequel concerne soit le HAproxy pour des flux entrants ou les policy routing si tu as plusieurs GW. Il ne faut donc pas désactiver le proxy du pfsense slave.

    Quand à ton point sur le vpn… Je ne regarde jamais les tutos sous forme de vidéos, ça me fait vraiment trop penser à "monkeys see monkeys do"

    Je regarderai quand même les détails de ton message ce soir 😁



  • @chris4916:

    Mon explication n'est probablement pas claire et tu m'en vois désolé.
    J'essaie de le dire autrement : la mise en œuvre d'un cluster pfsense n' rien à voir avec du load-balancing, lequel concerne soit le HAproxy pour des flux entrants ou les policy routing si tu as plusieurs GW. Il ne faut donc pas désactiver le proxy du pfsense slave.

    C'est assez abstrait dans ma tête, malgré tes explications, après tout je suis un peu bourrin et je bien mettre les mains dans la mélasse informatique pour apprendre à la dure, avec les erreurs que je génère, j'apprends plus que dans une salle de classe.

    Quand à ton point sur le vpn… Je ne regarde jamais les tutos sous forme de vidéos, ça me fait vraiment trop penser à "monkeys see monkeys do"

    Je regarderai quand même les détails de ton message ce soir 😁

    En regardant de nouveaux la video, la personne ne montre pas sa config de pare-feu, donc dure de savoir si je dois ouvrir un port du genre 5xxxx








  • Bonsoir,

    Pouvez-vous nous donner votre schémas logique réseau actuel ?

    Je suppose :

    pc_host–-------------[bridge_VM]pfsense–---------------------[VM_reseau_pfsense]
    192.168.1.x              192.168.1.18                  10.0.0.0/24

    dans ce cas, vous devez vérifier dans pfsense  : Interfaces > WAN l'option :
    Block private networks and loopback addresses
    et
    Block bogon networks

    je vous conseille d'installer wireshark/nmap/tcpdump sur votre pc host pour verifier l'acces vers le pfsense.

    cela permet de contrôler assez facilement les accès et les ports accessible sur votre réseau host.

    Cordialement,

    Mathieu


Log in to reply