Instalação e Configuração do lightsquid no Debian Squeeze

E ai galera, aqui eu vou abordar a Instalação e configuração do lightsquid, um gerador de relatórios para o squid escrito em perl.

Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialsqueeze_en para que não falte nenhum pacote ou configuração.

Podemos ver um demo do lightsquid em http://lightsquid.sourceforge.net/demo18/index.cgi?year=2009&month=08

Agora vamos fazer um update dos repositórios e um upgrade do sistema

aptitude update && aptitude dist-upgrade -y

Agora vamos instalar as dependências dele

aptitude install libgd-gd2-perl libbio-graphics-perl libapache2-mod-perl2

Agora vamos obter o lightsquid

cd /var/www/
wget -c http://wiki.douglasqsantos.com.br/Downloads/monitoring/lightsquid-1.8.tgz

Agora vamos desempacotar ele

tar -xzvf lightsquid-1.8.tgz

Agora vamos remover o tgz

rm -rf lightsquid-1.8.tgz

Agora vamos renomear o nosso diretório do lightsquid

mv lightsquid-1.8 lightsquid

Agora vamos acertar as permissões dos arquivos

cd lightsquid
chmod +x *.cgi
chmod +x *.pl

Agora vamos mudar o dono do diretório

chown -R www-data:www-data /var/www/lightsquid

Agora vamos ajustar o arquivo do virtualhost Default do apache

vim /etc/apache2/sites-available/default
<VirtualHost *:80>
[...] 
       #Configuração do lightsquid
       <Directory "/var/www/lightsquid">
         DirectoryIndex index.cgi
         Options +ExecCGI -Indexes -MultiViews +SymLinksIfOwnerMatch
         AddHandler cgi-script .cgi
         AllowOverride All
       </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

       [...]
</VirtualHost>

Agora vamos ajustar o idioma do lightsquid

vim /var/www/lightsquid/lightsquid.cfg
[...]
$lang                ="pt_br";

Agora vamos ajustar o caminho das pastas do lightsquid

sed -i 's|/var/www/html/|/var/www/|g' /var/www/lightsquid/lightsquid.cfg
sed -i 's|/var/log/squid|/var/log/squid3|g' /var/www/lightsquid/lightsquid.cfg

Agora vamos testar o lightsquid

perl  /var/www/lightsquid/check-setup.pl
LightSquid Config Checker, (c) 2005-9 Sergey Erokhin GNU GPL

LogPath   : /var/log/squid3
reportpath: /var/www/lightsquid/report
Lang      : /var/www/lightsquid/lang/pt_br
Template  : /var/www/lightsquid/tpl/base
Ip2Name   : /var/www/lightsquid/ip2name/ip2name.simple


all check passed, now try access to cgi part in browser

Agora vamos reiniciar o apache

/etc/init.d/apache2 restart

Agora vamos gerar os nossos relatórios

/var/www/lightsquid/lightparser.pl

Agora já podemos acessar o nosso relatório em http://ip_servidor/lightsquid/

Umas das opções interessantes que eu acho desse cara é que podemos configurar grupos para os usuários, com isso podemos mandar consultar quais grupos acessaram o que e quais usuários pertences a eles.

Vamos acessar o diretório do lightsquid

cd /var/www/lightsquid

Agora vamos fazer uma copia do group.cfg

cp group.cfg.src group.cfg

Agora vamos editar o nosso arquivo

vim group.cfg
douglas.santos    01      ti-admin
anderson.angelote 01      ti-admin
hillary           02      matriz-logistica
nerso             02      matriz-logistica

Aqui temos na primeira coluna o nome do usuário poderia ser o endereço ip do cliente, na segunda coluna o número do grupo e a terceira coluna é o nome do grupo

Agora para que apareça a identificação dos grupos precisamos gerar novamente o nosso relatório.

/var/www/lightsquid/lightparser.pl

Outra opção bacana que temos é fazer o mapeamento para nomes completos por exemplo o nome douglas.santos vamos mapear para Douglas Quintiliano dos Santos, o arquivo que precisamos editar é o seguinte

vim /var/www/lightsquid/realname.cfg
douglas.santos Douglas Quintiliano dos Santos
192.168.1.3    Nerso da Silva

Aqui podemos mapear tanto nomes de usuários como endereço ip com isso no relatório podemos não lembrar na hora quem utilizar o ip 192.168.1.3 mais pelo nome é bem mais fácil de cobrar um determinado usuário, após efetuar a modificação precisamos gerar o relatório novamente

/var/www/lightsquid/lightparser.pl

Agora vamos criar um agendamento no cron para gerar automaticamente o nosso relatório:

crontab -e
[...]
*/20 * * * * /var/www/lightsquid/lightparser.pl today

Agora vamos criar um virtualhost para o lightsquid

vim /etc/apache2/sites-available/lightsquid
<VirtualHost *:80>
 ServerName lightsquid.douglasqsantos.com.br
 ServerAlias lightsquid.douglasqsantos.com.br
 DocumentRoot "/var/www/lightsquid"

 #Controle de acesso ao lightsquid
 <Directory "/var/www/lightsquid">
   DirectoryIndex index.cgi
   Options +ExecCGI -Indexes -MultiViews +SymLinksIfOwnerMatch
   AddHandler cgi-script .cgi
   AllowOverride All

 #Autenticação do lightsquid
 AuthUserFile /etc/apache2/access/lightsquid-htpasswd
 AuthName "LightSquid"
 AuthType Basic
 require valid-user
 </Directory>

 #Configuração dos logs do apache
 ErrorLog /var/log/apache2/lightsquid.douglasqsantos.com.br-error.log
 CustomLog /var/log/apache2/lightsquid.douglasqsantos.com.br-access.log common

 #Retirando a assinatura do Apache
 ServerSignature Off

 IndexIgnore .??* *~ *# README RCS CVS *,v *,t *

 # Possible values include: debug, info, notice, info, error, crit,
 # alert, emerg.
 LogLevel info
</VirtualHost>

Agora vamos criar o diretório que vai conter o arquivo de controle dos usuários que podem acessar o lightsquid

mkdir /etc/apache2/access/

Agora vamos gerar o usuário e a senha, aqui eu vou cadastrar o usuário lightsquid

htpasswd -s -c /etc/apache2/access/lightsquid-htpasswd lightsquid
New password: 
Re-type new password: 
Adding password for user lightsquid

Agora vamos desativar os virtuais hosts default do apache

a2dissite default
a2dissite default-ssl

Agora vamos ativar o lightsquid

a2ensite lightsquid

Agora vamos reiniciar o apache

/etc/init.d/apache2 restart

Agora já podemos acessar http://lightsquid.douglasqsantos.com.br ou http://ip_servidor precisamos informar o usuário lightsquid e a senha que foi definida para ele com o comando htpasswd

Referências