Você está na página 1de 8

Tutorial Servidor Proxy com Squid baseado em Linux

Acadêmicos : Felipe Zottis e Cleber Pivetta

Servidor Proxy

Um servidor Proxy possui a finalidade de possibilitar que máquinas


contidas em uma determinada rede possam obter acesso a uma rede pública.
Normalmente este servidor é instalado em um computador que possui acesso
direto à internet, sendo assim toda solicitação externa a rede deve ser feita a
esta máquina. De modo geral, um servidor proxy realiza solicitações em nome
de outras máquinas da rede.

Outras funcionalidades podem ser acopladas ao proxy, tais como


caching de páginas da internet. Com isto, as requisições à sites já visitados por
máquinas de uma rede são feitas mais rapidamente.

Um servidor proxy também pode implementar o NAT (Network Address


Translation - Tradução de Endereços de Rede). A NAT permite que o endereço
de rede interno de uma empresa seja ocultado da Internet. A empresa é
representada na Internet como um endereço de IP não relacionado com os
endereços de IP internos.

Uma das principais funcionalidades do proxy é impedir o acesso


indevido à páginas da internet, geralmente por empresas ou instituições
públicas. É possível barrar o acesso do usuário a sites inadequados ou que
não sejam de interesse de uma instuição, por exemplo chats, jogos, sexo entre
outros.

Todo o tráfego de dentro da empresa destinado à Internet é enviado


para o servidor proxy. Este atribui a cada pacote um outro endereço de IP
antes de transmití-lo pela Internet. Quando o pacote de resposta chega, o
servidor proxy o envia ao servidor apropriado da empresa que havia feito o
pedido. Este procedimento protege os endereços verdadeiros da rede interna
da Internet, dificultando o ataque de um hacker ao sistema, já que o endereço
do sistema protegido não é conhecido e não fica diretamente acessível a partir
da Internet.

Sobre o Squid

O Squid é um proxy-cache de alta performance para clientes web,


suportando protocolos FTP, gopher e HTTP. O Squid mantém meta dados e
especialmente objetos armazenados na RAM, cacheia buscas de DNS e
implementa cache negativo de requisições falhas.
Ele suporta SSL, listas de acesso complexas e logging completo. Por
utilizar o Internet Cache Protocol, o Squid pode ser configurado para trabalhar
de forma hierárquica ou mista para melhor aproveitamento da banda.

Podemos dizer que o Squid consiste em um programa principal – squid -


um sistema de busca de resolução de nomes – dnsserver – e alguns
programas adicionais para reescrever requisições, fazer autenticação e
gerenciar ferramentas de clientes. Podemos executar o Squid nas principais
plataformas do mercado, como GNU/Linux, Unixes e Windows.

 Procedimento para instalação do Servidor Proxy Squid

Para a realização deste tutorial, fora utilizado a sistema operacional


Linux, sendo a versão 9.0 do Fedora.

Como este experimento fora realizado na rede interna da Universidade


Estadual do Oeste do Paraná, é necessário realizar a exportação do proxy
utilizado pela faculdade, para que assim seja possível realizar o download do
pacote de instalação do Squid.

→ export http_proxy=htpp://proxy.unioeste.br:8080

Para realizar a instalação de determinados programas, o Linux permite


que o pacote de instalação destes sejam obtidos por download através do
comando:

→ yum install squid

O Squid será então instalado no diretório /etc/squid. Após isto, é


necessário editar o arquivo squid.conf, localizado dentro do diretório de
instalação. Porém, é necessário realizar alterações na permissão de gravação
do arquivo squid.conf, pois este é protegido. No linux é possível realizar esta
alteração da seguinte forma:

→ chmod 777 squid.conf

O comando chmod modifica as pemissões de acessos à um


determinado arquivo. O número 777 garante os acessos de leitura e gravação
para root e usuários.

Realizado este passo, já é possível editar o arquivo squid.conf, porém é


recomendável realizar um backup do arquivo original. Sendo assim, deve-se
renomear o arquivo squid.conf para squid_backup.conf. Após isto, já é possível
trabalhar em um arquivo squid.conf novo. Então:

→ vi squid.conf
Este comando abrirá este arquivo para edição, porém como o mesmo
não existe (pois o original foi renomeado) um novo será criado. As seguintes
linhas devem ser incluídas dentro deste arquivo:

# porta padrão do squid

http_port 3128
visible_hostname localhost

#definir sites bloqueados


acl blockedsites url_regex -i “/etc/squid/sites_bloqueados/block.txt”

#definir sites permitidos


acl unblockedsites url_regex -i “/etc/squid/sites_desbloqueados/unblock.txt”

acl all src 0.0.0.0/0.0.0.0

#proxy pai do squid


cache_peer proxy.unioeste.br parent 8080 3128 proxy-only

#negar acesso HTTP à variável blockedsites e permitir à variável


unblockedsites

http_access deny blockedsites !unblockedsites


http_access allow all

Após isto, deve-se alterar as configurações padrão do navegador de


internet utilizado na máquina, neste exemplo o firefox. Em configurações
avançadas de rede, deve-se selecionar para obter uma configuração manual
de proxy e então redirecionar o protocolo HTTP para localhost (o nome definido
em visible_hostname) e porta 3128 (padrão do Squid).

No Squid também é possível impedir acessos à sites com conteúdo


indevido. Note que em:

#definir sites bloqueados


acl blockedsites url_regex -i “/etc/squid/sites_bloqueados/block.txt”

#definir sites permitidos


acl unblockedsites url_regex -i “/etc/squid/sites_desbloqueados/unblock.txt”

É definido um caminho para uma lista de sites bloqueados e permitidos.


Sendo assim, deve-se criar um arquivo do tipo .txt dentro de uma pasta
definida sites_bloqueados, contendo uma lista de sites bloqueados, por
exemplo:

www.google.com
www.uol.com

www.orkut.com

orkut

pornografia

Note que é possível bloquear os acessos apenas pelo intermédio de


palavras chaves, vide orkut e pornografia.

Feitos todos estes passos, é possível agora colocar em funcionamento o


servidor Squid. Dentro do diretório /etc/init.d deve-se entrar com o seguinte
comando:

→ squid start

 Funcionalidades Extras

• Restringir acesso por horário

É possível restringir os acessos à internet por horários


programados. Deve- se inserir os seguintes comandos:

#Horários
acl expediente time MTWHF 9:00 – 18:00
acl final_de_semana time SA 8:00 – 13:00

Onde :

S: Domingo
M: Segunda-Feira
T: Terça-feira
W: Quarta-feira
H: Quinta-feira
F: Sexta-feira
A : Sábado

Exemplo:

Controlar o acesso do computador 192.168.1.71 das 9:00 às


12:00 e das 13:30 às 18:00 de segunda a sexta-feira:
acl microip71 src 192.168.0.71/255.255.255.255
acl manhamicroip71 time M T W H F 9:00-12:00
acl tardemicroip71 time M T W H F 13:30-18:00

 Pra LIBERAR acesso:

http_access allow microip71 manhamicroip71


http_access allow microip71 tardemicroip71

 pra PROIBIR acesso:

http_access deny microip71 manhamicroip71


http_access deny microip71 tardemicroip71

Exemplo: Pra liberar somente no horário de almoço, todos os dias das


12 as 13:30 e após o expediente às 18:00hs:

acl microip71 src 192.168.0.71/255.255.255.255


acl manhamicroip71 time M T W H F 12:00-13:30
acl tardemicroip71 time M T W H F 18:00-24:00
http_access allow microip71 manhamicroip71
http_access allow microip71 tardemicroip71

• Limitar o número de conexões por usuário

É possível restringir o número de sessões que um determinado


usuário pode requisitar de uma única vez. O recurso máximo de
conexões pode ser atribuído da seguinte forma:

#Máximo de conexões
acl CONEXOES maxconn 5
http_access deny CONEXOES rede_interna

• Gerar Relatórios de acesso

O Squid emite um log de acessos à internet que pode ser


transformado em relatórios com o uso da ferramenta SARG. Para tanto,
sua instalação e configuração é necessária:

→ wget http://web.onda.com.br/orso/sarg-1.4.tar.gz
→ tar zxvf sarg-1.4.tar.gz
→ cd sarg-1.4/
→ ./configure
→ make
→ make install
Configurando o SARG:

Por padrão o SARG é instalado em /usr/local/sarg .Nesse diretório


encontra-se o arquivo sarg.conf. As seguintes opções são
recomendadas:

# indica o arquivo de log do squid


→ access_log /var/log/squid/access.log
→ title “Relatório de uso da Internet”
→ temporary_dir /tmp

# Onde será gerado o relatório


→ output_dir /var/www/squid-reports
→ resolve_ip no

# Se estiver usando autenticação por usuário deve-se colocar yes


→ user_ip yes
→ topuser_sort_field BYTES reverse
→ topsites_num 100
→ max_elapsed 28800000

Em seguida, para gerar um relatório deve-se emitir o comando

→ sarg

Figura 01: Relatório emitido pelo SARG


• Autenticando usuários

É um recurso bem interessante para controle pessoal de usuários,


pois permite que ACLs individuais sejam criadas gerando assim LOGs
de qualidade e precisão superiores. O ncsa_auth é a alternativa mais
simples, pois está disponível junto com o Squid e pode ser
implementado rapidamente.

→ Procure pela TAG: authenticate_program

insira os seguintes comandos:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/


auth_param basic children 5
auth_param basic realm Digite seu Login

Para tanto, cada usuário necessitará uma senha de acesso.


Deve-se criar o arquivo que conterá todas as senhas dos usuários:

→ touch /etc/squid/passwd

Para adicionar novos usuários deve-se emitir:

→ htpasswd /etc/squid/passwd NOVO_USUARIO

Dependendo da distribuição do Squid, o ncsa_auth pode estar em


vários lugares diferentes.

 Comandos úteis para o Squid

 Reiniciando a cache do Squid:

→ squid -z

 Reiniciando as configurações do Squid:

→ squid -k reconfigure

 Parar o serviço do Squid:

→ squid stop

 Reiniciar o serviço do Squid:

→ squid restart
 Verificar status do Squid, se está rodando ou não:

→ squid status

 Para carregar o Squid junto com a inicialização do Linux:

→ chkconfig squid on

 Dicas De Squid:

• Edite o arquivo /etc/squid.conf e leia atentamente os comentários, pois


neles existem explicações pra configurações possíveis...

• Squid para de analizar as regras na primeira que for atentida, quando


precisar de alguma excessão de regra, por exemplo liberar um IP para
não passar pelas regras, esta deverá se colocada antes da que proibe.