FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD - Instalao e configurao do squid
 
08.07  
Inicio arrow Artigos arrow Instalao e configurao do squid
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histrico da Lista
Forum
Keyserver
PC-BSD: Artigos
PC-BSD: Notcias
Galeria de Imagens
Contador Usurios FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS / Twitter
-
DOC-BR (FUG BR)
Introduo
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usurio

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma


Instalao e configurao do squid PDF Imprimir E-mail
Por Guilherme Rosrio   
12/06/2006

Estamos republicando o artigos sobre Proxy e Cache HTTP desenvolvido por <Heini Thomas Geib>.
Heini Thomas é um dos membros ativos da comunidade FreeBSD no Brasil, e produz vários materiais de qualidade sobre o sistema.

FreeBSD

Proxy e Cache HTTP

Squid


O Squid é um software largamente utilizado como servidor proxy e cache HTTP em diversos tipos de redes, como corporativas, de provedores, universidades etc. Possui alta performance e suporta os protocolos HTTP, FTP e Gopher. A sua página é www.squid-cache.org. De um modo simplificado, o Squid recebe os pedidos de usuários que desejam visualizar páginas externas e verifica se tem a página em cache. Se tiver a página em cache, verifica se ela ainda é válida e envia para o cliente. Se não tiver a página em cache, busca a página no servidor externo, armazena no cache e manda para o cliente. Assim, na próxima vez que alguém solicitar esta página a mesma será carregada muito mais rapidamente, pois estará em um cache local. Entre as principais vantagens de utilizar o Squid estão:

· Aumento na segurança, pois todas as requisições para páginas externas irão passar através do proxy;
· Aumento da velocidade de navegação e/ou diminuição da utilização do link Internet, já que muitas páginas acessadas pelos usuários estarão em cache local;
· Possibilidade de definir uma política de acesso, bloqueando páginas fora do escopo a que se destina a Internet na instituição, como chat, pornografia etc.


O Squid necessita de um diretório no disco onde irá armazenar o seu cache. Geralmente, em máquinas com esse propósito criamos um filesystem especial para o Squid, que pode ser /squid, onde serão guardados o cache e os logs. O tamanho do cache pode ser determinado pela configuração do Squid, e quanto maior o cache mais páginas serão armazenadas e mais rápida será a navegação.

Efetue o download da última versão estável do Squid, a partir do seu site. A versão atual é 2.5 STABLE4, e o arquivo se encontra em http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE14.tar.gz. Extraia este arquivo no /tmp, e vá até o diretório que será criado.

Execute os seguintes comandos:

# ./configure --prefix="/usr/local" --sysconfdir="/usr/local/etc/squid" --localstatedir="/var" --enable-storeio="ufs diskd" --enable-removal-policies="lru heap" --enable-default-err-language="Portuguese" --disable-hostname-checks
# make
# make install

O executável do Squid será instalado em /usr/local/sbin/squid. O arquivo de configuração será /usr/local/etc/squid/squid.conf. Deve ainda ser removido o diretório /var/logs (iremos utilizar outro diretório para os logs do Squid):

# rmdir /var/logs

Crie um usuário e um grupo de nome squid:

# pw group add squid -g 180
# pw user add squid -c "Squid" -d "/nonexistent" -s "/sbin/nologin" -u 180 -g 180

Crie o diretório /var/log/squid, para armazenar os logs do Squid. Atribua a este diretório o dono squid e aplique a permissão 750.

Vá até o diretório /usr/local/etc. Visualize o arquivo squid.conf.default e veja todas as opções. Segue abaixo um exemplo sintetizado do arquivo squid.conf. Copie-o no diretório mencionado. Mantenha o squid.conf.default como referência.

-------------------- Arquivo squid.conf --------------------
# squid.conf

# Define em qual ip e porta o Squid devera aguardar requisicoes.
# Pode ser definido o IP interno, no caso de uma maquina com
# mais de uma interface. Tambem pode ser especificada apenas a
# porta. O padrao eh ouvir todas as interfaces na porta 3128.
#http_port 10.10.0.5:3128

# O parametro no_cache define que determinados objetos não deverão
# ser armazenados em cache. Eh preciso primeiro definir uma acl
# indicando quais os objetos. Em seguida aplica-se o no_cache a
# esta acl.
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

# O parametro cache_mem nao especifica o tamanho maximo do processo
# do Squid, que ira ultrapassar este valor. O cache_mem se destina a
# especificar o espaco em memoria destinado aos objetos em transito e
# outros importantes. A prioridade eh dos objetos em transito, e
# apenas o espaco restante sera ocupado pelos outros (Hot Objects e
# Negative-Cached Objects). Se o espaco necessario para os objetos
# em transito for maior que cache_mem sera alocada mais memoria,
# ou seja, cache_mem nao especifica um limite de memoria. O padrao
# eh 8 MB.
#cache_mem 8 MB

# Tamanho maximo dos objectos armazenados no cache no disco.
# O padrao eh 4096 KB.
#maximum_object_size 4096 KB

# Tamanho minimo dos objetos armazenados no cache no disco.
# O padrao eh 0, sem limite.
#minimum_object_size 0 KB

# Tamanho maximo dos objetos mantidos em memoria.
# O padrao eh 8 KB.
#maximum_object_size_in_memory 8 KB

# O parametro cache_replacement_policy determina qual a politica
# de substituicao dos objetos quando se esgota o espaco destinado
# ao cache em disco.
# lru: mantem os objetos referenciados recentemente.
# heap GDSF: otimiza o "hit rate" por manter objetos pequenos e
# e populares no cache, guardando assim um numero maior de objetos.
# heap LFUDA: otimiza o "byte hit rate" por manter objetos populares
# no cache sem levar em conta o tamanho. Se for utilizado este, o
# maximum_object_size devera ser aumentado para otimizar o LFUDA.
cache_replacement_policy heap GDSF

# O memory_replacement_policy define a politica de substituicao dos
# objetos em memoria, da mesma forma como o cache_replacement_policy.
# Os valores possiveis são os mesmos. O padrao eh lru.
#memory_replacement_policy lru

# O cache_dir define qual o diretorio e qual o espaco
# utilizado para o cache no disco. Podem ser definidos
# varios diretorios se necessario. O tamanho (em MB) nao deve
# ser o tamanho total da particao, descontar no minimo
# 20%.
# cache_dir diskd Diretorio Tamanho 16 256 Q1=72 Q2=64
cache_dir diskd /squid 1000 16 256 Q1=72 Q2=64

# Log de requisicoes.
cache_access_log /var/log/squid/access.log

# Log do cache.
cache_log /var/log/squid/cache.log

# Log de objetos guardados. Pode ser desativado.
cache_store_log none

# Arquivo com o PID.
pid_filename /var/log/squid/squid.pid

# Tempo de espera para resolver conexoes pendentes antes de
# efetuar o shutdown do Squid. O padrao eh 30 seconds.
shutdown_lifetime 10 seconds

# ACLs gerais.
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563 10000
acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777
acl CONNECT method CONNECT

# ACL que define os clientes permitidos. Especificar as redes que
# irao utilizar o cache.
acl clientes src 10.10.0.0/16 10.20.0.0/16

# ACLs para paginas proibidas. Os arquivos especificados conterao
# as ACLs, para facilitar a edicao.
acl proibido-url url_regex -i "/usr/local/etc/squid/proibido-url"
acl proibido-urlpath urlpath_regex -i "/usr/local/etc/squid/proibido-urlpath"
acl proibido-dominios dstdom_regex -i "/usr/local/etc/squid/proibido-dominios"

# Permitir ou negar o acesso baseado nas acls.
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny proibido-url
http_access deny proibido-urlpath
http_access deny proibido-dominios
http_access allow clientes
http_access deny all

# Usuario sob o qual ira rodar o Squid.
cache_effective_user squid

# Grupo sob o qual ira rodar o Squid.
cache_effective_group squid

# Hostname completo.
visible_hostname squid.exemplo.org

# Opcoes para suportar proxy transparente.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

# Numero de arquivos de log rotacionados a guardar.
logfile_rotate 4

# O parametro always_direct permite definir que as requisicoes
# preenchendo as exigencias de determinada ACL serao sempre
# encaminhadas direto ao servidor requisitado. Exemplo:
#acl servidores-locais dstdomain dominiolocal.org
#always_direct allow servidores-locais

# Evita que sejam feitos coredumps.
coredump_dir none

-------------------- Fim do arquivo squid.conf --------------------

O diretório no qual o Squid irá guardar o cache deverá ter o dono squid e permissão 750.

Como estaremos utilizando o diskd, é interessante fazer um certo tuning, adicionando algumas opções no kernel. Adicione as opções abaixo, e após isso recompile e instale o novo kernel, e reinicie a máquina.


# Suporte a memoria compartilhada.
options SYSVSHM

# Maximo de segmentos de memoria compartilhada por processo.
options SHMSEG=16

# Numero maximo de identificadores de memoria compartilhada.
options SHMMNI=32

# Tamanho maximo de segmento de memoria compartilhada.
options SHMMAX=2097152

# Numero maximo de paginas de memoria compartilhada.
options SHMALL=4096

# Suporte a filas de mensagens.
options SYSVMSG

# Numero maximo de bytes por fila de mensagem.
options MSGMNB=16384

# Numero maximo de identificadores de filas de mensagens.
options MSGMNI=41

# Numero maximo de segmentos de mensagem no sistema.
options MSGSEG=2049

# Tamanho de um segmento de mensagem.
options MSGSSZ=64

# Numero maximo de mensagens no sistema.
options MSGTQL=2049



Após ter configurado, execute o Squid pela primeira vez com a opção "-z":

# /usr/local/sbin/squid -z

Isto irá criar a estrutura de diretórios que irá suportar o cache.

Para efetuar o serviço de proxy transparente, este servidor deverá encaminhar para a porta do Squid as requisições HTTP vindas dos clientes, da rede interna por exemplo. Para isso, você deverá ter um firewall configurado e funcionando, veja a seção IPFW2. Coloque a seguinte regra no ipfw2:

add 800 fwd 127.0.0.1,3128 dst-port { 80 or 21 } src-ip 10.10.0.0/16
add 810 allow dst-port 3128 dst-ip 10.10.0.5 src-ip 10.10.0.0/16
add 900 deny dst-port 3128

A rede 10.10.0.0/16 no exemplo é a rede interna, cujas requisições nas portas 80 e 21 serão direcionadas para a porta 3128 em localhost. Também será permitido que máquinas da rede local contatem o Squid, caso o proxy seja configurado manualmente. O ip 10.10.0.5 no exemplo é o da interface do servidor conectada a rede interna. A terceira regra irá bloquear qualquer outro tráfego tendo como destino a porta 3128. Estas regras devem ficar antes da(s) regra(s) do NAT, caso esteja utilizando-o.


Vá até o diretório /usr/local/etc/squid. Poderão ser criados os arquivos proibido-url, proibido-urlpath e proibido-dominios, todos com o dono squid. Estes arquivos deverão possuir a relação de páginas cujo acesso não será permitido. Deverão ter uma entrada por linha, e descritas em expressões regulares - na maioria das vezes não são necessárias espressões muito elaboradas, bastando inserir as strings, uma por linha. O arquivo proibido-url deve conter as strings que serão verificadas contra toda a URL. O proibido-urlpath, as strings que serão verificadas contra a URL completa menos o nome do servidor e domínio, por exemplo no endereço www.exemplo.org/testes/pagina, o urlpath é apenas "testes/pagina". Já o proibido-dominios é o contrário, contém as strings que serão verificadas apenas contra o nome e domínio do site, no exemplo anterior seria "www.exemplo.org". Um excelente guia sobre expressões regulares se encontra no endereço http://aurelio.net/er/.


Para que os logs do Squid sejam rotacionados na freqüência desejada, insira uma linha no arquivo /etc/crontab que execute o comando "squid -k rotate". O exemplo abaixo faz com que a rotação seja feita todo sábado às 23h58min:

58 23 * * 6 root /usr/local/sbin/squid -k rotate

Crie um script de inicialização para o Squid, em /usr/local/etc/rc.d/squid.sh. Os comandos de inicialização e shutdown deverão ser, respectivamente:

/usr/local/sbin/squid

e

/usr/local/sbin/squid -k shutdown

 

FONTE: http://www2.unijui.tche.br/~heini/freebsd/squid.html

 

Comentrios
Por Este endereo de e-mail est sendo protegido de spam, voc precisa de Javascript habilitado para v-lo em 02/08/2006 17:06:41
otimo o artigo com ele estou entrando em um mundo que nunca tinha visto e estou me saindo bem voces esto de parabens
Apanha para isntalar o squid
Por pro2 em 18/12/2006 20:13:03
ou amigo estou com dificildade de instalar o squid ja consegui fazer ate a parte 
Execute os seguintes comandos: 
 
# ./configure --prefix=\"/usr/local\" --sysconfdir=\"/usr/local/etc/squid\" --localstatedir=\"/var\" --enable-storeio=\"ufs diskd\" --enable-removal-policies=\"lru heap\" --enable-default-err-language=\"Portuguese\" --disable-hostname-checks 
 
 
# make ==>> esta aqui no esta dando certo o que posso esta errando  
tenho que esta em qual diretoria, olha me desculpa por esta pergunta mais tenho pouco conhecimento em FreeBsd, sei muito de ruindows mais como diria um professor me da faculdade estou acostumando com next, next, .... finish 
# make install
squid
Por pro2 em 18/12/2006 20:15:28
ou amigo estou com dificildade de instalar o squid ja consegui fazer ate a parte 
Execute os seguintes comandos: 
 
# ./configure --prefix=\"/usr/local\" --sysconfdir=\"/usr/local/etc/squid\" --localstatedir=\"/var\" --enable-storeio=\"ufs diskd\" --enable-removal-policies=\"lru heap\" --enable-default-err-language=\"Portuguese\" --disable-hostname-checks 
 
 
# make ==>> esta aqui no esta dando certo o que posso esta errando  
tenho que esta em qual diretoria, olha me desculpa por esta pergunta mais tenho pouco conhecimento em FreeBsd, sei muito de ruindows mais como diria um professor me da faculdade estou acostumando com next, next, .... finish 
# make install
Por pro2 em 18/12/2006 20:19:28
ou amigo estou com dificildade de instalar o squid ja consegui fazer ate a parte antes do make ==>> esta aqui no esta dando certo o que posso esta errando  
tenho que esta em qual diretoria, olha me desculpa por esta pergunta mais tenho pouco conhecimento em FreeBsd, sei muito de ruindows mais como diria um professor me da faculdade estou acostumando com next, next, .... finish
erro permission denied
Por Lazaro em 27/02/2008 15:48:03
Brother  
quando tento subir a swap da permission denied 
 
/usr/local/squid/cache -z permission denied 
 
no squid.conf  
 
o usr e grp squid 
 
a pasta esta pra grp e usr squid com permisso 750 
/etc/squid  
tbm estao configurados  
 
mesmo assim da erro quando tento subir a swap pode me ajudar por favor um abrao!
Squid 3.0
Por flmacedo em 11/02/2009 07:55:59
Bom dia pessoal, estou com um probleminha aqui, sou novato no mundo do bsd, instalei o bsd 7.1-stable + squid 3.0 rodando, estou usando o ipfw com as regras padres do adicionei as regras para direcionar a navegao para o squid 
/sbin/ipfw add 100 allow tcp from 192.168.1.166 to any 80 
/sbin/ipfw add 101 fwd 127.0.0.1,3128 tcp from any to any 80 
ai todas as maquinas navegam pelo squid funcionando normal, o problema que existem maquinas na minha rede que precisam rodar fora do squid, e j tentei varias regras e no consegui, alguem tem alguma sugesto para me dar? 
tenho as placas re0 - interface externa - ip 192.168.1.166 
rl0 - interface interna  
rl1 - interface interna - ip - 10.0.0.0 preciso liberar por exemplo o ip 10.0.0.200 para que navegue fora do proxy.  
desde j agradeo a ajuda,
TxbKGihiiQfCIWGL
Por Ajay em 27/02/2013 21:39:35
Salmonella.dkNice one using it to block like url.THXGetting back at them. :twisted:Using dansguardian with squid, you can rpceale all instances of Facebook with Foolbook pretty easy :in /etc/dansguardian/lists/contentregexplist insert 2 lines Facebook -> Foolbook Foolbook.com -> Facebook.com with this users can still surf facebook.


Comente!*
Nome:
E-mail
Homepage
Ttulo:
Comentrio:

Cdigo:* Code

ltima Atualizao ( 12/06/2006 )
 
< Anterior   Prximo >
FUG-BR - Espalhando BSD
Dicas Rpidas:
 






Wallpapers
Sua Opiniao
Online:
Ns temos 26 visitantes online


Devil Store - Sua loja BSD
FreeBSD Brasil LTDA

FUG-BR: Desde 1999, espalhando BSD pelo Brasil.