SquidGuard + Calamaris
Um
dos usos mais comuns de computadores com Linux em redes corporativas é
no papel de elo de ligação entre os computadores locais e a Internet.
Há muitas maneiras de configurar este serviço, e uma das mais populares
é o uso de servidores proxy, que permitem o acesso aos serviços da
Internet com segurança e economia de recursos.
Entre os servidores proxy disponíveis para Linux, o Squid é, sem
dúvida, o mais popular. Com o Squid instalado em uma máquina Linux com
acesso à Internet e acessível a partir das demais máquinas de sua rede,
você pode compartilhar a WWW e os servidores FTP, com a possibilidade
de controlar e restringir o acesso. Os computadores da rede local não
precisam estar rodando Linux - de fato, todos os principais browsers do
mercado permitem o acesso através de um servidor proxy baseado no
Squid.
A plataforma de testes
Para os exemplos deste artigo, instalamos a configuração padrão do
Conectiva Linux 7.0 servidor em um PC comum, ligado à Internet através
de um cable modem e com conexão à rede local através de uma placa de
rede PCI comum. A configuração da rede foi realizada de acordo com a
documentação do provedor e da distribuição. Os procedimentos para
outras distribuições são similares, e você pode contar com a
documentação do Squid para auxiliar. (Veja o box Para saber mais).
O primeiro item a ser verificado é a instalação do próprio Squid. No
caso do Conectiva Linux 7.0, ele está no CD número 1, e foi instalado
através do comando rpm -ivh /mnt/cdrom/squid-2.4.1-1cl.i386.rpm. O
arquivo de configuração default do Squid vem quase pronto para
utilização (ao menos para nossos testes) - tudo o que você precisa é
localizar a linha que diz http_access deny all e substituir por
http_access allow all - assim seu proxy dará acesso irrestrito a
qualquer página http. As outras opções são importantes também, mas não
precisamos alterá-las agora.
Agora que já temos o Squid instalado e configurado, é hora de
executá-lo. No Conectiva Linux, o comando é /etc/rc.d/init.d/squid
start - ou utilize o ntsysv (ou o Linuxconf ou a ferramenta padrão de
sua distribuição preferida) para configurar a inicialização automática
a cada boot.
Configure seu browser para utilizar o servidor proxy (geralmente basta
informar o endereço e a porta, que por padrão é 3128) e faça os testes
- o acesso deve ocorrer normalmente. Em caso de problemas, revise os
passos até tudo estar correto, antes de prosseguir.
Controlando o acesso
Para quem precisa de administração direta, com mais flexibilidade e
recursos, o ideal é utilizar programas auxiliares, que utilizam a
interface de redirecionamento do Squid para implementar listas de
permissão e restrição baseadas em diversos critérios.
Há muitos programas neste estilo. Entre eles, o SquidGuard se destaca
pelos recursos avançados, incluindo controle de acesso baseado no
endereço de origem, de destino, na URL, no horário ou em combinações
destes itens, além de vários tipos de redirecionamento, listas negras e
outras preciosidades. Segundo o site oficial, o SquidGuard em um
Pentium 500 atende a até 100.000 solicitações em 10 segundos, com uma
lista de controle de acesso de mais de 13.000 itens - rápido o
suficiente para a sua rede, não?
A compilação a partir do código fonte exige que você tenha a biblioteca
db (disponível em www.sleepycat.com) instalada. Portanto, prepare-se
para vários downloads e compilações - a não ser que sua distribuição já
conte com uma versão pré-compilada do SquidGuard.
Depois de compilado e instalado de acordo com as instruções do site
oficial, é hora de configurar. Acompanhe as explicações através das
listagens de 1 a 3.
O primeiro arquivo a ser criado é o /etc/squidguard.conf (Listagem 1).
Este arquivo diz quem pode acessar o que e quando. Vamos analisar cada
uma de suas partes.
Listagem 1 - /etc/squidguard.conf
# /etc/squidguard.conf
# parte 1 - definições básicas
logdir /var/squidGuard/logs
dbhome /var/squidGuard/db
# 2 - define uma regra de horário
time horario_livre {
weekly * 00:00-08:00 18:00-24:00
}
# 3 - define um grupo interno
src sala_de_aula {
ip 10.10.200.0/24
}
# 4 - define um segundo grupo
src escritorios {
ip 10.9.0.0/16
}
# 5 - um grupo de destinos
dest porno {
domainlist porno/dominios
urllist porno/urls
}
# 6 - quem pode o que
acl {
# item (a) - escritorios, por horario
escritorios within horario_livre {
pass all
} else {
pass !porno all
}
# item (b) - sala de aula - nunca pornô!
sala_de_aula {
pass !porno all
}
# item (c) - se não for nenhuma origem conhecida, rejeitar
default {
pass none
redirect http://www.nossapagina.com.br/bloqueado.htm
}
}
A primeira parte traz as definições gerais, onde serão gravados os
logs, e os arquivos de definições de destinos proibidos. No exemplo,
escolhemos dois diretórios em /var/squidGuard - eles precisam ser
criados manualmente, com permissão de leitura para todos.
A segunda parte define uma regra de horário, chamada horario_livre, que
vai das 18:00 às 8 da manhã. Você pode ter múltiplas regras de horário,
incluindo configurações baseadas em dias da semana ou do mês. Note que
estamos apenas definindo nomes para as regras, sem dizer se neste
horário vai ser permitido ou negado o acesso - esta parte vem mais
tarde.
A terceira parte define um grupo interno de máquinas, chamado
sala_de_aula. Este grupo é definido através do endereço IP, e sua
máscara é 10.10.200.0/24 - ou seja, qualquer endereço IP que comece com
10.10.200. Se você não está em dia com a sua aritmética de máscaras IP,
é uma boa hora para reler os manuais!
A parte 4 define um segundo grupo interno de máquinas, chamado
escritorios, com a máscara 10.9.0.0/16 - qualquer IP que comece com
10.9.
A quinta parte é um pouco diferente: ela especifica um grupo de
destinos, que toma a forma de dois arquivos texto (cujos conteúdos
estão nas listagens 2 e 3). O primeiro indica um conjunto de nomes de
domínio (exemplo: xporno.com), e o segundo contém fragmentos de URLs
(exemplo: www.exemplo.org/legs) que iremos bloquear logo a seguir. Se
você sabe usar expressões regulares, é possível definir um terceiro
tipo de arquivo, contendo as expressões que deverão ser bloqueadas. O
nome do nosso grupo de destinos é porno, mas você pode ter múltiplos
grupos de destinos, para bloqueá-los de acordo com o horário e com a
origem das requisições de acesso com o máximo de flexibilidade.
A última parte do arquivo é a que irá unir todas as definições acima,
criando regras. Seguimos um exemplo do próprio site oficial do
SquidGuard para demonstrar várias combinações possíveis.
O item (a) define as regras para o escritório. Dentro das horas
definidas em horario_livre, todos os sites podem passar (pass all).
Fora desse horário, vale a regra mais restritiva: exceto pornô, passa
tudo (pass ! porno all).
O item (b) é uma regra mais simples: nas salas de aula, não importa o horário: passa tudo menos pornô (pass !porno all).
Se a origem não for nenhuma das duas acima, caímos no grupo (c) - o
default. No caso, estamos negando todos os acessos: pass none. Além
disso, nesta regra definimos o destino default a ser redirecionado toda
vez que algum usuário tentar acessar uma página a que não tem acesso.
Mas certifique-se de que essa página existe!
Listagem 2 - /var/squidGuard/db/porno/dominios
www.foo.com
xporno.com
zzgirls.net
Listagem 3 - /var/squidGuard/db/porno/urls
www.portalzz.com.br/safadas
www.exemplo.org/legs
Após criar este arquivo, crie os dois arquivos das listagens 2 e 3, e
você já poderá configurar o Squid para utilizar o SquidGuard. Edite o
/etc/squid.conf, acrescentando a seguinte linha (o path do SquidGuard
pode ser diferente, dependendo de como você fez a instalação):
redirect_program /usr/bin/squidGuard
Reinicie o Squid (pode ser através do comando killall -HUP squid) e
teste! Adapte a configuração para as suas necessidades e maximize a
eficiência do uso de sua conexão à web. Uma sugestão extra é definir
regras que bloqueiem os endereços dos banners dos sites mais
freqüentados, evitando assim o tráfego gerado por eles.
Analisando os logs
Controlar o acesso pode não ser suficiente, se você não souber o que e
como cortar. Felizmente o Squid mantém excelentes logs de acesso, e há
ótimos programas capazes de analisar todos estes registros e gerar
relatórios bastante coerentes.
Um dos mais simples de instalar e utilizar é o Calamaris. Ele lê os
seus logs do Squid e gera relatórios por origem, por destino, e vários
outros, contendo picos, médias e todas as outras métricas que você
precisa para saber quem está usando seu servidor proxy, e de que forma.
Os relatórios podem ser gerados em HTML, caso você queira publicá-los
em sua Intranet, ou em texto puro, especial para ser enviado
automaticamente por e-mail (que tal incluí-lo na cron para rodar todos
os dias ao final do expediente?) ou consultado no console.
O Calamaris é em Perl, portanto sua instalação é extremamente simples:
descompacte o arquivo .tar.gz e copie o executável (chamado
'calamaris', sem extensão) para o diretório /usr/bin. Aí, digite
calamaris -- help para ver as opções deste programa, e use-o da
seguinte forma:
cat /var/squid/logs/access.log | calamaris -a -m
Note que a localização do seu arquivo de log de acesso pode variar! A
opção indica que queremos todos os relatórios (-a), em formato mail
(-m). Ao invés do -m, poderíamos usar o -w para gerar em formato web. E
há muitas outras opções disponíveis na documentação, esperando para
serem descobertas e testadas.
O Squid é uma excelente ferramenta para liberar o acesso da sua rede
interna à WWW e a servidores de FTP. Se bem configurado e controlado,
ele permite que você defina exatamente quem pode acessar quais serviços
e bloqueie sites indesejáveis. Com o controle por horários, você pode
ajudar a evitar que o acesso à Internet comprometa a produtividade, sem
ter que bloquear completamente o acesso à Internet - corte apenas os
sites desnecessários!
O SquidGuard é uma excelente ferramenta para implementar as regras de
controle de acesso, e o Calamaris permite que você possa acompanhar
seus resultados. Seu efeito combinado é excelente para a eficiência de
sua rede, e você não deve deixar de experimentar e aplicar estas duas
ferramentas.
Somente usuários registrados podem escrever comentários. Por favor faça o login ou registre-se. Powered by AkoComment 2.0! |