SQStat – Monitorando acessos no Squid em tempo real
O Squid Status (SQStat) é uma ferramenta desenvolvida em PHP que permite verificar, em tempo real, todo o tráfego existente no servidor Proxy . Com isso é possível monitorar o consumo de banda, bem como links acessados por usuários ou hosts na rede.
Para obter as informações de acesso, a ferramente utiliza o protocolo cachemgr, como pré-requisitos só são necessários um servidor web (Apache2 no caso), PHP (4 ou superior) e o Squid funcionando. Mais simples que a explicação só mesmo a instalação.
O primeiro passo é baixar a ferramenta, na raiz do servidor web (/var/www/) execute o comando:
# wget -c http://samm.kiev.ua/sqstat/sqstat-1.20.tar.gz
Agora, escompacte o arquivo:
# tar -zxvf sqstat-1.20.tar.gz
Acesse o diretório criado:
# cd sqstat
Renomeie o arquivo config.inc.php.defaults para config.inc.php
# mv config.inc.php.defaults config.inc.php
Edite o arquivo:
# vim config.inc.php
Altere os sequintes parâmetros
- $squidhost[0]=”” : IP do servidor Proxy;
- $squidport[0]=”” : Porta do Proxy;
- $resolveip[0]=” “: se a opção for TRUE, o SQStat utiliza nomes das máquinas ao invés do IP;
- $group_by[0]=””: os acessos podem ser agrupados por máquina (host) ou nome de usuário (username).
Nota: A opção username só funciona na versão 2.6 ou superior do Squid e para proxies com autenticação.
# vim /etc/squid/squid.conf
acl manager proto cache_object acl webserver src 10.0.0.1/255.255.255.255 http_access allow manager webserver http_access deny manager
Nota: O IP na ACL webserver deve ser o mesmo indicado no parâmetro squidhost no arquivo do SQStat.
Feito isso é necessário reiniciar o Squid para que as altereções sejam aplicadas, o SQStat pode ser acessado através do endereço:
http://ip-do-servidor/sqstat/sqstat.php Site oficial da ferramenta: http://samm.kiev.ua/sqstat/
Configuração do Squid-Graph no CentOS com controle de acesso por usuários do AD
O Squid-Graph é uma ferramenta desenvolvida em Perl para o Squid, que analisa o volume de tráfego e apresenta as informações através de gráficos com volumes de acesso e transferências realizadas através do Proxy.
1 Ambiente
SO: Centos 5.6 Kernel: 2.6.18-274.el5 Squid: 2.6.STABLE21 Apache: 2.2.3
1.1 Dependências
- Perl GD
1.2 Satisfazendo a dependência
# wget http://pkgs.repoforge.org/perl-GD/perl-GD-2.45-1.el5.rf.x86_64.rpm
# rpm -ivh perl-GD-2.45-1.el5.rf.x86_64.rpm
2 Instalação do programa:
O processo de instalação da ferramenta é bem simples, já que não é necessário compilar nada.
# wget http://ufpr.dl.sourceforge.net/project/squid-graph/squid-graph/3.2/squid-graph-3.2.tar.gz # tar -zxvf squid-graph-3.2.tar.gz # mv squid-graph /usr/local/
Criando diretório de armazenamento dos gráficos
# mkdir /var/www/html/squid-graphs3 Criando os gráficos
3.1 Criando um gráfico padrão
# /usr/local/squid-graph/squid-graph –output-dir=/var/www/html/squid-graphs/ < /var/log/squid/access.log3.2 Criando um gráfico acumulativo:
# /usr/local/squid-graph/squid-graph -c -n -o=/var/www/html/squid-graph/ –title=”Grafico de uso do proxy” < \ /var/log/squid/access.log3.3 Para gerar um gráfico somente de TCP:
/usr/local/squid-graph/squid-graph –tcp-only –output-dir=/var/www/html/squid-graph/ \ –title=”Grafico de uso TCP” < /var/log/squid/access.log3.4 Para gerar um gráfico somente de UDP:
/usr/local/squid-graph/squid-graph –udp-only –output-dir=/var/www/html/squid-graph/ \ –title=”Grafico de uso UDP” < /var/log/squid/access.log3.5 Para gerar um gráfico de uma URL específica:
# cat /var/log/squid/access.log | grep “xxxx” | /usr/local/squid-graph/squid-graph -c -n \ -o=/var/www/html/squid-graph/ –title=”Gráfico de uso do site XXXX”3.6 Para gerar um gráfico de um usuário específico:
# cat /var/log/squid/access.log | grep “usuário/ip” | /usr/local/squid-graph/squid-graph -c -n \ -o=/var/www/html/squid-graph/ –title=”Gráfico do usuario xxx”4 Adicionar um logo ao gráfico
Copiar o logo com o nome logo.png para o diretório dos relatórios /var/www/html/squid-graphs
5 Automatizando a Geração do gráfico
A geração dos gráficos foi dividida em duas partes. Primeiro foi criado um script para gerar os gráficos de acesso a cada 1 hora.
# vim /scripts/squid-graph.sh
#!/bin/bash # Script para geracao de graficos de uso do proxy HOJE=`date '+%d-%m-%Y'` /usr/local/squid-graph/squid-graph -o=/var/www/html/squid-graph/ \ --title="Grafico de uso do proxy do dia $HOJE " < /var/log/squid/access.log exit 0
Um segundo script foi criado para manter um ‘histórico diário’ dos gráficos, uma vez que sempre que o squid-graph é executado os gráficos gerados são sobrescritos.
# vim /scripts/squid-logs.sh
#!/bin/bash # Script de geracao de relatorios de acesso do Squid e manutencao dos logs # Manutencao do diretorio dos graficos de acesso do proxy ONTEM=`(date --date "1 day ago" +%d-%m-%Y)` /scripts/squid-graph.sh cd /var/www/html/squid-graph/ mkdir $ONTEM mv *.* $ONTEM cp /usr/local/squid-graph/logo.png /var/www/html/squid-graph/ /scipts/squid-graph.sh /usr/local/sarg/bin/sarg /usr/local/squid/sbin/squid -k rotate
Entendendo o script:
- As variáveis ONTEM e HOJE, são usadas para receber as datas do dia em que o script está sendo executado e do dia anterior;
- Em seguida são gerados os últimos gráficos do Proxy referentes ao dia corrente;
- No diretório onde são as armazenados os gráficos (/var/www/html/squid-graph) é criado um diretório com rótulo do dia anterior (mkdir $ONTEM) e em seguida todos os arquivos gerados pelo squid-graph são movidos para este diretório (mv *.* $ONTEM)
- O logo exibido nos relatórios é copiado novamente para o diretório dos gráficos (cp /usr/local/squid-graph/logo.png /var/www/html/squid-graph/)
- O gráfico do Squid é gerado novamente;
- O comando /usr/local/sarg/bin/sarg gera o relatório diário de acessos do Squid e comando /usr/local/squid/sbin/squid -k rotate rotaciona os logs do Proxy;
Após criar os dois scripts, é necessário alterar as permissões dos mesmos para que possam ser executados:
# chmod +x /scripts/squid-graph.sh # chmod +x /scripts/squid_logs.shAdicionar as entradas para os scripts no crontab:
# vim /etc/crontab
00 23 * * * root /scripts/squid_log.sh 00 * * * * root /scripts/squid-graph.sh
Desta forma, o script squid_log.sh é executado todos os dias às 23h e o script squid-graph.sh é executado todos os dias de hora em hora.
Os gráficos gerados pela ferramenta podem ser visualizados pelo endereço: http://ipdoservidor/squid-graph/. Para acessar gráficos mais antigos basta adicionar a data desejada ao endereço: http://ipdoservidor/squid-graph/08-09-2011.
6 Controle de acesso
Para limitar o acesso aos relatórios gerados, pode ser usado o recurso do .htaccess do Apache ou a autenticação baseada em grupos/usuários de um domínio. Na segunda opção, o servidor deve estar integrado ao domínio através dos serviços: samba, winbind e kerberos. Esta integração não será abordada neste post, mas pode ser tratada em outra oportunidade. Para esta configuração será utilizada a autenticação no domínio.
Para isso é necessário habilitar o módulo ntlm_winbind_module no Apache:
# vim /etc/httpd/conf/httpd.conf
LoadModule ntlm_winbind_module modules/mod_auth_ntlm_winbind.so
A configuração seguinte também poderia ser inserida no httpd.conf, mas para efeito de organização, vamos criar um arquivo para a autenticação dos gráficos.
# vim /etc/httpd/conf.d/squid-graph.conf
Alias /squid-graph /var/www/html/squid-graph <Directory "/var/www/html/squid-graph"> AuthName "Nome exibido na janela de autenticação" NTLMAuth on NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp" NTLMBasicAuthoritative on AuthType NTLM require user (lista dos usuários com permissão de acesso aos gráficos) </Directory>
Entendendo o arquivo:
- Alias: define um nome para o acesso aos relatórios (http://ipdoservidor/squid-graph);
- AuthName: Mensagem exibida no formulário de login;
- NTLMAuth on: habilita a autenticação de usuários;
- NTLMAuthHelper: localização do helper do ntlm;
- AuthType NTLM: tipo de autenticação utilizada;
- require user: usuários que possuem permissão para acessar o diretório;
Ao concluir as configurações é necessário reiniciar o Apache:
# service httpd restartOs gráficos gerados pela ferramenta podem ser visualizados pelo endereço: http://ipdoservidor/squid-graph.
7 Referências
http://www.vivaolinux.com.br/dica/Instalacao-do-SquidGraph-3.2-no-Debian-6.0/
http://pt.scribd.com/doc/50417570/31/Squid-Graph
http://www.squid-cache.org.br/index.php?option=com_content&task=view&id=82&Itemid=27
http://bloke.org/linux/ntlm-authentication-active-directory-on-apache-linux/
http://docs.moodle.org/20/en/NTLM_authentication#Using_the_NTLM_part_of_Samba_for_Apache_on_Linux