Conflit entre portail captif et WPAD



  • Bonjour,

    Je souhaite mettre en place un portail captif (base active directory), avec filtrage par squidGuard, y compris HTTPS, mais sans inspection de paquet, le tout logué avec nom d'utilisateur. J'utilise pfsense (dernière version).

    Première configuration :
    Portail captif LDAP
    Packages Squid (explicit+transparent) + SquidGuard + Blacklist + ACL
    Firewall pass 53/80/443

    A ce moment là, le portail captif fonctionne, le filtrage HTTP aussi, mais pas le filtrage HTTPS.

    Modifications :
    Filtrage HTTPS par WPAD (fichiers dans www + DHCP override)
    Firewall pass 3128 block 80/443

    A ce moment là, le portail captif n'est plus affiché, mais le filtrage HTTP et HTTPS fonctionne (cependant la page de blocage HTTPS ne s'affiche pas car squid renvoi un flux http)

    Comment concilier les deux ? Merci d'avance



  • Je veux, je veux, je veux ...

    Il y a là des problèmes dont vous ne mesurez pas du tout les effets !

    Premier (gros) point :
    Si vous mettez un proxy sur le pfSense, indiqué grâce à wpad, le portail captif n'a strictement aucune utilité : le proxy étant local au pfsense, il ne sera pas concerné !

    Deuxième point :
    Squid explicite et transparent : transparent est une très fausse bonne idée, ne fonctionne qu'avec http, peut fonctionner avec https au mépris des utilisateurs puisque la sécurité https est cassé, et finira par ne même plus fonctionner (hsts)

    Par contre vous avez compris que SquidGuard bloque un accès https sans message d'erreur.



  • Merci pour la répondre

    Alors si je réduis mes exigences, je "veux" :

    • savoir qui fait quoi
    • bloquer certains sites

    Peut-être que la solution passe par une authentification par le squid au lieu du portail captif ? Mais je sais pas si c'est possible avec WPAD.



  • Un proxy est idéal pour une entreprise (LAN).
    On peut y ajouter une authentification LDAP (typiquement sur l'AD de l'entreprise).

    Le portail captif est plutôt destiné à un réseau Wifi et/ou 'invité'.
    (Il est très judicieux d'avoir plusieurs signaux Wifi : wifi interne + wifi guest voire plus ...)

    Il manque donc une information essentielle : le contexte.



  • Le but est d'offrir la possibilité aux élèves/étudiants de l'école d'accéder à internet depuis leur(s) périphérique(s) par wifi sur un vlan dédié. Comme le périphérique n'appartient pas à l'établissement, je ne peux rien configurer dessus et je ne peux pas leur faire confiance, je ne peux pas leur imposer un certificat x509 par GPO pour faire du MITM.

    La loi nous oblige a conserver les logs, et pour les responsabiliser, j'ai besoin d'avoir une authentification. Tous les comptes existent dans l'AD.

    De plus, comme une partie du public est mineur, j'ai l'obligation d'empêcher par tout les moyens l'accès aux sites pornographiques.

    En soit je n'ai pas besoin d'un portail captif ou d'un proxy mais j'ai besoin d'une authentification et d'un filtrage, peu importe l'implémentation.

    Donc actuellement :

    • soit je sais qui va où, avec le portail captif, mais il suffit d'aller en https pour aller sur les sites pornos.
    • soit je bloque tous les sites pornos quelque soit le protocole, mais mes logs sont anonymes.


  • Bon, voila des infos sur le contexte ! (C'est toujours par là qu'il faut commencer.)

    Réfléchissons :

    • Un réseau wifi dédié avec de multiples bornes : logique.
    • un vlan dédié associé à ce réseau, avec les switchs administrés et les bornes multi-ssid : logique
    • le besoin se limite à la navigation et à rien d'autre : logique
    • aucun paramétrage possible sur les matériels des élèves/étudiants : logique, donc WPAD est une piste intéressante
    • le contrôle de la navigation (http et https) NE PEUT ETRE effectuée que par Squid + SquidGuard : ce n'est pas le portail captif, authentifié ou non qui donnera ces informations !
    • Squid doit identifier les utilisateurs, et non un portail captif.

    A mon avis, un proxy dédié (et hors de pfSense) avec Wpad peut faire l'affaire : cette machine, sur le vlan, sera bien évidemment la seule à traverser le firewall (sur 80/tcp et 443/tcp.
    De plus il faudra intégrer l'authentification dans Squid.



  • Alors voici des news :

    Portail captif désactivé
    Squid mode transparent désactivé
    Squid authentification activée, par LDAP
    WPAD conservé
    Firewall : 3128 pass, 80/443 block

    Résultat :

    • site filtrés en http & https
    • authentification popup Realm & logs OK

    La popup c'est moins sexy que le portail captif mais ça fait le job. D'ailleurs le package Squid propose une authentification par portail captif mais je n'ai pas réussi a le faire fonctionner (pourtant ça parait pas illogique que le squid affiche un portail captif, à creuser).

    Problème, le wpad (par DNS) ne fonctionne pas sur Android (Windows OK, mais testé sur les autres plateforme). On peut saisir manuellement le proxy + port ou saisir l'URL du fichier proxy.pac, mais ce n'est pris en compte que par Chrome.

    D'ailleurs, wpad par DHCP (en ajoutant l'option 252 dans les baux DHCP) ne fonctionne pas, le DHCP Server de PFSense n'envoie pas l'option malgré la configuration.

    En tout cas merci jdh pour votre aide



  • WPAD est un protocole assez bien défini : il est dommage que certaines versions d'Android ne l'utilise pas. Mais c'est aussi inconnu de la plupart des applications pour leur mise à jour !

    Il faut toujours analyser le besoin pour voir ce qu'il y a à faire.
    Et non faire l'inverse : mettre en place des choses et ... voir que ça ne fonctionne pas !



  • Je te confirme que le serveur DHCP de pfSense renvoie bien les options que tu lui ajoutes. Quelle syntaxe as-tu utilisé ?
    Quant au "portail captif de Squid..." ça n'a pas vraiment de sens, au moins techniquement.

    L'utilité du portail captif, c'est de:

    • capturer le flux HTTP de l'utilisateur (d'où le nom) pour demander à celui-ci une information qui va permettre de l'identifier, voire de l'authentifier
    • et à partir de là, lui donner un accès au travers de l'équipement que le portail captif contrôle
    • Ce mécanisme permet de, par exemple, monétiser l'accès ou d'en limiter la durée ou n'importe quoi d'autre d'ailleurs en fonction de tes besoins.

    Le plus souvent, cet équipement est un pare-feu 😉

    L'usage du proxy est assez différent, même si celui-ci peut permettre de limiter l'accès sur la base de volume ou durée de connexion.
    Ce que Squid permet, c'est de déporter l'authentification du "HTTP 407" que renvoie le proxy vers une page web plutôt que de déclencher le pop-up du browser



  • Bonjour,

    Quand je capture les trames envoyées par le serveur DHCP de PFsense, il n'y a pas de trace de l'option 252.
    Dans la configuration du DHCP, j'ai simplement ajouté sous la rubrique "Additional BOOTP/DHCP Options" la ligne : 252 / string / "http://wpad.mondomaine/wpad.dat".



  • ça m'a l'air plutôt correct.
    On utilise généralement proxy.pac plutôt que wpad.dat qui est lui utilisé par Microsoft, raison pour laquelle le serveur web qui sert ce fichier utilise également, le plus souvent des alias pour que, quelque soit le nom demandé, le fichier soit bien retourné, mais à ce détail près, ta conf me semble correcte. (il y a même des browser qui cherchent wpad.da)


Log in to reply