Vous êtes sur la page 1sur 5

FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

Instalao e configurao do squid


Autoria de Guilherme Rosrio 12/06/2006 ltima Atualizao 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 vrios materiais de qualidade sobre o sistema. FreeBSDProxy e Cache HTTPSquid

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 pgina www.squid-cache.org. De um modo simplificado, o Squid recebe os pedidos de usurios que desejam visualizar pginas externas e verifica se tem a pgina em cache. Se tiver a pgina em cache, verifica se ela ainda vlida e envia para o cliente. Se no tiver a pgina em cache, busca a pgina no servidor externo, armazena no cache e manda para o cliente. Assim, na prxima vez que algum solicitar esta pgina a mesma ser carregada muito mais rapidamente, pois estar em um cache local. Entre as principais vantagens de utilizar o Squid esto: Aumento na segurana, pois todas as requisies para pginas externas iro passar atravs do proxy; Aumento da velocidade de navegao e/ou diminuio da utilizao do link Internet, j que muitas pginas acessadas pelos usurios estaro em cache local; Possibilidade de definir uma poltica de acesso, bloqueando pginas fora do escopo a que se destina a Internet na instituio, como chat, pornografia etc.

O Squid necessita de um diretrio no disco onde ir armazenar o seu cache. Geralmente, em mquinas com esse propsito criamos um filesystem especial para o Squid, que pode ser /squid, onde sero guardados o cache e os logs. O tamanho do cache pode ser determinado pela configurao do Squid, e quanto maior o cache mais pginas sero armazenadas e mais rpida ser a navegao. Efetue o download da ltima verso estvel do Squid, a partir do seu site. A verso 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 diretrio 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 executvel do Squid ser instalado em /usr/local/sbin/squid. O arquivo de configurao ser /usr/local/etc/squid/squid.conf. Deve ainda ser removido o diretrio /var/logs (iremos utilizar outro diretrio para os logs do Squid): # rmdir /var/logs Crie um usurio 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 diretrio /var/log/squid, para armazenar os logs do Squid. Atribua a este diretrio o dono squid e aplique a permisso 750. V at o diretrio /usr/local/etc. Visualize o arquivo squid.conf.default e veja todas as opes. Segue abaixo um exemplo sintetizado do arquivo squid.conf. Copie-o no diretrio mencionado. Mantenha o squid.conf.default como referncia. -------------------- Arquivo squid.conf -------------------# squid.conf # Define em qual ip e porta o Squid devera aguardar requisicoes.
http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 5 December, 2013, 21:16

FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

# 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 no devero # 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 so 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
http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 5 December, 2013, 21:16

FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

# 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.
http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 5 December, 2013, 21:16

FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

coredump_dir none -------------------- Fim do arquivo squid.conf -------------------O diretrio no qual o Squid ir guardar o cache dever ter o dono squid e permisso 750. Como estaremos utilizando o diskd, interessante fazer um certo tuning, adicionando algumas opes no kernel. Adicione as opes abaixo, e aps isso recompile e instale o novo kernel, e reinicie a mquina. # 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

Aps ter configurado, execute o Squid pela primeira vez com a opo "-z": # /usr/local/sbin/squid -z Isto ir criar a estrutura de diretrios que ir suportar o cache. Para efetuar o servio de proxy transparente, este servidor dever encaminhar para a porta do Squid as requisies HTTP vindas dos clientes, da rede interna por exemplo. Para isso, voc dever ter um firewall configurado e funcionando, veja a seo 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 requisies nas portas 80 e 21 sero direcionadas para a porta 3128 em localhost. Tambm ser permitido que mquinas 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 trfego tendo como destino a porta 3128. Estas regras devem ficar antes da(s) regra(s) do NAT, caso esteja utilizando-o.

V at o diretrio /usr/local/etc/squid. Podero ser criados os arquivos proibido-url, proibido-urlpath e proibido-dominios, todos com o dono squid. Estes arquivos devero possuir a relao de pginas cujo acesso no ser permitido. Devero
http://www.fug.com.br _PDF_POWERED _PDF_GENERATED 5 December, 2013, 21:16

FUG-BR / Grupo Brasileiro de Usuarios de FreeBSD

ter uma entrada por linha, e descritas em expresses regulares - na maioria das vezes no so necessrias espresses muito elaboradas, bastando inserir as strings, uma por linha. O arquivo proibido-url deve conter as strings que sero verificadas contra toda a URL. O proibido-urlpath, as strings que sero verificadas contra a URL completa menos o nome do servidor e domnio, por exemplo no endereo www.exemplo.org/testes/pagina, o urlpath apenas "testes/pagina". J o proibido-dominios o contrrio, contm as strings que sero verificadas apenas contra o nome e domnio do site, no exemplo anterior seria "www.exemplo.org". Um excelente guia sobre expresses regulares se encontra no endereo http://aurelio.net/er/.

Para que os logs do Squid sejam rotacionados na freqncia desejada, insira uma linha no arquivo /etc/crontab que execute o comando "squid -k rotate". O exemplo abaixo faz com que a rotao seja feita todo sbado s 23h58min: 58 23 * * 6 root /usr/local/sbin/squid -k rotate Crie um script de inicializao para o Squid, em /usr/local/etc/rc.d/squid.sh. Os comandos de inicializao e shutdown devero ser, respectivamente: /usr/local/sbin/squid e /usr/local/sbin/squid -k shutdown

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

http://www.fug.com.br

_PDF_POWERED

_PDF_GENERATED 5 December, 2013, 21:16

Vous aimerez peut-être aussi