Script para verificar LOGs do Squid e selecionar páginas a serem bloqueadas

Publicado por Jose Carlos Oliveira em 23/07/2009

[ Hits: 10.863 ]

Blog: http://sixsideweb.blogspot.com

 


Script para verificar LOGs do Squid e selecionar páginas a serem bloqueadas



Caros,

Uma das minhas maiores dificuldades em relação a administração do proxy (SQUID) sempre foi ter que ficar analisando os relatórios de utilização de internet (SARG). Na maioria das vezes os meus relatórios tinham mais de 1.000 linhas de sites visitados. Imagine você verificando um por um. É de enlouquecer!

Lendo muitos posts e matérias sobre a utilização de alguns comandos para coletar palavras em determinados arquivos, resolvi da uma paradinha e escrever meu script. Vocês não tem noção como isso facilitou a minha vida.

Qual a função deste script?

Fazer um append das informações que deseja bloquear no arquivo pré-existente em seu Squid.

Como funciona o script?
  1. Primeiro você construirá uma lista de palavras que deseja rastrear em seu log;
  2. Iniciará a varredura nos arquivos de log do Squid (access.log, access.log.1...) conforme escolhido pelo usuário;
  3. Coletará os sites com as palavras pré-estabelecidas pelas palavras;
  4. Listará todos os sites encontrados;
  5. Incluirá os sites no arquivo já existente e os bloqueará.

O que será necessário:

Bom, programei este arquivo visualizando o meu ambiente, que é baseado no Debian 4.0. Mas você pode alterá-lo quando quiser, setando os seus diretórios de preferência.

Utilizei o editor de texto mcedit (Midnight Commander). Para você implementar este pacote segue a regra:

# apt-get update
# apt-get -y install mc


Obs.: Caso opte por qualquer outro editor, basta trocar as linhas onde está o mcedit pelo de sua preferência.

Código do script:

#!/bin/bash
# Script para coletar sites atribuídos por uma determinada palavra no access.log do Squid
# Autor: Jose Carlos - 22-01-2009 - Versao 1.0
# email: sepjcarlos@hotmail.com
#Arquivo de palavras a serem procuradas

BLOCK="/usr/local/scripts/block"
#Arquivo de sites coletados conforme palavras
SITES="/usr/local/scripts/sites"
#Arquivo de bloqueio (utilizado Pelo Squid)
BLOQ="/usr/local/scripts/negados"
principal() {
    clear
    echo VERIFICA LOG PARA BLOQUEIO DE SITES
    echo -----------------------------------
    echo
    echo "Escolha a opcao "
    echo "1. Edita Arquivo de Palavras "
    echo "2. Edita Arquivo de Site "
    echo "3. Rastrear Palavras no LOG "
    echo "4. Reiniciar Squid "
    echo "0. Sair "
    echo -n "Entre com a opcao desejada ==> "
    read opcao
    echo
    case $opcao in
   1) Palavras;;
   2) Site;;
   3) Procura;;
   4) Sistema;;
   0) exit;;
   *) "Opcao desconhecida. "; echo ; principal;;
    esac
}
Palavras() {
   mcedit $BLOCK
   echo "Pressione qualquer tecla para continuar... "
   read msg
   principal
}
Site() {
   mcedit $SITES
   echo "Pressione qualquer tecla para continuar... "
   read msg
   principal
}
Procura() {
   echo "Digite o nome do Log a ser lido."
   echo "Exemplo: access.log ou access.log.1: "
   read LOG
   if
       find /var/log/squid -name $LOG
   then
   while true
   do
       echo "Lendo o arquivo de LOG ( $LOG ). Aguarde... Esse processo pode demorar alguns minutos..."
       cat /var/log/squid/$LOG | egrep -f $BLOCK | awk '{print $7}' | sed 's/http:\/\///' | sed 's/\/.*$//' | sort | uniq > /usr/local/scripts/sites
       echo "Fim do processo de leitura. "
       echo "O arquivo encontra-se gravado com os sites que contenham a palavras"
       echo "Nao esquece de verificar o arquivo de sites para n bloquear conteudos licitos"
       echo
       echo "Pressione qualquer tecla para continuar..."
       mcedit $SITES
       echo "#### Sites gerados em "`date +%d-%m-%y`" ####" >> $BLOQ
       cat $SITES | sort -u | grep -v ^$  >> $BLOQ
       echo "Pressione qualquer tecla para continuar..."
       read msg
       principal
   done
   else
       echo "Arquivo de Log nao existe..."
       echo "Digite o nome correto..."
       echo "Pressione qualquer tecla para continuar..."
       read msg
       principal
   fi
}
Sistema() {
    echo "Reiniciando Squid: "
    echo
    squid -k reconfigure
    echo "Pressione qualquer tecla para continuar..."
    read msg
    principal
}
principal

Um abraço a todos..

Jose Carlos Oliveira

Outras dicas deste autor

Criar, alterar e remover usuários no Squid

Leitura recomendada

Substituindo o sleep por um belo cronômetro regressivo

Filtrando sites navegados por máquinas no log do Squid

Processos rivais

Como trocar senhas de usuários dentro de um Shell Script

Eliminando todos os processos de determinada variável

  

Comentários
[1] Comentário enviado por sidnei.weber em 23/07/2009 - 13:13h

Boa, só falta testar pra ver se funciona ;)

[2] Comentário enviado por sepjcarlos em 23/07/2009 - 14:31h

Caro Sidnei,

Este script esta em produção no meu ambiente. Para que funcione corretamente no seu será necessário alterar os diretórios conforme sua necessidade.

Jose Carlos Oliveira
http://sixsideweb.blogspot.com

[3] Comentário enviado por Virgil_Dantas em 06/05/2015 - 11:21h


muito bom o script, estou implementando nele uma forma de mandar por e-mail o arquivo com os sites bloqueados e tambem listar o login do usuario junto com o site.

[4] Comentário enviado por Virgil_Dantas em 12/05/2015 - 11:18h

muito bom o script, implementei nele uma forma de mandar por e-mail o arquivo com os sites bloqueados e tambem listar o login do usuário junto com o site.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts