Classificamos aqui como Squid Ninja um squid com
serviços de proxy transparente, controle de acesso a páginas, bloqueio de
banners, autenticação e controle de banda.
1.1 Sobre o autor
Eri Ramos Bastos trabalha com Linux desde 1998, passando por diversas distribuições
e fases diferentes do pinguim. Atualmente trabalha como consultor em soluções
Linux / Unix e está disponível para ajudar a sua empresa a implantar
Linux em todos os setores.
1.2 Requisitos
A maior parte das configurações depende apenas
do Squid. O proxy transparente também depende do sistema operacional e do
firewall, sendo que irei citar aqui somente a dupla Linux/Iptables, mas já
deixo avisado de ante-mão que é possível em outros Unix*.
A instalação padrão do squid, disponível na maior parte das distribuições,
não consegue lidar com o controle de banda, sendo necessário recompilar o
Squid.
Não é muito difícil ter o squid funcionando
na máquina, sendo que a maioria das distribuições já o disponibilizam na
instalação padrão. Caso queira o controle de banda, DESINSTALE o squid que
veio na sua distribuição e instale a partir do código, como descrito
abaixo.
# groupadd squid
# useradd -g squid -s /dev/null squid >/dev/null 2>&1
# wget http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE7-src.tar.gz
# tar zxvf squid-2.4.STABLE7-src.tar.gz
# cd squid-2.4.STABLE7
# ./configure --enable-delay-pools --enable-cache-digests --enable-poll --disable-ident-lookups
--enable-truncate --enable-removal-policies
# make all
# make install
# cd auth_modules/NCSA
# make
# make install
2.2 Baixando em binário
No site do próprio Squid
existe referência a distribuições em binário.
Para instalação no Debian, o clássico apt-get install squid resolve.
No freebsd, basta ir aos ports e lá está também o squid.
2.3 Configurações básicas - ACLs
Como comentado mais tarde, toda a estrutura do Squid é baseada em listas de
acessos. Por isso vamos criar uma lista de acesso básica para nossos usuários.
Vamos supor que nossa rede interna seja 192.168.5.0/24. Crie a seguinte linha no
squid.conf, na seção de ACLs (TAG: acl):
acl rede_interna src 192.168.5.0/24
E a seguinte linha na seção de acesso (TAG: http_access)
Esse recurso é muito útil para evitar que
seus usuários "burlem" o proxy removendo as configurações do
browser. Eles serão obrigados a passar pelo proxy, mesmo que as máquinas
não estejam configuradas para tal. Extremamente recomendado,
principalmente em casos de bloqueio de sites ou limitação de banda.
3.1 Configurando o Squid
O arquivo de configuração do squid é o squid.conf, normalmente ele se
encontra em /etc/squid.conf ou em /usr/local/squid/etc/squid.conf. Caso não
encontre o seu em nenhum desses lugares, procure-o com o comando locate
squid.conf ou da forma que preferir.
Vamos editar as seguintes linhas:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Essas linhas estão comentadas no squid.conf
original. Descomente-as. Caso não as encontre, insira os dados acima.
3.2 Configurando o iptables
Provavelmete você já tenha seu script de inicialização do firewall,
sendo assim a unica coisa necessária inserir essa linha nele:
Todas as configurações de usuários, grupos, horários e SITES são
configuradas em ACLs (Access Control Lists) do Squid. Portanto, vamos criar
2 ACLls que irão fazer o bloqueio dos sites indesejados. A ordem em que as
ACLs aparecem é muito importante, por isso a ACL que bloqueia os sites deve
ser a primeira a aparecer.
Procure no seu squid.conf onde começam a ser descritas as ACLs. Geralmente
a primeira ACL a aparecer é:
acl all src 0.0.0.0/0.0.0.0
4.1 Criando os arquivos necessários:
Vamos fazer o seguinte:
# mkdir /etc/squid/bloqueados ou
# mkdir /usr/local/squid/etc/bloqueados
# touch /etc/squid/bloqueados/block.txt ou
# touch /usr/local/squid/etc/bloqueados/block.txt
# touch /etc/squid/bloqueados/unblock.txt ou
# touch /usr/local/squid/etc/bloqueados/unblock.txt
O Arquivo block.txt irá conter todos os
sites e palavras que você deseja bloquear e o unblock.txt todas as excessões.
Como assim, você pergunta.
Vamos supor que você tenha bloqueado a palavra sexo. Então você não
poderá entrar em www.sexo.com.br, mas também não poderá entrar em www.sexoesaude.com.br.
Ora, mas esse segundo site é inofensivo, portanto não deveria ser
bloqueado. Basta colocá-lo no unblock.txt
4.2 Editando o squid.conf
Vamos ao squid.conf
Insira as linhas abaixo logo antes de acl all src 0.0.0.0/0.0.0.0:
Banner é uma coisa chata! Que me perdoem os
anunciantes, mas eu não suporto banner nem pop-up. Mas o pior de tudo é
que elas consomem banda e quase nunca ajudam o Squid, pois estão em
constante mudança. Com a solução mostrada aqui, todos os banners serão
substituidos por uma imagem pré-definida, podendo inclusive ser
personalizada. Muito legal em empresas ou provedores de acesso em conjunto
com o proxy transparente.
# tar zxvf bannerfilter-1.05.tar.gz
# cd bannerfilter-1.05
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/squid/bannerfilter
ou /usr/local/squid/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..
Pressione Crtl-C para parar. Não pule esse passo, pois nele você poderá
descobrir erros.
5.2 Editando o squid.conf
Procure pela seção que fala sobre redirect (TAG: redirect_program) e
insira a linha:
redirect_program /etc/squid/bannerfilter/redirector.pl
ou
É um recurso bem interessante para controle
pessoal de usuários. Isso permite que você crie ACLs individuais e gere
LOGs de qualidade bem superior.
6.1 ncsa_auth
Usaremos o ncsa_auth por ser simples e já
vir com o código do squid, mas não podemos deixar de citar o ncsa_plus
do Pedro Orso e o smb_auth
de Richard Huveneers.
Se você fez a instalação do Squid como recomendamos acima, o ncsa_auth
já está instalado. Caso esteja usando a instalação padrão da sua
distribuição procure pelo mesmo (locate ncsa_auth)
6.2 Editando o squid.conf
Procure pela seção que fala sobre autenticação (TAG:
authenticate_program) e insira as linhas:
Dependendo da sua distribuição, o
ncsa_auth pode estar em vários lugares, como /usr/bin, /usr/sbin e assim
por diante! Verifique onde está a sua e coloque as linhas acima de
acordo!
Quanto ao authenticate_children 5, é o suficiente se sua rede não
é muito grande. Mude o valor de acordo com suas necessidades.
Agora vamos editar novamente a ACL de nossa rede interna (aquela da seção
2.3)
Esse é um feature muito útil para quem tem
uma banda estreita, ou simplesmente tem prioridades para sua banda.
O recurso do squid que usamos aqui é chamado de delay pools. É necessário
que o squid tenha sido compilado com essa opção ativa, conforme instruções
da seção 2.
7.1 Editando o squid.conf
Vamos adicionar algumas linhas. A primeira vai evitar que haja restrição
de banda internamente, por isso não deixe de colocá-la.
Luiz Henrique Escrito por Visitante em 2006-05-11 15:22:17usando o ncsa_auth eu posso utilizar em conjunto com proxy transparente???
Proxy Transparente e Squid Escrito por claudio em 2006-05-12 08:15:10Luiz, a autenticação não funciona com proxy transparente, pois a tela de autenticação "aparece" no browser porque foi enviada uma requisição de proxy, entao o squid reconhece que a requisição e envia a janela de autenticação, sem o proxy habilitado no browser, o squid não recebe uma requisição de proxy, mas sim de HTTP e não envia a janela.
Mas exise uma maneira, descrita no artigo: Squid transparente com autenticação pelo NatACLartigo
Somente usuários registrados podem escrever comentários. Por favor faça o login ou registre-se.