Como configurar o Squid 

Escrito por Fabio Centenaro • Nov 6th, 2007 • Categoria: Linux, Sistemas Operacionais

Atendendo a pedidos, escrevi este artigo que mostra como configurar o Squid. Para quem não conhece, o Squid é um servidor proxy, ou seja, é um programa que permite que vários computadores naveguem na internet através do computador na qual o Squid está instalado. Com o Squid também é possível bloquear o acesso à internet, liberando sites ou IP’s, bloqueando sites como o Orkut e programas como o MSN Messenger. Atualmente é um dos melhores (senão o melhor) na sua área. É um programa leve que pode ser rodado até em máquinas antigas, como 486 e Pentium 100 mhz, sem perda de performance.

O Squid pode ser instalado tanto em Linux quando em Windows, porém neste último é necessária a instalação do Cygwin, que nada mais é do que um emulador do shell do Linux para Windows. Para escrever este artigo, estarei utilizando o Cygwin, rodando em uma máquina com o Windows XP.

A maioria das distribuições Linux já vem com o Squid, sendo necessária apenas a instalação do pacote. Para Windows, a instalação é bem simples: baixe o Cygwin, comece a instalação e selecione o Squid na lista de pacotes. No Windows, existe um problema no arquivo executável do squid que é instalado com o Cygwin. Para corrigir o problema, é necessário fazer uma alteração no arquivo utilizando um editor hexadecimal. Para simplificar as coisas, coloquei para download o arquivo já modificado: O arquivo está zipado; descompacte-o e substitua o arquivo original por este.

Feita a instalação, começaremos a configurar o Squid de acordo com as nossas necessidades. O arquivo de configuração squid.conf fica na pasta /etc/squid no Linux ou c:\cygwin\etc no Windows. Abrindo este arquivo com o bloco de notas (ou notepad ;) ), iniciamos então a configuração propriamente dita.

Começando a brincadeira

Podemos criar regras de acesso de várias maneiras. O mais comum é bloquear determinados sites deixando os outros liberados ou bloquear todos os sites e apenas alguns liberados. E pra complicar mais um pouco, existe o caso de estações que devem ter o acesso liberado, no caso dos fdp dos chefes, por exemplo.

A sintaxe básica para criar uma regra é:
acl nome_da_regra tipo IP_ou_domínio
onde:
acl - comando para regra
nome_da_regra – nome de identificação da regra
tipo - para bloquear/liberar domínios, usamos dstdomain. Para partes de endereços de sites, usamos url_regex e para endereços de IP’s, usamos src.

Ex.:

acl joao dstdomain .centenaro.org
acl maria url_regex “centenaro”
acl chefe src 192.168.1.1

Existe também a opção de se criar uma lista em um arquivo texto (.txt) contendo todos os sites a serem bloqueados ou liberados, sendo colocado cada site em uma linha diferente. Assim, ao invés de informarmos o domínio ou IP, passamos o caminho do arquivo com a lista. Ex:
acl joao dstdomain “c:\cygwin\etc\liberados.txt”
No arquivo de texto, teríamos:
.centenaro.org
.terra.com.br
.orkut.com
Note o ponto (.) no início da linha. Devemos sempre começar uma linha com ponto (.) e depois o domínio ou expressão. Outra questão importante é criar a lista de acordo com o tipo da regra. Se formos bloquear domínios, a lista deve ser formada na forma de domínios (.centenaro.org) e para partes de endereço (url_regex), utilizamos .*centenaro*, que bloqueia qualquer endereço contendo a palavra “centenaro”.
A regra para liberar ou bloquear TODOS os endereços é:

acl all src 0.0.0.0/0.0.0.0

Até aqui apenas criamos as regras de acesso: se vamos permitir que determinados sites sejam acessados ou não. Agora vamos ver como fazer com que as regras tenham efeito. O comando para isso é http_access, cuja sintaxe é:

http_access tipo nome_regra
onde:
tipo - usa-se allow para liberar e deny para bloquear.
nome_regra – É o nome da regra definido anteriormente

Ex.:

http_access deny restricao
http_access deny porn
http_access allow chefe
http_access deny msn
http_access allow all

Aqui está o meu arquivo squid.conf, com as linhas comentadas (este é um arquivo real, rodando em produção em alguns clientes):

*O caractere # indica que é um comentário, ou seja, o squid ignora o que vem depois disso, até o fim da linha.

http_port 8080 #indica a porta a ser usada.
dns_nameservers 200.199.252.68 #DNS do provedor que acesso a internet. No caso, Brasil Telecom

acl msn url_regex -i /gateway/gateway.dll #bloqueio do MSN Messenger
acl restricao url_regex -i “C:\cygwin\etc\liberados.txt” #pega a lista de sites liberados
acl orkut url_regex .”*orkut*” #Bloqueio do orkut
acl chefe src 192.168.200.150 #conf. do micro do chefe, acesso liberado
acl all src 0.0.0.0/0.0.0.0

http_access deny orkut
http_access allow chefe
http_access deny msn
http_access allow all

request_body_max_size 0 MB #linha para permitir uploads de qualquer tamanho. Para sites em que é necessário enviar arquivos.
cache_mem 32 mb #tamanho do cache
cache_effective_user administrador #usuário para gravação do cache em disco
cache_effective_group administradores #grupo do usuário para gravação do cache

Feitas as configurações, o último passo agora é rodar o squid. Abra a janela do Cygwin e digite as seguintes linhas:

squid -z (Enter)
squid -d 1 (Enter)

Agora já é possível começar a navegar através do proxy. Não se esqueça de configurar o navegador (Internet Explorer, Firefox) para utilizar o proxy.
Esta foi apenas uma visão geral, com o básico para colocar este poderoso servidor proxy em funcionamento. A partir disso, é possível compartilhar a conexão com a internet entre os computadores da rede, restringindo acessos. ;)

Após fazer alterações nos arquivos de configuração, para que elas tenham efeito, é necessário usar o comando:
squid -k reconfigure

Bloqueando e liberando sites em determinados horários

O script abaixo serve para liberar (ou bloquear) sites em determinados horários.

#regra para bloquear o MSN Messenger
acl msn url_regex -i /gateway/gatewway.dll

#lista dos sites a serem bloqueados
acl bloqueados url_regex -i “/etc/squid/block.txt”

#lista de sites a serem desbloqueados
acl desbloqueados url_regex -i “/etc/squid/unblock.txt”

#define a faixa de horários
acl mail src 000.000.0.0
acl manha time MTWHF 08:00-12:00
acl almoco time MTWHF 12:00-13:00
acl tarde time MTWHF 13:00-17:00

#faz as devidas liberações e bloqueios
http_access allow mail !bloqueados
http_access allow mail sites almoco
http_access deny mail sites manha
http_access deny mail sites tarde

Material de Apoio

Para mais informações, indico os seguintes livros:


Tagged as: , , , , ,

Compartilhe:

Adicionar esta notícia no Linkk


Leia também



28 comentários »

  1. Bom bom seu artigo…Parabéns!!

    Você já conseguiu configurar como proxy transparente no windows?

  2. O meu amigo! Parabéns. A explicação foi a melhor, mais simples e mais objetiva que eu encontrei até então.

  3. gostei foi o unico que eu consegui entender realmente, pena que falta a parte de compartilhamento

    indique um site simples

    um abraço

  4. Dario,

    Que parte de compartilhamento é essa que você fala? Afinal, o artigo inteiro fala sobre configurar o squid para compartilhar a conexão com a internet.

  5. Então, preciso configurar o squid na minha rede, trabalho com a distru slackware 12 e intalei o squid 3.0 stable5, poderia me informar como configurá-lo via web? ou só é possível via terminal? Se der como via web, poderia me informar os passos? como faço?
    agradeço.
    Ah, e mto boa suas dicas de configuração, são bem claras…

  6. Oh, de todo o tempo que tive batendo cabeça com configuração com o squid para windows, de toda a internet, essa foi a melhor explicação que tive… mas o fator e cache e possivel? com o windows e o Cygwin, indica um site ou envia um comentario…

  7. sim eu ja consegui monta um proxy transparenteno windows ficou bem legal mais de vez enquando ele da uma travada no teste de dns mais eu desativei ficou normal flw

  8. se eu apagar toda aquela lista do squid e colocar so esses comando que vc colocou ele funciona?
    da pra navegar na net? é so colocar o proxy no clientes e tha pronto?
    valeu

  9. ADOREI ESSE ARTIGO, MAS ME SURGIU UMA DÚVIDA NO WINDOWS XP TEM O PROPRIO PROXY, COMO FAÇO PARA DESABILITA-LO?

  10. Ola amigo, nunca havia mexido com o squid, qual devo baixar para o windows Xp, e onde baixo? e que tenho uns sobrinhos na minha casa que ficam acessando site inadequados ai presciso bloquear, se puder me ajuadar grato

  11. Por favor, sera que teria como vc me explicar passa a passo como intalar o squid e os demais programas para windows, porque o resto ja esta explicado acima.

  12. Caro colega conforme vc já falou o proprio proxy já compartilha a conexão, mas no windows eu tenho que informar qual será a placa de rede compartilhada para acessar a internet, como eu informo para o sistema squid em qual placa ira receber as informações da internet ??????? e que placa será usada para a rede interna informando o IP para cada estação de trabalho?????

    espero ter sido claro nas minhas perguntas

  13. Olá fabio, tendo apenas uma estação, para que ela acesse apenas dois sites especificos, eh só fazer assim?

    iptables -t nat -A POSTROUTING -p tcp –dport 80 -j DNAT –to-destination 192.168.0.1:3128

    onde 192.168.0.1 eh o seu servidor squid e 3128 eh a porta que o squid roda..

    agora no squid.conf

    acl all src 0.0.0.0/0.0.0.0
    acl rede src 192.168.0.0/24
    acl livre src 192.168.0.1 192.168.0.2
    acl sites url_regex -i “/etc/squid/sites”

    http_access allow livre
    http_access deny rede !sites
    http_access deny all

    o resto do squid.conf eu apago?

  14. Muito bom, agora realmente entendi!
    Seria muuuiito interessante vc escrever outro artigo mostrando como configurar um proxy transparente com squid no Cygwin…
    Desde já muito obrigado mesmo.

  15. Muito bom, continue assim cara vc mandou bem na explicação
    abraço
    valeu

  16. Por favor!
    Amigo, tenhoo squid configurado e rodando emum servidor com o Windows Sever 2003, e ele funciona bem, com uma unica excesão não estou conseguindo receber nem enviar e-mail’s pelo outlook nas estações de trabalho “clientes” caso você conheça uma solução para este meu problema, ficarei muito agradecido, no linux eu utilizava os iptables, para resolver este problema mas e quanto o windows, o que podeser feito?
    Des de já muito Obrigado!
    Abraços e ateh mais.
    meu e-mail eh aruake@hospitalbomretiro.com.br

  17. Fantastico suas explicações, mais didatico impossivel, infelizmente estou com o mesmo problema do colega Aruake, não consigo fazer os e-mails chegarem no outlook, tem alguma dica? Obrigado!

  18. Edson,
    O Squid é apenas um proxy http, ou seja, possibilita a navegação na internet. Para utilizar o Outlook, é necessário que a porta do servidor POP (que é a que o Outlook usa para se conectar) esteja aberta e aceite o tráfego de rede. Normalmente esta porta é bloqueada com algum firewall. Nesse caso, se a porta não estiver aberta, se o firewall estiver bloqueando-a, não será possível utlizar o Outlook.

  19. Me perdoa pela pergunta, pois sou iniciante….
    Como eu inicio a regra, no brazilfw com squid?
    Preciso bloquear todo conteudo da internet, e liberar somente alguns sites.
    se possivel me mande um passo a passo

  20. Jorge,

    O próprio artigo é um passo-a-passo de como fazer a configuração. Basta segui-lo e voilá!

  21. ola gostaria de saber como instalar e configurar o squid?
    ja baixei a versão do squid 2.6 nt
    e baixei tambem o cygwin que é o emulador de acordo com site que visitei .
    detalhe ja copiei o squid pra dentro da unidade c:/. Antes de instalar o cygwin será que vai da certo?intalando o cygwin depois?

  22. OLA AMIGO – APESAR DA OBJETIVIDADE EM SUAS EXPLICAÇÕES ACIMA, AINDA NAO ESTOU A ALTURA DE INSTALAR E CONFIGURAR AQUI PARA TESTAR UM PEQUENO PROVEDOR NO XP – SP2. PODERIA INDICAR UM PASSO A PASSO DA INSTALAÇÃO. POIS E´O SEGUNDO EXEMPLO NA WEB QUE TENTO FAZER E NAO CONSIGO. OBRIGADO E PARABENS.

  23. Caro Fabio,

    Seu artigo esta ótimo continue assim explicando as coisas detalhadamente, precisamos de articuladores desse nível.
    Abraços

  24. O melhor artigo que achei sobre squid!!!

    Porem ao instalar o cygwin não encontrei o pacote do squid na instalação. Então não encontro o squid.conf. na pasta c:\cygwin\etc
    Espero sua resposta

  25. Boa tarde

    Já instalei o squid e configurei, está tudo ok, mas para funcionar eu preciso ir maquina a maquina e apontar o proxy manualmente, porque senão as maquinas continuam liberadas, não tem como fazer isso automaticamente pelo squid?

  26. Caro amigo achei excelente a sua explicação, porém estou querendo implantar no windows 2003 server, os procedimentos você poderia me ajudar. Grato antecipadamente.

  27. Olá,

    eu instalei o Squid para Xp no meu PC, com uma regra que peguei em uma revista, ele bloqueia os sites através de uma lista txt e libera todos os outros que não estiverem na lista, dessa forma funciona perfeitamente.
    Como eu não domino muito configurar o Squid, peço aqui a ajuda: eu preciso configurar o squid com autenticação, de forma que ele só libere o que estiver na lista de “liberados” e bloqueie todos os outros sites, é possível? Na autenticação, é possível criar um usuário que passe por essa regra e um outro usuário com acesso total?

    Abraços

  28. Eu consegui resolver o problema de recebimento de mensagens via outlook ativando e configurando o servido de NAT no windows server 2003. Caso alguem esteja tendo este problema, faça isso que irá dar certo…
    Abraços a todos…

    Att.
    Aruake Nascimento Mourão.

Deixe um comentário