Você está na página 1de 5

Veja abaixo um longo artigo introdutório sobre o Squid, o mais popular sistema de

proxy web e ftp para Linux. Este artigo é de minha autoria, e foi publicado
originalmente na edição impressa da Revista do Linux.

Proxy - Web com Linux

Augusto C. Campos - brain@matrix.com.br

Conheça o Squid e saiba porquê ele é um dos títulos mais famosos do mundo
Linux, que será encontrado em todos os servidores de rede de qualquer
distribuição: uma unanimidade.

Nota: Este artigo é de minha autoria, e foi publicado inicialmente na edição (impressa)
de agosto/2000 da Revista do Linux. Esta reprodução é autorizada pela Revista do
Linux. As figuras foram retiradas intencionalmente.

Um proxy é o equivalente digital da figura do atravessador ou


intermediário, que se coloca entre um servidor e um cliente de rede,
gerenciando o tráfego de informações entre ambos. Seu uso mais
freqüente em redes locais é na situação onde os computadores da rede
não têm acesso direto à Internet, mas podem contatar um servidor de
comunicação que tem esse acesso. Neste caso, uma das soluções possíveis é
a instalação de um servidor proxy no computador que tem acesso à
Internet, para servir de intermediário entre os navegadores (como o
Netscape, o Opera e o Internet Explorer) instalados ao longo da rede e os
servidores web da Internet.

Este artigo analisa o software squid, que é o mais difundido servidor proxy de web e ftp
para Linux. O squid é incluído na maior parte das distribuições de Linux, e você
também pode procurar a versão mais atualizada no seu site oficial, em www.squid-
cache.org, juntamente com uma grande documentação adicional.

Funcionamento

Você não é obrigado a entender como o squid funciona para colocá-lo em operação,
mas, assim como o bom piloto tem noção do que ocorre debaixo do capô do motor, o
administrador de redes desempenha melhor suas funções quando sabe o que cada
componente do seu sistema faz.

Ao contrário de outras técnicas de conexão, como o roteamento simples e o IP


masquerading (veja o artigo "Internet Fácil, Fácil" na RdL número 3), normalmente a
proxy squid exige alterações na configuração do seu navegador web. Cada navegador
tem sua própria maneira de configurar, mas de modo geral todos eles têm suporte a
proxy -- até mesmo os de modo texto, como o lynx e o wget -- e utilitários de
transferência de arquivos como o GetRight. Consulte a documentação de cada um deles
para ver como habilitar o suporte a proxy. A título de exemplo, o final deste artigo traz
os passos para a configuração do Netscape.
Quando configurado para usar a proxy, o navegador muda a sua forma de operação. Ao
invés de tentar contactar diretamente os servidores web da Internet, ele contacta a proxy
e informa a ela a URL que deseja transferir. A proxy, por sua vez, contacta o site da
Internet e transfere o arquivo ou página desejados, entregando-os ao navegador que fez
a requisição e armazenando uma cópia temporária no cache, para o caso de algum outro
computador da rede requisitar a mesma página em um intervalo de tempo configurável.

Vantagens e desvantagens

Se você tiver um proxy baseado no squid, os computadores da rede local não precisam
ter nenhuma forma de acesso direto à Internet para entrar na web e usar o ftp. Sendo
assim, você pode concentrar seus esforços de segurança e administração de rede na
máquina que roda a proxy.

Uma das maiores vantagens da proxy sobre outras alternativas de conexão -- como o IP
Masquerading -- é a existência do cache, que, quando bem configurado, maximiza o
aproveitamento do seu canal de conexão com a internet. Os documentos estáticos
(imagens, páginas HTML geradas estaticamente e outros) solicitados por qualquer uma
das máquinas da sua rede ficam armazenados também no servidor, e caso outra máquina
da rede solicite o mesmo documento, ele é fornecido a partir do cache, economizando
assim a linha com o provedor Internet, que normalmente é de velocidade bem mais
baixa do que a rede local que liga as máquinas clientes ao servidor Proxy.

Outra vantagem importante é o nível de controle oferecido. O squid permite criar regras
avançadas de restrição de acesso, podendo definir que determinados micros terão acesso
irrestrito, outros podem acessar apenas um determinado conjunto de sites, e outros ainda
podem acessar qualquer site. É possível restringir um determinado conjunto de sites
cuja URL possua uma determinada palavra ou expressão regular. Estas regras podem
variar de acordo com o horário, permitindo a criação de regras que restrinjam o tráfego
no horário de expediente, e liberem nos horários de menor demanda. Veremos alguns
exemplos destas regras mais adiante.

A limitação do squid é que ele fornece apenas serviços de http e ftp, ou seja, web e
transferência de arquivos. Serviços de e-mail (smtp e pop-3), irc, jogos via internet e
todos os outros recursos são completamente ignorados e não são suportados. Se você
precisar oferecer serviços como esses, terá que recorrer a uma segunda alternativa em
paralelo -- configurações avançadas do Sendmail, ip masquerading, proxy de irc, e
muitas outras opções que estão fora do escopo deste artigo.

Instalação e configuração

O squid é incluído junto com a maior parte das distribuições de Linux correntes, e as
instruções de instalação variam para cada uma delas -- consulte a documentação inclusa,
ela está lá para isto!

No caso das distribuições recentes da Conectiva, caso você ainda não tenha instalado o
squid, basta instalar o pacote squid.rpm. No caso do Conectiva Servidor 4.2, por
exemplo, insira e monte o CD na unidade, e digite o comando

rpm -ivh /mnt/cdrom/conectiva/RPMS/squid-2.2.4-1cl.i386.rpm


Se a sua distribuição incluir utilitários de configuração do squid, tente utilizá-los mas,
de modo geral, a configuração incluída no pacote é suficiente para começar a operar os
primeiros testes.

A configuração do squid fica gravada em um arquivo chamado squid.conf, geralmente


no diretório /etc ou /etc/squid. Se a sua distribuição não colocou uma cópia deste
arquivo lá, ela deve ter incluído um arquivo de exemplo junto com a documentação
(diretório /usr/doc). Esses arquivos apresentam muitas informações na forma de
comentários, e servem de base para que você possa definir a sua política de proxy,
incluindo:

* políticas de acesso: quem pode acessar quais tipos de sites e serviços

* políticas quanto à ocupação de memória

* políticas quanto ao prazo de validade dos arquivos do cache

* outras

A sintaxe deste arquivo ainda não está consolidada, e é extensa demais para ser
analisada aqui com detalhes. Você terá que se guiar pelos comentários fornecidos no
arquivo squid.conf de exemplo, e pela (farta) documentação disponível. Lembre-se de
que o arquivo de exemplo é funcional o suficiente para seus primeiros testes, mas
provavelmente você precisará fazer algumas alterações.

Lembre-se também de que o squid depende da sua infra-estrutura de rede. Quando ele
entrar em operação, as rotas e interfaces de rede da máquina já devem estar ativadas,
sejam elas sobre uma linha discada, uma conexão através de um roteador dedicado, uma
conexão sob demanda (diald), rede local ou qualquer outra suportada pelo Linux.

Controle de acesso

O controle de acesso do squid tem recursos suficientes para definir com precisão quais
tipos de serviços podem ser acessados por quais máquinas e em quais horários. As
regras da lista de controle de acesso (Access Control Lists ou ACLs) têm uma sintaxe
bastante simples, e são incluídas no arquivo squid.conf. Vejamos alguns exemplos
práticos:

Se você quiser impedir que qualquer usuário acesse páginas que contenham a palavra
futebol, acrescente as seguintes linhas ao seu squid.conf:

acl proibir_futebol url_regex futebol


http_access deny proibir_futebol

Você também pode bloquear sites específicos. O próximo exemplo impede que
qualquer usuário tenha acesso ao domínio menudo.net:

acl proibir_musica dstdomain menudo.net


http_access deny proibir_musica
E o bloqueio ainda pode ser para máquinas específicas. Imagine que o usuário da
máquina cujo IP é 10.0.0.95 esteja ocupando muito a sua rede, transferindo arquivos de
música em formato mp3. Para bloquear este usuário específico, use uma regra como a
que segue:

acl mp3 url_regex mp3


acl usuario_ofensor src 10.0.0.95/255.255.255.255
acl deny usuario_ofensor mp3

Após incluir todas as suas regras restritivas, não se esqueça de incluir regras
especificando que tudo o que não estiver expressamente proibido deve ser permitido. Na
configuração original do squid.conf, as linhas serão como a que segue:

acl minha_rede_local src 10.0.0.0/255.0.0.0


http_access allow all minha_rede_local

Note que você deve definir a `minha_rede_local' como o conjunto de endereço IP e


máscara que melhor descrevem a sua rede.

Normalmente o seu squid.conf virá com linhas como as que seguem:

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access deny all

Elas servem para bloquear o acesso ao squid até que ele seja configurado, e você deve
retirá-las do arquivo quando terminar tal operação.

Iniciando o squid

Na primeira vez que você roda o squid, você deverá instruí-lo para criar seus diretórios
de trabalho. Faça isto chamando-o com o parâmetro -z:

squid -z

Após executado o comando, você pode chamá-lo normalmente como um servidor,


digitando-o sem parâmetros:

squid

Os modelos de instalação em RPM que eu pude analisar incluem automaticamente o


squid nos scripts de inicialização do sistema. Certifique-se de que eles tenham sido
incluídos no diretório /etc/rc.d, ou /etc/rc.d/init.d, ou onde o seu sistema espera
encontrá-los. Você também pode incluí-los de acordo com as instruções específicas
indicadas por sua distribuição.

Em caso de problemas, procure informações nos logs do sistema (a localização deles


também é definida no squid.conf), pois o squid é bastante descritivo em seus registros.

Configuração do cliente
Para configurar a maior parte dos clientes web bem-comportados, basta inicializar as
variáveis de ambiente http_proxy e ftp_proxy com o valor do endereço e porta do seu
servidor proxy squid. Por exemplo, se o seu servidor está instalado em uma máquina
cujo nome é yana.lagoa.net, na porta 3128 (que é a porta default do squid), você pode
incluir as seguintes linhas em seu ~/.bashrc (ou no script de inicialização mais adequado
ao seu caso específico):

export http_proxy="yana.lagoa.net:3128"
export ftp_proxy="yana.lagoa.net:3128"

Outros clientes exigem procedimentos específicos -- e isto inclui a maior parte dos
navegadores gráficos. Lembre-se de que estas configurações devem ser realizadas em
todos os navegadores da rede, mesmo os que rodam em outros sistemas operacionais,
como o Internet Explorer.

No caso do Netscape em inglês, comum à maior parte das distribuições de Linux, clique
em `Edit' no menu principal, e em seguida em `Preferences'. Na janela de preferências,
selecione `Advanced' e após `Proxies'. Vai se abrir uma janela como a da figura 1, onde
você deve selecionar `Manual proxy configuration' e clicar no botão `View', para então
visualizar uma janela como a da figura 2. Você deverá preencher o endereço e a porta
da sua proxy nos campos indicados nos respectivos diálogos. [Nota: as figuras estão
disponíveis apenas na edição impressa da Revista do Linux]

Conclusão

Embora não seja possível mostrar toda a riqueza do squid em um único artigo, que
envolve muitos aspectos e características adicionais não abordados nesse artigo
introdutório, espero ter sido bem-sucedido em mostrar a finalidade desta ferramenta, e
indicar como iniciar o processo de sua configuração.

O squid oferece vantagens na administração, controle de acesso, segurança e ocupação


otimizada dos meios de transmissão. Sua base instalada é muito grande, e técnicos que
implantam redes não podem deixar de conhecê-lo em profundidade. Existe muita
documentação disponível em todos os sites importantes de Linux, e conhecê-la é
obrigatório.

Certamente há muito a acrescentar a qualquer rede, ainda que todas as estações tenham
acessibilidade plena à Internet. Não deixe de consultar as referências dadas no final do
artigo, para conhecer ainda mais o potencial deste recurso poderoso.

Você também pode gostar