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?
- Primeiro você construirá uma lista de palavras que deseja rastrear em seu log;
- Iniciará a varredura nos arquivos de log do Squid (access.log, access.log.1...) conforme escolhido pelo usuário;
- Coletará os sites com as palavras pré-estabelecidas pelas palavras;
- Listará todos os sites encontrados;
- 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