Você está na página 1de 8

Tutorial Servidor Proxy com Squid baseado em Linux

Acadmicos : Felipe Zottis e Cleber Pivetta



Servidor Proxy
Um servidor Proxy possui a finalidade de possibilitar que mquinas
contidas em uma determinada rede possam obter acesso a uma rede pblica.
Normalmente este servidor instalado em um computador que possui acesso
direto internet, sendo assim toda solicitao externa a rede deve ser feita a
esta mquina. De modo geral, um servidor proxy realiza solicitaes em nome
de outras mquinas da rede.
Outras funcionalidades podem ser acopladas ao proxy, tais como
caching de pginas da internet. Com isto, as requisies sites j visitados por
mquinas de uma rede so feitas mais rapidamente.
Um servidor proxy tambm pode implementar o NAT (Network Address
Translation - Traduo de Endereos de Rede). A NAT permite que o endereo
de rede interno de uma empresa seja ocultado da Internet. A empresa
representada na Internet como um endereo de IP no relacionado com os
endereos de IP internos.
Uma das principais funcionalidades do proxy impedir o acesso
indevido pginas da internet, geralmente por empresas ou instituies
pblicas. possvel barrar o acesso do usurio a sites inadequados ou que
no sejam de interesse de uma instuio, por exemplo chats, jogos, sexo entre
outros.
Todo o trfego de dentro da empresa destinado Internet enviado
para o servidor proxy. Este atribui a cada pacote um outro endereo 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 endereos verdadeiros da rede interna
da Internet, dificultando o ataque de um hacker ao sistema, j que o endereo
do sistema protegido no conhecido e no fica diretamente acessvel 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 mantm meta dados e
especialmente objetos armazenados na RAM, cacheia buscas de DNS e
implementa cache negativo de requisies 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 hierrquica ou mista para melhor aproveitamento da banda.
Podemos dizer que o Squid consiste em um programa principal squid -
um sistema de busca de resoluo de nomes dnsserver e alguns
programas adicionais para reescrever requisies, fazer autenticao e
gerenciar ferramentas de clientes. Podemos executar o Squid nas principais
plataformas do mercado, como GNU/Linux, Unixes e Windows.

Procedimento para instalao do Servidor Proxy Squid
Para a realizao deste tutorial, fora utilizado a sistema operacional
Linux, sendo a verso 9.0 do Fedora.
Como este experimento fora realizado na rede interna da Universidade
Estadual do Oeste do Paran, necessrio realizar a exportao do proxy
utilizado pela faculdade, para que assim seja possvel realizar o download do
pacote de instalao do Squid.
export http_proxy=htpp://proxy.unioeste.br:8080
Para realizar a instalao de determinados programas, o Linux permite
que o pacote de instalao destes sejam obtidos por download atravs do
comando:
yum install squid
O Squid ser ento instalado no diretrio /etc/squid. Aps isto,
necessrio editar o arquivo squid.conf, localizado dentro do diretrio de
instalao. Porm, necessrio realizar alteraes na permisso de gravao
do arquivo squid.conf, pois este protegido. No linux possvel realizar esta
alterao da seguinte forma:
chmod 777 squid.conf
O comando chmod modifica as pemisses de acessos um
determinado arquivo. O nmero 777 garante os acessos de leitura e gravao
para root e usurios.
Realizado este passo, j possvel editar o arquivo squid.conf, porm
recomendvel realizar um backup do arquivo original. Sendo assim, deve-se
renomear o arquivo squid.conf para squid_backup.conf. Aps isto, j possvel
trabalhar em um arquivo squid.conf novo. Ento:
vi squid.conf

Este comando abrir este arquivo para edio, porm como o mesmo
no existe (pois o original foi renomeado) um novo ser criado. As seguintes
linhas devem ser includas dentro deste arquivo:
# porta padro 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 varivel blockedsites e permitir varivel
unblockedsites
http_access deny blockedsites !unblockedsites
http_access allow all

Aps isto, deve-se alterar as configuraes padro do navegador de
internet utilizado na mquina, neste exemplo o firefox. Em configuraes
avanadas de rede, deve-se selecionar para obter uma configurao manual
de proxy e ento redirecionar o protocolo HTTP para localhost (o nome definido
em visible_hostname) e porta 3128 (padro do Squid).
No Squid tambm possvel impedir acessos sites com contedo
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 possvel bloquear os acessos apenas pelo intermdio de
palavras chaves, vide orkut e pornografia.
Feitos todos estes passos, possvel agora colocar em funcionamento o
servidor Squid. Dentro do diretrio /etc/init.d deve-se entrar com o seguinte
comando:
squid start

Funcionalidades Extras
Restringir acesso por horrio
possvel restringir os acessos internet por horrios
programados. Deve- se inserir os seguintes comandos:
#Horrios
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: Tera-feira
W: Quarta-feira
H: Quinta-feira
F: Sexta-feira
A : Sbado

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 horrio de almoo, todos os dias das
12 as 13:30 e aps 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 nmero de conexes por usurio
possvel restringir o nmero de sesses que um determinado
usurio pode requisitar de uma nica vez. O recurso mximo de
conexes pode ser atribudo da seguinte forma:
#Mximo de conexes
acl CONEXOES maxconn 5
http_access deny CONEXOES rede_interna

Gerar Relatrios de acesso
O Squid emite um log de acessos internet que pode ser
transformado em relatrios com o uso da ferramenta SARG. Para tanto,
sua instalao e configurao necessria:
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 padro o SARG instalado em /usr/local/sarg .Nesse diretrio
encontra-se o arquivo sarg.conf. As seguintes opes so
recomendadas:
# indica o arquivo de log do squid
access_log /var/log/squid/access.log
title Relatrio de uso da Internet
temporary_dir /tmp

# Onde ser gerado o relatrio
output_dir /var/www/squid-reports
resolve_ip no
# Se estiver usando autenticao por usurio deve-se colocar yes
user_ip yes
topuser_sort_field BYTES reverse
topsites_num 100
max_elapsed 28800000
Em seguida, para gerar um relatrio deve-se emitir o comando
sarg


Figura 01: Relatrio emitido pelo SARG

Autenticando usurios
um recurso bem interessante para controle pessoal de usurios,
pois permite que ACLs individuais sejam criadas gerando assim LOGs
de qualidade e preciso superiores. O ncsa_auth a alternativa mais
simples, pois est disponvel 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 usurio necessitar uma senha de acesso.
Deve-se criar o arquivo que conter todas as senhas dos usurios:
touch /etc/squid/passwd

Para adicionar novos usurios deve-se emitir:
htpasswd /etc/squid/passwd NOVO_USUARIO
Dependendo da distribuio do Squid, o ncsa_auth pode estar em
vrios lugares diferentes.


Comandos teis para o Squid
Reiniciando a cache do Squid:
squid -z
Reiniciando as configuraes do Squid:
squid -k reconfigure
Parar o servio do Squid:
squid stop
Reiniciar o servio do Squid:
squid restart
Verificar status do Squid, se est rodando ou no:
squid status
Para carregar o Squid junto com a inicializao do Linux:
chkconfig squid on

Dicas De Squid:
Edite o arquivo /etc/squid.conf e leia atentamente os comentrios, pois
neles existem explicaes pra configuraes possveis...
Squid para de analizar as regras na primeira que for atentida, quando
precisar de alguma excesso de regra, por exemplo liberar um IP para
no passar pelas regras, esta dever se colocada antes da que proibe.

Você também pode gostar