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:

Confira ofertas de: DVD, filmes, celular, notebook, livros, jogos, Wii, PS3, MP4

Tagged as: , , , , ,

8 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

Deixe um comentário