Relation entre @IP et nom d'utilisateur



  • Bonjour,
    J'ai pour projet de remplacer un IPcop par un PFsense pour pouvoir utiliser le plus simplement possible le portail captif livré avec PFsense.
    J'ai tout configuré au poil (filtre d'URL, conservation et visualisation des logs des sites visités, des connections au portail captif…) tout fonctionne parfaitement.
    Je précise que les users du portail captif sont des utilisateurs "locaux" à PFsense, pas de radius. (si il faut, je peux éventuellement installer freeradius sur le PFsense)

    Le must maintenant serait de pouvoir faire la relation entre utilisateur (du portail captif) et sites visités. Et non, @IP de l'utilisateur et sites visités comme nous donnent les logs de squid. Il est vrai qu'en couplant les logs du portail captif et ceux de squid c'est faisable, mais c'est assez difficile et chiant...

    Les addons que j'utilise actuellement sont squid, squidgard, light squid et bandwidthd.

    Ce qui complique un peu la mise en relation des 2 fichiers log est que c'est un système qui est fait pour une résidence étudiante, donc les étudiants peuvent changer d'adresse IP d'un jour à l'autre (ceci sur toute l'année), tout le monde est en DHCP par le biais d'une connexion wifi...

    Si vous connaissez une technique pour faire ce que je recherche, ou un addon, je suis preneur.

    Merci beaucoup. ;)



  • Cette situation est fréquente. Elle est le résultat d'un postulat qui associe un utilisateur à une adresse ip. Au mieux une adresse ip ne peut être associée qu'à une machine et ne saurait représenter un utilisateur. Surtout dans le contexte de mobilité de plus en plus développée. Ceci sans compter qu'un utilisateur peut utiliser plusieurs terminaux (iPhone, pda, etc …) pour réaliser les même opérations.
    Fournir la liste des url visitées par utilisateur identifié, c'est le travail d'un proxy avec authentification et non en mode transparent. Le portail captif lui ne gère que l'autorisation d'accès au réseau Wifi.
    J'ajoute une nouvelle fois que le proxy et le filtrage d'url n'ont pas leur place sur le firewall, mais sur une machine située en dmz.
    J'ignore ce que sont vos possibilités d'évolution dans votre conception mais mon sentiment est que vous faites fausse route et que l'idée qui consiste à penser adresse ip = utilisateur va vous poser des problèmes de façon récurrente.
    En outre je ne crois pas tromper en disant que le portail captif ne vous permettra pas la conservations des données de connexion selon les termes de la législation applicable.



  • 95 % d'accord avec CCNET (les 5% vont au placement du proxy si il parle de DMZ publique ;), pour moi le proxy doit se situer soit dans le LAN, soit dans une DMZ privée car il est justement relais d'authentification, généralement kerberisée, et celà évite des porosités inutiles entre les zones de confiance, mais c'est une pure remarque de design).
    Il faut, quand c'est possible, utiliser un proxy dédié avec une authentification utilisateur (transparente ou non, tout dépend de votre contexte) afin d'obtenir des traces qui soient au plus juste de la réalité.



  • Je suis d'accord sur les 5% bien que l'ai omis de préciser la nature de la dmz. C'est bien ainsi, comme Juve le précise, qu'il faut faire pour les raisons qu'il indique.



  • Bonjour,
    Merci pour vos conseils, seulement, dans la structure actuelle: "distributions d'internet aux étudiants par le biais d'un réseau wifi", il me parait un peu difficile, et surtout lourd, de prévoir deux machines (une pour le proxy et une pour le firewall).
    Il n'y a pas de réseau administratif ou quoi que ce soit d'autre à protéger ou a cloisonner, donc bon…

    Juve me parle d'authentification sur le proxy, très bien, mais il semble que cette option ne soit possible que si le proxy n'est PAS en mode transparent, pouvez vous me le confirmer? En effet, il me parait très difficile de faire configurer le proxy sur chaque navigateur de chaque étudiant ou chaque personne de passage…

    Avez vous une autre solution à me proposer?

    Merci



  • Oui, si authentification pas de mode transparent.
    Il devrait y avoir un réseau d'administration ne serait ce que pour le firewall.
    Non pour le reste.
    Pensez à vos obligations légales qui vont aller croissances probablement après la parution des décrets d'application d'Hadopi.



  • Bonjour,
    Donc concrètement je fais quoi si je veux faire un log mettant en relation les "vrais" nom des utilisateurs et les sites qu'ils visitent?
    Je précise bien qu'un proxy non transparent n'est pas envisageable du fait de la config' à faire sur chaque machine.

    Parce que là, je me sens un peu bloqué!
    Merci.



  • Pour la configuration du proxy je vous conseille de mettre en place un WPAD/Proxy.PAC, ainsi les navigateurs (configurés en détection automatique, valeur pas défaut des navigateurs firefox et IE) s'autoconfigureront correctement pour utiliser votre proxy.



  • Salut,

    a ma connaissance, ça ne se fait pas comme ça, simplement. J'ai vu sur le forum us que des mecs cherchaient à envoyer les logs de squid vers un serveur syslog, ça pourrait être une partie de la solution, même si ala base ce n'est pas fait pour ça.

    Pour ta question, il faut un peu de logique.

    D'abord, ton SquidGuard, qui te donne des graphique etc… c'est pas mal... mais si tu regardes bien, tu n'as pas l'heure exacte a laquelle à eu lieu la visite du site ; or, pour coller à la loi, il faut l'heure précise. Tu peux avoir l'heure précise dans les logs squid en utilisant la commande " emulate_httpd_log on "
    Suite à ça, ton graphique dans Squidguard ne fonctionera plus. Par contre, si tu as activé la rotation, tu verra dans ton dossier /var/squid/log des access.log.* , en rotation selon ce que tu as demandé. Perso j'ai fait un script pour les renommer a la date du jour. A l'intérieur de tes fichiers, l'heure d'accès, l'IP source et l'url de destination.

    Ensuite, vu que tu as l'heure précise d'accès, tu n'as plus qu'a aller voir dans le log de ton DHCP et de ton portail captif : tu verra a quelle heure a été attribué le bail, et à quelle adresse mac et à quel login. Tu n'as besoin de rien d'autre pour prouver ta bonne foi!! La loi dit qu'il faut être en mesure de tracer les utilisateurs, pas que ce soit faisable en un seul click pour la police!

    Si vous avez mieux, je suis preneur!! (comme par exemple avoir squidguard avec l'heure précise et l'interface web!)



  • Il n'y a pas besoin d'aller aux US pour faire ce type d'anerie "envoyer les logs de squid vers un serveur syslog".

    Syslog est un serveur de stockage de log … système, comme son nom l'indique !
    On y stocke donc des messages courts du genre "service squid démarré", ou "compte vpn connecté" ...
    Mais CE N'EST PAS fait pour les logs de Squid !!

    Concernant l'heure, il y a un protocole (NTP) qui permet de se synchroniser.
    Bien sur, on évitera les aneries supplémentaires :

    • une SEULE machine sera synchronisée sur un serveur du type fr.pool.ntp.org,
    • les autres machines se synchroniseront avec celle ci !
      Ainsi toutes les machines seront synchronisées = pas de problème de lecture des logs !

    (Le DC Windows sait utiliser la SEULE machine pour se synchroniser !)



  • @jdh:

    Il n'y a pas besoin d'aller aux US pour faire ce type d'anerie "envoyer les logs de squid vers un serveur syslog".

    Syslog est un serveur de stockage de log … système, comme son nom l'indique !
    On y stocke donc des messages courts du genre "service squid démarré", ou "compte vpn connecté" ...
    Mais CE N'EST PAS fait pour les logs de Squid !!

    Concernant l'heure, il y a un protocole (NTP) qui permet de se synchroniser.
    Bien sur, on évitera les aneries supplémentaires :

    • une SEULE machine sera synchronisée sur un serveur du type fr.pool.ntp.org,
    • les autres machines se synchroniseront avec celle ci !
      Ainsi toutes les machines seront synchronisées = pas de problème de lecture des logs !

    (Le DC Windows sait utiliser la SEULE machine pour se synchroniser !)

    1. Je crois que tu n'es pas obligé d'utiliser ce ton de "blasé", ceci est un forum, il est donc possible que les gens disent des bêtises, et même plusieurs fois!
    2. effectivement un syslog, c'est pour les log système… mais je ne vois pas pourquoi on ne pourrais pas l'utiliser dans un autre but, comme par exemple pour stocker les logs du traffic ; de plus si tu as bossé sur d'autres matos que pfsense, tu saurais que la plupart des firewall envoient tout dans le syslog, y compris les urls visitées, les adresses mac etc...
    3. A force de se croire supérieur aux autres, on en oublie de lire correctement les messages postés. Tu aura beau syncroniser ton pfsense avec tous les serveur NTP du monde, par défaut les logs "access.log" générés par squid ou squidguard indiquent le temps sous forme de secondes depuis le 01/01/1970. On se retrouve donc avec un "timestamp" illisible, et il faut absolument un interpréteur pour pouvoir lire les logs. Preuve en est, dans Squidguard sous pfsense, dans la partie ou l'on peux lire les logs, il n'y a aucun horraire d'accès, seulement des plages horraires ; il est trop compliqué de lire la date par rapport au timestamp à 12 ou 16 chiffres indiqué dans les logs. En utilisant l'option dont je parle plus haut, on obtient l'heure dans un format lisible par l'homme (et là effectivement, ce sera l'heure de la machine / du serveur NTP si configuré).

    Je pense donc qu'au lire de dire "NON vous êtes bête c'est pas comme ça que ça marche" tu ferais mieux de donner une solution complète afin de pouvoir être dans la légalité vis à vis de la législation française en utilisant Pfsense.



  • 1/ Je ne suis pas blasé :

    • pensez qu'utilisez syslog pour access.log est une ânerie : syslog N'EST PAS fait pour cela (même s'il existe un projet "logdaemon")
    • il est NORMAL d'utiliser des moyens en accord avec ce pourquoi ils sont faits
    • rappeler quelques éléments de base : je le fais aussi sur d'autres forums

    2/ Autre firewalls :
    Oui j'ai travaillé sur d'autres firewalls (peut-être plus que toi ?). Et je n'en connais AUCUN qui envoie les logs de Squid dans syslog !
    J'aime apprendre, alors cites en UN.

    3/ Temps :
    Je rappelle qu'il est souhaitable qu'UNE seule machine dans un réseau se synchronise avec des serveurs NTP.
    => c'est le "best effort" qui régit Internet (démarche "écologique" à mon gout)
    J'aurais pu écrire qu'il faut utiliser NTP plutôt qu'un cron avec NTPDATE.
    => encore le "best effort" (plus jeune j'ai fait cron et c'est mal !)
    Je précise qu'il faut utiliser les serveurs sur le modèle fr.pool.ntp.org.
    => est tu inscrit, comme il le faudrait, sur Meudon pour utiliser leur NTP ?
    => pool.ntp.org est, hélas, fort méconnu; alors que c'est VRAIMENT nécessaire !
    Le fichier access.log contient le temps en UTC. Juste !
    => est ce si difficile ? (Perl : s/\d+/localtime($&)/e ; Awk : print strftime("%d/%m/%y %T",$1) )
    => encore faut-il que le serveur Squid soit lui-même à l'heure !

    Perso, j'ai déjà écrit sur CE sujet : sortir les log de pfSense.
    Et, à l'époque, j'avais (moi-même) écris une ânerie : utilisez logrotate … qui n'est pas fourni avec pfSense.

    Le (bon ?) raisonnement est :

    • transférer access.log régulièrement (par scp et non par syslog)
    • il faut avoir fait squid -k (sinon access.log est encore en cours d'utilisation)
    • logrotate est fait pour ça
    • logrotate n'est pas dispo !!!
    • alternative : cron est-il dispo ? si oui : squid -k + scp access.log.0

    Maintenant, je ne vais pas chercher plus : je n'en ai pas besoin, et quand je donne des indications, on me prend pour un imbécile ...

    NB : en matière d'ânerie, j'en ai fais ma part (j'ai été jeune). Je ne pense AUCUNEMENT à dire vous êtes des ânes. Ce n'est NULLEMENT mon état d'esprit alors merci de NE PAS m'attribuer ceci ! C'est blessant !

    NB2 : SquidGuard donnerait des graphiques ? Et on ne m'a rien dit ! C'est dommage, il y a un bel outil Lightsquid (fourni en package).



  • Sur le fond, je pense que

    • DHCP ne devrait fournir d'adresses ip qu'aux machines dont la MAC address est connue
    • DHCP devrait (donc) raisonner en adresse ip fixe selon la MAC address
    • bien sur il faut voir large (172.16.x.x)
    • ensuite LightSquid utilise un fichier realname.cfg (au moins dans le paquet d'origine)

    Moi je ferais un php script + base MySQL qui génèrerait le fichier de conf dhcp + realname.

    Ce n'est pas simple mais c'est en amont qu'on trouve l'idée organisatrice !

    Bien sur, je ferais cela sur un Squid dédié (à base de Debian) avec l'excellente remarque de Juve sur WPAD (juste indipensable).

    Perso dans entreprise c'est presque comme cela que je fonctionne : Squid dédié / Debian, WPAD, LightSquid, mais le dhcp (sous Win) est trop souple d'où génération de squidguard.conf à partir des ip.



  • Hé bin voilà on avance! :) Je crois que c'est le but, partager les connaissances…

    Je parlais des logs, tout court... effectivement, ils ne proviennent pas de squid!

    Au temps pour moi pour, ma langue a fourché je voulais parler de lightsquid!

    Cron est dispo sur pfsense, et il a meme une interface graphique ; la gui de squid possède aussi une fonction de rotation ; avec la commande pour avoir le temps "lisible" nul besoin du script perl ; ne reste plus qu'a envoyer le fichier avec scp ou ftp... qu'on automatise facilement avec cron



  • Bonjour, excusez moi pour le délais de ma réponse…
    Merci à tous pour vos infos et plus particulièrement à Meulator, je vais utiliser sa méthode, (analyse des logs DHCP+portail captif+sites visités) de toute façon c'est juste pour se couvrir juridiquement. Quand j'aurais du temps, je créerais un script PHP pour automatiser le truc.
    Par contre, la question est de savoir comment conserver les logs du DHCP et du portail captif après un reboot de la machine, car si on redémarre, plus de logs DHCP ni portail captif  :o étrange…. Si je pouvais éviter de passer par un serveur syslog, ce serait pas mal  :) (outch, pas taper!)

    Donc si quelq'un à une piste.

    Merci.



  • C'est précisément ce à quoi sert un serveur Syslog, comme l'as expliqué l'ami jdh

    Syslog = logs systèmes, dans ton cas DHCP + portail captif

    Sans serveur Syslog… hummm bah tu as probablement la possibilité d'envoyer également tes logs via Scp/Ftp (les logs du firewall doivent se trouver dans /var/logs ) mais je ne sais plus si de base il est possible d'effectuer une rotation (car ton fichier log sera en cours d'utilisation, et donc du ne pourras pas l'envoyer par FTP/SCP avant de l'avoir dumpé... sachant que logrotate n'est pas dispo sur pfsense de base.)

    Qu'est ce qui te gène dans un syslog? c'est tout bête... ton syslog n'a pas besoin d etre sur place, tu peux envoyer les logs à distance, à travers un vpn ou directement a travers le net (port syslog à ouvrir = 514)

    Je serais intéressé par ton script PHP si jamais tu le fais :)



  • @ jdh

    Je pense que ce qui est abordé ici est pour un accès wifi public, et non un accès en entreprise (pour lequel un radius + certificats serait encore + sécure que la restriction par addresse mac)

    D'ou l'importance des logs de connexion (les entreprises ne sont pas soumises à cet obligation si le wifi est privé)



  • Au fait Petitoursondelu si tu es capable de modifier lightsquid pour qu'il prennent en compte la date et l'heure au format lisible ça serait intéréssant!



  • @Meulator:

    Au fait Petitoursondelu si tu es capable de modifier lightsquid pour qu'il prennent en compte la date et l'heure au format lisible ça serait intéréssant!

    Bonjour,
    En effet, la solution que je veux mettre en place c'est pour un wifi public (résidence étudiante).
    Pour la modif de lightsquid, je vais je pense, ne pas réinventer la roue!
    Ici, un lien qui m'a l'air intéressant: http://forum.pfsense.org/index.php/topic,15402.0.html

    Le seul soucis est que je suis en misère pour installer le package p5-dateTime, je n'ai jamais rien installé de ma vie sur freeBSD, et j'ai l'impression que c'est bien difficile de gérer automatiquement les dépendances. Sans ce paquet, impossible d'exécuter le script perl.

    Si à la rigueur quelqu'un sait comment installer ce fichu p5-DateTime, je suis preneur! Et je pense que ça réglera mon problème et m'évitera de développer un truc qui existe déjà :)

    Merci



  • Bonjour, un petit UP concernant surtout mon dernier message, avez vous une idée de comment installer le package p5-dateTime?
    Pour l'instant je n'ai pas encore mis les mains dans le cambouis pour essayer de créer un script PHP, car la modif de lightsquid mise en lien, me parait intéressante!.

    Merci.


Log in to reply