13 de febrero de 2011

Instación y configuración de Sarg en Debian Squeeze


Sarg (Squid Analysis Report Generator) es una herramienta que permite a los administradores de sistemas ver de una manera sencilla y amigable que sitios de Internet visitan (incluso se puede saber hasta la hora en que la visitó) los usuarios de la red local usando los logs de Squid. Genera una lista diaria, semanal, mensual o personalizada con los sitios de Internet que visita cada usuario, cuanto consumió (MB), etc. También genera una lista de los sitios más visitados (Top Sites).

Por una razón que desconozco, Sarg no se encuentra en los repositorios de Squeeze. Pero eso no significa que no se pueda instalar. Para instalarlo, primeramente hay que checar cuales son sus dependencias e instalarlas (libc0.1, libc0.3, libc6, libapache2-mod-php5, apache2, squid). Luego se descarga el paquete de Sid y se instala con:
# dpkg -i sarg_2.3-1_arquitectura.deb

Una vez instalado, hay que configurarlo para que se generen diariamente los reportes y estadísticas. Los archivos de configuración se encuentran en "/etc/sarg/". El archivo de configuración principal es "/etc/sarg/sarg.conf" y algunos de sus parámetros son los siguientes:

1 access_log /var/log/squid/access.log
2 output_dir /var/lib/sarg
3 exclude_hosts /etc/sarg/exclude_hosts
4 date_format e
5 index yes
6 topsites_num 100

1 Indica la ubicación del log de Squid
2 Directorio donde se guardarán los reportes
3 Lista de equipos que no se incluiran en los reportes
4 Formato de la fecha usada en los reportes
5 Genera una página principal index.html
6 Número total de sitios del TopSites

El archivo /etc/sarg/exclude_users contiene los usuarios que no formarán parte de los reportes.
El archivo /etc/sarg/exclude_hosts contiene los equipos que no se desea formen parte de los reportes de SARG. Pudiendo contener direcciones IP (Ejemplo: 192.168.1.10), una red completa (192.168.1.0/24), el nombre de un equipo (equipo.red.local) o todos los equipos de una red (*.red.local)

Configuración de apache

Para poder acceder a los reportes generados por Sarg es necesario configurar apache y es muy recomendable restringir el acceso a dichos reportes. A continuación se explica como hacerlo:

Se crea el archivo /etc/apache2/conf.d/sarg con el siguiente contenido:
Alias /sarg /var/lib/sarg
<Directory /var/lib/sarg>
DirectoryIndex index.html
order deny,allow
deny from all
allow from 127.0.0.1 192.168.1.10
AuthName "Solo usuarios autorizados."
AuthType Basic
require valid-user
AuthUserFile /var/www/claves-users-sarg
</Directory>


Se crea el archivo donde se almacenarán las claves, se limitan permisos de lectura y escritura sólo al dueño, se asigna a www-data como propietario del archivo:
# touch /var/www/claves-users-sarg
# chmod 0600 /var/www/claves-users-sarg
# chown www-data.www-data /var/www/claves-users-sarg

Se genera el usuario y se asigna el password:
# htpasswd /var/www/claves-users-sarg usuario

Luego se reinicia apache para que los cambios surjan efecto:
# /etc/init.d/apache2 restart

En Squeeze hay un problema que impide que se generen los reportes diarios. El problema es que se realiza una rotación diaria de los logs de Squid y dicha rotación se realiza justo antes de que Sarg genere los reportes. Esto es el scrip /etc/cron.daily/logrotate se ejecuta antes que /etc/cron.daily/sarg y cuando éste último se ejecuta el log /var/log/squid/access.log está vacío. Esto se soluciona muy sencillo cambiando el nombre de /etc/cron.daily/sarg:
# mv /etc/cron.daily/sarg /etc/cron.daily/0sarg

Ahora solo hay que esperar a que pase el tiempo para que se ejecuten los scripts que se encuentran en /etc/cron.daily/ a la hora programada en /etc/crontab.

Una vez generados los reportes se accede a http://IP-del-Server/sarg/ con el usuario y el password generados.

9 comentarios:

David Barrera dijo...

Me encuentro con un problema al seguir esta guia. Una vez configurado todo, no me permite acceso a la carpeta aun en una maquina a la cual se especifica que esta permitido. Sera acaso por la autenticacion? Tiene que ser un usuario en especifico o puede ser uno general?

Samuel Calleros Sánchez dijo...

¿Esperaste 24 horas para que se generara el reporte de manera automática o lo realizaste manualmente (sarg-reports today)?. Si no lo hiciste, es probable que eso sea.

David Barrera dijo...

Si, el problema no es la creacion del reporte, sino del acceso al mismo. Cuando establezco la seguridad con htpasswd, me da un 403.

christianfagan dijo...

Hola Samuel!! Me resulto de suma utilidad tu articulo. Tuve todo en marcha en pocos minutos con solo la siguiente modificacion que la comento por si es de utilidad:
en la linea 10 el archivo /etc/apache2/conf.d/sarg invocamos a /var/www/claves-users-sarg que luego creamos como /var/www/claves-sarg. Modifique esta linea y el comando chown y todo funciono perfectamente.
Muchas gracias!! Un abrazo

Samuel Calleros Sánchez dijo...

Tienes razón Chistian. Error de dedo, me equivoque al teclear el nombre del archivo donde se almacenaran las claves y en el artículo usaba dos archivos en lugar de uno: claves-users-sarg y claves-sarg.

Gracias por la corrección. Saludos.

Samuel Calleros Sánchez dijo...

Olvide comentar que ya está corregido.

Anónimo dijo...

Todo muy lindo, pero en mi caso, quiero traer logs de Routers Mikrotik.

Como hago para que el servidor escuche por el puerto 514 y guarde los logs?

Anónimo dijo...

Tengo un lio cuando quiero acceder a los reportes mensuales o semanales me da error.........

Forbidden

You don't have permission to access /sarg/Weekly/ on this server.

Samuel Calleros Sánchez dijo...

Si seguiste los pasos tal cual, no debes de tener problemas. ¿Reiniciaste los servicios?.