By Marcos Oliveira,

Squid Blog Linux

O Squid é um servidor proxy que suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições freqüentes de páginas web numa rede de computadores. Ele pode também ser usado como um proxy reverso.

Instalação

Para instalar o Squid no Debian e Debians-Like (Ubuntu, Linux Mint…):

su
apt-get install squid3

O Arquivo de configuração do Squid:

vi /etc/squid3/squid.conf

no arquivo que se abrirá, apague tudo (pode fazer um backup do arquivo antes) e inclua o seguinte código:

http_port 3128
visible_hostname marcospinguim
cache_mgr marcospinguim@linuxmail.org
error_directory /usr/share/squid3/errors/Portuguese

http_port: DETERMINA A PORTA QUE SERÁ USADA PELO SERVIDOR. visible_hostname: DEFINA O NOME DE EXIBIÇÃO DO SERVIDOR. cache_mgr: DEFINA O E-MAIL DO ADMINISTRADOR PARA RECEBER MENSAGEM EM CASOS GRAVES. error_directory: DEFINA O IDIOMA DAS PÁGINAS DE MENSAGEM DE ERROS EM PORTUGUÊS.

Cache

No cache são armazenados os objetos da Internet (ex. dados de páginas web) disponíveis via protocolo HTTP, FTP e Gopher num sistema mais próximo ao do cliente. Os navegadores podem então usar o Squid local como um servidor Proxy HTTP, reduzindo o tempo de acesso aos objetos e reduzindo a utilização da conexão.

Para configurar o cache no Squid, adicione as seguintes configurações:

hierarchy_stoplist cgi-bin ?
cache_mem 64 MB
maximum_object_size_in_memory 128 KB
maximum_object_size 200 MB
cache_dir ufs /var/spool/squid3 4096 16 256

hierarchy_stoplist: DEFINA PALAVRAS QUE SE FOR ENCONTRADAS NA URL, A PÁGINA IRÁ SER CARREGADA DIRETO DO CACHE. cache_mem: DEFINA A QUANTIDADE DE MEMÓRIA QUE O SERVIDOR IRÁ USAR PARA O CACHE. maximum_object_size_in_memory: DEFINA O TAMANHO MÁXIMO DO OBJETO QUE PODERÁ SER ARMAZENADO NA MEMÓRIA, SENÃO SERÁ ARMAZENADO NO DISCO RÍGIDO. maximum_object_size: DEFINA O TAMANHO MÁXIMO DO OBJETO QUE PODERÁ SER ARMAZENADO NO DISCO RÍGIDO, SENÃO SERÁ DESCARTADO O OBJETO. cache_dir ufs /var/spool/squid3 4096 32 512: O DIRETÓRIO DO CACHE, AONDE SERÁ ARMAZENADO OS OBJETOS E ATRIBUIR 4GB DE ESPAÇO DE ARMAZENAMENTO NO CACHE.

Definindo o tempo de vida dos objetos, para o Squid saber se deve atualizar ou não.

refresh_pattern ^ftp:    360 20% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern .    0 20% 4320

1ª coluna: defina o tempo em minutos, em cada acesso, quando deve verificar se houve modificação no objeto. 2ª coluna: defina a porcentagem mínima da modificação do objeto que deve ter para ser atualizado. 3ª coluna: defina o tempo em minutos, quando deve efetuar uma atualização mesmo não ter sido modificado.

Insira essa configiração abaixo também no arquivo para especificar o caminho do LOG de acesso e do Cache:

access_log /var/log/squid3/access.log
cache_log /var/log/squid3/cache.log

Controle de Acesso

A ACL ou Lista de Controle de Acesso, é onde define aonde pode acessar ou não pela Internet. Uma coisa importante que deve saber é que o Squid interpreta as ACL’s de cima para baixo, então 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 intranet src 192.168.1.1/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 informações sobre o estado do Squid.

É recomendável que permita apenas o servidor obter as informações do Squid, então adicione a seguinte regra:

http_access allow manager localhost
http_access deny manager

Crie uma acl do tipo method (método de requisição) e adicione o método PURGE:

acl purge method PURGE

O método de requisição 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 serão 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 descrição do protocolo da porta que está sendo liberada, também pode deixando assim:

acl Safe_ports port 21    # ftp
acl Safe_ports port 70    # gopher
acl Safe_ports port 80    # http
acl Safe_ports port 210   # wais
acl Safe_ports port 280   # http-mgmt
acl Safe_ports port 443   # https
acl Safe_ports port 488   # gss-http
acl Safe_ports port 563   # nntps
acl Safe_ports port 591   # filemaker
acl Safe_ports port 631   # cups
acl Safe_ports port 777   # multiling http
acl Safe_ports port 873   # rsync
acl Safe_ports port 901   # swat
acl Safe_ports port 1025-65535   # unregistered ports

Para bloquear o acesso em portas que não foram liberadas, adicione a seguinte regra:

http_access deny !Safe_ports

Crie uma acl do tipo dstdomain (domínio de destino) e adicione um dóminio iniciando com o ponto:

acl domains dstdomain .twitter.com

Se no caso for vários domínios de destino, define o caminho do arquivo que será adicionado os domínios:

acl domains dstdomain "/etc/squid/domains"

Crie o arquivo que foi definido na acl e adicione os domínios de destino:

.orkut.com
.google.com
.youtube.com

Para bloquear o acesso nos domínios de destino, adicione a seguinte regra:

http_access deny domains

Crie uma acl do tipo url_regex (expressão regular na url) e adicione uma expressão regular:

acl words url_regex orkut

A acl do tipo url_regex percorre url em busca de expressões regulares. A acl é case-sensitive, se no caso estiver procurando a expressão “jogo” e tiver “Jogo”, serão consideradas diferentes.

Para adicionar várias expressões, define o caminho do arquivo que será adicionado as expressões. E use a opção “-i” para tornar a acl em case-insensitive:

acl words url_regex -i "/etc/squid/words"

Crie o arquivo que foi definido na acl e adicione as expressões regulares:

microsoft
google
orkut
windows

Para bloquear o acesso em urls com as expressões regulares, adicione a seguinte regra:

http_access deny words

Criar uma acl do tipo urlpath_regex (expressão regulares no caminho da url) e define o caminho do arquivo que será adicionado as expressões regulares:

acl extensions urlpath_regex -i "/etc/squid/extensions"

A acl do tipo urlpath_regex é semelhante a url_regex, só que é ignorado o domínio e protocolo. Por exemplo, essa url “http://www.invasao.com.br/site/index.php”, irá fazer a busca da expressão regular apenas nessa parte “/site/index.php”:

Para bloquear o acesso em urls path com expressões regulares, adicione a seguinte regra:

http_access deny extensions

Sem mais acl para criar, adicione a seguinte regra para permitir que apenas as máquinas da rede e o servidor sejam liberados para acessar a Internet:

http_access allow intranet
http_access allow localhost
http_access deny all

Após ter terminado as configurações, recarregue as configurações no Squid:

/etc/init.d/squid3 reload

Fontes:

http://pt.wikipedia.org/

http://www.hardware.com.br/

http://blog.cesar.augustus.nom.br/

Curso Extremamente Avançado em Shell Script Bash

Você irá descobrir técnicas avançadas de escrever em Shell Script. Como criar instaladores para distribuições Linux, Animações, Documentações, além de tudo sobre Processos em sistemas tipo UNIX, detalhes sobre Comandos Avançados e Muito Mais !