You are on page 1of 7

Usando SARG para generar reportes de acceso al proxy Squid

Page 1 of 7

Usando SARG para generar reportes de acceso al proxy Squid


Captulo 7. Monitorizacin de peticiones y generacin de reportes de acceso

Usando SARG para generar reportes de acceso al proxy Squid


En esta seccin veremos como usar la herramienta SARG (Squid Analisis Report Generator) para la generacin de reportes para el anlisis de los accesos al
proxy Squids, con sarg vamos a poder generar reportes sobre demanda y tambin generar reportes automticos por da, semana y mes.

Introduccin a SARG
SARG es una herramienta de analisis de logs de Squid, tiene soporte para generar reportes en diferentes idiomas, mediante los reportes de uso web usted podra
obtener la siguiente informacin:
Top Ten de sitios ms visitados
Reportes diarios, semanales y mensuales
Grficas semanales y mensuales del consumo por usuario/host
Detalles de todos los sitios a los que entro un usuario/host
Descargas
Sarg ser configurado para generar reportes web de los accesos a Internet de forma periodica, adems de poder ejecutarlo manualmente para generar reportes de
fechas, usuarios o dominios en especifico.
Reporte Manual
Estos reportes son aquellos creados por el administrador del sistema y ejecutados manualmente, pueden ser personalizados en base a diferentes criterios,
son almacenados en el directorio /var/www/squid-reports/Manual, cada reporte bajo su propio directorio.
Reporte Diario
Estos reportes son generados automticamente por un trabajo de CRON diario a las 6:25 am y genera un reporte del da anterior, son almacenados en el
directorio /var/www/squid-reports/Diario, cada reporte bajo su propio directorio.
Reporte Semanal
Estos reportes son generados automticamente por un trabajo de CRON cada semana a las 6:47 am y genera un reporte del da anterior, son almacenados
en el directorio /var/www/squid-reports/Semanal, cada reporte bajo su propio directorio.
Reporte Mensual
Estos reportes son generados automticamente por un trabajo de CRON cada mes a las 6:52 am y genera un reporte del da anterior. Estos reportes son
almacenados en el directorio /var/www/squid-reports/Mensual, cada reporte bajo su propio directorio.
Siga en la siguiente seccin para instalar sarg.

Instalacin y configuracin bsica de SARG


El paquete sarg no viene incluido en todas las distribuciones, en Debian/Ubuntu el paquete esta incluido, si su distribucin no incluye el paquete sarg siempre
puede compilarlo desde las fuentes.
En Debian/Ubuntu instale el paquete sarg va apt:
# apt-get install sarg

Sarg lee los parametros de configuracin desde el archivo /etc/sarg/sarg.conf, antes de realizar cambios al archivo de configuracin se recomienda que haga
una copia de respaldo:
# cp /etc/squid/sarg.conf{,.orig}

Editamos el archivo principal de configuracin de sarg para definir los parametros generales:
# vim /etc/squid/sarg.conf

Lo primero que debemos cambiar es la directiva language, la cual define el lenguaje en el Cambiamos el idioma de los reportes a Espaol:
language Spanish

Defina la ruta predeterminada del archivo de logs de accesos de squid usando la directiva access_log, por ejemplo:
access_log /var/log/squid3/access.log

Se recomienda que cambie el titulo de los reportes usando la directiva title, por ejemplo:

http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Ser... 15/10/2015

Usando SARG para generar reportes de acceso al proxy Squid

Page 2 of 7

title "Reportes de Acceso Web por Usuarios"

Defina la ruta predeterminada para almacenar los reportes HTML usando la directiva output_dir, por ejemplo:
output_dir /var/www/squid-reports/Manual

Nota
Esta ruta solo ser usada por los reportes que se generen manualmente, los reportes automticos usarn rutas diferentes.
Opcionalmente puede agregar la informacin del generador de reportes sarg usando la directiva show_sarg_info.
show_sarg_info yes

Tambin puede incluir el logo de sarg usando la directiva show_sarg_logo.


show_sarg_logo yes

Cree el directorio para almacenar reportes HTML de sarg:


# mkdir /var/www/squid-reports/Manual

Si desea personalizar ms la configuracin predeterminada de sarg, se recomienda que lea los comentarios del archivo sarg.conf(5). En la siguiente seccin
veremos como generar reportes manualmente.

Creacin manual de reportes con SARG


En esta seccin veremos algunos ejemplos para generar reportes con sarg manualmente, estos reportes pueden ser generados en cualquier momento ya que son
bajo demanda, incluso puede usar algn archivo de log anterior para generar un reporte del pasado.
Para generar un reporte de todas las entradas en el archivo /var/log/squid3/access.log, ejecute:
# sarg

Nota
Recuerde que el archivo /var/log/squid3/access.log se rota cada semana.
Los reportes que son generados manualmente desde la lnea de comandos son almacenados en el directorio /var/www/squid-reports/Manual, para acceder va
web vaya al URL: http://proxy.example.com/squid-reports/Manual/.
Importante
El acceso a estos reportes no esta protegido, siga leyendo las siguientes secciones para ver como asegurar el acceso a los reportes.
Para generar un reporte de una fecha especifica, o rango de fechas en especifico use el parametro -d, por ejemplo:
# sarg -d 14/04/2010

Nota
El formato de la fecha es DD/MM/YYYY.
Si desea generar un reporte usando un rango de fechas, use:
# sarg -d 14/04/2010-15/04/2010

Nota
El formato de la fecha para un rango es: DD/MM/YYYY-DD/MM/YYYY.
Si desea generar un reporte para una hora en especifico use la opcin -t para indicar la hora, por ejemplo:
# sarg -d 14/04/2010 -t 12

Nota
Los formatos de hora soportados son: HH, HH:MM HH:MM:SS.
Para generar un reporte de un usuario en especifico use:
# sarg -d 14/04/2010 -u jperez

http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Ser... 15/10/2015

Usando SARG para generar reportes de acceso al proxy Squid

Page 3 of 7

Para generar un reporte de un dominio destino en especifico use:


# sarg -d 14/04/2010 -s tuxjm.net

Si desea obtener ms informacin al generar el reporte se recomienda que use la opcin -x la cual ejecuta sarg en modo debug, por ejemplo:
# sarg -x -d 14/04/2010 -s tuxjm.net
SARG: Init
SARG: Loading configuration from: /etc/squid/sarg.conf
SARG: Cargando archivo de exclusiones desde: /etc/squid/sarg.hosts
SARG: Cargando archivo de exclusiones desde: /etc/squid/sarg.users
SARG: Parametros:
SARG:
SARG:
Nombre de host o direccion IP (-a) =
SARG:
Log del agente de usuario (-b) =
SARG:
Archivo de exclusiones (-c) = /etc/squid/sarg.hosts
SARG:
Fecha desde-hasta (-d) = 14/04/2010-14/04/2010
SARG: Direccion e-mail a donde enviar reportes (-e) =
SARG:
Archivo de configuracion (-f) = /etc/squid/sarg.conf
SARG:
Formato de fecha (-g) = USA (mm/dd/yyyy)
SARG:
Reporte IP (-i) = No
SARG:
Log de entrada (-l) = /var/log/squid3/access.log
SARG:
Resolviendo direccion IP (-n) = No
SARG:
Directorio de salida (-o) = /var/www/squid-reports/Manual/
SARG:
Usa direccion IP en vez de userid (-p) = No
SARG:
Sitio accedido (-s) = tuxjm.net
SARG:
Hora (-t) =
SARG:
Usuario (-u) =
SARG:
Directorio temporal (-w) = /tmp
SARG:
Mensajes de depuración (-x) = Si
SARG:
Mensajes de procesos (-z) = No
SARG:
SARG: sarg version: 2.2.5 Mar-03-2008
SARG: Maximum file descriptor: cur=1024 max=1024, changed to cur=20000 max=20000
SARG: Cargando tabla de usuarios: /etc/squid/sarg.usertab
SARG: Leyendo archivo de log de accesos: /var/log/squid3/access.log
SARG:
Registros leidos: 836912, escritos: 65, excluido: 5
SARG: Formato Squid log
SARG: Periodo: 2010Apr14-2010Apr14
SARG: pre-sorting files
SARG: Creando archivo de periodo
SARG: Creando archivo: /tmp/sarg/192.168.92.97
SARG: Ordenando archivo: /tmp/sarg/192.168.92.97
SARG: Creando reporte: 192.168.92.97
SARG: Creando index.html
SARG: Fin

Note que nos imprime las opciones que usar para generar el reporte. En la siguiente seccin veremos como configurar cron para automatizar la generacin de
los reportes diarios, semanales y mensales de sarg.

Generacin automtica de reportes periodicos con SARG


Cree el script para ejecutar los reportes diarios:
# vim /etc/cron.daily/sarg

Con el siguiente contenido:


# Eliminar reportes diarios con mas de 10 dias de antiguedad
echo "Rotacion diaria del dia `date +%d-%m-%Y`" >> /var/log/squid3/sarg-rotate.log
find /var/www/squid-reports/Diario -type d -mtime +10 -exec rm -rf {} \; >> /var/log/squid3/sarg-rotate.log 2>&1
rm -rf /var/www/squid-reports/Diario/index.html
# Ejeuctar sarg
#!/bin/bash
exec /usr/bin/sarg \
-o /var/www/squid-reports/Diario \
-d "$(date --date "1 day ago" +%d/%m/%Y)" > /dev/null 2>&1
exit 0

Le damos permisos de ejecucin al script


# chmod +x /etc/cron.daily/sarg

Cree el script para ejecutar los reportes semanales:


# vim /etc/cron.weekly/sarg

Con el siguiente contenido:


#!/bin/bash
LOG_FILES=
if [[ -s /var/log/squid3/access.log.1.gz ]]; then
LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.1.gz"
fi
if [[ -s /var/log/squid3/access.log ]]; then
LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log"

http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Ser... 15/10/2015

Usando SARG para generar reportes de acceso al proxy Squid

Page 4 of 7

fi
# Get yesterday's date
YESTERDAY=$(date --date "1 days ago" +%d/%m/%Y)
# Get one week ago date
WEEKAGO=$(date --date "7 days ago" +%d/%m/%Y)
# Eliminar reportes diarios con mas de 5 semanas (40 dias) de antiguedad
echo "Rotacion Semanal del dia `date +%d-%m-%Y`" >> /var/log/squid3/sarg-rotate.log
find /var/www/squid-reports/Semanal -type d -mtime +40 -exec rm -rf {} \; >> /var/log/squid3/sarg-rotate.log 2>&1
rm -rf /var/www/squid-reports/Semanal/index.html
# Ejecutar sarg
exec /usr/bin/sarg \
$LOG_FILES \
-o /var/www/squid-reports/Semanal \
-d $WEEKAGO-$YESTERDAY > /dev/null 2>&1
exit 0

Le damos permisos de ejecucin al script


# chmod +x /etc/cron.weekly/sarg

Configurando cron para reportes Mensual:


# vim /etc/cron.monthly/sarg

Con el siguiente contenido:


#!/bin/bash
LOG_FILES=
if [[ -s /var/log/squid3/access.log.4.gz ]]; then
LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.4.gz"
fi
if [[ -s /var/log/squid3/access.log.3.gz ]]; then
LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.3.gz"
fi
if [[ -s /var/log/squid3/access.log.2.gz ]]; then
LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.2.gz"
fi
if [[ -s /var/log/squid3/access.log.1.gz ]]; then
LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log.1.gz"
fi
if [[ -s /var/log/squid3/access.log ]]; then
LOG_FILES="$LOG_FILES -l /var/log/squid3/access.log"
fi
# Get yesterday's date
YESTERDAY=$(date --date "1 day ago" +%d/%m/%Y)
# Get 1 month ago date
MONTHAGO=$(date --date "1 month ago" +%d/%m/%Y)
# Eliminar reportes diarios con mas de 6 meses (180 dias) de antiguedad
echo "Rotacion mensual del dia `date +%d-%m-%Y`" >> /var/log/squid3/sarg-rotate.log
find /var/www/squid-reports/Mensual -type d -mtime +180 -exec rm -rf {} \; >> /var/log/squid3/sarg-rotate.log 2>&1
rm -rf /var/www/squid-reports/Mensual/index.html
# Ejecutar sarg
exec /usr/bin/sarg \
$LOG_FILES \
-o /var/www/squid-reports/Mensual \
-d $MONTHAGO-$YESTERDAY > /dev/null 2>&1
exit 0

Le damos permisos de ejecucin al script


# chmod +x /etc/cron.monthly/sarg

Cree un archivo index.html en la raz del directorio de reportes de sarg:


Ahora cree un archivo index.html para mostrar las ligas a los reportes diarios, semanales y mensuales as como los generados manualmente.
# vim /var/www/squid-reports/index.html

Con el siguiente contenido:


<html>
<head>
<title>Reportes de Acceso Web en proxy.example.com</title>
</head>
<body>
<style>
.logo {font-family:Verdana,Tahoma,Arial;font-size:11px;color:#006699;}
.title {font-family:Tahoma,Verdana,Arial;font-size:11px;color:green;background-color:white;}

http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Ser... 15/10/2015

Usando SARG para generar reportes de acceso al proxy Squid

Page 5 of 7

</style>
<div align=center>
<table cellpadding=0 cellspacing=0>
<tr>
<th class="logo">
<a href="http://proxy.example.com">
<img src="./images/sarg.png" border="0" align="absmiddle" title="SARG"></a>&nbsp;
<font class="logo">Squid Analysis Report Generator</font>
</th>
</tr>
<tr>
<th class="title">&nbsp
</th></tr>
<table>
<table border=0 cellspacing=6 cellpadding=7>
<tr>
<th align=center nowrap><b><font face=Arial size=4 color=green>Reportes de Acceso Web en proxy.example.com</font></b></th>
</tr>
<tr>
<td align=center bgcolor=beige><font face=Arial size=3><a href=Diario>Diario</a></font></td>
</tr>
<tr>
<td align=center bgcolor=beige><font face=Arial size=3><a href=Semanal>Semanal</a></font></td>
</tr>
<tr>
<td align=center bgcolor=beige><font face=Arial size=3><a href=Mensual>Mensual</a></font></td>
</tr>
<tr>
<td align=center bgcolor=beige><font face=Arial size=3><a href=Manual>Manual</a></font></td>
</tr>
</table>
</div>
</body>
</html>

Si lo desea puede cambiar el titulo del index:


Cambi la lnea:
<title>Reportes de Acceso Web en proxy.example.com</title>

Tambin cambi el URL de los reportes:


<a href="http://proxy.example.com">

Tambin cambilelo en:


<th align=center nowrap><b><font face=Arial size=4 color=green>Reportes de Acceso Web en proxy.example.com</font></b></th>

O use sed:
# sed -i s/proxy.example.com/fwproxy.midominio.com/g /var/www/squid-reports/index.html

Copiamos directorio de imagenes para incluir el logo de sarg en el archivo index:


# cp -r /var/www/squid-reports/Manual/images /var/www/squid-reports/

Para acceder a los reportes web apunte su navegador al URL: http://proxy.example.com/, ver una liga al directorio de cada uno de los reportes arriba
mencionados. Si desea proteger el acceso a los reportes se recomienda seguir con la siguiente seccin para configurar apache para conexiones SSL y protegido
por contrasea.

Protegiendo los reportes de sarg con SSL y contrasea


Crear archivo de configuracin para VHOST:
# vim /etc/apache2/sites-available/sarg.conf

/
# Configuracion VHOST para acceder de forma segura
# y autenticada por LDAP a los reportes de squid
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin proxy@example.com
ServerName proxy.example.com
DocumentRoot /var/www/squid-reports
# Parametros para configuraciones SSL y certificados
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/ssl/certs/proxy.example.com.crt
SSLCertificateKeyFile /etc/ssl/private/proxy.example.com.key
#SSLCACertificateFile /etc/ssl/certs/cacert.pem

http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Ser... 15/10/2015

Usando SARG para generar reportes de acceso al proxy Squid

Page 6 of 7

<Directory /var/www/squid-reports/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# Permitir solo autenticacion a usuarios autorizados
AuthType Basic
AuthName "Solo Usurios Autorizados"
AuthUserFile /etc/apache2/.sarg-passwd
require valid-user
# Permitir solo autenticacion a usuarios miembros del grupo LDAP "Domain Admins"
#AuthType Basic
#AuthBasicProvider ldap
#AuthName "Solo Usurios Autorizados"
#AuthLDAPUrl ldap://ldap.example.com:389/ou=Users,dc=example,dc=com?uid?sub
#AuthzLDAPAuthoritative On
#AuthLDAPGroupAttribute memberUid
#AuthLDAPGroupAttributeIsDN off
#Require ldap-group cn=Domain Admins,ou=Groups,dc=example,dc=com
</Directory>
</VirtualHost>

Activando modulo SSL en Apache2:


# a2enmod ssl

Crear certificados SSL


# openssl genrsa -out /etc/ssl/private/proxy.example.com.key 1024

Generamos el CSR (Certificate Signing Request):


# openssl req -new -key /etc/ssl/private/proxy.example.com.key -out /etc/ssl/certs/proxy.example.com.csr

Generamos el Certificado usando la llave privada y el CSR:


# openssl x509 -req -days 365 \
-in /etc/ssl/certs/proxy.example.com.csr \
-signkey /etc/ssl/private/proxy.example.com.key \
-out /etc/ssl/certs/proxy.example.com.crt

Creamos archivo de usuarios y contraseas para sitio web:


# htpasswd -c /etc/apache2/.sarg-passwd proxyadmin
New password:
Re-type new password:
Adding password for user proxyadmin

Activando el VHOST:
# a2ensite sarg.conf

Desactivar el acceso a los reportes por HTTP plano:


# vim /etc/apache2/sites-available/default

/
...
...
<Directory /var/www/squid-reports/>
Options None
AllowOverride None
Order deny,allow
deny from all
</Directory>

Revisando configuracin de apache:


# apache2ctl -t

/
# apache2ctl -t -D DUMP_VHOSTS

Reiniciar el servidor apache


# /etc/init.d/apache2 restart

Probar Sitio Seguro:


# aptitude install elinks

http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Ser... 15/10/2015

Usando SARG para generar reportes de acceso al proxy Squid

Page 7 of 7

/
# elinks https://proxy.example.com

Monitorizando los dominios y URLs bloqueados por


squidGuard

Introduccin a Calamaris

http://tuxjm.net/docs/Manual_de_Instalacion_de_Servidor_Proxy_Web_con_Ubuntu_Ser... 15/10/2015

You might also like