Com a expansão da Wifi aqui na empresa tive problemas com usuários que abusam do serviço para baixar videos, filmes entre outras coisas. Então resolvi buscar por soluções menos trabalhosas para ajudar. Me utilizei do relatório do lightsquid para ver quem são os usuários que abusam do serviço.
Criei as seguintes ACL no squid.conf antes das regras de portas seguras:
#############################################################
### #####
### CONTROLE DE BANDA POR USUÁRIOS #####
### #####
#############################################################
# Controle de banda – jhony 09/09/2010 magoado com os usuários
acl user_fdp proxy_auth “/etc/squid/usuarios_limitados_banda1.txt”
acl user_fdp_fuck proxy_auth “/etc/squid/usuarios_limitados_banda2.txt”
### quantia de pools
delay_pools 2
#faixa 1 redução pequena
delay_class 1 2
# Limita a sua banda para +- 64 Kbps de download
delay_parameters 1 7200/7200 7200/7200
delay_access 1 allow user_fdp
#faixa Fuck redução maior
delay_class 2 2
# Limita a sua banda para +- 35 Kbps de download
delay_parameters 2 3800/3800 3800/3800
delay_access 2 allow user_fdp_fuck
##############################################################
### FIM DO CONTROLE DE BANDA ###
##############################################################
em seguida criei os arquivos em que os nomes dos usuários vão ser consultados pelas acls:
/etc/squid/usuarios_limitados_banda1.txt
/etc/squid/usuarios_limitados_banda2.txt
para finalizar criei um script shell que busca no report do lightsquid e adiciona estes usuário aos arquivos acima e faz reload do squid.
#!/bin/bash
dt=`date +%Y%m%d`
dtlog=`date +%d%m%Y:%HH%MM`
log=/var/log/usuarios_fdp.log
###
#Cria log histórico dos usuários
echo ” dia e hora – $dtlog” >> $log
#limpa o arquivo
> /etc/squid/usuarios_limitados_banda1.txt
> /etc/squid/usuarios_limitados_banda2.txt
### busca no report do lightsquid quem são os usuários que estão abusando
### se for maior que 200mb e menor que 500mb coloca na primeira faixa de velocidade limitada
for i in `grep “total:” /var/www/html/lightsquid/report/$dt/* |cut -d: -f3`; do
if [ "$i" -gt "200000000" ] && [ "$i" -lt "500000000" ];then
echo “Limitados banda 1″ >> $log
usuario1=`grep “$i” /var/www/html/lightsquid/report/$dt/* |cut -d: -f1 `
echo `basename $usuario1` >> /etc/squid/usuarios_limitados_banda1.txt
echo `basename $usuario1` >> $log
### se for maior que 500mb coloca na segunda faixa de velocidade limitada.
elif [ "$i" -gt "500000001" ];then
echo “Limitados banda 2″ >> $log
usuario2=`grep “$i” /var/www/html/lightsquid/report/$dt/* |cut -d: -f1 `
echo `basename $usuario2` >> /etc/squid/usuarios_limitados_banda2.txt
echo `basename $usuario2` >> $log
fi
done
#carega as configs no squid
/sbin/service squid reload
Depois é só adicionar no cron e ferrar com os abusados:
*/15 * * * * /var/www/html/lightsquid/lightparser.pl today
*/15 * * * * /etc/squid/verifica_usuario_fdp.sh
Escrito por jhony