Identificar usuarios con ip (squid con accesos por usuario)



  • Buenas , cómo puedo tener identificados a los usuarios con dni-ip o mac? si el servidor dhcp no lo tengo instalado en pfsense por problemas de direccionamiento .El servidor lo tengo instalado en la misma máquina que pfsense pero en el sistema , no puedo usarlo en pfsense porque éste no permite tener asignadas 2 ips a una misma interfaz, sin embargo desde el sistema sí puedo con los  alias.

    La idea es identificar al usuario con el dni , tengo instalado sarg y squid  y veo las ips que se conectan en cada momento pero no sé a qué usuario corresponden .
    alguien me puede ayudar?

    GRacias.



  • Pues si tienes sarg, el tiene una seccion donde puedes amarrar IP-NOMBRE, para que en los reportes aparezca el nombre en vez del IP, claro tambien siempre y cuando tus accesos a squid no uses ad, ldap, porque esos sistemas te los darian, pero quiero pensar que no es tu caso.

    Aqui veo que vas a tener que hacer uso de sarg o agarrar un hojita y con tu lapiz.

    Saludos.



  • @alvas:

    La idea es identificar al usuario con el dni , tengo instalado sarg y squid  y veo las ips que se conectan en cada momento pero no sé a qué usuario corresponden .
    alguien me puede ayudar?

    Tienes opciones de autentificación de usuarios en squid. Pero no se pueden usar si squid está en modo transparente.

    http://wiki.squid-cache.org/SquidFaq/InterceptionProxy#Concepts_of_Interception_Caching



  • muchas gracias voy a probarlo …



  • he usado los usuarios de squid en lugar de los del sistema como me indicáis pero en los logs sólo veo las ips de los usuarios y las páginas visitadas , cómo hago para ver también el username, cómo lo puedo hacer?

    GRacias.



  • He instalado también ligthsquid y el realname en el report me aparece vacío.

    Cómo hago para que me aparezca el usuario creado en squid??

    Gracias.



  • No sé si esto puede resolverse mediante el configurador web. El caso es que squid puede tener su access.log con distintos formatos y los analizadores (de access.log) también pueden ser configurados en consecuencia.

    http://wiki.squid-cache.org/Features/LogFormat

    Voy a probar con una instalación virtual de la última versión, a ver qué…

    Encontré algo (pero viejo):

    Google user realname lightsquid pfsense

    http://www.serveridol.com/2011/08/10/lightsquid-monitoring-squid-users/



  • Usa sarg, lightsquid tiene limites, checa tu log como dice bellera, ahi viene los usuarios, y ya con sarg sacas los reportes, cuando uno usa nombres de usuario, el access.log tiene ambos datos: ip+usuario en cada linea que registra.

    Dale un probada a sarg, y viene mucha info en google de como ponerlo a trabajar, saludos.



  • con sarg ya probé y tampoco me muestra el nombre de usuario, necesito ese dato además me corre prisa y necesito ayuda porque he probado muchas opciones y no lo consigo.
    Muchas Gracias



  • El origen del problema es que no puedo montar un servidor dhcp para los clientes en pfsense , lo tengo montado en el sistema en el freebsd que corre por debajo porque aquí puede poner 1 interfaz con 2 ips a través de un alias en pfsense no me deja , esto es por las peculiaridades de mi red ,de esta manera pfsense no sabe la relación ip con nombre de cliente , pfsense sabe los nombres de usuario y freebsd sabe las direcciones ip , cómo puedo solucionar esto??

    Tengo 3 interfaces , una de ellas es la de gestión , otra es la WAN y en la otra
    tengo una interfaz con 2 ips ,una de ellas está en la red que se ofrecen a los clientes y otra es de la red de los puntos de acceso, esto no lo puedo cambiar.

    Muchas Gracias.



  • A ver… Hice una instalación de la 2.1 a la que añadí el paquete squid3. A partir de aquí:

    • Declarar en el navegador de la máquina cliente (192.168.1.2) que uso como proxy 192.168.1.1:3128

    • Marcar la casilla Enabled logging en la configuración de squid.

    • Activar Local como Authentication method. Se trata de hacer una prueba simple para ver si access.log "capta" los usuarios. En la pestaña Authentification de la configuración de squid se pueden configurar autentficiaciones externas.

    • Ir a la pestaña Users y crear un usuario. En mi ejemplo, el usuario es jpj.

    • Voy a cualquier sitio de internet y el navegador me pregunta usuario/contraseña.

    Y access.log es:

    SIN AUTENTIFICACIÓN

    $ head /var/squid/logs/access.log
    1386174546.911    401 192.168.1.2 TCP_MISS/200 1143 GET http://eu.asnumber.networx.ch/asnumber/asnum? - DIRECT/62.48.3.90 application/xml
    1386174548.823    911 192.168.1.2 TCP_MISS/200 253081 GET http://www.ara.cat/ - DIRECT/212.73.198.167 text/html
    1386174548.875    485 192.168.1.2 TCP_MISS/200 17736 GET http://static2.ara.cat/static/ARACatRD/header/ara_header.css? - DIRECT/82.223.76.180 text/css
    1386174549.192    362 192.168.1.2 TCP_MISS/200 16950 GET http://static1.ara.cat/static/ARAComments/js/ara.comments.js? - DIRECT/82.223.76.180 application/javascript
    1386174549.239    480 192.168.1.2 TCP_MISS/200 55873 GET http://static1.ara.cat/static/ARACatRD/js/_scripts/ara.scripts.js? - DIRECT/82.223.76.180 application/javascript
    1386174549.242    994 192.168.1.2 TCP_MISS/200 428598 GET http://static1.ara.cat/static/ARACatRD/min/ara_output.css? - DIRECT/82.223.76.180 text/css
    1386174549.245    377 192.168.1.2 TCP_MISS/200 7325 GET http://s7.addthis.com/js/250/addthis_widget.js - DIRECT/93.184.220.196 application/x-javascript
    1386174549.443    172 192.168.1.2 TCP_MISS/304 439 GET http://fast.fonts.com/t/1.css? - DIRECT/93.184.220.20 -
    1386174549.444    576 192.168.1.2 TCP_MISS/200 5196 GET http://t.ara.cat/marfeelTouch/1.0/js/gardatenant.js - DIRECT/54.240.166.152 application/x-javascript
    1386174549.522     77 192.168.1.2 TCP_MISS/200 4046 GET http://static1.ara.cat/static/ARACatRD/header/images/ara-header_usrbox-pic.png? - DIRECT/82.223.76.180 image/png
    

    CON AUTENTIFICACION

    $ tail /var/squid/logs/access.log
    1386175696.773    104 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/6/0/1386006482706.jpg jpj DIRECT/4.26.236.126 -
    1386175703.266     93 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/8/5/1386088521658.jpg jpj DIRECT/4.26.236.126 -
    1386175709.766     94 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/8/5/1385639853758.jpg jpj DIRECT/4.26.236.126 -
    1386175716.266     96 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/7/6/1386093316567.jpg jpj DIRECT/4.26.236.126 -
    1386175722.774     93 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/1/5/1386079775151.jpg jpj DIRECT/4.26.236.126 -
    1386175729.270     94 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/2/6/1386164168562.jpg jpj DIRECT/4.26.236.126 -
    1386175735.772     93 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/6/0/1386006482706.jpg jpj DIRECT/4.26.236.126 -
    1386175742.268     93 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/8/5/1386088521658.jpg jpj DIRECT/4.26.236.126 -
    1386175748.762     94 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/8/5/1385639853758.jpg jpj DIRECT/4.26.236.126 -
    1386175755.262     94 192.168.1.2 TCP_MISS/304 366 GET http://www.tv3.cat/multimedia/jpg/7/6/1386093316567.jpg jpj DIRECT/4.26.236.126 -
    

    Se puede observar como detrás de la URL en lugar de un guión está en nombre de usuario, jpj.

    Si eso es así, sarg configurado correctamente debe mostrar estadísticas por usuario.



  • Más…

    Instalé sarg y en Status - Sarg reports:

    • Seleccioné squid en Proxy server, pestaña General.

    • Seleccioné username en Ntlm User Format, pestaña Users.

    • Fuí a la pestaña Realtime para ver si sarg comprende bien access.log. Todo ok, imagen adjunta.




  • Hola Bellera , eso ya lo ha probado varias veces creo que el problema reside en lo que te indico en el post anterior.
    Tengo el servidor dhcp y la gestión de usuarios en sitios diferentes ,puede que ese sea el problema , lo malo que no lo puedo cambiar porque me lo imponen  las peculiaridades de mi red , el sistema operativo(freebsd) ofrece las direcciones ip y pfsense gestiona los usuarios , en los reports de ligthsquid y sarg no aparece el nombre de la persona que se valida para acceder a intenet sólo las ips con las páginas accedidas.

    Necesito una solución .

    Muchas Gracias.



  • No me quiero salir del tema, para tampoco quiero abrir otro post solo por esta pregunta, ¿esto se puede hacer "solo" para la autentificación del portal cautivo?, ¿o solo así como lo plantean aquí?



  • @alvas:

    Hola Bellera , eso ya lo ha probado varias veces creo que el problema reside en lo que te indico en el post anterior.
    Tengo el servidor dhcp y la gestión de usuarios en sitios diferentes ,puede que ese sea el problema , lo malo que no lo puedo cambiar porque me lo imponen  las peculiaridades de mi red , el sistema operativo(freebsd) ofrece las direcciones ip y pfsense gestiona los usuarios , en los reports de ligthsquid y sarg no aparece el nombre de la persona que se valida para acceder a intenet sólo las ips con las páginas accedidas.

    Necesito una solución .

    Muchas Gracias.

    No veo la relación o no termino de comprender qué quieres hacer.

    Para tener estadísticas de acceso por usuario en un proxy (squid) se necesita:

    • Que el navegador sepa que usa un proxy.
    • Que dicho proxy esté configurado con un método de autentificación de usuarios.
    • Que el usuario se valide al abrir el navegador. Esto se puede llegar a obviar en redes donde los equipos estén configurados con una autentificación única (single sign-on), tipo Active Directory, LDAP… En estos casos, el navegador sabe del usuario/contraseña de quien inició la sesión en el equipo.
    • Que el proxy tenga activado su log (access.log en squid).
    • Que el analizador de logs esté configurado en consecuencia (sarg).

    Si tienes varias bases de datos de usuarios debes reorganizar tu "directorio" para disponer de una sola. Sé que no es tarea fácil, pero en instalaciones grandes hay que ir a ello, con servidor principal y secundario trabajando en paralelo.

    La asignación de IPs no tiene ninguna importancia, a menos que tú impongas la IP por MAC a cada equipo. ¿No estarás confundiendo el nombre de la máquina con el del usuario?



  • @ZAC:

    No me quiero salir del tema, para tampoco quiero abrir otro post solo por esta pregunta, ¿esto se puede hacer "solo" para la autentificación del portal cautivo?, ¿o solo así como lo plantean aquí?

    ZAC, son dos cosas distintas. El control de usuarios de Captive Portal persigue saber quién usa nuestros servicios de red, sean los que sean. El de squid, quien usa y para qué sitios el acceso a internet.

    Evidentemente, cuando de ejercen controles de este tipo hay que cumplir las leyes de la zona donde se esté, pues se puede vulnerar la privacidad de los usuarios.



  • Hola Bellera, cumplo todos los puntos que me indicas

    El navegador sabe que usa un proxy, para acceder a internet me tengo que validar con un página de login que cree en la parte de portal cautivo , he probado a usar los usuarios creados en squid y los usuarios creados en usuarios locales indicándolo siempre en el portal cautivo, me valido sin problemas pero en los logs de squid no aparece nunca el nombre, en los logs que hace ligthsquid sale una ? en realname , la ip sí aparece y las páginas visitadas

    Con sarg me pasa igual.

    El tema es que no consigo que me aparezca en los logs el nombre de usuario que se conecta , los demás datos me aparecen sin problemas, tiempo, páginas, ip…
    Ya no se qué mirar,
    Gracias.



  • Incorrecto. La validación debe pedirla squid, no el portal cautivo.

    Desactiva el portal cautivo para probar y sigue los pasos del ejemplo que te dí. En access.log (de squid) tendrás el nombre de usuario.

    Otra cosa es que quieras integrar los dos, mediante validación única. No sé si se puede. Lo miro…



  • No veo nada para hacer single sign-on (validación única) para CP (Captive Portal) y squid.

    No es elegante, pero como los navegadores permiten guardar usuario/contraseña no veo otro remedio que pedir el usuario/contraseña en el portal cautivo y después en el proxy, si deseas control por nombre de usuario en este último.

    Evidentemente, esto te obliga a montar un servicio de usuarios único, ya que tanto CP como squid precisan de él por separado.

    En cuanto a la coexistencia de squid3 y CP parece que hay una opción en squid3 llamada patch captive portal que tiene por objetivo que el portal cautivo no pueda ser saltado cuando se indica el proxy en el navegador.

    http://forum.pfsense.org/index.php?topic=58535.0
    http://forum.pfsense.org/index.php?topic=65694.0

    Si deseas cosas más afinadas, pero bastante más complicadas:

    Google single sign on captive portal squid pfsense

    http://forum.pfsense.org/index.php?topic=58700.0

    ¡Suerte!

    Nota: marcelloc es el desarrollador del paquete squid3 para pfSense.



  • A ver, estuve siguiendo este hilo, al principio se habla del problema por que los logs de squid no guardaban la IP/usuario, tengo mucho tiempo y nunca he tenido problema de esto, me huele a error en alguna aplicacion que no se almaceno bien cuando se instalo, no le veo otro por que.

    Ahora al final veo que ya se mezcla CP+squid, en la version 2.0.x esto era un problema, habia hacks pero era algo muy complejo, creo que no hemos escuchado todo el planteamiento bien desde el principio.

    Y no importa si usas LDAP, AD, Local Users, etc, squid siempre pone quien esta autenticando cuando esta bien configurado, es un software que tiene mucho tiempo, no creo que falle al menos que algo no se haya instalado bien.

    Como comenta bellera, hay un hack en squid3 con cp que no he probado aun, pero no entiendo al final que en realidad pretendes llevar a cabo, si estas usando squid y habilitastes logs y diste de alta usuario+password, no hemos visto ninguno de tus logs.

    SI tienes estos parametros configurados y cuando navegas te aparece la ventana de usuario+password. muestra esos logs para verlos.?

    Saludos.



  • ok , lo pruebo y os comento.
    Muchas Gracias.



  • Buenas , cada vez estoy más perdido , si desactivo el portal cautivo y con squid arrancado , no me pide validación .
    Lo pruebo con proy transparente y sin proyx transparente.
    Os pego la config de squid.
    Gracias






  • más capturas






  • Proxy transparente -> No admite autentificación, pues el navegador n sabe que tiene un proxy.

    Por el resto, debería ir. ¿Probaste stop/start del proxy? Con los cambios igual hay algún lío.

    Se me ocurre que verifiques que tu equipo no navega si el proxy está parado…



  • Acabo de probarlo , sin portal cautivo puedo navegar sin pedir autentificación , aunque arranque o tire el proxy .
    Es como si el squid no me hiciera caso en acces control en allowed subnets tengo la dirección de la red .



  • Allowed subnets no es necesario rellenarlo con la subred empleada con el proxy. Fíjate en la nota que hay debajo.

    Pero eso no tiene importancia para la autentificación. Es simplemente para indicar qué IPs de origen pueden emplear el proxy.

    Creo que no debes tener bien configurado el proxy en el navegador, pues normalmente si un navegador no encuentra un proxy impuesto, simplemente no navega.

    Y como tu navegador va directo, no autentificas.



  • En el navegador tengo activado que detecte la config automaticamente, si activo el portal cautivo sale la pantalla de login si lo quito navego sin problemas , y con squid levantado o caido , esto antes no me pasaba



  • La detección automática de proxy NO funciona en muchos casos. Este tema está ampliamente detallado arriba, en Documentación.

    Debes indicar el proxy por IP y puerto, tal como dije en la prueba realizada.

    Después todo esto se puede afinar, según el entorno de trabajo (sistemas operativos, navegadores, topología de red…)



  • Hola Bellera , si especifico en los clientes el proxy en el navegador sí me pide validación squid y en los logs me muestra el usuario, todo esto sin tener activado el portal cautivo, el problema es que si no se indica el proxy los usuarios entran sin validación, esto es un problema grave , cómo puedeo solucionarlo?

    GRacias.



  • Mediante ajuste de las reglas en LAN.

    1. No dejes ir a los destinos TCP 80 (http), TCP 443 (https) y TCP 8000-8100 (http alternativos).

    2. O mejor aún, autoriza en LAN sólo lo que sea estrictamente necesario. Eso también depende de tu infraestructura de red. Por ejemplo, si tienes un DNS y NTP locales y los usuarios siempre emplean correo web igual no necesitan ir directo a internet para nada.

    Con una estructura así quien no tiene el proxy indicado en el navegador no puede navegar al exterior.

    Según cuál sea la tipología de tus usuarios conviene emplear la segunda opción que te digo, pues hay muchas formas de evasión. Una de ellas es, por ejemplo, emplear conexiones TCP 22 (ssh) para usar proxys externos y poder así, navegar.



  • El problema es que el servicio que queremos dar , es una red de invitados y configurar los navegadores es algo engorroso , necesito algo más sencillo para los usuarios , que abran un navegador y automáticamente se les pida las credenciales y esas credenciales y acceso se puedan monitorizar y almacenar.

    GRacias.



  • Entiendo… pero esto es cada vez más habitual...

    Los usuarios, si precisan de internet, se amoldan a ello.

    Ejemplos:

    http://www.bib.ub.edu/index.php?id=51&L=1

    http://www.upm.es/institucional/Estudiantes/Servicios_Red/OtrosServicios



  • Entonces no podría hacerlo sin tocar la configuración de los navegadores de los clientes?
    GRacias.



  • Bueno, esto es código libre (licencia BSD) y se pueden hacer muchas cosas si hay conocimiento y tiempo.

    @alvas:

    El problema es que el servicio que queremos dar , es una red de invitados

    En un entorno como este supongo que precisais:

    • Portal cautivo con autentificación
    • Proxy transparente
    • squid 3.x para soportar filtrado https (al estar el proxy en modo transparente)

    Con eso y herramientas de análisis se podría relacionar el nombre de usuario logueado en el portal cautivo con su IP de cliente para "alterar" los logs de squid y tener en ellos el nombre de usuario y poder tener los datos de acceso por usuario.

    Que yo sepa, esto no está heho.

    Y, además…

    @bellera:

    Cuando de ejercen controles de este tipo hay que cumplir las leyes de la zona donde se esté, pues se puede vulnerar la privacidad de los usuarios.



  • Hola Bellera, me bastaría si lo pudiera relacionar de forma manual , la necesidad que tengo es  poder relacionarlo.
    Gracias.



  • Bueno, pues entonces:

    1. Activa Captive Portal con autentificación de usuario.

    2. Monta un servidor de logs (syslog) para guardar los logs de Captive Portal y configúralo en Status - System logs - Settings para enviarle los logs. Más en http://forum.pfsense.org/index.php/topic,62881.msg339944.html#msg339944

    3. Pon a squid + squidGuard a trabajar en modo transparente. Se supone que con squid 3.x también se pueden filtrar peticiones https. No lo he probado, http://forum.pfsense.org/index.php/topic,62256.0.html



  • ok , voy a probarlo y te cuento.
    Muchas Gracias.



  • Hola Bellera , he instalado el syslog-ng que trae pfsense en los paquetes opcionales .
    en status - system logs le indico que envió los logs a un server remoto , le indico 127.0.0.1.
    lo único que me saca es esto:

    Dec 27 14:29:20 pwifi syslog-ng[44454]: syslog-ng starting up; version='3.3.7'
    Dec 27 14:39:20 pwifi syslog-ng[44454]: Log statistics; processed='center(received)=0', processed='center(queued)=0', processed='global(payload_reallocs)=0', processed='global(sdata_updates)=0', processed='source(_DEFAULT)=1', processed='src.internal(_DEFAULT#0)=1', stamp='src.internal(_DEFAULT#0)=1388150960', processed='global(msg_clones)=0', processed='destination(_DEFAULT)=1'
    Dec 27 14:49:20 pwifi syslog-ng[44454]: Log statistics; processed='center(received)=0', processed='center(queued)=0', processed='global(payload_reallocs)=2', processed='global(sdata_updates)=0', processed='source(_DEFAULT)=2', processed='src.internal(_DEFAULT#0)=2', stamp='src.internal(_DEFAULT#0)=1388151560', processed='global(msg_clones)=0', processed='destination(_DEFAULT)=2'

    el servidor está habilitado pero no obtengo más logs que esto.
    Tengo un usuario de pruebas navegando pero no me da información.
    Cómo puedo obtener los logs de navegación por usuario?
    GRacias.



  • A mi no me sale esto, pero creo que el visualizador web de los logs no funciona.

    Sin embargo, sí se registran los logs.

    En http://forum.pfsense.org/index.php/topic,70846.0.html tienes explicada la situación.



  • En el archivo donde se guardan tampoco se recogen los logs