servredes - aula 11 - proxy conceito, funcion e aplic. no linux.pdf
DESCRIPTION
Uploaded from Google DocsTRANSCRIPT
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
Rede LAN:192.168.0.0/24
eth0192.168.0.254
Servidor Proxy
Internet
Link – “Qualquer prestadora”
201.200.200.1eth1
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
� 3128ou
� 8080
Proxy – Exemplo de Funcionamento
Servidor Proxy1043 tcp
3128 tcpRequisição de acesso à
http://www.altavista.com1043 tcp
3128 tcp
Conteúdo do website requisitado
Localização e Obtenção do Conteúdo
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 ProxyInternet Explorer 6
Configurando o Cliente ProxyNetscape v.7
Servidores Proxy – Plataforma Microsoft
� Windows 2000 e 2003 Server� ISA Server 2004
� Outros Fabricantes� Ex: Wingate (http://www.wingate.com)
http://www.microsoft.com/isaserver/
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 --helpUsage: 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 protected]� 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 protected]� 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$
� acl PERMITEURL dstdomain .una.br www.mec.org� OU
� acl PERMITEURL dstdomain –i “/root/arquivo1.txt”
� acl BLOQUEIAURL dstdomain .orkut.com .youtube.com.googlevideo.com� OU
� acl BLOQUEIAURL dstdomain -i "/root/arquivo2.txt"
.una.brwww.mec.brwww.ufmg.brwww.cnpg.br
.orkut.com
.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)
� 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
TOP
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.0acl PORTAS port 563 666acl REDEINTERNA src 10.19.0.0/255.255.0.0acl ARQUIVOS urlpath_regex \.arj$ \.mp3$ acl PERMITEURL dstdomain .una.br www.mec.orgacl BLOQUEIAURL dstdomain .orkut.com .youtube.com .googlevideo.com
# APLICANDO listas de acessos
http_access allow PERMITEURLhttp_access deny BLOQUEIAURLhttp_access deny PORTAShttp_access deny ARQUIVOS
http_access allow REDEINTERNAhttp_access deny TODOS_IPS
A ordem em que as ACL´s são aplicadas é tão importante
quanto à existência das mesmas.
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 AcessosGerados com o “SARG”
Exemplo de Relatórios de AcessosGerados com o “SARG”
Fim!
� Finish Him!