EMotaWeb - Linux - Squid
Data: 10/02/2004


1. Apresentação
Proxy representa o serviço de armazenamento de algo (cache/guardar).
Usando simplesmente o termo "Proxy", temos o serviço de armazenamento de páginas web (sites).
Existem outros serviços de Proxy, como: Proxy de E-Mail, Proxy de DNS e etc ...
Mas, não tão usados como o Proxy de Web.
Para Linux, temos um bem famoso chamado "Squid" e é justamente dele que iremos falar.

Existe duas formas mais comuns de usar o squid, são elas:
- Proxy Transparente (não requer configuração nas estações)
- Proxy Autenticado (com suporte a usuário e senha)
(sobre a autenticação, irei criar algo sobre isso em breve)


2. Compilando
Primeiro, baixe o squid:
# wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE4-20040210.tar.bz2

Descompactando:
# tar -xvjf squid-2.5.STABLE4-20040210.tar.bz2

Entre no diretório criado:
# cd squid-2.5.STABLE4-20040210

Agora isso, vamos ao passos:
# ./configure --prefix=/usr/local/squid --enable-auth

--prefix - diretório de destino
--enable-auth - ativa suporte a autenticação
Habilite apenas se for usar autenticação.

# make all
# make install


3. Configurando
Aqui veremos uma configuração básica, depois teremos alguns exemplos prontos e comentários.

Primeiro, edite o arquivo de configuração:
# vi /usr/local/squid/etc/squid.conf

# Informe o IP da placa de rede e porta que irá fornecer o serviço de proxy,
# se tiver vários IPs, não tem problema, basta criar novas linhas http_port e informá-los.
# Essa opçõa pode ser mudada apenas para a porta do proxy, causando falha de segurança,
# pois ao fazer isso, muitos administradores não lembram de bloquear o acesso a estranhos,
# deixando o proxy aberto para ser usado como servidor de ataque.
http_port 192.168.0.1:3128

# Padrão ...
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

# Informa quanto de memória RAM será disponibilizado para o proxy.
# Detalhe importante, geralmente esse valor se multiplica por 4,
# então cálcule 1/4 do valor que será disponível.
# Recomendo utilizar 32 MB, sendo necessário disponibilizar um total de: 128 MB.
cache_mem 8 MB

# Tamanho máximo de arquivo que será armazenado no proxy.
# Arquivos maiores que esse serão discartados/não armazenados.
maximum_object_size 4096 KB

# Tamanho mínino de arquivo que será armazeando no proxy.
minimum_object_size 0 KB

# Tamanho máximo de arquivo que ficará em memória (no caso RAM).
# Isso é útil para não sobrecarregar a memória disponível (cache_mem).
maximum_object_size_in_memory 8 KB

# Diretório, tamanho, divisão e sub-divisão para arquivar em disco.
cache_dir ufs /usr/local/squid/var/cache 512 16 256

# Explicação:
# /usr/local/var/cache - seria o diretório onde ficarão os arquivos armazenados.
# 512 - é um número de MB disponível para se ocupado com arquivos.
# Sendo eles, divididos em 16 diretórios que conterão cara um, 256 sub-diretórios.
# Com isso, os diretórios não ficarão sobregarregados de arquivos.
# Dica: Altera apenas o tamanho e caminho, os divisores não precisam ser alterados.

# Caminho e arquivo para LOG de Acessos.
# Para não gerar LOG de Acessos, mude o caminho e arquivo para "none".
cache_access_log /usr/local/squid/var/logs/access.log

# Caminho e arquivo para LOG do Cache.
# Para não gerar LOG do Cache, mude o caminho e arquivo para "none".
cache_log /usr/local/squid/var/logs/cache.log

# Caminho e arquivo para LOG do Histórico.
# Para não gerar LOG do Histórico, mude o caminho e arquivo para "none".
cache_store_log /usr/local/squid/var/logs/store.log

# Caminho e arquivo responsável para a criação de um arquivo de controle contendo apenas o número do processo (PID).
pid_filename /usr/local/squid/var/logs/squid.pid

# DEBUG - Depurador do proxy, responsável pelos LOGs.
debug_options ALL,1

# Tratar os "cliente" como qual classe?
# Usando "255.255.255.255", os usuários serão tratados individualmente.
client_netmask 255.255.255.255

# Padrão ...
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

# Padrão ...
refresh_pattern ^ftp:      1440  20%  10080
refresh_pattern ^gopher:   1440  0%   1440
refresh_pattern .          0     20%  4320

# Padrão ... Regras de controle
acl all src 0.0.0.0/0.0.0.0
# Regra informando origem da minha rede
acl rede_local src 192.168.0.0/255.255.255.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 2000-3000
acl CONNECT method CONNECT

# Autorizações / Proibições http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# Liberação da minha rede
http_access allow rede_local
http_access deny all

http_reply_access allow all
icp_access allow all

# E-Mail do responsável pelo Proxy.
cache_mgr emota@emota.com.br

# Usuário do sistema responsável pelo processo do Proxy
cache_effective_user proxy

# Grupo do sistema, no qual o resposável faz parte
cache_effective_group proxy

# Hiostname do servidor
visible_hostname servidor.inet

# Período para descartar arquivos não utilizados
# Essa configuração é responsável por são sobrecarregar o proxy.
announce_period 1 day

# Trabalhando com Base de Dados para um melhor controle
client_db on
netdb_low 900
netdb_high 1000

# Diretório de ícones
icon_directory /usr/local/squid/share/icons

# Diretório das mensagens de erro
error_directory /usr/local/squid/share/errors/Portuguese

# Diretório para CoreDump :-)
coredump_dir /usr/local/squid/var/cache

# Habilita o Internet Explorer 5.5 SP1 ou superior a atulizar um site
ie_refresh on

# Pronto, com isso, nosso proxy já funciona!
# Vejamos agora algumas outros opções ...


3.1 Exemplos de Configurações:
-> Proxy Transparente

3.2 Proxy Transparente
Muito usado, não requer configuração nas estações.
A única exigência desta opção é ter o Squid rodando na máquina que será o gateway da rede.
Sua configuração é simples, requer apenas algumas modificações.

Edite o squid.conf e configure conforme exemplo abaixo:
# vi squid.conf
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

Após isso, é necessário incluir uma regra no Firewall.
Usando IPTABLES:
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128


4. Detalhes no Sistema
# mkdir -p /usr/local/squid/var/cache
# groupadd proxy
# useradd -g proxy -d /usr/local/squid -s /bin/false proxy
# chown proxy.proxy /usr/local/squid/var/*
# /usr/local/squid/sbin/squid -z


5. Executando / Ligando
# /usr/local/squid/sbin/squid


6. Dicas
Ao alterar o arquivo de configurações com o proxy rorando, digite:
# killall -HUP squid
Para ele atulizar as configurações automaticamente.
Outra dica é acompanhar os LOGs para analisar possíveis erros.
# tail -f /var/log/messages
# tail -f /usr/local/squid/var/logs/access.log


6.1 Links
Oficial do Projeto Squid - http://www.squid-cache.org


Qualquer dúvida ou informação, entre em contato emota@emota.com.br

EMotaWeb | Textos | Programação | Linux | Wireless | Contato | Topo ^