Squid-Cache.org.br
 A Casa Brasileira do Squid
Advertisement  
    
Thursday, September 09 2010  
Início arrow Artigos arrow Instalação arrow Configurando um Squid "Ninja" Mini HOW-TO
Menu Principal
Início
Artigos
Dicas
Links
Cursos
Contato
Suporte
Publicação
Patrocínio:  
 
 
 
 
Configurando um Squid "Ninja" Mini HOW-TO Imprimir E-mail
Avaliação do Usuário: / 11
PiorMelhor 
Autoria de Postado por Claudio   
07 de abril de 2006
Configurando um Squid "Ninja" Mini HOW-TO
 

1. Introdução
    1.1 Sobre o autor
    1.2 Requisitos
 
2. Instalando o Squid
 2.1 Baixando o código-fonte
 2.2 Baixando em binário
 2.3 Configurações básicas - ACLs
 2.4 Referências

3. Transparent Proxy
  3.1 Configurando o squid
  3.2 Configurando o iptables
  3.3 Configurando o PF (OpenBSD)
  3.4 Configurando o IPFilter (FreeBSD)
  3.5 Referências

4. Bloqueando sites indesejados
  4.1 Criando os arquivos necessários
  4.2 Editando o squid.conf
  4.3 Referências

5. Bloqueio de banners
  5.1 Baixando e instalando o Banner Filter
  5.2 Editando o squid.conf
  5.3 Referências

6. Autenticando usuários
  6.1 ncsa_auth
  6.2 Editando o squid.conf
  6.3 Referências

7. Controle de Banda
  7.1 Editando o squid.conf
  7.2 Referências

8. Utilidades Públicas
  8.1 Resetando o cache do squid
 
9. Outras referências

1. Introdução

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.


2. Instalando 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.

2.1 Baixando o código-fonte

Na data de criação desse documento, a versão mais recente (estável) do squid era a 2.4STABLE7.
Verifique a versão mais recente em: http://www.squid-cache.org/Versions/v2/.


# 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)
  • http_access allow rede_interna

    2.4 Referências
    Documentação oficial do Squid

    3. Transparent Proxy

    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:

    • iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
    3.3 Configurando o PF (OpenBSD)
    Adicione a seguinte linha ao seu /etc/nat.conf (levando em consideração que sua interface interna seja fxp1)
    • rdr on fxp1 from any to any port 80 -> 127.0.0.1 port 3128
    3.4 Configurando o IPFilter (FreeBSD)
    Adicione as seguintes linhas ao seu /etc/rc.conf

  • ipfilter_enable="YES"
  • ipnat_enable="YES"
  • ipmon_enable="YES"
  • ipfs_enable="YES"
    Adicione as seguintes linhas ao seu /etc/ipnat.rules (levando em consideração que o rl0 é sua interface interna)

  • rdr rl0 0/0 port 80 -> 127.0.0.1 port 3128 tcp

    3.5 Referências
    LDP - Transparent Proxy with Linux and Squid mini-HOWTO


    4. Bloqueando Sites indesejados

    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:

  • acl blockedsites url_regex -i "/etc/squid/bloqueados/block.txt"
  • acl unblockedsites url_regex -i "/etc/squid/bloqueados/unblock.txt"
    ou

  • acl blockedsites url_regex -i "/usr/local/squid/etc/bloqueados/block.txt"
  • acl unblockedsites url_regex -i "/usr/local/squid/etc/bloqueados/unblock.txt"

    Agora procure no seu squid.conf a linha http_access deny all e coloque antes dela:

  • http_access deny blockedsites !unblockedsites


    4.3 Referências
    Squid Blocking Files
    Squid and Web Utilities


    5. Bloqueio de Banners

    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.

    5.1 Baixando e instalando o Banner Filter

    Baixe o Banner Filter do seu site oficial.

    # 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

  • redirect_program /usr/local/etc/bannerfilter/redirector.pl
    5.3 Referências
    BannerFilter


    6. Autenticando usuários

    É 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:

  • authenticate_program  /usr/local/squid/bin/ncsa_auth /etc/passwd
  • authenticate_children 5

    ATENÇÃO!!
    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)

  • acl rede_interna src 192.168.5.0/24 proxy_auth REQUIRED
    6.3 Referências
    ViSolve - Squid Configuration Manual
    NCSA Plus
    SMB proxy authentication

    7. Controle de Banda
    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.


  • acl controle1 url_regex -i 192.168.5
  • acl controle2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov
  • delay_pools 2
  • delay_class 1 2
  • delay_parameters 1 -1/-1 -1/-1
  • delay_access 1 allow controle1
  • delay_class 2 2
  • delay_access 2 allow rede_interna
  • delay_access 2 allow controle2
    7.2 Referências
    Bandwidth Limiting HOWTO

    8. Utilidades Públicas
    Aqui estão alguns comandos que podem ser úteis em alguns casos. Espero incluir mais coisas aqui em breve.

    8.1 Resetando o cache do squid
    Pode ocorrer do squid travar alguma vez. Para tentar resolver isso, pare o squid e execute:

    #squid -z

    9. Outras referências
    ViSolve
    Daemon News
  • Comentários
    Luiz Henrique
    Escrito por Visitante em 2006-05-11 15:22:17
    usando o ncsa_auth eu posso utilizar em conjunto com proxy transparente???
    Proxy Transparente e Squid
    Escrito por claudio em 2006-05-12 08:15:10
    Luiz, 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.

    Powered by AkoComment 2.0!

    Última Atualização ( 24 de abril de 2006 )
    < Anterior   Próximo >
    10 Mais populares
    10 Últimas Postagens


    Usuários Online
    Nós temos 133 visitantes online
    Estatísticas
    Membros: 2187
    Notícias: 133
    Links: 35
    Visitantes: 1365831

    Login
    Nome de Usuário

    Senha

    Lembrar login
    Esqueceu sua senha?
    Sem conta? Crie uma


     



     

    Colaborar é preciso!