Beruflich Dokumente
Kultur Dokumente
Hoje irei mostrar como instalar o Servidor Squid para compartilhar na sua rede a Internet com melhor desempenho em acessos (Cache) e maior segurana (Proxy) no GNU/Linux.
Instalando o Squid
Debian/Ubuntu
root@cesar.augustus.nom.br's # apt-get install squid3
Aps a instalao, altere o dono e grupo do arquivo "swap.state", seno ir encontrar problemas mais para frente:
root@cesar.augustus.nom.br's # chown proxy:proxy /var/spool/squid3/swap.state
Fedora/CentOS
root@cesar.augustus.nom.br's # yum install squid
Slackware Baixe o pacote do Squid, suas dependncias e instale: http://repository.slacky.eu/slackware(...)/squid-3.0.stable18-i486-1sl.tgz ftp://ftp.slackware-brasil.com.br/slackware(...)/d/gcc-4.2.4-i486-1.tgz ftp://ftp.slackware-brasil.com.br/slackware(...)/d/gcc-g++-4.2.4-i486-1.tgz
root@cesar.augustus.nom.br's # installpkg gcc-4.2.4-i486-1.tgz # installpkg gcc-g++-4.2.4-i486-1.tgz # installpkg squid-3.0.stable18-i486-1sl.tgz
# # # #
ln ln ln ln
-s -s -s -s
Configurando o Squid
O arquivo de configurao do Squid se encontra no seguinte caminho: Debian/Ubuntu: "/etc/squid3/squid.conf" Fedora/CentOS: "/etc/squid/squid.conf" Slackware: "/etc/squid/squid.conf" Para comear com a configurao do zero, renomeie o arquivo de configurao padro, crie um novo arquivo com o nome "squid.conf" e adicione as seguintes configuraes:
http_port 3128 visible_hostname servidor cache_mgr webmaster@localhost
http_port: determina a porta que ser usada pelo servidor. visible_hostname: defina o nome de exibio do servidor. cache_mgr: defina o e-mail do administrador para receber mensagem em casos graves. Para definir o idioma das pginas de mensagem de erros em portugus brasileiro, adicione a seguinte configurao: Debian/Ubuntu
error_directory /usr/share/squid3/errors/Portuguese
Fedora/CentOS
error_directory /usr/share/squid/errors/pt-br
Slackware
error_directory /usr/share/squid/errors/Portuguese
Cache
O cache onde fica armazenado os objetos (arquivos e pginas) quando acessa as pginas ou baixar arquivos pela Internet. Ao invs de toda vez que um usurio for acessar um site e ter que esperar baixar a pgina toda e os arquivos direto da hospedagem, o servidor verifica se j existe no cache podendo baixar direto do servidor, melhorando o desempenho na navegao. Para configurar o cache no Squid, adicione as seguintes configuraes:
hierarchy_stoplist cgi-bin ? cache_mem 32 MB maximum_object_size_in_memory 64 KB maximum_object_size 100 MB
carregada direto do cache. cache_mem: defina a quantidade de memria que o servidor ir usar para o cache. maximum_object_size_in_memory: defina o tamanho mximo do objeto que poder ser armazenado na memria, seno ser armazenado no disco rgido. maximum_object_size: defina o tamanho mximo do objeto que poder ser armazenado no disco rgido, seno ser descartado o objeto. Para especificar o diretrio do cache, aonde ser armazenado os objetos e atribuir 2GB de espao de armazenamento no cache, adicione a seguinte configurao: Debian/Ubuntu
cache_dir ufs /var/spool/squid3 2048 16 256
Fedora/CentOS
cache_dir ufs /var/spool/squid 2048 16 256
Slackware
cache_dir ufs /var/log/squid/cache 2048 16 256
Agora vamos definir o tempo de vida dos objetos no cache, para que sempre o Squid for verific-los, saber se necessrio atualiz-los ou no.
refresh_pattern ^ftp: 360 refresh_pattern -i (/cgi-bin/|\?) 0 refresh_pattern . 0 20% 0% 20% 10080 0 4320
1 coluna: defina o tempo em minutos, em cada acesso, quando deve verificar se houve modificao no objeto. 2 coluna: defina a porcentagem mnima da modificao do objeto que deve ter para ser atualizado. 3 coluna: defina o tempo em minutos, quando deve efetuar uma atualizao mesmo no ter sido modificado. Para especificar o caminho do Log de acesso do Squid e o caminho do Log do cache, adicione a seguinte configurao: Debian/Ubuntu
access_log /var/log/squid3/access.log cache_log /var/log/squid3/cache.log
Fedora/CentOS
access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log
Slackware
access_log /var/log/squid/logs/access.log cache_log /var/log/squid/logs/cache.log
Controle de Acesso
A ACL ou Lista de Controle de Acesso, onde define aonde pode acessar ou no pela Internet. Uma coisa importante que deve saber que o Squid interpreta as ACL's de cima para baixo, ento deve ficar atento quando for criar as regras. Crie duas acl com o tipo src (IP de origem) e adicione o IP do servidor e o IP da rede:
acl localhost src 127.0.0.1/32 acl localnet src 192.168.0.0/24
Crie uma acl com o tipo proto (protocolo) e adicione o protocolo "cache_object":
acl manager proto cache_object
O protocolo "cache_object" usado para obter informaes sobre o estado do Squid. recomendvel que permita apenas o servidor obter as informaes do Squid, ento adicione a seguinte regra:
http_access allow manager localhost http_access deny manager
Crie uma acl do tipo method (mtodo de requisio) e adicione o mtodo PURGE:
acl purge method PURGE
O mtodo de requisio PURGE serve para limpar/excluir objetos armazenados no cache. Para permitir que apenas o servidor possa exclua objetos, adicione a seguinte regra:
http_access allow purge localhost http_access deny purge
Crie uma acl do tipo port (porta) e adicione as portas que sero liberadas:
acl Safe_ports port 21 70 80 210 280 443 488 563 591 631 777 873 901 1025-65535
Se quiser deixar mais organizado, ou seja, adicionar uma porta de cada vez para poder comentar em cada linha a descrio do protocolo da porta que est sendo liberada, tambm pode deixando assim:
acl acl acl acl acl acl acl acl acl acl acl acl acl acl Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports Safe_ports port port port port port port port port port port port port port port 21 # ftp 70 # gopher 80 # http 210 # wais 280 # http-mgmt 443 # https 488 # gss-http 563 # nntps 591 # filemaker 631 # cups 777 # multiling http 873 # rsync 901 # swat 1025-65535 # unregistered ports
Para bloquear o acesso em portas que no foram liberadas, adicione a seguinte regra:
Crie uma acl do tipo method (mtodo de requisio) e adicione o mtodo CONNECT, que permite fazer conexo direta:
acl connect method CONNECT
Crie uma acl do tipo port (porta) e adicione as portas dos protocolos com SSL que foram adicionadas na acl "Safe_ports" e devem ser liberadas para conexo direta:
acl SSL_ports port 443 acl SSL_ports port 563 acl SSL_ports port 873 # https # nntps # rsync
Para bloquear o acesso em portas que no foram liberadas para conexo direta, adicione a seguinte regra:
http_access deny connect !SSL_ports
Crie uma acl do tipo dstdomain (domnio de destino) e adicione um dminio iniciando com o ponto:
acl domains dstdomain .twitter.com
Se no caso for vrios domnios de destino, define o caminho do arquivo que ser adicionado os domnios:
acl domains dstdomain "/etc/squid/domains"
Crie uma acl do tipo url_regex (expresso regular na url) e adicione uma expresso regular:
acl words url_regex jogo
A acl do tipo url_regex percorre url em busca de expresses regulares. A acl case-sensitive, se no caso estiver procurando a expresso "jogo" e tiver "Jogo", sero consideradas diferentes. Para adicionar vrias expresses, define o caminho do arquivo que ser adicionado as expresses. E use a opo "-i" para tornar a acl em case-insensitive:
acl words url_regex -i "/etc/squid/words"
blog msn
Para bloquear o acesso em urls com as expresses regulares, adicione a seguinte regra:
http_access deny words
Criar uma acl do tipo urlpath_regex (expresso regulares no caminho da url) e define o caminho do arquivo que ser adicionado as expresses regulares:
acl extensions urlpath_regex -i "/etc/squid/extensions"
A acl do tipo urlpath_regex semelhante a url_regex, s que ignorado o domnio e protocolo. Por exemplo, essa url "http://www.dominio.com.br/blog/invasao.html", ir fazer a busca da expresso regular apenas nessa parte "/blog/invasao.html": Crie o arquivo que foi definido na acl e adicione as expresses regulares:
\.bat($|\?|\&) \.exe($|\?|\&) \.scr($|\?|\&)
Para bloquear o acesso em urls path com expresses regulares, adicione a seguinte regra:
http_access deny extensions
Sem mais acl para criar, adicione a seguinte regra para permitir que apenas as mquinas da rede e o servidor sejam liberados para acessar a Internet:
http_access allow localnet http_access allow localhost http_access deny all
Com as acl definidas, a sequncia das regras devero est na ordenao correta, independente esteja a acl junto com a regra. O que importa que esteja criada a acl antes de definir a regra. Aqui vai uma amostra de como deve est ordenado as regras:
http_access http_access http_access http_access http_access http_access http_access http_access http_access http_access http_access http_access allow manager localhost deny manager allow purge localhost deny purge deny !Safe_ports deny connect !SSL_ports deny domains deny words deny extensions allow localnet allow localhost deny all
Pronto.
A obra Instalando o Servidor Squid no Linux de Cesar Augustus Silva foi licenciada com uma Licena Creative Commons - Atribuio - Partilha nos Mesmos Termos 3.0 No Adaptada. Permisses adicionais ao mbito desta licena podem estar disponveis em http://creativecommons.org/.
http://blog.cesar.augustus.nom.br/instalando-o-servidor-squid-no-linux.html