Sarg + Relatórios Automáticos + Domínio Autenticado + Desbloqueio na Página do Squid

Neste artigo mostro como instalar e configurar o Sarg no Debian 6, com geração e exclusão (crontab) de relatórios automaticamente, relatórios sendo acessados por um domínio (BIND 9) com autenticação (Apache 2) e ainda, a opção do usuário solicitar (Postfix) desbloqueio de sites via formulário (PHP) na página de bloqueio do Squid.

[ Hits: 30.871 ]

Por: dalveson sanches em 31/01/2013 | Blog: http://www.vivaolinux.com.br/~dalveson


Instalação



Instalaremos o Sarg, porém como ele não existe mais oficialmente nos repositórios do Debian 6, é necessário adicionarmos um repositório alternativo.

Para tanto, faça:

# nano /etc/apt/source.list

E adicione a seguinte linha:

deb http://backports.debian.org/debian-backports squeeze-backports main

Após salvar, atualize a sua lista de pacotes:

# aptitude update

Instale o Sarg:

# aptitude install sarg

Faremos as configurações do Sarg, para tanto, acesse seu diretório de configuração:

# cd /etc/sarg

Faça um backup do arquivo de configuração do Sarg:

# mv sarg.conf sarg.conf.original

Crie um outro arquivo em branco:

# touch sarg.conf

Edite o arquivo:

# nano sarg.conf

Adicione o seguinte conteúdo:

# Arquivo de configuração do Sarg
title "Relatorio de acesso SQUID"
access_log /var/log/squid/access.log
exclude_users /etc/sarg/exclude_users
exclude_hosts /etc/sarg/exclude_hosts
exclude_codes /etc/sarg/exclude_codes
usertab /etc/sarg/usertab
graphs yes
graph_days_bytes_bar_color orange
font_face Tahoma,Verdana,Arial
header_color darkblue
header_bgcolor blanchedalmond
font_size 9px
background_color white
text_color #000000
text_bgcolor lavender
title_color green
temporary_dir /tmp
resolve_ip
user_ip no
topuser_sort_field BYTES reverse
user_sort_field BYTES reverse
date_format e
lastlog 0
remove_temp_files yes
index yes
index_tree file
overwrite_report yes
records_without_userid ip
displayed_values abbreviation
use_comma yes
mail_utility mailx
topsites_num 100
topsites_sort_order CONNECT D
index_sort_order D
max_elapsed 28800000
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
long_url no
date_time_by bytes
charset Latin1
show_successful_message yes
show_read_statistics yes
show_sarg_info yes
show_sarg_logo yes
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
topuser_num 0
weekdays 0-6
hours 0-23
report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads
download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"

Explicando algumas linhas importantes:
  • title "Relatório de acesso SQUID" → Título do relatório;
  • access_log /var/log/squid/access.log → Diretório onde o Squid está salvando os logs de acesso;
  • usertab /etc/sarg/usertab → Lista o número IP e o nome dos computadores da rede caso você queira que sejam identificados no relatório;
  • exclude_users /etc/sarg/exclude_users → Lista de usuários a serem excluídos dos relatórios;
  • exclude_hosts /etc/sarg/exclude_hosts → Lista de hosts a serem excluídos dos relatórios.

Como nessa versão do Sarg algumas coisa mudaram, para definir o título dos relatórios e também o local onde deverão ser salvos os relatórios, você deverá editar o aquivo "sarg-reports.conf":

# nano /etc/sarg/sarg-reports.conf

E altere as seguinte linhas:

HTMLOUT=/var/www/squid-reports
LOGOLINK="http://teu-site/"
PAGETITLE ="Titulo do deu relatorio"
DAILY=Dia
WEEKLY=Semana
MONTHLY=Mes

Como no teste tenho o servidor e duas estações, uma com Windows e outra com GNU/Linux, iremos cadastrá-las no arquivo /etc/sarg/usertab para que o nome do usuário do computador seja impresso nos relatórios.

Para tanto, faça:

# nano /etc/sarg/usertab

E adicione os IPs seguido dos nomes separados por espaços:

192.168.2.30 DalvesonWINDOWS
192.168.2.31 DalvesonLINUX

Agora verifique se o seu Squid está salvando os logs em /var/log/squid/acess.log, pois será lá que o Sarg buscará as informações.

Faça:

# nano /etc/squid/squid.conf

E verifique se existe a linha abaixo, caso não exista, adicione-a:

access_log /var/log/squid/access.log squid

Recarregue as configurações do seu Squid:

# squid -k reconfigure

Execute o seguinte comando, para gerar o relatório de acesso no dia pelo Sarg:

# sarg-reports today

Agora, execute o seguinte comando para gerar o relatório de acesso na semana pelo Sarg:

# sarg-reports weekly

Execute o seguinte comando para gerar o relatório de acesso no mês pelo Sarg:

# sarg-reports monthly

Acesse os seus relatórios pelo navegador:

http://squid.dalveson.com.br

Você verá agora uma interface lhe dando as opções de Dias, Semanas e Meses:
Ao clicar nas opções, você verá os relatórios, observe que também aparecerá o nome do usuário do PC, conforme havíamos cadastrado:
Agora iremos automatizar a geração dos relatórios utilizando o crontab. Para tanto, faça:

# crontab -e

E adicione o seguinte:

# gera o relatório do sarg todo dia a cada 10 minutos de cada hora
0,10,20,30,40,50 * * * * /usr/sbin/sarg-reports today
# gera o relatório do sarg todo sabado as 23 horas
* 23 * * 6 /usr/sbin/sarg-reports weekly
# gera o relatório do sarg todo dia 1 as 23 horas de cada mes
* 23 1 * * /usr/sbin/sarg-reports monthly

Pronto. Com isso os relatórios sempre estarão atualizados, porém, para que não fique uma quantidade gigantesca de relatórios salvos, é necessário que criemos outro agendamento para exclusão.

Adicione o seguinte ao crontab:

# excluir relatorios todo dias as 22:30 horas com mais de 30 dias no diretório DIAS
30 22 * * * find /var/www/squid-reports/Dias -type d -mtime +30 -exec rm -rf {} \;
# excluir relatorios todo dias as 22:30 horas com mais de 60 dias no diretório SEMANAS
30 22 * * * find /var/www/squid-reports/Semanas -type d -mtime +60 -exec rm -rf {} \;
# excluir relatorios todo dias as 22:30 horas com mais de 90 dias no diretório MESES
30 22 * * * find /var/www/squid-reports/Meses -type d -mtime +90 -exec rm -rf {} \;

Assim teremos apenas o último mês de acesso diários, apenas 2 meses de acesso semanal e apenas 3 meses de acesso mensal.

Explicando:
  • Primeiro campo → Minutos (1-59)
  • Segundo campo → Hora (1-23)
  • Terceiro campo → Dia (1-31)
  • Quarto campo → Mês (1-12)
  • Quinto campo → Dia da semana (0 = domingo até 6 = sábado)
  • Sexto campo → Comando a executar

Página anterior     Próxima página

Páginas do artigo
   1. Requisitos
   2. Instalação
   3. Formulários no Squid
   4. Finalizando
Outros artigos deste autor

VnStat - Monitorando o tráfego de sua rede

Leitura recomendada

Servidor de internet para iniciantes (Debian Squeeze)

Anon-Proxy no Debian Lenny

Fazendo um site completo rapidinho com Joomla

Criando relatórios estatísticos com o webalizer

Apache2 + PHP + PostgreSQL + phpPgAdmin

  
Comentários
[1] Comentário enviado por porongo51 em 31/01/2013 - 11:06h

Muito bom o artigo! Vou implementar aqui na empresa com mais tempo...

Abraço!

[2] Comentário enviado por andrecaleiros em 31/01/2013 - 13:11h

bem legal cara!
parabens

[3] Comentário enviado por Linuxlrt em 31/01/2013 - 16:36h

Muito informativo
Parabéns!

[4] Comentário enviado por cesarufmt em 31/01/2013 - 19:09h

Muito interessante isso.

Valeu demais!!!!


[5] Comentário enviado por thiagocpv em 01/02/2013 - 04:09h

Bacana, bem útil e interessante!
Só uma dúvida, e se por acaso já existir um SMTP Server na rede e quiser usar ele?? Não vi onde altera de localhost para o IP interno do SMTP Server...
Como ficaria??

Abs!!

[6] Comentário enviado por dalveson em 01/02/2013 - 10:18h


[5] Comentário enviado por thiagocpv em 01/02/2013 - 04:09h:

Bacana, bem útil e interessante!
Só uma dúvida, e se por acaso já existir um SMTP Server na rede e quiser usar ele?? Não vi onde altera de localhost para o IP interno do SMTP Server...
Como ficaria??

Abs!!


Bom dia thiagocpv, é que infelizmente nao deixei isso muito claro né, a linha onde voce altera o servidor smtp encontra-se dentro do arquivo de configuração do postfix:
# SMTP relayhost
relayhost = [smtp.gmail.com]:587
Basta incluir seu servidor
att

[7] Comentário enviado por thiagocpv em 01/02/2013 - 19:14h

Hummm entao obrigatoriamente eu preciso ter um postfix rodando nessa maquina, nao há como apontar direto para o IP do smtp server no action.php???

Abs!!

[8] Comentário enviado por dalveson em 01/02/2013 - 20:14h


[7] Comentário enviado por thiagocpv em 01/02/2013 - 19:14h:

Hummm entao obrigatoriamente eu preciso ter um postfix rodando nessa maquina, nao há como apontar direto para o IP do smtp server no action.php???

Abs!!


realmente existe a obrigatoriedade do postfix, mais vc pode tentar da uma ajustada a sua realidade, talvez se vc alterasse o arquivo ERR_ACCESS_DENIED na lunha form id="formulario" action="http://ip-do-apache/action.php" method="post" name="formulario"> e configurasse para ao inves dele chamar o action chamasse alguns script que vc criasse que fosse capaz de enviar email com teu smtp talvez funcionaria, nao tenho certeza mais talvez funcionaria.

[9] Comentário enviado por thiagocpv em 01/02/2013 - 20:34h

Eu fiz e funcionou!!!
Alterei no php.ini chamando um script que envia emails usando meu smtp!!!

Valeuuu!!!

[10] Comentário enviado por dalveson em 01/02/2013 - 21:06h


[9] Comentário enviado por thiagocpv em 01/02/2013 - 20:34h:

Eu fiz e funcionou!!!
Alterei no php.ini chamando um script que envia emails usando meu smtp!!!

Valeuuu!!!


pow legal, porem seria legal se vc detalhase mais como fez, para que outros usuarios tambem tivessem esta outra opção para utilização
att

[11] Comentário enviado por armandomxj em 01/02/2013 - 21:18h

Estou recevendo o seguinte erro:

Na tentativa de recuperar a URL: http://ip-do-apache/action.php

O seguinte erro foi encontrado:

Incapaz de determinar o endereço IP através do nome do host ip-do-apache

O servidor DNS retornou:

Name Error: The domain name does not exist.

Isso significa que:

O cache foi incapaz de resolver o nome do host presente na URL.
Verifique se o endereço está correto.

Seria o dns...meu dns esta funcionado ( eu creio ) amigo teria como me ajudar.

[12] Comentário enviado por dalveson em 01/02/2013 - 21:21h


[11] Comentário enviado por armandomxj em 01/02/2013 - 21:18h:

Estou recevendo o seguinte erro:

Na tentativa de recuperar a URL: http://ip-do-apache/action.php

O seguinte erro foi encontrado:

Incapaz de determinar o endereço IP através do nome do host ip-do-apache

O servidor DNS retornou:

Name Error: The domain name does not exist.

Isso significa que:

O cache foi incapaz de resolver o nome do host presente na URL.
Verifique se o endereço está correto.

Seria o dns...meu dns esta funcionado ( eu creio ) amigo teria como me ajudar.


edite o arquivo action.php e sustitua a linha http://ip-do-apache/action.php no campo ip-do-apache coloque o ip do teu servidor apache onde ta salvo o arquivo action.php

[13] Comentário enviado por EuzebioViana em 04/02/2013 - 09:29h

Muito bom! Parabéns...

[14] Comentário enviado por dalveson em 04/02/2013 - 17:47h

vlw galera,
a motivação do artigo surgiu de um necessidade particular, o gerente da empresa onde trabalho me solicitou acesso aos relatorios de que os usuarios da rede acessavam, ae eu pensei vou so passar o caminho do sarg para ele,porem no primeiro dia ele me disse que era muito chato ter que digitar toda vez aquele monte de numero "imagina só um simples ip" ae resolvi instalar o bind e criar o dominio e juntamente com o apache atraves de virtual host diponibilizar um dominio para ele, ae pensei ufa resolvido, demorou mais ou menos uma semana observei que todos os pcs ja estavam acessando os relatorios ae imaginei que algume tinha observado o nome do dominio e propagado para os outors usuarios curiosos "nessa hora nao aparece um culpado" ae entao resolvi colocar senha no dominio com o auxilio do apache, depois de umas 2 semnas ele me raclamou que tinha usuarios que estavam reclamando que alguns sites estavam sendo bloqueados erroneamentes, me perguntou senao tinha como criar algo que os usuarios mesmo podessem solicitar, ae vi no site aprendolinux o lance do formulario, so dei umas ajustadas e pronto, virou essa bananada toda que para mim esta sendo bastante util.
abraços

[15] Comentário enviado por Rafael Oliveira em 09/04/2013 - 11:26h

Alguém também esta tendo problemas com o Firefox 19.0? Ele não exibe mais a página de erro do Squid, e sim uma página de erro própria.

[16] Comentário enviado por amauridell em 25/05/2013 - 17:12h

oi.
estou com uma dificuldade, após tudo pronto é funcionando o e-mail é enviado, mas não chega na caixa de e-mail da minha conta.
já verifique o spam e outro coisa que poderia dar problemas ... mas nada
alguém teve este tipo de problema?

[17] Comentário enviado por cgonzagaskill em 10/07/2013 - 17:55h

Olá dalveson

Parabéns pelo Post... Mas logo na parte inicial no último passo a2ensite squid.dalveson.com.br no meu caso PDCMAHARY-01.mahary.local, ele apresenta a seguinte mensagem
To activate the new configuration, you need to run:
service apache2 reload

e não executar esse comando

Reinicie o Apache:
# /etc/init.d/apache reload

e ao chamar no browser PDCMAHARY-01.mahary.local e aparece a mensagem "IT works " , não fazendo o procedimento abaixo;

Pronto. Agora que os sites/virtual hosts já estão habilitados, vá até um computador na rede e tente acessar o "PDCMAHARY-01.mahary.local". Observe que irá lhe pedir usuário e senha.

Você me ajudar ?

Antecipadamente agradeço,

Carlos

[18] Comentário enviado por joaomartfer em 15/01/2015 - 13:35h


Ola Caro Amigo eu acompanhei seu tutorial
porem na hora que eu vou enviar o email já na tela do squid ele diz que envio eu não recebo nada esta aqui o log do postfix se puder ajudar
Jan 15 13:33:07 srvproxy postfix/pickup[9214]: 1A60ED40F28: uid=33 from=<www-data>
Jan 15 13:33:07 srvproxy postfix/cleanup[9238]: 1A60ED40F28: message-id=<20150115153307.1A60ED40F28@srvproxy.localdomain>
Jan 15 13:33:07 srvproxy postfix/qmgr[9215]: 1A60ED40F28: from=<www-data@srvproxy.localdomain>, size=514, nrcpt=1 (queue active)
Jan 15 13:33:07 srvproxy postfix/smtp[9240]: Untrusted TLS connection established to smtp.martfer.com.br[200.234.210.12]:587: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Jan 15 13:33:07 srvproxy postfix/smtp[9240]: 1A60ED40F28: host smtp.martfer.com.br[200.234.210.12] said: 450 4.1.8 <www-data@srvproxy.localdomain>: Sender address rejected: Domain not found (in reply to RCPT TO command)
Jan 15 13:33:08 srvproxy postfix/smtp[9240]: Untrusted TLS connection established to smtp.martfer.com.br[200.234.210.13]:587: TLSv1 with cipher ADH-AES256-SHA (256/256 bits)
Jan 15 13:33:08 srvproxy postfix/smtp[9240]: 1A60ED40F28: to=<suporteti@martfer.com.br>, relay=smtp.martfer.com.br[200.234.210.13]:587, delay=1.4, delays=0.1/0/1/0.28, dsn=4.1.8, status=deferred (host smtp.martfer.com.br[200.234.210.13] said: 450 4.1.8 <www-data@srvproxy.localdomain>: Sender address rejected: Domain not found (in reply to RCPT TO command))
^C


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts