55/78
MYSAR
O MySar é um analisador de log, seu objetivo é ler o arquivo access.log do Squid da mesma forma que o Sarg.
A Diferença é o tempo de atualização da lista (1 minuto) e a utilização de uma base de dados SQL (MySQL) para armazenar as informações.
Baixando MySar
Espelho da UFPR, utilize sempre a versão estável mais nova por questão de segurança:
56/78
MYSAR
Dependências baixadas para rodar o MySar: - Mysql-server;
- Apache2; - php5;
- php5-mysql; - Squid;
Caso não possua os pacotes baixe-os via apt-get:
# apt-get install mysql-server apache2 php5 php5-mysql
Descompacte para um diretório de sua preferência, no meu caso em /usr/local:
57/78
MYSAR
No APACHE
Alias /mysar /var/www/mysar/www <Directory "/var/www/mysar/www"> Options Indexes MultiViews
AllowOverride None Order allow,deny Allow from all </Directory>
Restartando serviço do apache para aplicar modificação:
# /etc/init.d/apache2 restart
Agora vamos conceder permissão de dono do diretório mysar para www-data (Usuário do apache):
58/78
MYSAR
Vamos "criar" o arquivo config.ini:
# cd /var/www/mysar/etc
# cp config.ini.example config.ini
Agora o mysar já está pronto para ser configurado, essa configuração será feita acessando a web do servidor: http://ip_do_servidor/mysar
Clique em "Click here to continue >>>" Siga as telas de configuração
59/78
MYSAR
Vamos apenas fazer os ultimos ajustes no mysar. Acesse pela web e clique em "Administration"
Confira o caminho do arquivo access.log e confirme.
OBS.: Como já utilizo o Sarg e estou implementando o mysar eu vou deixar que ele crie log de 1 dia e não resolva nome de estação. Recomendo que você utilize as opções padrão:
Adicione as rotinas no contrab:
# crontab -e * * * * * root /usr/local/mysar/bin/mysar-importer.php > /var/log/mysar/mysar-importer.log 2>&1 * * * * * root /usr/local/mysar/bin/mysar-resolver.php > /var/log/mysar/mysar-resolver.log 2>&1 0 1 * * * root /usr/local/mysar/bin/mysar-maintenance.php /var/log/mysar/mysar-maintenance.log 2>&1
60/78
LOG PERSONALIZADO
Com a liberação de novas versões do squid surgiram várias novas funcionalidades e uma delas é o logformat que serve para manipular a forma em que o log será
gerado. Funciona da seguinte forma:
logformat < nome> < especificação do formato>
O nome nada mais é do que um nome para manipulação do formato.
A especificação do formato pode ser customizada como o administrador achar melhor, sempre adicionando o prefixo %. Segue a lista de especificações:
61/78
LOG PERSONALIZADO
>a IP de origem da requisição (cliente) >A FQDN do cliente
>p Porta de origem no cliente < A IP do servidor de destino la IP local do servidor Squid lp Porta local do servidor Squid
ts Segundos passados desde a requisição tu Subsegundos
tl Horário do servidor. Strings opcionais utilizadas como padrão. %d/%b/%Y:%H: %M:%S %z
tg Horário GMT. Strings opcionais utilizadas como padrão. %d/%b/%Y:%H:%M:%S %z
tr Tempo de resposta, em milisegundos) >h Cabeçalho de requisição. < h Cabeçalho de retorno. un Nome do usuário ul Login do usuário ui Ident do usuário us SSL
62/78
LOG PERSONALIZADO
ue ACL externa
Hs Status do código HTTP
Ss Status da requisição (TCP_MISS/TCP_REFRESH/TCP_DENIED etc) Sh Status da hierarquia do Squid (DEFAULT_PARENT etc)
mt MIME type do conteúdo
rm Método requisitado na conexão(GET/POST/CONNECT etc) ru URL requisitada
rv Versão do protocolo requisitado
ea String retornada por uma ACL externa
< st Tamanho da resposta, incluindo cabeçalho HTTP % % literal
63/78
LOG PERSONALIZADO
Nova forma para o log
Para criar um novo template para o seu arquivo de log primeiro precisamos criar uma diretiva do tipo logformat que será usada mais a frente.
logformat MEU_LOG IP do cliente: %>a - Username: %un - Horario: [%tl] - Metodo: %rm - URL: %ru - Status HTTP: Hs - Status Squid: %Ss
Logo em seguida definimos onde será utilizado o novo template. Estou separando em dois arquivos de logs (access.log e gerencia.log) para não atrapalhar o correto
funcionamento do SARG.
O logformat com o nome squid é o padrão do Squid que estamos acostumados a ver e que o SARG necessita para que funcione corretamente.
O logformat com o nome MEU_LOG foi o template que criei para poder enviar, em um formato mais amigável, para a gerencia.
access_log /var/log/squid/access.log squid
64/78
LOG PERSONALIZADO
Nunca esquecer de dar um reload no Squid para que as novas configurações entrem em vigor.
# squid -k reconfigure
Log de acesso
Após a criação das regras meus dois logs de acesso, acessando o site http://www.integral.inf.br/, ficaram da seguinte forma
access.log
1431486561.078 171 192.168.25.204 TCP_MISS/200 9847 GET
http://www.reisfa.eti.br/site/wp-content/themes/firmasite/assets/js/bootstrap.min.js? reisfa DIRECT/192.99.160.41 application/javascript
1431486561.125 104 192.168.25.204 TCP_MISS/200 42671 GET
http://fonts.gstatic.com/s/ubuntucondensed/v6/DBCt-NXN57MTAFjitYxdrK8NE7_Gi- Xz52ZQ_AwfA78.woff reisfa DIRECT/216.58.222.35 font/woff
65/78
LOG PERSONALIZADO
gerencia.log
IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:19 -0300] - Metodo: GET - URL: http://reisfa.eti.br/favicon.ico - Status HTTP: Hs - Status Squid: TCP_MISS
IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20 -0300] - Metodo: GET - URL: http://reisfa.eti.br/favicon.ico - Status HTTP: Hs - Status Squid: TCP_MISS
IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20 -0300] - Metodo: GET - URL: http://www.reisfa.eti.br/site/ - Status HTTP: Hs - Status Squid: TCP_MISS
IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20 -0300] - Metodo: GET - URL: http://fonts.googleapis.com/css? - Status HTTP: Hs - Status Squid: TCP_MISS
IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20 -0300] - Metodo: GET - URL: http://www.reisfa.eti.br/site/wp-
content/themes/firmasite/style.css? - Status HTTP: Hs - Status Squid: TCP_MISS
IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20 -0300] - Metodo: GET - URL: http://www.reisfa.eti.br/site/wp-
66/78
LOG PERSONALIZADO
Tratando ACL
Com essa nova funcionalidade podemos atrelar um arquivo de log para cada acl como abaixo.
logformat LOG_DOMINIOS_LIBERADOS IP do cliente: %>a - Username: %un - Horario: [%tl] - Metodo: %rm - URL: %ru - Status HTTP: sHs - Status Squid: %Ss
acl DOMINIOS_LIBERADOS dstdomain
"/etc/squid3/acls/DOMINIOS_LIBERADOS.acl"
access_log /var/log/squid/dominios_liberados.log LOG_DOMINIOS_LIBERADOS DOMINIOS_LIBERADOS
Desta forma todo o acesso que casar com a acl DOMINIOS_LIBERADOS será gravado no arquivo de log /var/log/squid/dominios_liberados.log com o formato definido em LOG_DOMINIOS_LIBERADOS
67/78
AUTENTICAÇÃO - NCSA
#locate ncsa #cd /etc/squid3
#touch squidPasswd
#aptitude install apache2-utils #htpasswd squidPasswd reisfa #vim squid.conf
auth_param basic realm Squid-digite uma senha
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/squidPasswd
acl autenticados proxy_auth REQUIRED …
http_access allow autenticados http_access allow localhost
68/78
AUTENTICAÇÃO
69/78
BANNER FILTER
O bannerFilter faz o bloqueio de diversos banners de publicidade; Influencia na navegabilidade;
Evita que usuário cliquem em links possivelmente contaminados;
#wget http://phroggy.com/files/unix/bannerfilter-1.31.tar.gz # tar zxvf bannerfilter-1.31.tar.gz
70/78
BANNER FILTER
Mova o conteúdo do diretório www para algum lugar acessível em seu Web server. Esses arquivos PRECISAM estar acessíveis ao squid via HTTP.
Mova todo o resto para /etc/squid3/bannerfilter ou /usr/local/squid3/etc/bannerfilter Edite o redirector.pl. Se você não tem o perl no local padrão (/usr/bin/perl), mude a primeira linha (ou crie um symlink).
Mude as variáveis $DATA e $WWW como indicado nos comentários. Opcionalmente, mude também $LOG e $BANNERGIF como indicado.
Teste o redirector.pl rodando-o (perl redirector.pl), digite alguma coisa e veja se recebe essa coisa de volta..
71/78
BANNER FILTER
Editando o squid.conf
Procure pela seção que fala sobre redirect (TAG: redirect_program) e insira a linha:
#vim /etc/squid3/squid.conf
redirect_program /etc/squid/bannerfilter/redirector.pl ou
72/78