Baixe o app para aproveitar ainda mais
Prévia do material em texto
CYAN VS Gráfica VS Gráfica MAG VS Gráfica YEL VS Gráfica BLACK RED ES DE COM PUT ADO RES REDES DE COMPUTADORES REDES DE COMPUTADORES www.bookman.com.br/tekne Idealizada com o intuito de oferecer os subsídios necessários para uma formação qualificada na área de Redes de Computadores, esta obra ajuda o leitor a compreender o funcionamento em camadas das redes de computadores, identificar os principais protocolos do nível de aplicação e ser capaz de instalar os serviços associados a esses protocolos. Redes de Computadores possui projeto gráfico dinâmico e inovador, contribuindo para o desenvolvimento do aluno de forma eficaz por meio de recursos que proporcionam o aprofundamento intelectual. Isso ocorre com o auxílio de exercícios práticos e leituras sugeridas em um exclusivo ambiente virtual de aprendizagem. Respaldado pelo Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul (IFRS), este lançamento da série Tekne é um instrumento pedagógico indispensável para alunos e professores dos cursos do eixo Informação e Comunicação, previstos pelo Ministério da Educação, no Programa Nacional de Acesso ao Ensino Técnico e Emprego (Pronatec). REDES DE COM PUTADORES MARCELO AUGUSTO RAUH SCHMITT ANDRÉ PERES CÉSAR AUGUSTO HASS LOUREIRO MARCELO AUGUSTO RAUH SCHMITT | ANDRÉ PERES | CÉSAR AUGUSTO HASS LOUREIRO SCHM ITT | PERES | LOUREIRO NÍV EL D E A PLIC AÇÃ O E INS TAL AÇÃ O D E SE RVI ÇOS NÍVEL DE APLICAÇÃO E INSTALAÇÃO DE SERVIÇOS N ÍVEL D E APLICAÇÃO E IN STALAÇÃO D E SERVIÇO S Estudante: Visite o ambiente virtual de aprendizagem Tekne em www.bookman.com.br/ tekne para ter acesso a links para sites importantes e máquinas virtuais. 47695_SCHMITT_Redes.indd 1 21/06/13 17:10 Catalogação na publicação: Ana Paula M. Magnus – CRB 10/2052 S355r Schmitt, Marcelo Augusto Rauh. Rede de computadores [recurso eletrônico] : nível de aplicação e instalação de serviços / Marcelo Augusto Rauh Schmitt, André Peres, César Augusto Hass Loureiro. – Dados eletrônicos. – Porto Alegre : Bookman, 2013. Editado também como livro impresso em 2013. ISBN 978-85-8260-094-8 1. Ciência da computação. 2. Redes de computadores. I. Peres, André. II. Loureiro, César Augusto Hass. III. Título. CDU 004.7 Objetivos deste capítulo Proceder com a instalação de um proxy Configurar um servidor proxy Descrever o funcionamento de uma cache Servidores proxy são utilizados como elementos intermediários entre clientes e servidores de aplicações de rede. A utilização desse tipo de mecanismo é justificada pela necessidade de diminuição do tráfego de rede por meio da criação de caches temporárias de objetos acessados por diversas estações na rede, filtragem de dados para implementação de políticas de segurança, análise de dados, adaptação ou transformação de dados, enfim, para tarefas de manipulação dos dados entre o cliente e o servidor de uma aplicação. Servidor proxy capítulo 9 _Livro_Schmitt.indb 145_Livro_Schmitt.indb 145 24/06/13 10:2424/06/13 10:24 146 R e d e s d e c o m p u ta d o re s: n ív e l d e a p li c a ç ã o e i n st a la ç ã o d e s e rv iç o s Introdução A palavra proxy pode ser traduzida por “procurador”, ou seja, uma aplicação clien- te que utiliza um proxy “passa uma procuração” para que este servidor realize a tarefa intermediária de conexão com o servidor de aplicação, realize suas tarefas e repasse o resultado para o cliente. O proxy é capaz de realizar suas ações sobre os protocolos de aplicação (o proxy opera na camada 7). Isso significa que existem aplicações proxy específicas para cada protocolo de aplicação. A Figura 9.1 exemplifica a interação entre cliente, ser- vidor proxy e servidor da aplicação. Para que essa estrutura funcione, o proxy deve intermediar a comunicação. Um proxy de email (antispam, p. ex.) deve estar entre o servidor SMTP (que recebe o email da internet) e a caixa postal do usuário. Sempre que o servidor SMTP recebe um email, repassa ao proxy SMTP, que devolve ao servidor SMTP o email classifica- do e filtrado para encaminhar à caixa postal do usuário. Cliente Conecta-se no proxy Conecta-se no servidor Servidor da AplicaçãoProxy Dados da aplicação Dados da aplicação Figura 9.1 Funcionamento de um servidor proxy. Considere que, para realizar uma classificação de emails, o proxy SMTP deve ser ca- paz de interpretar os cabeçalhos SMTP (qual IP do servidor está enviando o email, qual o domínio deste servidor, quem é o remetente, qual o assunto do email) e, in- clusive, os dados do corpo do email. Isso significa que um proxy SMTP não é capaz de realizar a tarefa de intermediar uma comunicação HTTP. O proxy é específico da aplicação. Um proxy para mensagens instantâneas (MSN) é capaz de registrar todas as men- sagens trocadas entre usuários para análise posterior. Qualquer aplicação pode ter um proxy, desde que ele consiga interpretar os cabeçalhos e analisar os dados do nível de aplicação. O tipo mais comum de proxy é o proxy HTTP. Nesse tipo, o navegador (cliente) conecta-se ao proxy e repassa a URL contendo o objeto que deseja obter da mes- ma forma que faria com o servidor web. O proxy conecta-se ao servidor web e re- quisita esse objeto (da mesma forma que um navegador faria) repassando a requi- DEFINIÇÃO O proxy é uma aplicação, ou seja, é um software instalado em um sistema operacional (da mesma forma que um servidor HTTP, DNS, etc.). DEFINIÇÃO _Livro_Schmitt.indb 146_Livro_Schmitt.indb 146 24/06/13 10:2424/06/13 10:24 147 sição do navegador. Após o recebimento completo do objeto, o proxy o repassa ao navegador. Neste capítulo, você aprenderá a teoria sobre o proxy HTTP e também como instalar um proxy HTTP no Linux. PARA SABER MAIS O uso de servidores proxy é bastante comum em conjunto com filtros de pacotes na implementação de estruturas de firewall. Neste caso, o proxy é utilizado como elemento de filtragem de conteúdo de aplica- ção para implementação da política de segurança de uso da internet. Proxy HTTP O proxy HTTP possui dois objetivos principais: fornecer uma cache de objetos para todas as estações da rede de forma a minimizar o tráfego web, e servir como um mecanismo de segurança na implementação da política de segurança no que diz respeito ao acesso web. Antes de entrarmos mais a fundo no proxy, analisaremos como funciona uma ca- che de objetos web de um computador pessoal. Caso você possua o objeto, o navegador deve então certificar-se de que o mesmo está atualizado, ou seja, mesmo tendo o objeto em cache, o navegador deve veri- ficar se esse objeto não possui uma versão mais atual no servidor e que pode real- mente ser utilizado na página (imagine uma página contendo notícias atualizadas periodicamente, p. ex.). Mas como um navegador sabe se um objeto em cache é atual ou não? Sempre que salvamos ou modificamos um arquivo, o sistema operacional armazena um conjunto de dados vinculados a esse arquivo. A data e hora de gravação ou modi- ficação do arquivo, por exemplo, faz parte desses dados. Cada objeto (arquivo do servidor web) possui sua data de gravação, da mesma forma que cada objeto da cache do navegador. Observe que, ao acessar um objeto, a data/hora de gravação do objeto na cache do navegador será sempre posterior à data/hora do arquivo no servidor web (o arquivo foi gerado e gravado no servidor antes de estar disponível ao navegador). IMPORTANTE Para que se economize tempo e se diminua o tráfego web, os navegadores gerenciam um diretório de arquivos temporários de internet. Esse diretório contém uma cópia dos objetos acessados pelo navegador. Sempre que você acessar uma página, o navegador verifica se você possui ou não os objetos dessa página (arquivos que compõem a página) armazenados neste diretório (cache de objetos). IMPORTANTE _Livro_Schmitt.indb 147_Livro_Schmitt.indb 147 24/06/13 10:2424/06/13 10:24 148R e d e s d e c o m p u ta d o re s: n ív e l d e a p li c a ç ã o e i n st a la ç ã o d e s e rv iç o s Para saber se um objeto é atual (igual ao objeto do servidor web), o navegador deve perguntar ao servidor web se a data de gravação do arquivo (objeto) é poste- rior à data do objeto local, ou seja, saber se o objeto foi modificado após o acesso e gravação dele na cache local. Caso o objeto do servidor possua data de gravação/modificação anterior à do objeto da cache, o navegador pode utilizar o objeto local sem problemas. Caso o objeto no servidor possua data posterior, o objeto atualizado deverá ser obtido pelo navegador. A Figura 9.2 possui um exemplo de troca de mensagens entre um navegador e um servidor web para verificação da possibilidade de utilização de um objeto da cache. 05/01/2013 15:00h gravado arquivo imagem.gif na cache 05/01/2013 15:00h requisitado arquivo imagem.gif pelo navegador 04/01/2013 10:00h criado arquivo imagem.gif 20/01/2013 09:30h modificado arquivo imagem.gif 15/01/2013 13:10h requisitado arquivo imagem.gif pelo navegador, caso tenha sido alterado após 05/01/2013 15:00h mensagem indicando que objeto não foi alterado 20/01/2013 11:15h requisitado arquivo imagem.gif pelo navegador, caso tenha sido alterado após 05/01/2013 15:00h envia objeto imagem.gif atualizado imagem.gif navegador usa objeto da cache 20/01/2013 11:15h gravado arquivo imagem.gif na cache Figura 9.2 Comunicação entre navegador e servidor web para utilização de objeto da cache. _Livro_Schmitt.indb 148_Livro_Schmitt.indb 148 24/06/13 10:2424/06/13 10:24 149 c a p ít u lo 9 S e rv id o r p ro xy A forma de verificação da atualidade de um objeto é realizada utilizando-se a área de variáveis das requisições HTTP. Um campo denominado if-modified-since (que pode ser traduzido por “se modificado após”) é enviado ao servidor, conforme a Figura 9.3. requisição http If-modified-since: <data> requisição http If-modified-since: <data> resposta http Código: 304 Not Modified resposta http Código: 200 Ok (contendo objeto atualizado) Figura 9.3 Requisição de arquivos com verificação de atualidade. Como pode ser visto na Figura 9.3 existem duas possíveis respostas a uma requisi- ção com o campo if-modified-since: 1. resposta com campo not-modified indicando que o objeto não foi alterado; 2. resposta contendo o objeto, indicando que o objeto foi alterado. Observe que, para que não se perca tempo, caso o objeto tenha sido modificado, a pergunta if-modified-since é praticamente ignorada pelo servidor web e o ob- jeto é enviado da mesma forma que uma requisição comum. Tudo o que vimos até agora faz uma estação (um computador pessoal) economizar tráfego de rede sempre que for acessar objetos que já possua em cache (lembre-se de que na épo- ca das conexões de internet utilizando placas de fax-modem com velocidades de 1200bps essa cache local era muito valiosa). O servidor de proxy funciona exatamente da mesma maneira, porém, atenden- do todas as estações da rede. Para que o proxy possa funcionar, os navegadores devem encaminhar suas requisições HTTP ao proxy. Ao receber essa requisição, o proxy verifica em sua cache se possui o objeto. Caso não possua, o proxy irá conectar-se ao servidor web indicado na requisição e obter o objeto. O proxy man- terá uma cópia do objeto requisitado em sua cache. Caso o proxy já possua o objeto requisitado em cache, verificará junto ao servidor se o mesmo encontra-se atualizado da mesma forma que um navegador faria (uti- lizando o campo “if-modified-since”). Ao acessar uma página, um navegador faz o proxy manter uma cópia dos objetos que compõem a página em cache. Se outra estação da rede requisitar a mesma página, o proxy poderá realizar a verificação e entregar os objetos ao navegador. _Livro_Schmitt.indb 149_Livro_Schmitt.indb 149 24/06/13 10:2424/06/13 10:24 150 Em relação à cache de objetos, o servidor proxy comporta-se da mesma forma que um navegador com uma cache local, porém, atende a toda a rede. Se uma estação requisita uma página, os objetos dessa página ficam disponíveis para todas as ou- tras estações. Para que você entenda melhor o ganho que temos ao utilizar esse tipo de solução, imagine quantos usuários acessam as mesmas páginas todos os dias na rede de uma empresa. Mesmo páginas dinâmicas possuem objetos que são atualizados com pouca frequência (logotipos, imagens de menus, etc.). Instalação no Linux Vamos realizar a instalação do proxy squid no Ubuntu 12.04 LTS. Para isso, crie uma máquina virtual e, com privilégios de root, instale o squid execu- tando: apt-get install squid Esse comando instalará o proxy squid3 no Linux. Os arquivos de configura- ção do squid ficam no diretório: /etc/squid3 Agora, criaremos um arquivo de configuração simples do squid analisan- do cada parâmetro. Antes de começarmos, renomearemos o arquivo exem- plo (ótima fonte de referências) e criaremos um arquivo novo. Execute os comandos no diretório de configuração do squid: mv squid.conf squid.conf.orig vi squid.conf o arquivo deve conter a seguinte configuração: Arquivo squid.conf # definicao da porta a ser utilizada pelo servidor http_port 3128 # arquivo para registros de requisicoes de acesso cache_access_log /var/log/squid3/access.log DICA Um aspecto importante em relação ao servidor a ser utilizado como proxy é que devemos considerar que todo o tráfego da navegação das estações estará passando por ele. Tenha cuidado para não criar um gargalo em sua rede! O servidor proxy precisa de uma conexão veloz com a rede, muita memória RAM e disco rápido para armazenamento e acesso aos objetos da cache e um bom processador para realizar as tarefas de filtragem. Não cometa o erro de escolher um servidor de baixa capacidade para ser utilizado como proxy. DICA _Livro_Schmitt.indb 150_Livro_Schmitt.indb 150 24/06/13 10:2424/06/13 10:24 151 c a p ít u lo 9 S e rv id o r p ro xy # memoria RAM reservada para cache de objetos cache_mem 128 MB # percentual de swap (limiar baixo) cache_swap_low 90 # percentual de swap (limiar alto) cache_swap_high 95 # tamanho maximo de objeto (global) maximum_object_size 5120 KB # tamanho maximo de objeto (na RAM) maximum_object_size_in_memory 20 KB # diretorios de objetos cache_dir ufs /var/spool/squid3 10240 16 256 # definicao de variaveis acl rede src 192.168.0.0/16 acl sites_bloq url_regex i “/etc/squid3/bloq.txt” # regras de acesso http_access deny sites_bloq http_access allow rede http_access deny all Analisando cada parâmetro, temos do segundo ao sétimo parâmetros como sen- do responsáveis pelo desempenho do servidor e, do oitavo em diante, a parte de controle de acesso: 1. http_port 3128 – define a porta que será utilizada pelo servidor de proxy. Os clientes devem ser configurados para conectarem-se no endereço IP do proxy, na porta especificada nesse parâmetro (3128 no exemplo). Você pode especificar a porta que quiser. Por padrão, o squid utiliza a porta 3128. 2. cache_access_log /var/log/squid3/access.log – define o arquivo que con- terá os registros de todas as requisições solicitadas pelos clientes ao proxy. É nesse arquivo que você poderá obter informações das páginas que cada cliente solicitou. Também é possível identificar o resultado da requisição (se foi atendida ou bloqueada, p. ex.). 3. cache_mem 128 MB – definição de quanto de memória RAM será reservada ao proxy. Este parâmetro é muito importante em um servidor em produção. Caso você possua um servidor dedicado, reserve entre 80% e 95% da quan- tidade de RAM total para proxy. Lembre-se de que o acesso à RAM é muito mais rápido que ao disco, portanto, este parâmetro influencia diretamente no desempenho do servidor. _Livro_Schmitt.indb 151_Livro_Schmitt.indb 151 24/06/13 10:2424/06/13 10:24 152 4. cache_swap_low 90 e cache_swap_high 95 – estes dois parâmetrosoperam em conjunto e definem os limites de uso de memória RAM por objetos da cache. Considere que você tem uma área para guardar objetos na RAM definida pelo parâmetro cache_mem. Pois bem, você quer aproveitar ao máximo este espaço! Então, é importante que o proxy utilize o máximo de espaço, porém, sem esgotar a capacidade (afinal, se você esgotar a capacidade da RAM, perderá objetos). Logo, você deve identificar qual o ponto no qual você para de guardar objetos na RAM. Esse limite máximo é o cache_swap_high, que no exemplo está em 95%, ou seja, o proxy guardará objetos até 95% do total da RAM reservada – após este limite, passará objetos para o disco (swap). Na ocorrência de swap, quantos objetos o proxy deve passar para o disco? Se passar todos os objetos da RAM para o disco, perderemos desempenho e, se passar poucos objetos, terá que fazer novamente o swap de objetos em breve. Entra, então, o limiar baixo no parâmetro cache_swap_low, que neste caso está em 90%. Com essa configuração, o proxy irá manter-se sempre com a RAM entre 90% e 95% de ocupação. A Figura 9.4 exemplifica a situação. 90% 95% Cache Figura 9.4 Uso de RAM para cache de objetos e definição de limiares de swap. 5. maximum_object_size 5120 KB – este parâmetro define o tamanho má- ximo de objetos que deverão ser armazenados pelo proxy. Objetos maiores serão entregues aos clientes, porém, não terão cópia em cache. 6. maximum_object_size_in_memory 20 KB – este parâmetro define o ta- manho máximo de objetos que ficarão disponíveis em cache na memória RAM. Objetos maiores serão armazenados diretamente em disco. 7. cache_dir ufs /var/spool/squid3 10240 16 256 – este parâmetro define a estrutura de diretórios que será utilizada para armazenamento dos obje- tos em disco. Inicialmente, é definido o diretório raiz da cache de objetos (/var/spool/squid3 neste exemplo). O número após a definição da raiz indica a quantidade de espaço do disco que será reservada para armazenamento ATENÇÃO As regras de controle de acesso são verificadas pela ordem no arquivo e são excludentes, ou seja, se uma estação, independentemente de seu endereço de rede, tentar acessar um site que está no arquivo de sites bloqueados, será bloqueada pelo proxy. A regra 10 bloqueia este acesso e as regras 11 e 12 não são analisadas. Caso o site que a estação está tentando acessar não esteja no arquivo de sites bloqueados, então a regra 11 será analisada. Se a estação estiver na rede 192.168.0.0/16, então seu acesso será permitido. Se não estiver nesta rede, a regra 12 será analisada e a estação será bloqueada por esta regra. ATENÇÃO _Livro_Schmitt.indb 152_Livro_Schmitt.indb 152 24/06/13 10:2424/06/13 10:24 153 dos objetos em MB (10240 no exemplo). O número seguinte define a quanti- dade de pastas a serem criadas após a raiz (por padrão 16) e a quantidade de subpastas para cada pasta criada (256). 8. acl rede src 192.168.0.0/16 – iniciamos agora as configurações de controle de acesso. As configurações de acl (access control list) indicam a definição de variáveis a serem utilizadas nas regras de acesso. Nesta linha, temos a defini- ção de uma variável chamada “rede” a qual possui o valor “192.168.0.0/16”, ou seja, um endereço de rede. Todas as estações que iniciam pelo IP “192.168” pertencem a essa rede. Lembre-se de adequar essa regra à sua rede! 9. acl sites_bloq url_regex -i “/etc/squid3/bloq.txt” – este é um exemplo de definição de variável que aponta para um arquivo. Neste caso, o arquivo pos- sui um conjunto de caracteres que devem ser analisados como expressões regulares para URLs (url_regex). A variável “sites_bloq” nesta linha possui as expressões regulares contidas no arquivo “bloq.txt”. 10. http_access deny sites_bloq – nesta linha, é definido uma regra de controle de acesso. Não será permitido o acesso a qualquer site contido no arquivo apontado por “sites_bloq”. 11. http_access allow rede – esta regra define que todas as estações que pos- suem o endereço IP definido pela variável “rede” podem acessar qualquer site. 12. http_access deny all – esta regra define que nenhum acesso será permitido. Agora é a sua vez! 1. Descreva o funcionamento do Proxy HTTP. 2. Um navegador HTTP deve apresentar um objeto ao usuário. Ele possui esse objeto em cache e está configurado de forma a utilizar um proxy HTTP (o qual também possui uma cópia do objeto em ca- che). Apresente todas as mensagens trocadas entre o navegador, o proxy e o servidor web no caso de: a) o objeto da cache do navegador e do proxy estarem desatualizados; b) apenas o objeto da cache do navegador estar desatualizado; c) o objeto da cache do navegador e do proxy estarem atualizados. 3. Como funciona uma cache de objetos web de um computador pessoal? _Livro_Schmitt.indb 153_Livro_Schmitt.indb 153 24/06/13 10:2424/06/13 10:24 154 R e d e s d e c o m p u ta d o re s: n ív e l d e a p li c a ç ã o e i n st a la ç ã o d e s e rv iç o s Configurações básicas Agora, editaremos o arquivo bloq.txt no diretório /etc/squid3/ vi/etc/squid3/bloq.txt Adicione no arquivo a linha: facebook.com Isso significa que o qualquer site que contenha a expressão facebook.com não será acessível por meio do proxy. Reinicialize o squid para que as regras sejam ati- vadas com o comando: restart squid3 Os logs de inicialização do squid podem ser observados no arquivo: /var/log/syslog Configure seu navegador para utilizar o proxy. A Figura 9.5 contém a tela de confi- gurações de preferências do navegador Firefox (utilizado como exemplo). Figura 9.5 Configurações de preferências do navegador Firefox. _Livro_Schmitt.indb 154_Livro_Schmitt.indb 154 24/06/13 10:2424/06/13 10:24 http://facebook.com/ http://facebook.com/ 155 c a p ít u lo 9 S e rv id o r p ro xy Nessa tela, clique no botão de “Configurar conexão”. A tela da Figura 9.6 aparecerá. Configure o endereço IP do servidor proxy conforme o endereço do seu servidor na porta 3128 (porta que você configurou no squid). No caso do exemplo, o servi- dor proxy possui o IP 192.168.5.247. Figura 9.6 Configuração de proxy no navegador Firefox. Após a configuração, tente acessar o site: http://www.facebook.com. Como este endereço está na lista de bloqueados, será apresentada a tela da Figura 9.7 no navegador indicando o bloqueio. Figura 9.7 Página indicando o bloqueio de acesso ao site pelo proxy. O bloqueio do acesso pode ser confirmado via registro no arquivo /var/log/ squid3/access.log. Execute o comando: tail /var/log/squid3/access.log _Livro_Schmitt.indb 155_Livro_Schmitt.indb 155 24/06/13 10:2424/06/13 10:24 http://www.facebook.com/ Servidor proxy Introdução Proxy HTTP Instalação no Linux Configurações básicas
Compartilhar