Eduardo Júnior Administração de redes com GNU/Linux Curso de extensão em Administração de redes com GNU/Linux Eduardo Júnior - ihtraum@dcc.ufba.br Gestores da Rede Acadêmica de Computação Departamento de Ciência da Computação Universidade Federal da Bahia
Assuntos abordados - Proxy Server - Tipos de Proxy Server - Objetivos Proxy Server - Squid - Proxy Transparente - Reverse Proxy
Proxy Server
Proxy Server Programa que fica entre as requisições dos clientes apontando para recursos em outros programas.
Proxy Server
Proxy Server Um cliente se conecta ao Servidor Proxy requerindo algum serviço de um servidor diferente.
Proxy Server
Proxy Server Proxy Server avalia a requisição através de regras de filtragem. Pode ser através de endereço IP ou por protocolo.
Proxy Server Se a requisição é validada pelo filtro, o proxy fornece os recursos solicitando o serviço ao servidor original em nome do cliente
Proxy Server
Proxy Server Tipos de Proxy Server: - Caching Proxy - Web Proxy - Filtro de conteúdo Proxy - Anonymizing Proxy - Interception Proxy - Transparent Proxy - Non-Transparent Proxy - Reverse Proxy
Proxy Server Caching Proxy Recupera conteúdo salvo de uma requisição feita anteriormente pelo cliente ou por outro Mantém cópias locais de requisições frequentes
Proxy Server Caching Proxy: - Acelera requisições (menor tempo de resposta) - HTTP 1.0 e superiores contém diversos tipos de cabeçalhos para indicar que certo tipo de conteúdo é estático, ou seja, cacheável e verificação da consistência do mesmo fazendo consultas mais simples e rápidas com o servidor original - validation tags - If-Modified-Since - Expiry
Proxy Server Web Proxy - Foco no tráfego WWW - Uso comum para servir como cache web - Uso de listas de negação (blacklists) para filtrar conteúdo
Proxy Server Filtro de conteúdo Proxy - Controle administrativo sobre todo o conteúdo que passa pelo proxy - Assegurar AUP - Métodos para filtrar conteúdo: - URL e DNS Blacklists - Regex URL - Filtro de conteúdo baseado em palavras chave - Controle de acesso através de autenticação - Anti-vírus - Estatísticas de uso de banda
Proxy Server Transparent Proxy Não modifica a resposta ou requisição além daquelas requeridas pela autenticação/identificação de uso do proxy Termo usado de maneira incorreta
Proxy Server Reverse Proxy - Processo reverso - Instalado na frente de servidores backends - Balanceamento de carga - Encriptação/Aceleração SSL - Cache conteúdo estático - Compressão - Segurança
Proxy Server
Questionamentos
Para que se preocupar com caching? Não bastaria apenas comprar mais banda?
Importância para os Websites
Importância para os fornecedores de entrega de conteúdo
Importância para os ISPs
Cenário Rede DCC
Squid
Squid Servidor proxy e um Web cache Cache de requisições http, ftp, gopher, requisições DNS Atualmente, suporte (limitado) a TLS, SSL, HTTPS Software Livre sob a Licença GPL
Squid Por quê usar o Squid? - redução tempo de resposta - redução consumo de banda - melhora da performace - controle de acesso - autorização/autenticação - logging - gerenciamento de tráfego - distribuição e replicação de conteúdo
Análise do Ambiente
Antes de se implementar um um proxy é preciso fazer alguns levantamentos: - Qual o seu cenário? - Qual o seu objetivo? - Quais os recursos disponíveis? - Como melhorar o desempenho? - Quantidade de memória RAM? - Arquitetura dos discos? - Tipos de sistemas de arquivos e opções de montagem? - Quantidade de espaço utilizado?
Para um ambiente em produção: - Análise do ambiente atual - número de requisições por minuto - número de objetos baixados em um intervalo de tempo pelos clientes
Conhecendo o Squid
Squid Na Distro Debian: /etc/squid/squid.conf /etc/init.d/squid Logs, flexível, mas: /var/log/squid
Squid http_port 3128 visible_hostname gdh acl all src 0.0.0.0/0.0.0.0 http_access allow all
Squid ACL access control list ACO access control operators Altamente flexível: - impedir uso do proxy sem autenticação - impedir uso do proxy por usuários de outras redes - bloquear por domínio de destino - controlar o que dever cacheado - regras mais complexas
Squid Recebendo conexões: # iptables -A INPUT -i eth0 -p tcp --dport 3128 -j ACCEPT
Squid acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 995 acl Safe_ports port 80 21 443 995 acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny!safe_ports http_access deny CONNECT!SSL_ports acl redelocal src 10.5.151.0/24 http_access allow localhost http_access allow redelocal http_access deny all
Squid Site problemático: acl site dstdomain siteproblematico.com always_direct allow site
Squid Fazendo Cache: - Memória RAM - Disco cache_mem 32 MB maximum_object_size_in_memory 16 KB maximum_object_size 64 MB minimum_object_size 0 KB
Squid Fazendo Cache cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 cache_access_log /var/log/squid/access.log
Squid Adicionando Restrições de Acesso: - Bloqueando por domínios ou palavras - Bloqueando por horário - Gerenciando uso de banda
Squid Bloqueando por domínios ou palavras: acl bloqueados dstdomain orkut.com playboy.abril.com.br http_access deny bloqueados acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br http_access deny bloqueados
Squid Bloqueando por domínios ou palavras: acl bloqueados url_regex -i "/etc/squid/bloqueados" http_access deny bloqueados acl permitidos url_regex -i "/etc/squid/permitidos" http_access allow permitidos http_access deny all acl ips-bloqueados dst 200.234.21.23 200.212.15.45 http_access deny ips-bloqueados
Squid Bloqueando por domínios ou palavras: acl palavrasproibidas dstdom_regex "/etc/squid/palavrasproibidas" http_access deny palavrasproibidas - URL - Falsos positivos
Squid Bloqueando por horário: acl almoco time 12:00-14:00 http_access allow almoco acl almoco time 12:00-14:00 acl orkut dstdomain orkut.com www.orkut.com http_access allow orkut almoco http_access deny orkut
Squid Gerenciando uso de banda: delay_pools 1 delay_class 1 2 delay_parameters 1 114688/114688 16384/16348 delay_access 1 allow redelocal Criar exceções!
Squid Gerenciando uso de banda: acl extban url_regex -i \.avi \.exe \.mp3 \.torrent http_access deny extban acl extban url_regex -i "/etc/squid/extban" http_access deny extban
Squid Configurando Proxy Transparente
Squid Prática: - Em trios, escolham a máquina A a ser o proxy transparente e as máquinas B e C os clientes - As máquinas clientes devem trocar seu endereço IP para algum da rede 10.5.151.0/24 - A máquina A deverá configurar SNAT, sendo a interface virtual eth0:0 o gateway da rede supracitada (última aula) - Máquina A instala o Squid e faz o redirecionamento de portas
Squid - Máquina A cria regras de bloqueio baseada em URL, Ips, nomes: - não permitir acesso a uol.com.br - não permitir acesso a 200.17.147.5 - não permitir acesso a sites que contenham esporte na URL # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j \ REDIRECT --to-port 3128 http_port 3128 transparent
Referências http://en.wikipedia.org/wiki/proxy_server http://en.wikipedia.org/wiki/squid_cache http://www.squid-cache.org/ http://wiki.squid-cache.org/squidfaq/aboutsquid http://www.squid-cache.org/intro/why.dyn http://www.visolve.com/squid/squid24s1/contents.php man squid man iptables