Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Script para verificar LOGs do Squid e selecionar páginas a serem bloqueadas
Linux user
Publicado por Jose Carlos Oliveira em 23/07/2009

Login: sepjcarlos, 15502 pontos | Blog: http://sixsideweb.blogspot.com
[ Hits: 4327 ]

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

Leitura recomendada
   Dica Linux recomendada Criando certificados no Fedora Core
   Dica Linux recomendada Shell script com Kdialog
   Dica Linux recomendada Criando um arquivo .tar auto-instalável
   Dica Linux recomendada Backup em shell script na virtualização de máquinas (VMWare)
   Dica Linux recomendada Limpar cache da memória RAM

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


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.