Servidor Ubuntu como proxy transparente con filtro de contenidos

Estándar

En este tutorial básico explicaré brevemente como instalar un proxy transparente con filtro de contenidos. También quedara cubierta la generación de informes web con el tráfico y accesos de los usuarios.

Premisas.
1) Se entenderá en todo momento que el sistema instalado es Ubuntu 12.04 Server con la opción LAMP instalada y configurada.
2) El sistema tendrá dos tarjetas de red, eth0 y eth1. La tarjeta de red eth1 estará conectada directamente al router y la tarjeta eth0 estará conectada a un switch.
3) La red interna (las máquinas contectadas al switch) tendrá ip en el formato 192.168.2.X
4) La red externa (la que conecta con el router) tendrá ip en el formato 192.168.1.X

Instalando

Instalamos squid3, dansguardian y sarg

sudo apt-get install squid3 dansguardian sarg

Configurando

1.-Configuración de Squid.

Editamos el fichero de configuración de squid

sudo nano /etc/squid3/squid.conf

y nos aseguramos de que existe esta linea y no esta comentada, si no existe la creamos.

http_port 3128 transparent

Con esto le decimos a squid que funcione en el puerto 3128 y de forma transparente.
Añadimos también lo siguiente:

acl localnet src 192.168.2.0/24
http_access allow localnet
http_access allow localhost
visible_hostname server
cache_dir ufs /var/spool/squid3 7000 16 256

Con esto definimos nuestra red y el permiso de acceso, así­ como la cantidad de mb que queremos de cache (7000).

2.-Configuración de Dansguardian:

Editamos el fichero de configuración de dansguardian:

sudo nano /etc/dansguardian/dansguardian.conf

Localizamos la lí­nea con la directiva «logfileformat» y la establecemos a «3» para que los logs sean idénticos a los que genera squid. Esto lo haremos para que Sarg los entienda.

logfileformat = 3

Localizamos la lí­nea donde se define donde debemos dejar los logs y la dejamos asi

loglocation = ‘/var/log/dansguardian/access.log’

Buscamos la diretiva filterport y la establecemos a 8080, esto sera el puerto donde Dansguardian permanecerá a la escucha.

filterport = 8080

Ahora definiremos la ip del proxy, que por defecto es el propio servidor.Debe quedar así­:

proxyip = 127.0.0.1

Por último definimos el puerto en el que Dansguardian se conecta al proxy:

proxyport = 3128

Para finalizar ponemos una almohadilla # en la lí­nea que empieza por UNCONFIGURED para indicarle a Dansguardian que está todo configurado. Que quede así­:

#UNCONFIGURED – Please remove this line after configuration

Y con esto terminamos la configuración de dansguardian.

3.-Configuración de Sarg.

Sarg es un generador de informes, lo que hace es leer el log de Squid o Dansguardian (en nuestro caso Dansguardian) y generar una web donde podremos ver gráficamente quién accede a internet, dónde accede y cuanto pesa lo que está descargando o visitando. Manos a la obra:

sudo nano /etc/sarg/sarg.conf

Comentamos la linea access_log del principio del fichero ya que la añadiremos al final con otro valor.

#access_log /var/log/squid/access.log

Y al final añadimos la siguiente configuración, que no voy a comentar por pura pereza 😛
Fijaos que la primera lí­nea es igual al access_log que hemos comentado antes, y que ahora queda activa y definida.

access_log /var/log/dansguardian/access.log
dansguardian_conf /etc/dansguardian/dansguardian.conf
graphs yes
graph_days_bytes_bar_color orange
title «Reportes de Acceso de Usuarios»
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
background_color white
text_color #000000
text_bgcolor lavender
title_color green
temporary_dir /tmp
output_dir /var/www/sarg
resolve_ip
user_ip no
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
exclude_users /etc/sarg/exclude_users
exclude_hosts /etc/sarg/exclude_hosts
date_format u
lastlog 0
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
records_without_userid ip
use_comma yes
mail_utility mailx
topsites_num 100
topsites_sort_order CONNECT D
index_sort_order D
exclude_codes /etc/sarg/exclude_codes
max_elapsed 28800000
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
usertab /etc/sarg/usertab
long_url no
date_time_by bytes
charset Latin1
show_successful_message yes
show_read_statistics yes
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0
site_user_time_date_type table
download_suffix «zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg»

Ahora tenemos que crear una serie de directorios donde sarg generará los informes,

sudo mkdir /var/www/sarg /var/www/sarg/diario /var/www/sarg/semanal /var/www/sarg/mensual

y otorgarle la propiedad a www-data para que podamos accederlos más tarde

sudo chown -R www-data:www-data /var/www/sarg

Ahora crearemos unos script para generar los informes, diariamente, semanalmente y mensualmente.

-Script diario.

sudo nano /usr/sbin/sarg-informe-diario

con el siguiente contenido

TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)
sarg /var/log/dansguardian/access.log -o /var/www/sarg/diario -z -d $YESTERDAY-$TODAY
exit 0


-Script semanal.

sudo nano /usr/sbin/sarg-informe-semanal

con el siguiente contenido

TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date --date "1 week ago" +%d/%m/%Y)
sarg /var/log/dansguardian/access.log -o /var/www/sarg/semanal -z -d $YESTERDAY-$TODAY
exit 0


-Script mensual.

sudo nano /usr/sbin/sarg-informe-mensual

con el siguiente contenido

TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date --date "1 month ago" +%d/%m/%Y)
sarg /var/log/dansguardian/access.log -o /var/www/sarg/mensual -z -d $YESTERDAY-$TODAY
exit 0


Asignamos permisos a los scripts que hemos creado para que se puedan ejecutar

sudo chmod 755 /usr/sbin/sarg-informe*

Y los añadiremos a crontab para automatizar la ejecución. Abrimos crontab.

sudo crontab -e

Y añadimos las siguientes lineas

00 00 * * * /usr/sbin/sarg-informe-diario > /dev/null 2>&1
00 01 * * 1 /usr/sbin/sarg-informe-semanal > /dev/null 2>&1
03 02 1 * * /usr/sbin/sarg-informe-mensual > /dev/null 2>&1

La coletilla «> /dev/null 2>&1» es para que no mande un correo con el resultado cada vez que se ejecuta.
Reiniciaremos crontab

sudo service cron restart

Con estas lineas conseguiremos que los informes se generen con caracter diario (primera lí­nea), semanal (segunda lí­nea) y mensual (tercera linea).
Y ahora a esperar a que se generen los primeros resultados (24h). Que seran visibles desde el servidor abriendo un navegador y accediendo a las siguientes direcciones:

Para el informe diario http://127.0.0.1/sarg/diario
Para el informe semanal http://127.0.0.1/sarg/semanal
Para el informe mensual http://127.0.0.1/sarg/mensual

Si no quereis esperar siempre podeis ejecutar el script a mano, por ejemplo el diario serí­a así­:

sudo sarg-informe-diario

Tened en cuenta que en el punto en el que estamos no hemos reiniciado ni squid, ni dansguardian ni ha habido tráfico en la red como para que todo funcione. Probad a ejecutarlo al final del tutorial y vereis el resultado.

4.-Configurando la red

Para que la red conectada a eth0 pueda acceder a internet (que está en eth1) debemos habilitar el «ip forwarding». Editaremos el siguiente archivo:

sudo nano /etc/sysctl.conf

Y nos aseguramos de que esta activado, recordemos que 1 es activado y 0 desactivado.

net.ipv4.ip_forward=1

También necesitaremos decirle al sistema que aplique un par de reglas para que cuando reciba un intento de acceder a una web lo redireccione a Dansguardian para que lo analice y permita o no el acceso. Hay muchas maneras de hacer esto pero a mi me gusta crear un pequeño script que arranque al inicio del sistema.

Crearemos un fichero llamado reglas_iptables en /etc/init.d

sudo nano /etc/init.d/reglas_iptables

y le añadiremos las siguientes lí­neas:

#! /bin/sh
iptables -F
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE


Guardamos y le damos permiso de ejecución:

sudo chmod +x /etc/init.d/reglas_iptables

Crearemos un enlace simbólico en /etc/rc2.d/ para que se ejecute al iniciar.

sudo ln -sf /etc/init.d/reglas_iptables /etc/rc2.d/S20reglas_iptables

Ahora configuraremos las tarjetas de red (si es que aún no lo habeis hecho ya). Esto lo hacemos editando el fichero interfaces.

sudo nano /etc/network/interfaces

Y dejándolo como sigue:

auto eth1
iface eth1 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8

#Segunda tarjeta red
auto eth0
iface eth0 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.0

Con estos cambios le hemos dicho al sistema que la tarjeta eth1 que poseera la direccion ip 192.168.1.2, se conectará al router que tiene la ip 192.168.1.1 y usará los servidores de nombres (dns) de google, que son 8.8.8.8. Esta tarjeta es la que da acceso a internet.
Tambien le decimos que la tarjeta eth0 poseerá la dirección 192.168.2.1, esta tarjeta es la que se comunica con nuestra red interna.

Dicho esto solo queda reiniciar el equipo o los servicios y cruzar los dedos para que no me haya equivocado al escribir este pequeño y básico tutorial.

Reiniciamos servicios

sudo service squid restart
sudo service dansguardian restart
sudo /etc/init.d/reglas_iptables

Se agradeceran crí­ticas constructivas y notificación de meteduras de pata. 😛

107 comentarios en “Servidor Ubuntu como proxy transparente con filtro de contenidos

  1. hola mi pregunta es con relacion al un proxy transparente que monte en ubuntu pero este servidor lo tengo en un vps que alquilo y esta ubicado en europa, pero a traves de el se conectan mas de 100 maquinas y todas accesan a internet desde otro pais.
    Mi pregunta es como hago para controlar quien entra y quien no, cuando las ip son dinamicas, y una cosa mas si lo quiero hacer por las mac estuve probando y no encuentro las mac ya que estas maquinas se conectan a internet a traves de modem usb o mejor dicho modem 3g y al parecer no poseen mac no se exactamente como es el royo.

    Quiero saber si podria crear un usuario y una contraseña diferente para cada usuario y asi controlar el acceso a internet.

    espero comentarios

  2. Sergio

    Llevo tiempo con la idea de instalar un proxy transparente como indicas. Hace un par de años hice algunas pruebas, pero tuve problemas con el tráfico ftp.

    Estoy decidido a seguir los pasos de tu tutorial, pero antes me gustaría que me confirmaras si existe algún problema para utilizar otros puertos diferentes del 80, como el del ftp por ejemplo.

    Gracias por tu gran tutorial

  3. Luis Angel

    Buenos dias Excelente tutorio.
    Amigo yo tengo el siguiente error cuando ejecuto el script cabe senialar que tengo la configuracion que nos recomiendas.
    error:
    SARG: User name too long or invalid in /var/www/sarg/2012Nov26-2012Nov27/sarg-general

    Lo que si es que si limpio el access.log me genera el reporte sin problemas, ahorita el reporte pesa 20 mb, no se si eso este influyendo a que se me origine ese error. No se si te haya pasado algo similar.

    Saludos.

  4. Marcos

    Estimado :

    Muy buen tutorial , lo implemente y anda bien , sin embargo al generar informes me dice el siguiente error :

    Now generating Sarg report from Squid log file /var/log/dansguardian/access.log and all rotated versions ..

    sarg -l /var/log/dansguardian/access.log
    SARG: Missing double quote after parameter «title»

    .. Sarg failed! See the output above for detail

    Tienes alguna idea ? , lo estoy viendo con el webmin .
    Por lo que leo , pareciera que hay que poner comillas en un parametro title y esta asi.

  5. Marcos

    Neil :

    Tienes alguna idea de porque me da este error de sintaxis de fecha ? , he buscado por todos lados y no tengo idea !. te agradeceria si me puedes ayudar.

    SARG: TAG: weekdays
    SARG: Error: Invalid syntax in weekdays tag!

  6. Marcos

    Neil :

    No me hagas caso con lo anterior. Tengo el siguiente problema , no logro poder ver informes de un periodo determinado , es decir :

    Todos me salen con una fecha : 2012Nov27-2012Nov27
    todos ! , y no hallo la forma de poder especificar rangos de fechas para los informes. Hice todo tal cual como tu lo especificaste.

    Espero me puedas ayudar.

    Saludos

  7. Marcos fijate en esta linea del script que genera el informe diario:

    YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)

    Asegurate que te aparecen dos guiones en date.

    Lo mismo para el script semanal y el mensual.

  8. Diego

    Hola, tengo mi red con dhcp activado y en este caso lo esta entregado el router de mi red, hay modo de habilitar el proxy pero sin tener que dejar mi red con direccionamiento fijo. El servidor proxy me puede servir como servidor dhcp? Gracias.

  9. Luis Angel

    NeiL:
    Disculpa por responder despues de mucho tiempo respecto al error de SARG: User name too long or invalid
    lo unico diferente es que mis usuarios se autentifican hacia un servidor por LDAP. Cuando genero mi reporte con la opcion de:
    user_ip yes me genera el reporte sin errores. Ya no se que pueda ser.

    Saludos.

  10. Hola que tal, primero que nada felicidades, ha sido el unico tuto que me ha funcionado ! bueno no ala perfeccion pero solo es un pequeño detalle que imagino se puede resolver facil.

    Ya al poner la configuracion del proxy en el navegador me bloquea todas las paginas con el squid y no con el dansguardian porque sera eso ? y cuando ezxcluyo el el proxy el dansguardian me funciona muy bien !

    que podre hacer para hacer que el proxy trabaje con dansguardian ????

  11. Pedro Lopez

    Muy buen post Neil, menudo crack eres!! una preguntita, este sistema lo quiero instaurar en mi empresa, pero la diferencia es que tenemos subredes montadas en una red con tecnologia cisco. Tendria algun problema a la hora de instaurar esto. como lo podria hacer? la red que une con el router? la red que se une con el switch?necesito ayuda Neil!!! muchas gracias.
    PD: no me importa si me hables por mail…..

  12. Hola Pedro,
    Haciendo una suposicion muy grande el tema seria el mismo, el servidor proxy debe estar siempre justo antes del router para que TODO pase por él antes de salir a internet.

  13. Pedro Lopez

    Claro eso esta claro. pero la historia es que el router cisco es el que enruta todas las subredes de mi empresa….entonces por el tambien tiene que pasar todo….. Imagino que este tema se te escapa un poco de las manos no?

  14. Pedro, si estamos hablando de una infrastructura «importante» imagino que ese router Cisco ya llevara la posibilidad de hacer filtrado y proxy,en cuyo caso este tutorial no te es util . Si no es el caso, quizas deberias dar mas detalle de tu red puesto que con lo que explicas no me hago a la idea exactamente de lo que explicas.
    Saludos

  15. Pedro Lopez

    Muchas gracias por contestar Neil.ya he medio solucionado lo que te comentaba, poniendo un router LAN antes del proxy, y luego este a su vez conectado a un router ADSL.

    Ahora me encuentro con otro problema, a la hora de configurar el servidor Proxy siguiendo tu metodo, todo va perfecto, pero no me da acceso a internet desde los pcs de la lan, y el caso es que solo a la hora de navegar por internet, porque el correo electronico (outlook) me funciona bien.desde el proxy hago ping sin problemas al router.

    que crees que puede estar pasando?

    Muchas gracias Neil.

  16. Pedro Lopez

    Buenas Neil, esto si que es raro, desde na maquina de mi red, hago tracert sin problemas a la pagina de google pasando antes por el proxy. y tambien le hago ping a la pagina de google sin problemas. no entiendo nada.
    Me llega un ping sin problemas pero luego en el navegador no me muestra la pagina…..

  17. Pedro Lopez

    si en principio si, pero dime el que pongo por si acaso lo estoy haciendo mal….. y sin poner nada en el proxy dl navegador funcionaria del alguna forma?

    Gracias Neil.

    • La gracia de que sea «transparente» reside en que los usuarios no tienen que hacer nada, de eso se ocupa el servidor a traves de las reglas de iptables. Lo que hace es capturar el trafico del puerto 80 y pasarlo al squid/dansguardian. Quita cualquier configuracion de proxy que hayas puesto en el navegador y vuelve a intentar navegar.
      Saludos

  18. Crab13

    Hola primero que nada muchas gracias un excelente tuto.
    Y bueno para comentar mi problema, lo que pasa es de que no puedo navegar en ninguna pagina que no sea HTTPS todas las demas estan bloqueadas y dansguardian no respeta las excepciones. Es como si tuviera bloqueado totalmente el puerto 80. De antemano agradezco tu ayuda Saludo.

  19. Hola Crab13,
    Revisa las reglas de iptables, quizas tengas algo mal copiado.
    Por otro lado, no configures nada en el navegador.
    Si has hecho algun cambio en la configuracion que pongo en el post, quitalo y prueba tal cual. Una vez consigas que funcione ya harás los cambios que necesites.
    Salu2

  20. Crab13

    Muchas gracias NeiL por responder pues, mira que he seguido el tuto al pie de la letra pero nada las iptables son tal como las tienes en el post, pero aun asi no cosigo navegar mas que por paginas https, voy a empezar nuevamente desde el principio muchas gracias.

  21. Pedro Lopez

    Muy buenas Neil, ya he conseguido solucionar el problema que tenia. Era tema del archivo de iptables.

    Ahora me gustaria bolquear paginas web con este sistema, por ejemplo como podria bloquear la pagina de facebook o marca?
    Muchas gracias Neil por todo.

    • Hola Pedro, me alegro de que vayas avanzando en el tema. Para bloquear paginas entra en los ficheros de configuracion de Dansguardian, hay una serie de ficheros donde puedes definir lo que quieres bloquear.
      Para el tema del informe de sarg veo que te da un «permission denied», revisa los permisos en /var/www/sarg/semanal y vuelve a ejecutarlo.
      Saludos

  22. Pedro Lopez

    Neil otra cosa que me pasa es que no puedo ver los informes de acceso a internet de los usuarios. cuando intento ejecutar sarg-informe-semanal me da el siguiente error:

    root@ayto-proxy:~# sudo sarg-informe-semanal
    sarg: la opción requiere un argumento — ‘o’
    Usage: sarg [options…]
    -a Hostname or IP address
    -b Useragent log
    -c Exclude file
    -d Date from-until dd/mm/yyyy-dd/mm/yyyy
    -e Email address to send reports (stdout for console)
    -f Config file (/etc/sarg/sarg.conf)
    -g Date format [e=Europe -> dd/mm/yyyy, u=USA -> mm/dd/yyyy]
    -h This help
    -i Reports by user and IP address
    -l Input log
    -n Resolve IP Address
    -o Output dir
    -p Use Ip Address instead of userid (reports)
    -s Accessed site [Eg. http://www.microsoft.com, http://www.netscape.com]
    -t Time [HH, HH:MM]
    -u User
    -w Temporary dir
    -x Debug messages
    -z Process messages
    -convert Convert the access.log file to a legible date
    -split Split the log file by date in -d parameter

    sarg-2.3.2 Nov-23-2011
    http://sarg.sourceforge.net

    Please donate to the sarg project:
    http://sarg.sourceforge.net/donations.php

    /usr/sbin/sarg-informe-semanal: 4: /usr/sbin/sarg-informe-semanal: /var/www/sarg/semanal: Permission denied

    Muchas gracias Neil, a ver si puedes echar una mano en todas estas dudas.

  23. Pedro Lopez

    ya he revisado los permisos, creo que es con chmod 777 /var/www/sarg/semanal, y con ese comando tendria permiso,no? pero me sigue saliendo el mismo error despues de esto.

    El tema de Dansguardian, me podrias decir que ficheros son? para bloquear facebook, como habria que hacerlo?

  24. Pedro Lopez

    si pongo la orden sin sudo delante, me da el siguiente error:

    root@ayto-proxy:~# sarg-informe-semanal sarg: la opción requiere un argumento — ‘o’
    Usage: sarg [options…]
    -a Hostname or IP address
    -b Useragent log
    -c Exclude file
    -d Date from-until dd/mm/yyyy-dd/mm/yyyy
    -e Email address to send reports (stdout for console)
    -f Config file (/etc/sarg/sarg.conf)
    -g Date format [e=Europe -> dd/mm/yyyy, u=USA -> mm/dd/yyyy]
    -h This help
    -i Reports by user and IP address
    -l Input log
    -n Resolve IP Address
    -o Output dir
    -p Use Ip Address instead of userid (reports)
    -s Accessed site [Eg. http://www.microsoft.com, http://www.netscape.com]
    -t Time [HH, HH:MM]
    -u User
    -w Temporary dir
    -x Debug messages
    -z Process messages
    -convert Convert the access.log file to a legible date
    -split Split the log file by date in -d parameter

    sarg-2.3.2 Nov-23-2011
    http://sarg.sourceforge.net

    Please donate to the sarg project:
    http://sarg.sourceforge.net/donations.php

    /usr/sbin/sarg-informe-semanal: línea 4: /var/www/sarg/semanal: Es un directorio

    • Todo lo que esta en /usr/sbin tiene que ser ejecutado por el usuario root, es por eso que si quieres ejecutarlo desde tu usuario tienes que usar sudo.
      Si usas sudo funciona bien?
      Puedes pegar el contenido de /usr/sbin/sarg-informe-semanal ?
      Saludos!

  25. Pedro Lopez

    ya lo se Neil, pero no he puesto sudo porque estoy conn usuario root. y me da el error que te he puesto arriba. Te copio el contenido:
    TODAY=$(date +%d/%m/%Y)
    YESTERDAY=$(date –date «1 week ago» +%d/%m/%Y)
    sarg /var/log/dansguardian/access.log -o
    /var/www/sarg/semanal -z -d $YESTERDAY-$TODAY
    exit 0

    a ver si puedes ayudarme, porque no consigo ver las entradas de los usuarios a internet, y es una cosa que me resulta fundamental.

    tambien te copio el diario:

    TODAY=$(date +%d/%m/%Y)
    YESTERDAY=$(date –date «1 day ago» +%d/%m/%Y)
    sarg /var/log/dansguardian/access.log -o
    /var/www/sarg/diario -z -d $YESTERDAY-$TODAY
    exit 0

  26. Esta parte
    sarg /var/log/dansguardian/access.log -o
    /var/www/sarg/semanal -z -d $YESTERDAY-$TODAY

    La tienes partida en dos lineas? Si no esta todo contiguo (una unica linea) te dara problemas.
    Y en la primera parte del script asegurate de que no has sustituido los dobles guiones:
    YESTERDAY=$(date --date
    por uno único:
    YESTERDAY=$(date-date
    Pasa a veces al hacer un copy-paste.

  27. Pedro Lopez

    Ahora me sale esto Neil: cuando he lo he puesto en una sola linea:

    SARG: TAG: title «Squid User Access Reports»
    SARG: TAG: font_face Tahoma,Verdana,Arial
    SARG: TAG: header_color darkblue
    SARG: TAG: header_bgcolor blanchedalmond
    SARG: TAG: font_size 9px
    SARG: TAG: background_color white
    SARG: TAG: text_color #000000
    SARG: TAG: text_bgcolor lavender
    SARG: TAG: title_color green
    SARG: TAG: temporary_dir /tmp
    SARG: TAG: output_dir /var/lib/sarg
    SARG: TAG: resolve_ip
    SARG: TAG: user_ip no
    SARG: TAG: topuser_sort_field BYTES reverse
    SARG: TAG: user_sort_field BYTES reverse
    SARG: TAG: exclude_users /etc/sarg/exclude_users
    SARG: TAG: exclude_hosts /etc/sarg/exclude_hosts
    SARG: TAG: date_format u
    SARG: TAG: lastlog 0
    SARG: TAG: remove_temp_files yes
    SARG: TAG: index yes
    SARG: TAG: index_tree file
    SARG: TAG: overwrite_report yes
    SARG: TAG: records_without_userid ip
    SARG: TAG: use_comma yes
    SARG: TAG: mail_utility mailx
    SARG: TAG: topsites_num 100
    SARG: TAG: topsites_sort_order CONNECT D
    SARG: TAG: index_sort_order D
    SARG: TAG: exclude_codes /etc/sarg/exclude_codes
    SARG: TAG: max_elapsed 28800000
    SARG: TAG: report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
    SARG: TAG: usertab /etc/sarg/usertab
    SARG: TAG: long_url no
    SARG: TAG: date_time_by bytes
    SARG: TAG: charset Latin1
    SARG: TAG: show_successful_message no
    SARG: TAG: show_read_statistics no
    SARG: TAG: topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
    SARG: TAG: user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
    SARG: TAG: topuser_num 0
    SARG: TAG: download_suffix «zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg»
    SARG: TAG: access_log /var/log/dansguardian/access.log
    SARG: TAG: dansguardian_conf /etc/dansguardian/dansguardian.conf
    SARG: TAG: graphs yes
    SARG: TAG: graph_days_bytes_bar_color orange
    SARG: TAG: title «reportes de acceso a usuarios»
    SARG: TAG: font_face Tahoma,Verdana,Arial
    SARG: TAG: header_color darkblue
    SARG: TAG: header_bgcolor blanchedalmond
    SARG: TAG: font_size 9px
    SARG: TAG: background_color white
    SARG: TAG: text_color #000000
    SARG: TAG: text_bgcolor lavender
    SARG: TAG: title_color green
    SARG: TAG: temporary_dir /tmp
    SARG: TAG: output_dir /var/www/sarg
    SARG: TAG: resolve_ip
    SARG: TAG: user_ip no
    SARG: TAG: topuser_sort_field BYTES reverse
    SARG: TAG: user_sort_field BYTES reverse
    SARG: TAG: exclude_users /etc/sarg/exclude_users
    SARG: TAG: exclude_hosts /etc/sarg/exclude_hosts
    SARG: TAG: date_format u
    SARG: TAG: lastlog 0
    SARG: TAG: remove_temp_files yes
    SARG: TAG: index yes
    SARG: TAG: index_tree file
    SARG: TAG: overwrite_report yes
    SARG: TAG: records_whitout_userid ip
    SARG: Unknown option records_whitout_userid ip
    SARG: TAG: use_comma yes
    SARG: TAG: mail_utility mailx
    SARG: TAG: topsites_num 100
    SARG: TAG: topsites_sort_order CONNECT D
    SARG: TAG: index_sort_order D
    SARG: TAG: exclude_codes /etc/sarg/exclude_codes
    SARG: TAG: max_elapsed 28800000
    SARG: TAG: report _type topusers topsites sites_users users_sites date_time
    SARG: Unknown option report _type topusers topsites sites_users users_sites date_time
    SARG: TAG: denied auth_failures site_user_time_date downloads
    SARG: Unknown option denied auth_failures site_user_time_date downloads
    SARG: TAG: usertab /etc/sarg/usertab
    SARG: TAG: long_url no
    SARG: TAG: date_time_by bytes
    SARG: TAG: charset Latin1
    SARG: TAG: show_successful_message yes
    SARG: TAG: show_read_statistics yes
    SARG: TAG: topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
    SARG: TAG: user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
    SARG: TAG: topuser_num 0
    SARG: TAG: site_user_time_date_type table
    SARG: Unknown option site_user_time_date_type table
    SARG: TAG: download_suffix «zip,arj,bzip,rar,gz,ace,doc,docx,iso,adt,bin,pdf,cab,com,dot,drv,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg»
    SARG: Records in file: 0, reading: 100,00%
    SARG: No records found
    SARG: End

    • el log del que se sirve sarg para crear los informes es el access.log de dansguardian, que esta en /var/log/dansguardian/access.log
      Puedes ver su contenido ejecutando:
      cat /var/log/dansguardian/access.log
      Si esta vacío, repasa los pasos del tutorial, puede que tenas algun otro fichero con las lineas cortadas como te ha pasado en el del sarg.
      Saludos!

  28. Pedro Lopez

    Gracias Neil, empece de nuevo y me ha funcionado a la perfeccion.

    Una pregunta: Y este sistema como se podria plantear para las conexiones inalambricas? como se podria hacer para que todo el mundo que se conecta or wifi pase tambien por el proxy?

    • No hay diferencia, solo sustituyes cables por frecuencias de radio 🙂 Al ser transparente no hay que hacer nada, todo lo que haya en la misma red desde el servidor hacia atras estara filtrado. De hecho tengo montado ese mismo escenario: red cableada + 2 AP, todo filtrado. Todos van a salir por el mismo sitio, el router, y antes del router tenemos al servidor de filtrado 🙂
      Saludos!

  29. Pedro Lopez

    pero no se muy bien como hacerlo. deberia de montar una tarjeta wireless en el proxy? y configurarla con otra ip?
    me podrias explicar como hacerlo neil?

    muchisimas gracias.

  30. Gabriel

    Neil, tengo problemas, sigo el tutorial paso a paso, pero al momento de probarlo no me da el internet, en el servidor hago ping a google y da perfecto, ping entre maquinas y da, configuro en pc ip fija, con el gateway y dns del proveedor pero no sale, algun paso para saber donde se queda el internet? eth0 directo al internet eth1 directo al sw (cambie las tarjetas en el archivo reglas_iptables, configure squid tal como esta en el tutorial….alguna idea

  31. El gateway que pones en el pc debe ser la ip del router. Las dns las que quieras, yo suelo poner las de google 8.8.8.8 y 8.8.4.4
    Haz un ping desde una maquina hasta el proxy para saber si llegas hasta ahi, en caso de que llegues hasta el proxy , haz un ping hasta 8.8.8.8 para saber si sales a internet. En caso de que tambien responda el ping a 8.8.8.8 significa dos cosas:
    1) Tienes mal puestas las dns y no resuelve nombres
    2) O bien estas configurando el proxy en el navegador y eso no debes hacerlo.
    Haz las pruebas y me cuentas.

  32. Pedro Lopez

    Muy buenos días! Que tal todo? Antes de nada presentarme, me llamo Pedro.

    Me gustaría pedirte ayuda ya que no he conseguido a nadie que pueda ayudarme con el problema que tengo, he estado viendo tu artículo y tampoco consigo dar con ello, y la verdad es que estoy desesperado! Al grano, te explico un poco mi problema:

    En la empresa tenemos una red con unos 40 equipos todos van a 2 switch y de ahí a un router LAN ( que tiene 8 vlans), este router LAN está conectado a un equipo (con Ubuntu) que es el que he puesto como proxy, con squid3 (este equipo está funcionando correctamente ya que está probado y testado en otra red básica). Este equipo proxy está conectado a su vez a un router ADSL.
    El router Lan tiene un ruta estática por defecto hacia el equipo proxy, y el router ADSL tiene rutas estáticas de cada red hacia el proxy también y luego una estática por defecto hacia fuera.

    Los equipos en este momento llegan sin problemas hasta la interface del equipo proxy tanto la que une con el router LAN como con la que une con el Router ADSL haciendo ping.
    El problema que tengo es que no consigo que los
    equipos de la red lleguen hasta la interface del router ADSL, se quedan en la interface del equipo proxy que une con el router ADSL.
    Dentro del equipo proxy he hecho todo lo que pone en tu artículo, he creado rutas estáticas para todas las redes…. Y no consigo que esto funcione!

    Te agradecería muchísimo si puedes echarme una mano ya que no sé cómo atajar este problema.

    Muchísimas gracias de antemano.

  33. David

    Hola!, y gracias por el tutorial, espectacular!
    Lo he seguido y me ha funcionado todo a la primera.
    Tengo un par de dudas…
    1.- Cual es el siguiente paso para aplicar bloqueos a páginas segun su contenido (por ejemplo pornográficas, violentas, etc…)
    2.- Al revisar los informes diarios me aparece mi ip, el consumo en bytes en tiempo y tal, pero en accessed site siempre aparece la dirección del proxy, claro, el «cliente» tiene puesto como gateway esa dirección, y por tanto para ir a http://www.google.es pasa por ahi, pero a mi me interesa que el sarg refleje eso, que me he conectado a google.

    Saludos!

  34. David

    Hola, me contesto yo mismo en parte…

    1.- He conseguido información sobre como descargar blacklists automáticamente y aplicarlos en las configuraciones de dansguardian

    2.- El problema es que tenia puesto un proxy que no era el de la pruebas (sino el que tengo en producción ahora mismo), he quitado ese proxy y puesto la puerta de enlace y ya registra las páginas que visito correctamente.

    Ahora tengo dudas nuevas… En teoria, para poder filtrar p2p debo agregar el paquete xtables-addons-common y añadir reglas al iptables.

    Siguiendo tu ejemplo seria añadirlo al script de reglas_iptables, pero al hacerlo así, si hago un iptables -L no aparece nada. Y si añado las reglas del ipp2p me devuelve error: iptables: No chain/target/match by that name.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.