Kuota para Squid Cuando tenemos Internet en nuestra Empresa y se necesita hacer un uso racional del servicio,una buena herramienta a usar seria el Kuota,diseñada por los colegas de la Universidad de Pinar del Rio.La misma te permite la creación de usuarios via web que se almazenan en una base de datos en mysql.El sistema posibilita:
* Cambio de clave de Internet * Gráfico Mensual del consumo diario y por horas * Envio del estado de cuenta por correo Kuota cuenta con dos nieveles de acceso,un usuario que será el dueño de la base de datos donde alojaremos la tablas que importaremos y otro usuario que se creará dentro de una tabla de la base de datos anterior y será el encargado de entrar via web al kuota y va a crear ,borrar usuarios y ver todas las opciones del mismo. Partiendo de una buena guia escribo este pequeño Howto. Lo primero que haremos para implementar esta herramienta es hacer la descarga de: Requisitos: Debemos tener instalado mysql-server-5.0+php5+phpmyadmin y la libreria libfile-tail-perl. 1- Copiamos el directorio llamado web que viene dentro del kuota a /var/www y lo llaman como deseen.Más adelante trabajaremos con este directorio... 2- Vamos a crear un directorio dentro de /etc/squid llamado bin mkdir /etc/squid/bin 3- Para ese directorio copiamos los 2 ficheros siguientes: kuota.pl runKuota.sh El runKuota.sh es un script que se va a encargar de ejecutar el .pl por lo cual es necesario que el script llamado: runKuota.sh se auto-ejecute cada vez que el sistema se reinicie para que todo funcione, ya que debe estar corriendo siempre en el servidor, para eso, creamos este enlace simbólico que será el paso 4. 4- ln -s /etc/squid/bin/runKuota.sh /etc/rcS.d/S91kuota 5- Entramos a mysql (puedes usar para hacerlo más fácil phpmyadmin) y creamos una base de datos llamada squid y un usuario como usted lo quiera llamar ej: kuota con su password ej:aaaaa,y le damos a ese usuario los permisos ,de insertar,borrar,editar a la base de datos que ya creamos llamada squid. Llamaremos a este usuario kuota para que se haga mas entendible a la hora de configurar los archivos. 5-Ahora importamos de el directorio llamado BD que viene dentro del Kuota el .sql que se encuentra.Recuerde borrar las lineas de la base de datos y solo dejar las tablas que importaremos .Antes de importar las tablas puedes editarla para adecuarla a tu institución ya que como dije anteriormente kuota fue creado por los colegas de la Universidad de Pinar del Rio! 6- Después que hayas hecho esto, agrega el usuario tuyo,(Yuneikys) es decir el user con el que tu vas a navegar desde tu proxy, que va a ser también el administrador para manejar la WEB, (todo esto es desde phpmyadmin) El usuario, lo debes agregar en la tabla password, usando MD5 para la clave, agregalo también en las tablas: userinfo y useradmin.Para eso vas a la base de datos que creastes llamada squid y en la tabla password le damos insertar y ponemos el user ej:yuneikys y el password ej:12345 pero esta en md5.Haga lo mismo en useradmin que será el código una vez que estemos dentro del kuota que tenemos que insertar para administrarlo.Ponga solo el nombre si desea en la tabla userinfo también dandole insertar! A este usuario lo llamaremos Yuneikys para entender los niveles de acceso más adelante. 7- Una vez que hayas terminado con esto, solo debes crear un virtualhost en tu servidor web que apunte a donde pusistes el directorio web del kuota y poner ese nombre en tu DNS, para que todo funcione bien. Antes de intentar logearte en la página del kuota, verifica que en el config.php que viene dentro del directorio Conecctions donde establece la conexión a la base de datos, están correctamente puestos, los siguientes datos: - Servidor Mysql localhost - Nombre de la base de datos squid - Usuario Mysql kuota - Clave del usuario mysql aaaaa 8-Si todo eso esta bien, debes poder entrar con el usuario y la contraseña (yuneikys y 12345) que pusiste en la tabla password de la base de datos. Otra cosa, verifica que el script en perl, es decir el .pl esta corriendo en el servidor, para eso, usa este comando: ps aux | grep kuota Debes obterner una salida como esta: ns:/etc# ps aux | grep kuota root 2876 0.0 8.4 162480 87456 ? S Oct11 2:41 /usr/bin/perl /etc/squid/bin/kuota.pl root 21558 0.0 0.0 2884 768 pts/0 S+ 12:28 0:00 grep kuota Si no te sale asÃ, es que no está corriendo y solo se ocurren 2 causas, o no instalaste la librerÃa de perl que se necesita, la que te mencione al inicio, oh! en el script en perl, el .pl no están bien puestos los datos para que el script pueda conectarse a mysql y escribir en la base de datos todo lo que toma del access.log del squid .Verifica los datos de conexión a la base de datos en el fichero kuota.pl ubicado en el directorio bin que creastes dentro /etc/squid y que tenga también bien puesto: -Servidor Mysql localhost - Nombre de la base de datos squid - Usuario Mysql kuota - Clave del usuario mysql aaaaa 9- Y por último, lo que integras al squid es el mysql_auth que es lo que usarÃas para que squid autentique contra mysql, para eso debes tomar los 2 ficheros que estan en el compactado que se llaman: mysql_auth.conf y mysql_auth el fichero de configuracion .conf lo pones en /etc/squid y verifica los permisos, que tenga los mismos que los archivos del squid creo que es 644 con dueño y grupo root , NO! Le pongas 600 como permiso al igual que el punto .conf del squid porque suele dar problemas! Al leer este archivo verifica los datos de conexión al servidor mysql en este fichero también: -Servidor Mysql localhost - Nombre de la base de datos squid - Usuario Mysql kuota - Clave del usuario mysql aaaaa 10- en: /usr/bin copias el mysql_auth: /usr/bin/mysql_auth en ese directorio hay una pila de fichero ejecutables, cuando copies este para ahi, asegúrate que tenga los mismos permisos que tienen los demás que están en ese lugar. Para saber si el mysql_auth autentica bien contra la base de datos donde están los usuarios, puedes hacer una prueba desde la consola, ejecutas este comando: /usr/bin/mysql_auth Esto te dejará la consola bloqueada, sin devolverte el promt, ahà mismo tecleas tu usuario seguido de la contraseña (Yuneikys 12345), dejando un espacio entre el user y el password y das ENTER, si todo esta bien, eso debe devolverte un OK, si te da un error, algo está mal y tendrás que revisar hacÃa atrás el resto de los usuarios los creas luego desde la WEB, accediendo con tu usuario (yuneikys), que inicialmente entra al sistema de la web sin acceso full, para poder acceder a las opciones que te permiten agregar usuarios nuevos, borrarlos, etc... debes teclear un código de seguridad dando click en un candado que estará en la posición de cerrado en la esquina superior izquierda debajo de donde aparece el user con el que accediste a la web, cual es ese código que pones ahÃ?? Bueno, la clave que le pusiste a tu usuario en la tabla: useradmin en la base de datos, usando phpmyadmin (que puede ser igual o no, a la clave que pusiste en tabla password) Fin. Suerte Hermanos! http://mycyberacademy.com/articulo/Solucion-para-squish Muchas empresas implementan proxy squid para proveer el servicio de navegación por internet a los usuarios internos. El squid es un proxy caché de los más populares hace ya varios años, nativo de Unix/Linux aunque existen implementaciones para los sistemas operativos de Microsoft. Mejora el rendimiento de las conexiones a través del cacheo de peticiones recurrentes y soporta tanto protocolos convencionales como HTTP o HTTPS y además otros como FTP y Gopher. Pero el proxy no es el tema principal de este artÃculo sino su integración con un sistema de cuotas libre escrito en PERL llamado squish. Que es un sistema de cuota? pues simple. Una aplicación que calcula el consumo ya sea semanal, mensual o anual y valida al proxy (en este caso squid) si está apto o no para consumir. Ejemplo el usuario rolando está autorizado a consumir solo 1GB en descarga de internet y diariamente nuestro sistema de cuotas chequea su consumo hasta que llegue al limite y avisa al proxy para que deniegue las peticiones. El squish y el squid hacen un buen trabajo en equipo en este sentido, pero digamos, ¿como liberas un usuario del sistema de cuotas y mantenerlo controlado a través del proxy? El squish no hace un buen trabajo en este sentido y como funciona independiente al proxy no puede ser configurado mediante las listas de control de acceso del mismo. La solución a este problema es desarrollar esa funcionalidad directamente en el squish.pl que se encarga del manejo de la base de datos donde se guardan las estadÃsticas de los usuarios y su consumo. Existen dos soluciones, la primera un expresión regular que obvie a un usuario determinado en cada lÃnea que parsee del fichero access.log generado por el proxy squid. La segunda de más complejidad y la que voy a mostrarles su función es borrar el objeto del usuario requerido de la base de datos por lo que no lo contabilizará. Debo confesarles que la selección no fue mÃa sino de la empresa que me contrató para hacer el trabajo, en otro artÃculo puedo mostrarles la implementación de la primera variante. El fichero squid.pl es el encargado de controlar todo lo referente al trabajo con la base de datos, incrementar el consumo de los usuarios y avisar al proxy cuando un usuario excede el lÃmite de su cuota. Si revisamos detalladamente su contenido veremos que la base de datos se encuentra instanciada en una variable llamada $userdb, y que usando precisamente los métodos ya implementados podemos jugar con su contenido. Entonces casi al final del fichero justo antes de la lÃnea que ejecuta la función writekillfile() y después salva la base de datos a través del método putcurrentstate() insertamos lo siguiente. # Función que al ser ejecutada borra los usuarios especificados en el arreglo @users sub emptyusers() { my @users = ('rolando', 'leroy', '192.168.1.5'); // Creo los valores iniciales del arreglo, especifico los usuarios o las direcciones IP de los clientes foreach (@users) { // Itero uno por uno los usuarios if (defined $$userdb{$_}) { // Si esta definido en la base de datos, es decir existe el usuario actual en la iteración delete $$userdb{$_}; // Lo borramos de la base de datos print STDOUT "Cuota borrada para el usuario $_ \n"; } } } emptyusers(); // Ejecuto la función declarada antes FÃjense que la variable $_ contiene en cada iteración el nombre de usuario, y la si está definido defined $$userdb{$_} procede a borrarlo inmediatamente delete $$userdb{$_}. Este método resolvió la inquietud de mis jefes en aquel momento. Luego decidieron que el sistema de cuotas solo deberÃa estar en funcionamiento en horario laboral. Como programador al fin empiezo a pensar en un método que convirtiera el formato de hora del squid y chequeara los rangos de tiempo asà como los dÃas de la semana pero; se me pasó una cosa, estoy en Linux. Linux mis amigos y su maravilloso CRON son la respuesta a mi problema y me ahorra un par de horas de intensa labor trabajando con PERL que debo decirles no es mi punto fuerte, por lo que me fui por la alternativa. La lÃnea es sencilla y podemos ponerla en cualquiera de los ficheros de configuración del CRON preferiblemente usando el comando crontab -e. */10 08-17 * * mon,tue,wed,thu,fri root /usr/local/squish/squish.cron.sh En qué se traduce esto. Pues todos los dÃas laborables de la semana de lunes a viernes en el horario de 8 de la mañana a 5 de la tarde cada 10 minutos el sistema de cuotas actualiza los contadores de consumo de su base de datos obviando las trazas generadas en los otros horarios que pueden ser depuradas con logrotate o alguna otra solución para el rotado de logs. Son un par de soluciones simples, pero muy prácticas a una situación que muchos en la web tienen y que el squish no da soporte. Del squish lo que más me gusta es que es simple y con conocimientos de programación lo podemos flexibilizarlo al lÃmite. Hay más y en próximos artÃculos publicaré un par de modificaciones que enriquecerán su sistema de cuotas pero esto es todo por ahora, diviértanse con PERL. http://www.ledge.co.za/software/squint/squish/ Squish squish stops you from spending too much of your valuable time and your company's bandwidth browsing the internet. Your friendly administrator can specify how much you are permitted, in terms of the amount of time you spend browsing, or the amount of data you download. This is specified per day, per week or per month. With squish you can ... Ration bandwidth Keep people from lazing around on the internet all day Make a per-user MRTG-like bandwidth graph (see example) Semi-automatically handle programs that waste bandwidth (viruses, trojans, spyware) Avoid unpleasant disciplinary hearings Blame the computer for doing what you told it to do Proper use of squish can also solve cockroach problems. Information Audience: system administrators and management. Status: under development Requires: squid proxy server, web server, web browser, cron Language: perl (perl version 5.6 and later, I think) License: GPL Dependencies: perl-GD, gd-lib (graphics for traffic graphs) Download and documentation ChangeLog - view the change log FAQ - Frequently asked questions (some with answers) Demo - Per-user bandwidth and on-line time graph Contact us if you would like us to install the software for you. Current version: squish.tar.gz All versions: squish.tar.gz squish-0.0.18.tar.gz squish-0.0.17.tar.gz squish-0.0.16.tar.gz squish-0.0.15.tar.gz squish-0.0.14.tar.gz squish-0.0.12.tar.gz squish-0.0.11.tar.gz squish-0.0.10.tar.gz -- Les donnees et renseignements contenus dans ce message sont personnels, confidentiels et secrets. Toute publication, utilisation ou diffusion, meme partielle, doit etre autorisee. Si vous n'etes pas le bon destinataire, nous vous demandons de ne pas lire, copier, utiliser ou divulguer cette communication. Nous vous prions de notifier cette erreur a l'expediteur et d'effacer immediatement cette communication de votre systeme. Any data and information contained in this electronic mail is personal, confidential and secret. Any total or partial publication, use or distribution must be authorized. If you are not the right addressee, we ask you not to read, copy, use or disclose this communication. Please notify this error to the sender and erase at once this communication from your system. -- Este mensaje ha sido analizado por MailScanner en busca de virus y otros contenidos peligrosos, y se considera que está limpio. ______________________________________________________________________ Lista de correos del Grupo de Usuarios de TecnologÃas Libres de Cuba. Gutl-l@jovenclub.cu https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l