Você está na página 1de 38

O Serviço PROXY

(“O Procurador”)

Prof: Bruno Roberto V. Castro


bruno.una@gmail.com
v2.0
O Serviço Proxy

 A palavra “Proxy”, oriunda do Inglês,


significa:
 “Procuração, Procurador, Representante, Substituto…”

 É em essência, um computador que presta


um serviço de procurador de um ou mais
computadores em rede, buscando e
repassando conteúdos que estes
computadores desejam acessar.
O Serviço Proxy

 O Serviço Proxy age como um representante


de um usuário que precisa acessar um
sistema do outro lado do Proxy.

 Possui ainda a capacidade de armazenar os


conteúdos mais acessados (geralmente
“web-sites”) em uma área denominada
“CACHE”.
O Serviço Proxy - Cache

 O “Cache” pode ter seu tamanho definido


pelo administrador, e por guardar os
conteúdos mais acessados, permite
significativa melhora na velocidade do
acesso aos sites que já possuem conteúdos
guardados neste “Cache”.
O Serviço Proxy - Proteção

 O Proxy também pode ser interpletado como


um tipo de firewall

 Oferece proteção à uma rede interna, pois,


permite “esconder” toda uma coleção de
estações de trabalho que o utilizam para o
acesso externo (Internet)
O Serviço Proxy - Proteção

 Assim como oferece proteção à Rede Interna ou à


LAN de uma empresa, pode também proteger ou
resguardar a empresa ou o administrador da rede,
de problemas.

 Pois, também é possível com o Serviço Proxy:


 Filtrar Sites Indesejados;
 Filtrar Sites que contenham determinada palavra chave;
 Permitir determinados sites;
 Permitir ou Negar o download de determinados tipos de
protocolo (ex: ftp) e também de determinadas extensões
de arquivos (ex: exe, com, mp3, etc….).
O Serviço Proxy

 Resumindo, um Servidor PROXY bem


configurado deve estar baseado em 4
pilares:

 Oferecer Proteção à Rede Interna


 Oferecer LOG´s ao administrador da REDE
 Permitir economia de Banda através do “CACHE”
 Permitir filtros de acesso à conteúdos no protocolo
HTTP
O Serviço Proxy em uma Empresa com 10
estações de trabalho

Servidor Proxy Link – “Qualquer prestadora”


201.200.200.1
eth1

192.168.0.254
eth0

Internet

Rede LAN:
192.168.0.0/24
O Serviço Proxy

 Geralmente, Servidores PROXY possuem a


capacidade de “Rotear” os seguintes
protocolos:

 http
 https
 ftp
 gopher
 socks
O Serviço Proxy – Porta TCP

 Opera utilizando o protocolo de Transporte


TCP, normalmente nas portas

 3128
ou
 8080
Proxy – Exemplo de Funcionamento

1043 tcp Servidor Proxy

Requisição de acesso à 3128 tcp


http://www.altavista.com Localização e
1043 tcp Obtenção do Conteúdo

3128 tcp

Conteúdo do website requisitado

Internet
O Serviço Proxy x “Compartilhamento de
Conexão”
 PROXY não é o mesmo do que NAT

 O NAT (Network Address Translator) é a tradução


de endereços. Geralmente usada para traduzir
endereços “inválidos” na Internet para endereços
“válidos” e vice e versa.

 Já o Proxy, é utilizado como Procurador, apenas


para serviços específicos como por exemplo “http” e
“https”, com a vantagem de “auditar” o conteúdo das
mensagens trocadas e ainda de guardar “cache”
dos sites visitados.
Clientes Proxy

 Os Clientes Proxy, geralmente são


embutidos nos conhecidos navegadores
(“Browsers”), tais como:

 Internet Explorer (versões: 3, 4, 5, 6)


 Mozilla
 Netscape
Configurando o Cliente Proxy
Internet Explorer 6
Configurando o Cliente Proxy
Netscape v.7
Servidores Proxy – Plataforma Microsoft

 Windows 2000 e 2003


Server
 ISA Server 2004

http://www.microsoft.com/isaserver/

 Outros Fabricantes
 Ex: Wingate (http://www.wingate.com)
Servidor Proxy – Plataforma Gnu/Linux

 SQUID – http://www.squid.org

 Opera em diversas plataformas:

 Linux
 FreeBSD
 NetBSD
 OpenBSD
 BSDI
 Mac OS/X
 OSF/Digital Unix/Tru64
 IRIX
 SunOS/Solaris
 NeXTStep
 SCO Unix
 AIX
 HP-UX
 [Compiling#building_squid_on_os_2 OS/2]
SQUID – Serviço Proxy no
GNU/Linux

http://www.squid-cache.org
SQUID no Debian Linux 4.0

 A versão disponível para o Debian Linux:

 squid 2.6.5-6etch1

 Instalando o SQUID no Debian

 apt-get install squid


Principais Arquivos e Diretórios do Squid
no Debian Linux 4.0
 Arquivo Principal de Configuração:
 /etc/squid/squid.conf

 Arquivos de Saída (LOG):


 /var/log/squid
 acccess.log (guarda log’s de acesso à sites)
 cache.log (guarda log’s relativos ao serviço squid em si)

 Iniciando e/ou parando o serviço:


 /etc/init.d/squid (start | stop | restart)
Comandos úteis no PROMPT do Linux,
aplicados com o Squid
 “Re-criando” a área de “cache” do Squid

# squid –z

 “Rotating” nos LOG´s do SQUID

# squid –k rotate

 Utilizando um diferente arquivo de configuração

# squid –f /root/novoarquivodeconfiguração.conf
squid --help
Usage: squid [-dhsvzCDFNRVYX] [-f config-file] [-[au] port] [-k signal]
-a port Specify HTTP port number (default: 3128).
-d level Write debugging to stderr also.
-f file Use given config-file instead of
/etc/squid/squid.conf
-h Print help message.
-k reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse
Parse configuration file, then send signal to
running copy (except -k parse) and exit.
-s Enable logging to syslog.
-u port Specify ICP port number (default: 3130), disable with 0.
-v Print version.
-z Create swap directories
-C Do not catch fatal signals.
-D Disable initial DNS tests.
-F Don't serve any requests until store is rebuilt.
-N No daemon mode.
-R Do not set REUSEADDR on port.
-S Double-check swap during rebuild.
-V Virtual host httpd-accelerator.
-X Force full debugging.
-Y Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.
Exemplo de “squid.conf”
parte 1
 coredump_dir /var/cache/squid
 http_port 3128
 cache_mgr email@administrador.com.br
 request_body_max_size 45 MB
 request_header_max_size 10000 KB
 ie_refresh on
 cache_mem 100 MB
 cache_dir ufs /var/log/squid/squid 300 32 256
 cache_access_log /var/log/squid/access.log
 cache_log /var/log/squid/cache.log
 cache_store_log /var/log/squid/store.log

 ################################
 # Define ACL's #
 ################################
 acl all src 0.0.0.0/0.0.0.0
 acl Deny_ports port 563 666 1146 1224 1161 1204 1225 1214 1414 1126 1137 2764 2646 1335 1165 1755 1167 3716 3676 1072 1070
 acl redeuna src 10.0.0.0/255.0.0.0
 acl download_files urlpath_regex \.asf$ \.arj$ \.bzip$ \.ace$ \.iso$ \.adt$ \.cbt$ \.cla$ \.com$ \.cpl$ \.csc$ \.dot$ \.drv$ \.lha$ \.lzh$ \.mso$
\.ov?$ \.pot$ \.sys$ \.mp3$ \.asf$ \.wma$ \.wmf$ \.wmf$ \.ttf$ \.scr$ \.mp3$ \.mpeg$ \.avi$

 acl permiteurl dstdomain -i "/etc/squid/regra-url-ok.txt"


 acl bloqueiaurl dstdomain -i "/etc/squid/regra-url.txt"
 acl bloqueianomes dstdom_regex "/etc/squid/regra-nomes.txt"

 #######################################################[
Exemplo de “squid.conf”
parte 2
 ###### APLICANDO ACL's ##################################
 #

 http_access allow permiteurl


 http_access deny bloqueiaurl
 http_access deny bloqueianomes
 #
 http_access deny Deny_ports
 http_access deny download_files
 #
 http_access allow redeuna
 #
 http_access deny all
 #######################################################

 httpd_accel_with_proxy on
 httpd_accel_port 80 3128
 httpd_accel_port 80
 httpd_accel_host virtual

 ### Fim do squid.conf


Analisando os principais parâmetros
do SQUID.CONF
 http_port 3128
 Define a porta de operação do Serviço PROXY.
 cache_mgr email@administrador.com.br
 Define o email do administrador do PROXY (Será exibido aos usuários nas
mensagens de “erros e report´s”.
 ie_refresh on
 “Acerta” compatibilidade com o “Refresh” do Browser MS Internet Explorer.
 cache_mem 100 MB
 Define o tamanho do CACHE que será utilizado.
 cache_dir ufs /var/log/squid/squid 300 32 256
 cache_access_log /var/log/squid/access.log
 cache_log /var/log/squid/cache.log
 cache_store_log /var/log/squid/store.log
 Define respectivamente:
 Diretório do CACHE
 Arquivo de log´s de acesso (ACCESS.LOG) *** Mais Importante!!
 Arquivo de log´s referentes ao SQUID em si (CACHE.LOG)
 Arquivo de log´s de gravações em cache e outros (STORE.LOG)
Analisando os principais parâmetros
do SQUID.CONF - “As ACL´s”
 As ACL´s ou “Access Lists”, fazem parte dos
mais importantes recursos de um Servidor
PROXY bem configurado.

 É necessário primeiro DEFINIR ou CRIAR


uma ACL e posteriormente, APLICAR a
mesma, para só então ela entrar em ação.
Definindo ACL´s
(Principais Parâmetros)
 Parâmetro para definição:

 acl nomedefinido tipodaacl endereço,domínio,destino,etc…

 Principais “Tipos de ACL”


 src = define um ou mais endereços IP`s, ou um RANGE dos
CLIENTES (Browsers). (SRC = SOURCE)
 port = define uma ou mais portas de DESTINO do pacote IP.
 urlpath_regex = define extensões de arquivos dentro de uma
URL solicitada pelo cliente
 dstdomain = define um ou vários domínios ou FQDN´s que
podem ou não serem acessados
 dstdom_regex = define “palavras-chaves” que podem ou não
serem acessados
Definindo ACL´s
(Exemplos)
 acl TODOS_IPS src 0.0.0.0/0.0.0.0
 acl PORTAS port 563 666
 acl REDEINTERNA src 10.19.0.0/255.255.0.0
 acl ARQUIVOS urlpath_regex \.arj$ \.mp3$ .una.br
www.mec.br
www.ufmg.br
 acl PERMITEURL dstdomain .una.br www.mec.org www.cnpg.br
 OU
 acl PERMITEURL dstdomain –i “/root/arquivo1.txt”

 acl BLOQUEIAURL dstdomain .orkut.com .youtube.com


.googlevideo.com
 OU .orkut.com
 acl BLOQUEIAURL dstdomain -i "/root/arquivo2.txt" .youtube.com
.meebo.com
Aplicando as ACL´s

 A aplicação das ACL´s devem ser feitas seguindo o


critério definido pelo administrador da REDE

 Deve-se levar em conta a ordem de aplicação de


cada uma das ACL´s

 Sempre que um PACOTE vindo dos BROWSER´s


for recebido pelo servidor PROXY, todas as ACL´s
APLICADAS, serão rigorosamente seguidas. DE
CIMA para BAIXO (TOP -> DOWN).
Aplicando as ACL´s
(Principal Sintaxe)
 Parâmetro para APLICAÇÃO:
 http_access permite_ou_nega nomedaacl

 Também é possível SOMAR duas ou mais


ACL em uma mesma LINHA, fazendo uma
ligação lógica do tipo “E”, ou seja, somente
se atender AMBAS as condições:
 http_access permite_ou_nega nomedaacl1 nomedaacl2
Aplicando as ACL´s
(Exemplos) TOP

 http_access allow PERMITEURL


 http_access deny BLOQUEIAURL

 http_access deny PORTAS


 http_access deny ARQUIVOS

 http_access allow REDEINTERNA

 http_access deny TODOS_IPS


DOWN

** Cada Pacote será submetido a todas as regras.


- Caso encontre algum ALLOW, conseguirá acessar. Caso contrário, encontrará DENY
Revisando: Exemplo de DEFINIÇÃO
e de APLICAÇÃO de ACL´s
# DEFININDO listas de acessos
acl TODOS_IPS src 0.0.0.0/0.0.0.0
acl PORTAS port 563 666
acl REDEINTERNA src 10.19.0.0/255.255.0.0
acl ARQUIVOS urlpath_regex \.arj$ \.mp3$
acl PERMITEURL dstdomain .una.br www.mec.org
acl BLOQUEIAURL dstdomain .orkut.com .youtube.com .googlevideo.com

# APLICANDO listas de acessos


http_access allow PERMITEURL A ordem em que as ACL´s
http_access deny BLOQUEIAURL são aplicadas é tão importante
http_access deny PORTAS quanto à existência das mesmas.
http_access deny ARQUIVOS

http_access allow REDEINTERNA


http_access deny TODOS_IPS
Exemplo do “access.log”
 1181591169.159 2 192.168.10.144 TCP_IMS_HIT/304 220 GET http://www.camaraolivicola.com.ar/imagenes/der.gif - NONE/- image/gif
 1181591169.161 1 192.168.10.144 TCP_IMS_HIT/304 220 GET http://www.camaraolivicola.com.ar/imagenes/noti2.gif - NONE/-
image/gif
 1181591169.161 1 192.168.10.144 TCP_IMS_HIT/304 220 GET http://www.camaraolivicola.com.ar/imagenes/line.gif - NONE/- image/gif
 1181591169.162 1 192.168.10.144 TCP_IMS_HIT/304 220 GET http://www.camaraolivicola.com.ar/imagenes/esq1.gif - NONE/-
image/gif
 1181591266.736 11 192.168.10.33 TCP_DENIED/403 1450 GET
http://panoramix.ebuddy.com/pics/p/Q/V/pQVjvk1ZiYjJy1BXK6TRXscuu8.png - NONE/- text/html
 1181591270.147 48 192.168.10.33 TCP_DENIED/403 1418 GET http://content.e-messenger.net/emotions/thumbs_up.gif - NONE/-
text/html
 1181591270.159 11 192.168.10.33 TCP_DENIED/403 1422 GET http://content.e-messenger.net/emotions/thumbs_down.gif - NONE/-
text/html
 1181591271.566 162 192.168.10.33 TCP_DENIED/403 1408 GET http://pagead2.googlesyndication.com/pagead/ads? - NONE/- text/html
 1181591271.575 7 192.168.10.102 TCP_DENIED/403 1500 GET
http://ads.globo.com/RealMedia/ads/adstream_mjx.ads/caldeiraodohuck/lardocelar/1625892316@x01? - NONE/- text/html
 1181591271.806 97 192.168.10.102 TCP_DENIED/403 1434 GET http://caldeiraodohuck.globo.com/Caldeirao/upload/bt_blog.swf -
NONE/- text/html
 1181591289.293 620 192.168.10.33 TCP_MISS/200 675 GET http://www.phonefox.com/servlet/update? - DIRECT/193.238.162.21
text/html
 1181591289.332 586 192.168.10.27 TCP_MISS/200 310 GET http://www.phonefox.com/servlet/update? - DIRECT/193.238.162.21
text/html

Dica: Para analisar o log em “tempo real”, use “tail –f /var/log/squid/access.log”


Gerando Gráficos e Relatórios
Detalhados
 É possível utilizar ferramentas externas, como
o “SARG – Squid Analysis Report Generator”,
para gerar relatórios em formatos mais
amigáveis, organizados por:
 IP
 DIA
 SITES ACESSADOS

 Site Oficial do Projeto:


http://sarg.sourceforge.net
Exemplo de Relatórios de Acessos
Gerados com o “SARG”
Exemplo de Relatórios de Acessos
Gerados com o “SARG”
Exemplo de Relatórios de Acessos
Gerados com o “SARG”
Fim!
 Finish Him!

Você também pode gostar