Lightsquid
Hoy traemos otra entrega más de nuestra serie monitor. En el pasado, abordamos algunas de estas herramientas de monitoreo, tales como Sqstat, Sarg, Nessus, Iptraf-NG, NetHogs, Nmap, Zenmap, xsltproc, NtopNG, NetData, BandwidthD (y faltan un montón, lo cual es imposible abordarlas todas). Y ahora le tocó el turno a lightsquid.
Antes de comenzar
lightsquid es un aplicativo que trabaja exclusivamente con Squid-Cache, extrayendo de
access.log
los datos necesarios para mostrar las estadísticas del tráfico. Por lo anterior, si algunas direcciones IP de su red local no pasan por el Squid, entonces no aparecerán en los reportes.
Instalación
La instalación es sencilla. Pero primero las dependencias. Asumiendo que ya tenga instalado y configurado
apache2
, y squid
, instale los siguientes paquetes: sudo apt install -y libcgi-session-perl libgd-gd2-perl
Y el paquete lightsquid:
sudo apt install lightsquid
Que instalará la versión 1.8-7, sin embargo, esta versión ya no funciona y fue descontinuada en 2009. Afortunadamente, en 2021, un usuario llamado finisky publicó una actualización con correcciones en GitHub, renombrándola como 1.8.1:
git clone https://github.com/finisky/lightsquid-1.8.1
Sin embargo, aún padece de un bug. En realidad es un "warning" que llena el log de error de apache:
![]() |
CGI::param Warning |
La respuesta corta es que no es un bug, sino una llamada de advertencia, debido a que lightsquid una la biblioteca CGI, que ha sido declarada obsoleta por Perl, que recomienda usar Plack o PSGI, opciones más seguras y actuales.
La explicación larga la puede encontrar publicada en el Issue del repositorio, pero a la fecha de publicación de este post, no han adoptado la propuesta de corrección y/o actualizado el repo.
Entonces, ofrecemos una descarga alternativa con las correcciones en el siguiente enlace de nuestro repositorio Gateproxy:
wget https://raw.githubusercontent.com/maravento/gateproxy/master/conf/monitor/lightsquid-1.8.1.tar.gz
Lightsquid trae por defecto un tema llamado "base":
![]() |
Tema "Base" |
Que no es precisamente el más moderno o bonito, pero en nuestra versión, trae por defecto el tema "metro" (imagen del encabezado del post), cortesía del equipo de sysadmindecuba.com
Una vez descargado, lo descomprimimos:
tar -xf lightsquid-1.8.1.tar.gz
Si quiere regresar al tema base, edite el archivo
lightsquid.cfg
y elija la línea del tema con el que va a trabajar (base o metro) y la descomenta. Por defecto: #$templatename ="base"; $templatename ="metro_tpl";
Copiamos la carpeta descomprimida al nuevo directorio:
sudo mkdir -p /var/www/lightsquid sudo cp -f -R lightsquid-1.8.1/* /var/www/lightsquid/
Creamos el virtual host:
sudo touch /etc/apache2/conf-available/lightsquid.conf
Con el siguiente contenido, asumiendo que su red local es de Clase C - RFC 1918 local private network (LAN) y comienza por 192.168. Caso contrario, ajuste el parámetro y guarde cambios:
Alias /lightsquid/ /var/www/lightsquid/ <Location "/lightsquid/"> Options +ExecCGI AddHandler cgi-script .cgi .pl Require local # reemplace la dirección IP y mascara por la de su red local Require ip 192.168.1.0/24 </Location>
Establecemos los permisos:
sudo chmod -R 775 /var/www/lightsquid/ sudo chown -R www-data:www-data /var/www/lightsquid sudo chmod +x /var/www/lightsquid/*.{cgi,pl}
Activamos
cgid
, lightsquid
y reiniciamos apache2
: sudo a2enmod cgid && sudo a2enconf lightsquid && sudo systemctl restart apache2.service
Nota: para deshabilitarlos
sudo a2dismod cgid && sudo a2disconf lightsquid && sudo systemctl restart apache2.service
Asumiendo que tenemos Squid funcionando y nuestro archivo
access.log
tiene registros del tráfico de nuestra red local, ejecutaremos el siguiente comando para generar las primeras estadísticas: sudo /var/www/lightsquid/lightparser.pl
Para agregar los nombres de host personalizados por IP (o NetBIOS Name):
nano /var/www/lightsquid/realname.cfg # agregue las IPs con lo nombres de usuarios 192.168.1.1 Router 192.168.1.2 Cliente1 192.168.1.3 Contador
También puede obtener el NetBIOS Name rastreando la red con nbtscan, pero sin garantías, ya que depende de muchos factores:
sudo apt-get install nbtscan sudo nbtscan 192.168.1.0/24
Y para excluir direcciones IP del reporte:
nano /var/www/lightsquid/skipuser.cfg # agregue las IPs a excluir del reporte 192.168.1.1
Algunos Reportes
Por años:
![]() |
Reporte por años |
Por dirección IP:
![]() |
Reporte Diario localnet |
Por sitios visitados de cada IP
![]() |
Reporte de visitas por IP |
Los reportes se pueden imprimir, en diferentes formatos, desde el botón "HERRAMIENTAS", el cual explicamos abajo en Reportes de Tráfico.
Finalmente, se recomienda programar en el cron la generación de estadísticas diarias cada 10 minutos (o el tiempo que quiera asignarle), para mantenerlas actualizadas. Ejecute el siguiente comando:
sudo crontab -l | { cat; echo "*/10 * * * * /var/www/lightsquid/lightparser.pl today"; } | crontab -
Debe establecer un valor de Gbytes o Mbytes máximo a consumir por usuario, puede ser 512M o 0.5G, etc. Para esto debe editar el archivo de configuración:
sudo nano /var/www/lightsquid/lightsquid.cfg
Y modificar la línea "oversize":
#user maximum size per day limit (oversize) $perusertrafficlimit = 10*1024*1024;
Por defecto viene en 10, que significa 10 Mbytes, por tanto para 512 Mbytes sería 512 y 1 Gbytes sería 1000:
#user maximum size per day limit (oversize) $perusertrafficlimit = 1000*1024*1024;
Y el resultado es algo similar a lo siguiente:
![]() |
Alerta por exceder el consumo de datos |
Nota: Tenga en cuenta que Lightsquid es un programa muy antiguo y sin soporte, por tanto, se sugiere tener otra fuente de datos sobre el tráfico para constatar.
Reportes de Tráfico
Como mencionamos anteriormente, podemos descargar los reportes en diferentes formatos. Pues otra cosa que puede hacer con este aplicativo es exportar en
.csv
el reporte "Top Sites", el cual no solo nos brinda la información de los sitios más visitados, sino que se puede crear a partir de este reporte una lista de depuración ACL para ser usada con un proxy, como Squid. Nota: Una lista de depuración de Squid es una lista de dominios, con formato específico para este proxy, que sirve como base para excluir (whitelist) o incluir (blacklist) dominios, dentro de nuestras listas habituales de control de acceso ACL. Si quiere usar una lista de depuración como ACL para Squid, debe depurar los subdominios, para evitar el error de tipo ".sub.example.com is a subdomain of .example.com". Para mayor información, visite nuestro proyecto Blackweb.
![]() |
Top Sites |
Por ejemplo, presionamos el botón "HERRAMIENTAS" y descargamos el archivo "Reporte de Navegación.csv", y ejecutamos el siguiente comando en la consola:
awk -F',' '{gsub(/"/,"",$3);sub(/:.*/,"",$3);print $3}' "Reporte de Navegación.csv" | sed '/^\./d' | sed -r 's/^(www|ftp|ftps|ftpes|sftp|pop|pop3|smtp|imap|http|https)\.//g' | sed -r '/^[0-9]{1,3}(\.[0-9]{1,3}){3}$/d' | tr -d ' ' | awk '{print "." $1}' | sort -u > salida.txt
Lo que hace este comando es utilizar "awk" para eliminar las comillas y los dos puntos del final del tercer campo del archivo CSV y luego utiliza "sed" para eliminar las líneas que comienzan con un punto. Luego, se utilizan varias expresiones regulares con "sed" para eliminar los protocolos y direcciones IP y dejar solo los nombres de dominio. Finalmente, se utiliza "tr" para eliminar los espacios en blanco y "awk" para agregar un punto al principio de cada línea (obligatorio en Squid), y se utiliza "sort" para eliminar duplicados y escribir el resultado "salida.txt", apto para ser usado en Squid.
Claro que el anterior solo mostrará los dominios TOP. Si quiere todos los dominios visitados de su red local en una sola ACL, apta para depuración Squid, ejecute el siguiente comando, para los mismos propósitos, con una depuración similar al anterior:
find /var/www/lightsquid/report -type f -name '[0-9]*.[0-9]*.[0-9]*.[0-9]*' -exec grep -oE '[[:alnum:]_.-]+\.([[:alnum:]_.-]+)+' {} \; | sed 's/^\.//' | sed -r 's/^(www|ftp|ftps|ftpes|sftp|pop|pop3|smtp|imap|http|https)\.//g' | sed -r '/^[0-9]{1,3}(\.[0-9]{1,3}){3}$/d' | tr -d ' ' | awk '{print "." $1}' | sort -u > salida.txt
Este comando utiliza "find" para buscar todos los archivos (-type f) que se encuentran en el directorio "/var/www/lightsquid/report" y que tengan un nombre que siga el patrón de IPv4 [0-9].[0-9].[0-9].[0-9] (por ejemplo, 192.168.1.1). Luego, utiliza "grep" para buscar en cada uno de estos archivos una cadena que siga el patrón de una dirección IP o un nombre de host (la opción "-oE" indica que sólo se deben mostrar las partes de la cadena que siguen el patrón especificado, el argumento "{}" indica el nombre de cada archivo que se encuentra, y ";" indica que se debe terminar el comando). Luego utiliza "sed" para eliminar el primer carácter (.) de cada línea de la salida del comando anterior (para eliminar el punto que queda después de la dirección IP o el nombre de host). Luego usa "sed -r" para buscar y reemplazar en cada línea todas las ocurrencias de las palabras claves "www, ftp, ftps, "https", y otras, seguidas de un punto (.) y eliminarlas sin reemplazo. Luego, usa "sed -r" para buscar y eliminar todas las líneas que comiencen con una dirección IPv4. Y finalmente elimina espacios en blanco, pone un punto al comienzo de cada línea (formato Squid) y elimina duplicados para mandar todo a "salida.txt"
Puede reemplazar:
sed -r '/^[0-9]{1,3}(\.[0-9]{1,3}){3}$/d' # o esta: # grep -vE '^([0-9]{1,3}\.){3}[0-9]{1,3}$' # Que, como la anterior, elimina las líneas que contienen IPv4 y dejan el resto de las líneas restantes (ej.: 192.168.1.10.midominio.com)
Por esta, que elimina cualquier línea que contenga una dirección IPv4 en cualquier parte de la línea:
sed -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/d'
También puede blquear a los usuarios que excedieron el límite de consumo y enviarlos a una página de aviso tipo Warning. Para esto, visite el repositorio Lightsquid, donde encontrará el procedimiento de instalación y configuración de Lightsquid + Bandata.
Y es todo. Esperamos que les agrade este magnífico programa de monitoreo, que, a pesar de ser un abandonware, tiene lo esencial; al menos para los que no quieren complicarse con aplicativos sofisticados, con ingentes cantidades de datos y que solo quieren conocer el tráfico global y por usuario de su red local, y funciona muy bien en las más recientes distros de Linux (probado en Ubuntu 22.04/24.04).
Lightsquid con Nginx pueden consultarlo AQUÍ.
Nuestro repositorio de Lightsquid AQUÍ
Post a Comment