Servidor proxy (Squid)

ixw

Um servidor proxy é uma peça importante em uma rede interna que tenha contato com outra pública, pois implementa uma série de facilidades e controles. Ao final do artigo você será capaz de instalar e configurar o servidor proxy (Squid), além de fazê-lo atuar como proxy transparente.

[ Hits: 213.985 ]

Por: Guilherme Souza Zanoni em 18/05/2007


Lista de acessos



  • http_access: permite clientes http (browsers) acessarem a porta http. Esta ACL é a primária;
  • icp_access: permite caches "vizinhos" fazerem requisições ao seu cache através do protocolo ICP;
  • miss_access: permite a alguns clientes fazerem encaminhamento (forward) através de seu cache;
  • no_cache: define respostas que não deverão ser armazenadas no cache;
  • always_direct; controla quais requisições deverão ser sempre encaminhadas diretamente aos servidores de origem;
  • never_direct: controla quais requisições nunca deverão ser sempre encaminhadas diretamente aos servidores de origem;
  • snmp_access: controla acesso ao agente SNMP do squid;
  • cache_peer_access: controla quais requisições poderão ser encaminhadas a um servidor de cache vizinho. (peer)

Uma regra de lista de acesso consiste da palavra allow (permitir) ou deny (negar), seguido de uma lista de nomes de elementos ACL.

Uma lista de acesso consiste em uma ou mais regras de acesso.

As listas de acesso são verificadas na mesma ordem em que foram escritas. A pesquisa na lista termina assim que uma requisição satisfazer uma regra.

Se uma regra possuir múltiplos elementos de ACL, esta usará o operador lógico AND. Em outras palavras, todos os elementos de uma regra precisarão ser validos para que esta regra seja válida. Isto significa que é possível escrever uma regra que nunca será válida. Por exemplo, um número de porta nunca poderá ser igual a 80 e 8000 ao mesmo tempo.

Vejam alguns exemplos práticos:

Se você quiser impedir que qualquer usuário acesse paginas que contenham a palavra "cracker" na URL, acrescente as seguintes linhas no seu squid.conf:

acl proibir_cracker url_regex cracker
http_access deny proibir_cracker

E o bloqueio ainda pode ser para máquinas específicas. Imagine que o usuário da máquina cujo IP é 10.0.0.95 esteja ocupando muito a sua rede, transferindo arquivos de música em formato MP3. Para bloquear este usuário especifico, use a regra como a de baixo:

acl mp3 url_regex mp3
acl usr_ofensor src 10.0.0.95/255.255.255.255
http_access deny usr_ofensor mp3

Se quiser proibir todos os usuários de acessarem um determinado site:

acl site_proibido dstdomain .orkut.com
http_access deny all site_proibido

Também é possível permitir ou proibir o acesso em determinados dias e horários:

acl tempo_proibido time MTWHF 15:00-16:00
acl usr_ofensor src 10.0.0.95/255.255.255.255
http_access deny usr_ofensor tempo_proibido

A regra acima bloqueia o acesso à internet para o IP 10.0.0.95 durante o período das 15:00 às 16:00 horas. A opção MTWHF indica os dias da semana em inglês. Também podem ser utilizadas as opções A e S que equivalem ao sábado e ao domingo respectivamente.

Existem casos que uma empresa gostaria de liberar o acesso a internet apenas durante o horário de almoço. Para isso, a seguinte regra poderia ser aplicada:

acl funcionários src 10.0.0.0/0
acl acesso_almoco time MTWHF 12:00-13:00
http_access allow funcionários acesso_almoco
http_access deny funcionários

Dependendo do número de domínios ou de palavras-chave listadas em ACLs é aconselhável construir uma lista em um arquivo separado e indicá-lo no squid.conf. O arquivo com uma lista de domínios ou de expressões regulares a serem bloqueadas deve conter uma entrada por linha, como no exemplo:

Orkut
Playboy
Sexo
Blog
Fotolog

Caso o arquivo seja salvo em /etc/squid/sites_proibidos, por exemplo podemos indicá-lo no arquivo de configuração do squid da seguinte maneira:

acl funcionários src 10.0.0.0/0
acl proibidos url_regex "/etc/squid/sites_proibidos"
http_access deny funcionários proibidos

Após incluir todas as suas regras restritivas, não se esqueça de incluir regras especificando que tudo o que não estiver expressamente proibido deve ser permitido. Na configuração original do squid.conf, as linhas serão como a que segue:

acl rede_local src 10.0.0.0/255.0.0.0
http_access allow all rede_local

Note que você deve definir a "rede_local" como conjunto de endereço IP e máscara que melhor descrevem a sua rede.

Normalmente o seu squid.conf virá com linhas como as que seguem:

#
# INSERT YOUR OWN RULE(S) HERE ALLOW ACCESS FROM YOUR CLIENTS
#
http_access deny all

Ela serve para bloquear o acesso ao Squid até que ele seja configurado, e é interessante você deixá-lo como última regra, pois desta forma, se a requisição não satisfazer nenhuma regra o squid irá bloqueá-la.

Página anterior     Próxima página

Páginas do artigo
   1. Conceitos de servidores proxy
   2. Instalação e configuração do Squid
   3. Controle de acesso
   4. Lista de acessos
   5. Proxy transparente
Outros artigos deste autor

Bloqueando conteúdo com Squid no RedHat 9

Leitura recomendada

Autenticando Squid utilizando MySQL

Instalação do Squid 3.2.0.14 no Slackware com execução em ambiente chroot

Squid - Bloqueando definitivamente o MSN Messenger e Orkut

Squid transparente com cache de arquivos + Windows Update + taxa de transferência em downloads

Squid balanceado com LVS

  
Comentários
[1] Comentário enviado por pingus em 18/05/2007 - 11:09h

Muito bom . Mas se eu quiser fazer um cache em minha maquina sem uma rede local, somente para bloqueio de algumas páginas e fazer cache das paginas que acessa a internet. posso usar o mesmo principio apenas omitindo a rede local?

Valeu.

[2] Comentário enviado por calaff2 em 18/05/2007 - 13:50h

muito bom man!! Viva a liberdade Viva o Linux!

[3] Comentário enviado por andersonjackson em 18/05/2007 - 14:52h

Legal cara parabéns.

Só a minha contribuição para proxy transparente no squid 2.6.x
no squid.conf basta colocar:
http_port 3128 transparent

e no firewall a regra que nosso amigo informou:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-dest IP:3128

Um abraço.

[4] Comentário enviado por thyagofs em 18/05/2007 - 19:41h

Muito bom. Sao de artigos assim que a comunidade precisa. Bastante detalhado...
parabéns !

[5] Comentário enviado por bestmoor em 19/05/2007 - 11:07h

otima mateira , muito bem explicada e com detalhes.
so me tira uma duvida
tenho o proxy todo instalado squid transparente bloqueando varios sites como faco para liberar todos os sites somente para uma maquina tentei liberar assim mais nao funcionou , detalhe esta no topo do .conf

# liberar site para
acl liberar src 192.168.0.254/255.255.255.0
http_acess allow all liberar

[6] Comentário enviado por eduardofraga em 19/05/2007 - 18:31h

O erro de sintaxe:

http_acess allow all liberar

O correto é:

http_access allow all liberar

[7] Comentário enviado por bestmoor em 19/05/2007 - 21:47h

ops ....eu foi erro de digitacao ...no .config estava correto...

[8] Comentário enviado por bestmoor em 19/05/2007 - 21:49h

acabei refazendo todo squid.config e o problema se resolveu mais obrigado......as vezes procuramos tanto um problemas que ele passa despercebido...valeu

[9] Comentário enviado por mcaju em 20/05/2007 - 20:34h

Muito bom artigo! vai me servir bastante. TKS.

[10] Comentário enviado por agk em 24/05/2007 - 16:16h

Parabéns pelo artigo, bem explicado, até me deu umas idéias, vi que você falou sobre snmp, vou ver se implemento um esquema pra monitorar o squid com o mrtg ou Cacti.

[11] Comentário enviado por paulo.neto em 28/05/2007 - 22:27h

ixw - Fiz curso num Centro Mandriva. Acho excelente o trabalho da Mandriva, pois os materiais que ela publica são de excelente qualidade. Vendo o teu artigo, vi que é uma cópia fiel da apostila de Administração de Redes II, capítulo 5. Legal compartilhar este conhecimento aqui. Não sei se a Mandriva vai é gostar, mas é isso.

[12] Comentário enviado por eltondhiego em 01/06/2007 - 18:41h

òtimo artigo! Parabéns!!

[13] Comentário enviado por oiciruam em 28/08/2007 - 09:16h

Cara acabei de configurar minha rede. To usando o bloqueio para alguns sites. Tenho 20 maquinas na rede e gostaria de liberar o acesso ao Orkut para 05 dessas maquinas. Como faço essa configuração.

[14] Comentário enviado por lipecys em 28/09/2007 - 16:34h

Valew o artigo........

[15] Comentário enviado por analistapa em 01/10/2007 - 09:56h

Implantei o proxy transparente (Squid + Iptables) agora to com uma dúvida...Como liberar um IP da rede interna pra navegar por fora do proxy (especificamente os sites da CEF). Devo altera alguma configuração no squid ou alterar ou inlcuir alguma regra no iptables?

[16] Comentário enviado por celsof2 em 26/03/2008 - 03:45h

sao otimos as dicas

[17] Comentário enviado por fernandofranco em 14/03/2009 - 12:18h

boa tarde, amigo

tenho um servidor fedora 9, com squid 3.0 rodando, e estou com um problema quando eu abilito no firewall pra passagem do squid nao consigo mais navegar, ai tenho que comenta a linha no firewall para que posso volta a navegar normalmente, já procurei em um monte de forum sobre isso, se poder me ajuda agradeço.

sou novo em linux.

[18] Comentário enviado por casallunga em 17/12/2009 - 20:17h

Estou necessitando de um servidor proxy, já tenho a máquina, e optei por utilizar a distro Debian para o servidor proxy. preciso saber se você tem essas informações em formato pdf para imprimir. Parabéns pela matéria, ficou muito bem exclarecida mesmo.

[19] Comentário enviado por bradroger em 20/07/2010 - 08:47h

Estou precisando configurar o meu Squid para fornecer cotas de acesso à Internet por tempo de uso por determinado usuário, por exemplo o usuário X só pode acessar Y minutos por dia.

Alguém pode me ajudar com isso?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts