UNIVERSIDADE CATÓLICA DE GOIÁS DEPARTAMENTO DE COMPUTAÇÃO GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS IP WESLEY SOARES PIRES JUNHO 2007 UNIVERSIDADE CATÓLICA DE GOIÁS DEPARTAMENTO DE COMPUTAÇÃO GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS TCP/IP Trabalho de Projeto Final de Curso apresentado por Wesley Soares Pires à Universidade Católica de Goiás, sob a orientação do Professor Ulisses Afonseca, MSc., como requisito parcial para obtenção do título de Bacharel em Engenharia de Computação. ii ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS TCP/IP WESLEY SOARES PIRES Trabalho de Projeto Final de Curso apresentado por Wesley Soares Pires à Universidade Católica de Goiás – Departamento de Computação, como parte dos requisitos para obtenção do título de Bacharel em Engenharia de Computação. ____________________________________ ____________________________________ Prof. Ulisses Afonseca, MSc Prof. Olegário Correa da Silva Neto, MSc Orientador Coordenador de Projeto Final de Curso iii AGRADECIMENTOS Aos professores e colegas da UCG pelo convívio e amizades marcantes. Em especial, ao Prof. Ulisses, pela orientação e paciência na elaboração desta monografia. iv RESUMO Este trabalho busca fazer uma abordagem no uso de software livre e proprietário os principais serviços IP (serviços de e-mail, serviços Dns, serviços proxy, serviços FTP, serviços web, serviços de arquivo e autenticação, serviços de diretórios, serviços VPN). Este trabalho relata um pouco de cada um dos principais serviços IP e dos software livres e proprietários que implementam estes serviços. Palavras-chave: licenças de uso de software, software livre, software proprietário, serviços IP, serviço VPN. v ABSTRACT This work search na approach in the use of software libre and proprietary in the main IP services (e-mail service, domain service, proxy service, FTP service, web service, file and authentication services, directory server, VPN service). This work reports a few about every on of the main IP services and the software libre and proprietary than implement theses services. Key words: licence to use software, software libre, software proprietary, IP service, service VPN. vi ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS TCP/IP SUMÁRIO LISTA DE FIGURAS.................................................................................................................9 LISTA DE TABELAS ..............................................................................................................10 LISTA DE ABREVIATURAS E SIGLAS................................................................................11 CAPÍTULO I: INTRODUÇÃO ................................................................................................12 1.1. Justificativa ....................................................................................................................13 1.2. Problemas e Hipótese.....................................................................................................13 1.3. Estrutura do trabalho ......................................................................................................13 CAPÍTULO 2: LICENÇAS DE USO DE SOFTWARE .............................................................14 2.1. Introdução......................................................................................................................14 2.2. Software Proprietário .....................................................................................................14 2.2.1. Graus de liberdade no uso de softwares proprietários...............................................15 2.3. Software Livres ..............................................................................................................17 2.3.1. Licenças GNU (GNU is not Unix) ...........................................................................17 2.3.2 Licenças BSD (Berkeley Software Distribution).......................................................17 2. – Copyright .................................................................................................................18 CAPÍTULO 3: Serviços IP........................................................................................................19 3.1. Serviços de Correio Eletrônico .......................................................................................19 3.2. Serviços FTP (File Transfer Protocol) ...........................................................................22 3.3. Serviços Proxy ...............................................................................................................24 3.4. Serviços DNS (Domain Name Service) ..........................................................................25 3.5 Serviços Web ..................................................................................................................27 3.5.1. Especificações dos principais Servidores Web.........................................................29 3.5.2. Linguagens de Script ...............................................................................................30 3.6 Servidor de Arquivos e autenticação................................................................................32 3.6.1 SMB (Server Message Block) / CIFS (Common Internet File System )......................33 3.6.1.1 PDC (Primary Domain Controller ) ......................................................................34 3.6.1.2 BDC (Backup Domain Controller ).......................................................................34 3.6.1.5 Samba ..................................................................................................................36 3.6.1.4 Samba TNG..........................................................................................................36 3.6.1.5 Microsoft Windows ..............................................................................................36 3.6.2 NFS (Network File System ) .....................................................................................37 3.6.2.2 Windows Services for Unix ..................................................................................39 2.7 Serviços de Diretórios: ....................................................................................................40 2.7.1 X.500 .......................................................................................................................40 3.7.2 LDAP (Lightweight Directory Access Protocol) .......................................................40 3.7.3 OpenLDAP ..............................................................................................................41 3.7.4 Active Directory (AD) ..............................................................................................43 3.8 Virtual Private Network (VPN) .......................................................................................43 3.8.1 Arquitetura de uma VPN ..........................................................................................44 3.8.2 Criptografia ..............................................................................................................45 3.8.2.1 Criptografia Assimétrica.......................................................................................46 vii 3.8.2.2 Criptografia Simétrica ..........................................................................................46 3.8.2.3 Certificado Digital ................................................................................................46 3.8.3 Tunelamento ............................................................................................................47 3.8.3.1 Protocolos de tunelamento....................................................................................47 3.8.4 Principais Ferramentas VPN.....................................................................................49 3.8.4.1 Freeswan/Openswan .............................................................................................49 3.8.4.2 OpenVPN.............................................................................................................49 3.8.5 Protocolo de Segunranca da Internet (IpSec) ............................................................50 3.8.5.1 Mecanismos de Autenticação................................................................................51 3.8.5.2 Modos de Operação ..............................................................................................52 CAPÍTULO 4: IMPLEMENTANDO VPN USANDO O PROTOCOLO IpSec ........................54 4.1 Implementando entre Gateway Linux ..............................................................................55 4.1.1 Instalação do Opens/Wan .........................................................................................55 4.1.2 Configuração do Opens/Wan....................................................................................56 4.1.3 Implementando entre um Gateway Linux e um Windows 2003 .................................59 CAPÍTULO 5: CONCLUSÃO..................................................................................................61 REFERÊNCIAS BIBLIOGRÁFICAS ......................................................................................63 8 LISTA DE FIGURAS Figura 3.4.1: Analogia dos servidores DNS com placas de referência. [27] ..........................26 Figura 3.5.1: Funcionamento de um serviço http [9] ............................................................28 Figura 3.5.2: Quadro comparativo entre HTTP/1.0 e HTTP/1.1[1] .......................................28 Figura 3.7.2: Arvore LDAP [28] ..........................................................................................41 Figura 3.8.1.1: VPN utilizando a configuração Host-to-Host. [3].........................................45 Figura 3.8.1.2: Arquitetura VPN utilizando a configuração Host-to-Network. [3].................45 Figura 3.8.1.3: Arquitetura VPN utilizando a configuração Network-to-Network. [3]...........45 Figura 3.8.5.2.1: Modo transporte [35]................................................................................52 Figura 3.8.5.2.2: Modo túnel [35] ........................................................................................52 Figura 4.1: Modelo VPN ......................................................................................................54 9 LISTA DE TABELAS Tabela 2.1.1: Especificações das características dos graus de liberdade de uso do software ..15 Tabela 3.1.1: Exemplo de softwares clientes de e-mail:........................................................21 Tabela 3.2.1: Exemplo de ferramentas FTP..........................................................................23 Tabela 3.3.1: Exemplos de Softwares de serviços Proxy.......................................................25 Tabela 3.4.1: Exemplos de softwares Servidores DNS..........................................................27 Tabela 3.5.1: Exemplo de clientes de serviços WEB ............................................................29 Tabela 3.5.1.1: Comparando as Características dos servidores .............................................30 Tabela 3.5.2.1: Característica de licenças das principais ferramentas de script .....................31 Tabela 2.5.2.2: Comparando as características das linguagens:.............................................32 Tabela 3.6.1: Características do protocolo SMB/CIFS..........................................................35 Tabela 3.7.4: Visão Geral do Active Directory .....................................................................43 Tabela 3.8.3.1: Tabela de comparação entre os protocolos [32] ............................................48 Tabela 3.8.5.1: Relação entre protocolos e associações de Segurança...................................53 10 LISTA DE ABREVIATURAS E SIGLAS ACK ACKNOWLEDGE AD ACTIVE DIRECTORY BSD BERKELEY SOFTWARE DISTRIBUTION DNS DOMAIN NAME SERVER FTP FILE TRANSFER PROTOCOL GID GROUP IDENTIFICATION GNU GNU IS NOT UNIX GPL GENERAL PUBLIC LICENSE HTML HYPERTEXT MARKUP LANGUAGE HTTP HYPERTEXT TRANSFER PROTOCOL IMAP INTERNET MAIL ACCESS PROTOCOL IP INTERNET PROTOCOL IPSEC IP SECURITY PROTOCOL LDAP LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL NFS NETWORK FILE SYSTEM PHP HYPERTEXT PREPROCESSOR PID PROCESS IDENTIFICATION POP3 POST OFFICE PROTOCOL VERSION 3 S.O SISTEMA OPERACIONAL SMTP SIMPLE MAIL TRANSFER PROTOCOL TI TECNOLOGIA DA INFORMAÇÃO VPN VIRTUAL PRIVATE NETWORKING WWW WORLD WIDE WEB 11 ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS IP CAPÍTULO I: INTRODUÇÃO Os serviços de redes IP são indispensáveis para as empresas que utilizam tecnologia de rede. Entretanto o alto custo dos softwares que implementam os serviços de rede faz com que muitos coordenadores de TI (Tecnologia da Informação) adquirem as licenças de software de maneira indevido ou fazendo a pratica da pirataria. Como o combate à pirataria foi intensificado nos últimos anos no Brasil, as corporações têm duas saídas para evitar constrangimentos; pagar as taxas de licenciamento ou usar os chamados softwares livres. Estes são softwares alternativos que em alguns casos permitem economia financeira, utilização plena, liberdade para instalação, execução e modificação, entre outros aspectos. Tendo conceitos diferentes aos softwares livres, aos softwares proprietários é vedada sua modificação, e a copia indevido é proibida e considerada crime. Para usar legalmente este tipo de software, a maioria dos desenvolvedores, cobram taxas de licenciamento. O tema deste trabalho é o uso de ferramentas de software livre ou proprietários. Dentro deste contexto este trabalho se delimita ao uso de softwares livres e proprietários para serviços de rede IP. O objetivo geral é fazer uma abordagem comparativa do uso de ferramentas de software livre e proprietária para serviços IP. Este trabalho também propões atingir os seguintes objetivos específicos: − Identificar o grau de liberdade dos principais tipos de licenças de uso de, tanto proprietária quanto livre; − Conceituar e diferenciar software proprietário de software livre; − Verificar quais fatores impedem ou ajudam na adoção de um tipo de licença de software; − Explicitar as vantagens e desvantagens técnicas dos dois modelos de software; − Identificar ferramentas de software proprietárias e livres para os principais serviços IP. 12 1.1. Justificativa As empresas hoje usam serviços IP para compartilhar recursos e informação. Para permitir este compartilhamento existem ferramentas de software livre e software proprietário. Os coordenadores de TI têm que estudar qual é a alternativa que traz o melhor custo – beneficio para implementar as soluções considerando tempo de implantação, grau de dificuldade, etc. Pensando nisto, uma abordagem comparativa do uso de ferramentas de software livre e proprietária é de grande importância para ajudar seleção de tais ferramentas. Este trabalho pode ser usado como guia numa possível tomada de decisão na escolha de um destes modelos de software. 1.2. Problemas e Hipótese Este trabalho respondeu os seguintes problemas: − Um software livre é mais difícil de ser manuseado do que o software proprietário? − Existe suporte para software livre do mesmo modo que existem para software proprietários? − É viável a adoção de software livre? As ferramentas de software livre e proprietária possuem qualidade técnica e dificuldade de uso e implementação similares. 1.3. Estrutura do trabalho O Capítulo 2 conceitua Software Livre e Software Proprietário e seus tipos de licenças e grau de liberdade de uso. O Capitulo 3 aborda os principais serviços IP (correio, FTP, proxy, DNS, WEB, serviços de arquivos e autenticação, serviços de diretório e serviços VPN). O Capitulo 4 apresenta a implementação do serviço VPN. O Capitulo 5 conclui este trabalho. 13 ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS IP CAPÍTULO 2: LICENÇAS DE USO DE SOFTWARE 2.1. Introdução Licença de uso de software é um é um documento quem vem junto ao software, no qual o autor define as condições pelas qual o software pode ser utilizado, ou seja, autor define se pode modificar ou redistribuir um programa e seus trabalhos derivados. Classificamos uma licença conforme o grau de liberdade que autor definiu podendo ser dividida basicamente em software proprietário e software livre [25]. 2.2. Software Proprietário É basicamente todo software que veda o acesso ao seu código-fonte e conseqüentemente à sua alteração. Sendo o contrário do Livre. Os proprietários podem ser softwares com licença comercial ou não. Os softwares com licença comercial, como o próprio nome diz, são aqueles feitos com a finalidade de obter lucros por meio da venda de licenças, as principais licenças comerciais são: Shareware, Trial, Demo e Adware. Os softwares proprietários não comerciais não têm finalidade de obter lucros por meio da venda de licenças, as principais licenças não comerciais são: Freeware e Adware. Cada tipo de licença tem seu grau de liberdade definida pelo autor junto com o copyright, no tópico 2.1.1 abordará as principais características de cada licença [5]. 14 Tabela 2.1.1: Especificações das características dos graus de liberdade de uso do software Software Limitações Licenças de Redistribuição Código Expira1 Banner2 Software Freeware Adware Shareware Trial Demo Aberto Comercial 2.2.1. Graus de liberdade no uso de softwares proprietários Freeware: [Do inglês Free = gratuito + (soft) ware] (software gratuito). Programas com licenças freeware é uma categoria de software gratuito, eles não possuem limitações, não expiram e não é preciso pagar algum tipo de licença para usá-los. Entretanto, também sua comercialização, direta ou incluída em pacotes pagos, não é autorizada pelo autor. Alguns programas são gratuitos apenas para pessoas físicas ou uso não comercial. É diferente de software livre, pois a licença freeware permite a redistribuição, mas não a modificação, e seu código fonte não são disponibilizados, portanto estes programas não são softwares livre. Exemplos: Acrobat Reader3, BIND4, Mozilla Thunderbird5 [24]. Shareware: A licença shareware permite copia-lo, distribuí-lo e usá-lo por um período com certas restrições impostas, estas restrições podendo ser um determinado tempo de uso ou em números de utilizações, podendo perder algumas ou simplesmente todas as suas funcionalidades. Esta categoria de licença permite que o autor não só divulgue o trabalho realizado como também lucrar com ele. Geralmente, o código fonte não é disponibilizado e, portanto modificações são impossíveis. Exemplos: Vshell6, Wingate7 [24]. Demo: Considera-se um demo (abreviação de "demonstração" ou "demonstration") Um programa que vem com apenas algumas funções habilitadas. Este tipo é distribuição é bastante usada em músicas e jogos. Os demos não expiram e nem podem ser registrados. Portanto se o usuário quiser adquirir o produto terá que recorrer às lojas. Geralmente, um demo é lançado 1 2 3 4 5 6 7 Significa que tem um prazo de validade. Seção de uma página da Internet contendo um anúncio. Acrobat Reader é um software que permite que o usuário do computador visualize, navegue e imprima arquivos no formato PDFs. O Bind (Berkeley Internet Name Domain) é um software que implementa um servidor de nomes de domínio. Mozilla Thunderbird é um leitor de e-mail e news da Mozilla Foundation (mesma criadora do Firefox). Vshell é um servidor de arquivos da Vandyke Software para Telnet e FTP que permite total controle sobre os arquivos e privilégios. Também possui forte encriptação, autenticação e garante total integridade de arquivos. WinGate Proxy é um programa de proxy da Deerfield.com que permite se compartilhar conexão de internet. 15 meses antes do lançamento do produto completo para dar uma amostra aos clientes do que o produto proporciona. Serve para que os interessados possam ter uma idéia das funções do programa antes de comprá-lo. Exemplos: WinProxy8, Crystal FTP9, DNS2Go10 [24]. Trial: O termo "Trial" (= tentativa, em inglês) É a versão para teste. Costuma-se expirar em alguns dias ou depois de um determinado número de utilizações. Além disso, pode trazer algumas restrições, como não fazer coisas que a versão completa faz. Semelhante aos programas demos, com diferenças em ter maiores funcionalidades. Os programas com licenças trial não podem ser registrados. Portanto se o usuário quiser adquirir o produto terá que recorrer às lojas. Exemplos: Trellian FTP11, Babylon12, Arlington Custom Browser13 [24]. Adware: [Ingles Ad (anúncio) + ware (utensílio)] Programas com licenças adware, são semelhante ao freeware, são software gratuitos, eles não possuem limitações, não expiram e não é preciso pagar algum tipo de licença para usá-los. Os adwares são muito conhecidos por trazerem algum tipo de propaganda que bancam os custos do desenvolvimento e manutenção do software. Alguns adwares oferecem versões pagas, sem propaganda sendo a compra opcional. Algumas empresas usam o adware para monitorar a atividade do usuário na internet, deste modo eles mostram propagandas conforme personalizadas. Exemplos: Opera14, Flashget15, Msn Messanger16 [24]. 8 9 10 11 12 13 14 15 16 WinProxy é um programa proxy da Blue Coat Systems,que permite se compartilhar conexão de internet. Crystal FTP é um programa para FTP da Crystal Art Software. Dns2go é um programa Dns para criar domínios dinâmico no formato seunome.dns2go.com para seu computador ao invés de publicar seu IP, produzido pela Deerfield.com. Programa Cliente FTP da Trellian Softwares, além de ser o mais rápido Transferidor FTP você pode usá-lo com gerenciador de Download. O Babylon é um software que dá acesso instantâneo, com apenas um clique do mouse, a traduções, informações relevantes e a conversões de unidades de medida. Arlington Custom Browser é um navegador Web customizável de modo a bloquear acesso a certas páginas, não deixar que se façam downloads, customizar a aparência do browser de acordo com sua empresa/instituição e etc. Opera é um navegador criado em 1994 pela empresa estatal de telecomunicações da Noruega (Telenor) e foi a primeira alternativa leve para os usuários, ocupando menos espaço em disco do que outros navegadores. FlashGet (anteriormente conhecido como JetCar) é um Gerenciador de downloads gratuito, disponível originalmente em duas versões, uma paga e outra com anúncios publicitários, esta última incluindo um Browser Helper Object para Internet Explorer, o que levou algumas pessoas a rotulá-lo como spyware. MSN Messenger, ou apenas MSN, é um programa de mensagens instantâneas criado pela Microsoft Corporation. O programa permite que um usuário da Internet se comunique com outro que tenha o mesmo programa em tempo real, podendo ter uma lista de amigos "virtuais" e acompanhar quando eles entram e saem da rede. 16 2.3. Software Livres O software livre, não é necessariamente software grátis, pois há softwares livres comerciais. Software livre, segundo [3], é qualquer programa de computador que se enquadra filosofia citada nos quatro tópicos abaixo: 1. A liberdade de executar o programa, para qualquer propósito; 2. A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades. O acesso ao código-fonte é um pré-requisito para esta liberdade; 3. A liberdade de redistribuir cópias de modo a ampliar as possibilidades de acesso de pessoas e instituições a tais programas; 4. A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie, sem gastos adicionais; 5. Então o software livre é necessariamente software não-proprietário. As principais licenças de software livre são BSD e a GNU. 2.3.1. Licenças GNU (GNU is not Unix) Segundo Richard Stallman, o termo free software, pode causar confusão ao ser interpretado como um software gratuito, para ele o termo free não esta relacionado ao preço, mas sim a liberdade de utilização do software. Ou seja, o programa pode ser utilizado sem restrições, modificado, melhorado, redistribuído gratuitamente ou cobrado. Possui a restrição de não permite que versões modificadas possam ser redistribuídas de forma não livre. Para garantir a redistribuição de forma não livre, está licença foi vinculada com a copyright [4]. Exemplos: Debian, Mozilla, Kde [5]. 2.3.2 Licenças BSD (Berkeley Software Distribution) A licença BSD é bem mais liberal, permite que versões modificadas possam ser redistribuídas de forma não livre. Ela diz que os créditos dos autores originais devem ser mantidos, mas não estabelece outras limitações. Está licença está relativamente próxima da licença de domínio público, pois tem poucas restrições quando comparada com a GNU ou mesmo a restrições determinadas pelo copyright. Exemplos: FreeBSD, NetBSD, OpenBSD [19]. 17 2. Copyright Todo produto de software é derivado de atividade intelectual, pode ser protegido pela lei. O conceito fundamental do copyright é: O autor original do trabalho determina a forma pela qual sua obra será utilizada [5]. Para que o autor de um software possa determinar como o seu produto deve ser utilizado ou proteger os direitos autorais utiliza-se o copyright. Um registro no copyright tem um prazo de validade de 70 anos após o falecimento do autor, após este prazo o produto tornasse de domínio público [25]. 18 ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS IP CAPÍTULO 3: Serviços IP 3.1. Serviços de Correio Eletrônico O correio eletrônico é uma forma de comunicação disponível na rede, onde você usa uma caixa postal eletrônica simbolizada por um endereço do tipo [email protected]. A aplicação básica do correio eletrônico é a comunicação entre duas ou mais pessoas Segundo [2] abaixo segue algumas vantagens do correio eletrônico: − É ágil: em segundos ou minutos para chegar até à caixa postal do destinatário, em qualquer parte do mundo; − É de graça: você não paga por mensagem enviado ou recebido, alguns provedores cobram uma mensalidade para usar os serviços; − É rápido: em questões de minutos chega a qualquer parte do globo sem pagar nada a mais por isto; − É prático: por ser escrito facilita o acompanhamento de solicitações; − Acompanhamento de anexos: podendo anexar arquivos junto a mensagem, sem alterar o formato original, facilitando a consulta; Segundo [2] abaixo segue algumas desvantagens do correio eletrônico: − Nem sempre você fica sabendo se a mensagem chegou ou se foi lida (alguns programas informam se o e-mail foi aberto); − Se a mensagem não for criptografada pode ser facilmente interceptada; − Se o e-mail não tiver assinatura digital, facilmente alguém pode se fazer passar por você; 19 − No caso de não classificaras mensagens por meio de filtro, você pode ficar facilmente em dificuldades para administrar teu e-mail. O funcionamento do correio eletrônico é simples, o correio eletrônico basicamente usa dois protocolos, um para envio (SMTP - Simple Mail Transfer Protocol), e um para receber (POP3 - Post Office Protocol version 3 ou IMAP - Internet Mail Access Protocol). O protocolo SMTP é usado para o envio mensagens entre servidores de correio. Ele usa o serviço de transporte de dados do TCP para transferir mensagens de um servidor de correio para o destinatário. O SMTP tem duas partes: a do cliente e a do servidor. Quando um servidor de correio envia a mensagem, ele age como cliente SMTP. Quando o servidor de correio recebe a mensagem, ele age como servidor SMTP. O POP3 é usado para o recebimento de mensagens entre servidores de correio, permitindo efetuar o download de mensagens recebidas para que, depois, seja possível acessar os e-mails com um programa de correio eletrônico, mesmo quando não estiver conectado à Internet. O POP3 pode ser configurado para que ao fizer o download das correspondências elas sejam apagadas do servidor, ou manter uma cópia no servidor. O POP3 é um protocolo simples, e por ser tão simples, sua funcionalidade é limitada. A falta de informação de estado entre as sessões simplifica a implementação do servidor POP3. IMAP é uma alternativa em relação ao recebimento de e-mail por meio do POP3, é uso do protocolo IMAP. Esse protocolo foi criado para que o usuário manipule caixas postais remotamente. A implementação do IMAP é mais complicado do que a implementação do POP3, devido principalmente ao fato que o IMAP tem a informação de estado entre as sessões, algo que o POP3 não tem, e que IMAP trata-se de acesso remoto ao servidor de e-mail [3]. Suponha que Alice queira enviar um e-mail para Bob. − Alice abre seu cliente de e-mail, compõe uma mensagem e informa o endereço de e-mail do destinatário, neste caso [email protected]. − O agente usuário irá codificar a mensagem no formato adequado, antes de serem enviados pelo protocolo SMTP (Simple Mail Transfer Protocol) . − O SMTP envia a mensagem para o servidor SMTP, que neste caso é smtp.a.org, usando os serviços do provedor de domínio da Alice. − Quando a mensagem de e-mail chega ao servidor SMTP, este encarrega de descobrir o destino da mensagem. O servidor SMTP olha endereço destinatário fornecido no protocolo SMTP, neste caso [email protected]. − O servidor SMTP consulta o nome do domínio destinado no Sistema de Controle de Domínio (DNS). 20 − Quando a mensagem chegar ao servidor DNS do domínio b.org, o servidor terá como entregar o e-mail. − Bob usando seu cliente de e-mail poderá ler o e-mail, usando o protocolo de recebimento (POP3 ou IMAP). Obs: O SMTP não costuma usar servidores intermediários para enviar um e-mail, a conexão TCP é associada diretamente ao servidor destinatário. Figura 3.1.1: Adaptada de [2]. Esboço do funcionamento do envio de um e-mail Tabela 3.1.1: Exemplo de softwares clientes de e-mail: Lista de Ferramentas de clientes de e-mail: Nome do Software Licença Grau de Liberdade Eudora17 Proprietário Adware Evolution18 Livre GNU 19 Mozilla Thuderbird Proprietário Freeware Microsoft Outlook Express20 Proprietário Shareware Sylpheed21 Livre GPL Scan Mail Unix22 Proprietário Demo Trellian23 Proprietário Trial 17 18 19 20 21 22 23 Eudora é um cliente de correio eletrônico, ou seja, um programa que permite enviar, receber e gerir e-mails. Foi desenvolvido em 1988 pelo estudante Steve Dorner da Universidade de Illinois, Illinois, EUA. Novell Evolution (criada pela Ximian Evolution, e adquirida pela Novell em 2003) é um gerenciado de informações pessoais como uma ferramenta para o GNOME. Incluindo e-mail, calendário e endereços. Mozilla Thunderbird é um leitor de e-mail e news da Mozilla Foundation (mesma criadora do Firefox). Microsoft Outlook Express é um programa cliente de e-mail e de notícias da Microsoft. Este programa é o mais usado no mundo, para esta função, pois acompanha o sistema operacional Windows, juntamente com o Internet Explorer. Sylpheed é um cliente de e-mail e notícias com licença GPL. O Scan Mail Unix é um cliente de e-mail da Pheonix Technologies and Solutions Trellian é um software cliente FTP produzido pela Trellian Softwares 21 3.2. Serviços FTP (File Transfer Protocol) FTP (File Transfer Protocol) é um nome de uma aplicação e de um protocolo usado para transferir arquivos de um hospedeiro para outro usando a conexão TCP. FTP é baseado exclusivamente nos serviços TCP [10]. Existem dois modos de efetuar conexões FTP: a passiva e a ativa. FTP Ativo: O modo ATIVO do FTP usa a porta 21, por padrão, para fazer a conexão e executar os comandos e a porta 20 para transferência dos dados. Segue abaixo um exemplo de utilização de FTP ATIVO conforme a Figura 3.2.1a: 1. O cliente inicia a conexão através da porta de controle (1026) na porta de controle (21) do servidor FTP. 2. O servidor responde enviando um ACK24 através da porta 21 do servidor FTP responde para a porta 1026 do cliente. 3. A porta 20 do servidor FTP inicia a conexão de dados com a porta 1027 do cliente. 4. A porta 1027 do cliente envia ACKs para porta 20 de dados do servidor. Obs.: As portas acima de 1024 são randômicas. Quando essa conexão é feita em uma rede local ou uma rede confiável, não temos problema algum. Agora se o cliente estiver atrás de um firewall25. Então foi desenvolvido o modo passivo, para resolver este problema. Sendo que o servidor FTP necessita conectar-se da sua porta 20 para a porta acima de 1024 + 1 do cliente, então necessitamos permitir no firewall do cliente conexões com origem porta 20 e destino em qualquer porta acima de 1024. Pode ficar vulnerável, pois hackers26 podem tentar atacar serviços nas estações que estejam acima da porta 1024, criando aplicativos não FTP que usam a porta 20 como origem. Por isto que foi criado o modo PASSIVO. FTP Passivo: Por padrão, o FTP modo passivo, também usa serviços em duas portas, do mesmo modo que o FTP ativo, a grande diferença é que tanto a porta controle como a porta de dados são mantidos em modo de escuta pelo servidor, ou seja, o cliente que sempre terá que 24 25 26 ACK vem de acknoewledged. Um caractere de controle utilizado em um processo de comunicação para indicar que dados foram recebidos sem erros. Firewall são barreiras criadas que filtram os pacotes, controlando o tráfego entre a rede e o ambiente externo determinando quais pacotes pode passar de um lado a outro. Originalmente, e para certos segmentos de programadores, são hackers (singular: hacker) indivíduos que elaboram e modificam software e hardware de computadores, seja desenvolvendo funcionalidades novas, seja adaptando as antigas. Originário do inglês, o termo é usado em português sem modificação. Na língua comum, entretanto, o termo designa programadores maliciosos e ciberpiratas que agem com o intuito de violar ilegal ou imoralmente sistemas cibernéticos, sendo, portanto, o mesmo que cracker. 22 fazer a conexão. Segue abaixo um exemplo de utilização de FTP PASSIVO conforme a Figura 3.2.1b: 1. O cliente inicia a conexão através da porta de controle (1026) na porta de controle (21) do servidor FTP. 2. O servidor responde através da porta de controle (21) a porta de controle (1026) do cliente. 3. A porta de dados (1027) do servidor FTP inicia a conexão de dados com a porta 2024 do cliente. 4. O servidor inicia uma conexão de dados por meio da porta de dados (2024) com a porta de dados (1027) do cliente. Obs.: As portas acima de 1024 são randômicas. a) FTP ATIVO b) FTP PASSIVO Figura 3.2.1: Funcionamento do FTP – a) FTP ATIVO e b) FTP PASSIVO. [10] Tabela 3.2.1: Exemplo de ferramentas FTP. Nome do Software Lista de ferramentas FTP Licença Grau de Liberdade 23 WS_FTP27 Axel 28 AbleFtp29 CuteFTPProfessional30 Trellian31 Proprietário Livre Proprietário Proprietário Proprietário Demo GNU Shareware Shareware Trial 3.3. Serviços Proxy Proxy vem do inglês, procurador, e serve como um intermediário entre os computadores de uma rede e a Internet. Segundo [2] um servidor proxy pode ser usado com basicamente três objetivos: − Compartilhar a conexão com a Internet quando existe apenas um IP disponível (o proxy é o único realmente conectado à Web, os outros computadores acessam através dele). − Melhorar o desempenho do acesso através de um cache de páginas; o proxy armazena as páginas e arquivos mais acessados, quando alguém solicitar uma das páginas já armazenadas do cache, esta será automaticamente transmitida, sem necessidade de baixá-la novamente. − Bloquear acesso a determinadas páginas (pornográficas, etc.), como tipo passa pelo proxy é fácil implantar uma lista de endereços ou palavras que devem ser bloqueadas, para evitar, por exemplo, que os funcionários percam tempo em sites pornográficos, por exemplo, em horário de trabalho. Tipos de servidores proxy: Proxy Cachê: Pode ser acessado e compartilhado por muitos usuários. A aplicação proxy age como intermediário entre clientes e servidores WWW. O servidor local procura pela página, grava-a no disco e repassa para o usuário. Requisições subseqüentes de outros usuários recuperam a página que está gravada localmente. Os servidores proxy são usados por organizações ou provedores que querem reduzir a quantidade de banda que utilizam [26]. Transparent Proxy Cache: É assim chamado porque ele trabalha interceptando o tráfego da rede transparentemente para o browser. Um proxy transparente é um método para obrigar os utilizadores de uma rede a utilizarem o proxy. Além das características de caching dos proxy 27 28 29 30 31 WS_FTP é um software cliente FTP produzido por John A.Junod Ipswitch, Gerenciador de download em modo texto, para PCs com poucos recursos de hardware. AbleFtp é um software cliente FTP produzido por Hitek Software CuteFTP Professional é um FTP para Windows da GlobalSCAPE Trellian é um software cliente FTP produzido pela Trellian Softwares, 24 convencionais, estes podem impor políticas de utilização ou recolher dados estatísticos, entre outras funcionalidades [26]. Figura 3.3.1: Esboço do funcionamento do Servidor Proxy Tabela 3.3.1: Exemplos de Softwares de serviços Proxy Exemplos de Softwares de serviços Proxy Nome do Software Licença Grau de Liberdade Squid32 Livre GNU 33 WinProxy Proprietário Demo 34 Wingate Proprietário Shareware Analog-X35 Proprietário Freeware Windows Proprietário Shareware 3.4. Serviços DNS (Domain Name Service) DNS (Domain Name Service) é um tipo de serviço que consiste em mapear nomes para IPS e IPS para nomes de domínio. O funcionamento dos servidores DNS funciona analogamente a chegar num lugar desconhecido e estamos procurando a casa de alguém. Saímos em busca de informações, 32 33 34 35 O Squid é um popular servidor Proxy em software livre. Seu uso é variado, ele pode esconder petições repetidas, esconder WWW, DNS, e outros recursos de rede compartilhados para um grupo de pessoas. É projetado principalmente para rodar em sistemas Unix. WinProxy é um programa de proxy da Blue Coat Systems, Inc. WinGate Proxy é um programa de proxy da Deerfield.com Analog-X é um pequeno, mas completo servidor Proxy pra você compartilhar a conexão Internet de sua rede local. 25 perguntamos a uma pessoa, que, caso não saiba, nos indica outra e assim sucessivamente até encontrarmos a casa. Com os servidores DNS acontece à mesma coisa. Pense como seria se, por exemplo, ao invés de chamar a pessoa pelo nome, chamá-la pelo seu CPF ou RG. Num site seria a mesma coisa, ao invés de digitar www.algumsite.com.br, digitaríamos o IP, correspondente, seriam muito complicados, por esta razão os servidores DNS se tornou um dos mais importantes serviços IP existentes [12]. Algo comum que percebemos em todos os sites pelos quais navegamos. Todos eles podem ser chamados pelo nome, em outras palavras, é muito mais fácil decorarmos www.algumacoisa.com.br do que o endereço IP (Internet Protocol) do servidor onde o site está hospedado [27]. Ao digitarmos esse endereço no browser, o mesmo se encarrega de iniciar um trabalho para que esse nome possa ser traduzido em um numero IP. Os responsáveis por essa tradução são os servidores DNS. Figura 3.4.1: Analogia dos servidores DNS com placas de referência. [27] Exemplo do uso do serviço DNS: Este exemplo considera um logon do computador (X) para acessar remotamente o 26 computador (Y) usando um servidor DNS (X). O processo é mostrado na seguinte figura: Figura 3.4.2: Funcionamento de um servidor DNS [27] O processo é descrito em 5 etapas: 1. Um cliente efetua logon no computador local(X) e tenta acessar remotamente o computador (Y), solicita a informação para servidor DNS (Z). 2. Z ajuda X a encontrar Y. 3. O servidor (Z) consulta as lista de nome com seus respectivos IP e verifica quem é “Y” . 4. O servidor DNS (Z) retorna a informação solicitada para X 5. O computador local (X) efetua o acesso remoto ao computador (Y) Tabela 3.4.1: Exemplos de softwares Servidores DNS Lista de servidores DNS Nome do Software Licença DNS2Go Proprietário BIND Proprietário DNS Master Proprietário Windows Proprietário Grau de Liberdade Shareware Freeware Freeware Shareware 3.5 Serviços Web O termo servidor Web significa um computador responsável por aceitar requisições HTTP (HyperText Transfer Protocol) de seus clientes, e servindo suas paginas que geralmente são documentos HTML(HyperText Markup Language) com objetos linkados. Um servidor Web funciona basicamente da seguinte forma: Um cliente faz uma reaquisição para o servidor Web em seu navegador, por exemplo. O servidor responde a requisição enviando a pagina. Conexão client/sever até que todos os objetos sejam carregados ou até o servidor dar um time out na conexão. 27 Figura 3.5.1: Funcionamento de um serviço http [9] As conexões persistentes mostraram ser muito mais eficientes do que as conexões não persistentes, devido ao fato que as conexões não persistentes encerram a conexão a cada objeto carregado [1]. A figura 3.5.2 a seguir ilustra dois clientes, um HTTP/1.0 e um HTTP/1.1 fazendo requisição do mesmo serviço, podemos perceber que o cliente HTTP/1.1 tem um tempo visivelmente superior ao do HTTP/1.0. Figura 3.5.2: Quadro comparativo entre HTTP/1.0 e HTTP/1.1[1] 28 Tabela 3.5.1: Exemplo de clientes de serviços WEB Clientes de serviços WEB Nome do Software Licença Apache Livre 36 WebSphere Proprietário IIS Proprietário 37 Jakarta Livre Grau de Liberdade GNU Sharesware Sharesware GNU 3.5.1. Especificações dos principais Servidores Web Especificações de cada Servidor Web a) Apache: O servidor Apache é um servidor web livre. Atualmente o servidor apache é o mais utilizado na internet, segundo [9] é usado por aproximadamente 60% dos servidores web. Visão Geral [9] [11]. − Software Livre; − Confiabilidade; − Grande flexibilidade de configuração e uso; − Multiplataforma (Roda em Windows, Unix, Novell e entre outras plataformas); − Suporte do protocolo HTTP 1.1; − Linguagens internas suportadas: Perl / PHP / ASP / Python; − CGI: Todo o tipo de linguagens suportadas pelo SO − Base de Dados: Todas através de SQL (Structured Query Language)/ ODBC (Open Data Base Connectivity) − Controle de acesso e encriptação: Ficheiros password , NIS, LDAP, certificados e SSL(Secure Sockets Layer ) − Estruturado em módulos; − Administração através de linha de comandos; − Manipulação flexível de URL’s;(Universal Resource Locator) b) IIS - Internet Information Services: O IIS é um servidor de páginas WEB criado pela Microsoft para seus sistemas operacionais para servidores. Atualmente o servidor da Microsoft é o segundo mais utilizado na internet. 36 37 WebSphere é a plataforma de servidor Web da IBM. Jacarta, também (conhecido como Tomcat) é um servidor de aplicações Java para web. É distribuído como software livre e desenvolvido como código aberto dentro do conceituado projeto Apache Jakarta e oficialmente endossado pela Sun como a Implementação de Referência (RI) para as tecnologias Java Servlet e JavaServer Pages (JSP). 29 Visão Geral [8] [11]: − Código proprietário; − Suporte de plataforma Windows; − Suporte do protocolo HTTP 1.1; − Linguagens internas suportadas: ASP / Activex; − CGI: PHP / Perl / linguagens suportadas pelo SO; − Bases de dados: Através de SQL / ODBC; − Controlo de acesso e encriptação: SMB, LDAP, certificados e SSL; − Extensível através de DLL’s; − Administração e depuração através de interface gráfica (MMC); − Uso de ISAPI DLL’s para manipular URL’s; Tabela 3.5.1.1: Comparando as Características dos servidores Características Apache IIS Licença Livre Proprietario Plataforma Multiplataforma Windows Linguagens suportadas: Perl/ PHP / ASP / ActiveX ASP/Python/JSP/CGI Suporta proxy Sim Sim Bases de dados SQL / ODBC SQL / ODBC SMB, LDAP, certificados e SSL. Controlo de acesso e Ficheiros password, NIS, LDAP, certificados encriptação e SSL. Modo de Administração Administração através Depuração através de interface gráfica de linha de comandos Suporta http/1.1 Sim Sim Suporta Manipulação de Sim Sim Processo/Thread Manipulação URL’s Manipulação flexível Uso de ISAPI DLL’s Active Directory Sim Only with third-party modules In-Memory Cache Sim Sim On Disk Cache Sim Sim (com mod_file_cache) Fonte: Tabela adaptado de [11] 3.5.2. Linguagens de Script As linguagens de script têm este nome por serem linguagens de programação relativamente simplesmente. Elas são interpretadas em tempo de execução ao invés de compiladas para posterior execução. 30 Programas feitos em linguagem de script podem ser inseridos em qualquer pagina HTML. Tabela 3.5.2.1: Característica de licenças das principais ferramentas de script Programação Web Nome do software Licença Grau de Liberdade PHP Livre GNU ASP.NET Proprietário Shareware J2EE Livre GNU 3.5.2.1. Script no lado do servidor (Server-side scripting) São linguagens de script que executadas e interpretadas pelo servidor e manda para o cliente um formato entendido por ele. Todo o processamento é feito em um servidor. PHP: Php (Hypertext Preprocessor) é uma linguagem interpretada livre e gratuita, orientada a objetos, de fácil aprendizado, roda em qualquer sistema operacional, muito utilizada para gerar conteúdo dinâmico na Web [20]. Visão geral [13]: − Software Livre e gratuito; − Interpretada; − Multiplataforma; − Orientada a Objetos; − Compativel com qualquer servidor; − Grupo Responsavel PHP, Zend; ASP.NET: ASP.NET é a plataforma da Microsoft para o desenvolvimento de aplicações Web e é o sucessor da tecnologia ASP. Trata-se de uma linguagem que pode ser compilada ou interpretada, comercial, escalonável, orientada a objetos. As aplicações Web ASP.NET necessitam do framework .Net e do servidor IIS para executar, pelo menos na plataforma Windows. O projeto Mono é uma iniciativa para permitir que aplicações de toda a plataforma .NET possam executar em outras plataformas, como o Linux/Unix [27]. Visão geral [13]: − Software Proprietário; − Compilada ou interpretada; − Windows (outras através do mono); − Orientada a componentes; 31 − Servidor Microsoft; − Grupo Responsável Microsoft; J2EE: O J2EE (Java 2 Enterprise Edition): é uma plataforma de programação de computadores que faz parte da plataforma Java. J2EE é uma linguagem orientada a objetos, multiplataforma, altamente extensível, código aberto, escalonável e compilada em byte-code [26]. Visão geral [13]: − Software Proprietário; − Compilada em byte-code; − Multiplataforma; − Orientada a Objetos; − Compatível com qualquer servidor; − Grupo Responsável Sun, IBM, Comunidade Java; Tabela 2.5.2.2: Comparando as características das linguagens: Características PHP5 Asp.Net J2EE Licença Livre Proprietária Livre Tempo de Execução Interpretada Compilada ou Compilada em byte-code Interpretada Linguagem PHPscript VBscript, Jscript, JSP, Java C++, C#, J# Complexidade Simples Dependendo do Complexa devido ao seu modelo utilizado na alto poder de programação extensibilidade Orientação a Objetos Sim Sim Sim Tratamento de Sim Sim Sim Exceções Polimorfismo Sim Sim Sim Sistema Operacional Independente Windows (outros Independente através do mono) Integração com base de Via nativo C API na Bases de dados em Bases de dados em dados base de dados ou conformidade com conformidade com ODBC ODBC ODBC, JDBC e bases de dados ODBMS. Servidor Independente Microsoft Independente Fonte: Adaptado de [13] e [15] 3.6 Servidor de Arquivos e autenticação São servidores que armazena arquivos de diversos usuários. Os servidores de arquivos são utilizados quando existe a necessidade de armazenar todos os arquivos trocados entre os 32 computadores em um só local, que possa ser acessado de qualquer computador por meio da autenticação. Computador de disponibiliza arquivos através da rede. Existem dois tipos de servidores de arquivos, o servidor dedicado, que executa apenas esta tarefa, e o não dedicado, que além de disponibilizar arquivos executa outras funções [14]. 3.6.1 SMB (Server Message Block) / CIFS (Common Internet File System ) O protocolo SMB/CIFS é um protocolo de rede nativo do Windows que permite compartilhamento de arquivos, impressoras, recursos, etc. O protocolo SMB/CIFS pode ser usado sobre o protocolo TCP/IP ou outros tipos de protocolos. Todas as versões dos sistemas operacionais da plataforma Microsoft Windows podem ter SMB/CIFS funcionando como cliente, servidor, ou ambos. Grande parte dos sistemas Unix tem implementação de cliente/servidor do SMB/CIFS via Samba, a Apple também pode configurar suporte a clientes/servidores SMB/CIFS, fazendo com que este protocolo seja o mais comum para o compartilhamento de recursos. Serviços básicos do protocolo SMB/CIFS [29]: I. Serviço de ficheiros e impressão: Serviço que armazena arquivos e pedidos de impressão de arquivos de diversos usuários; II. Autenticação e autorização: Possuem dois modos: O seguro e confiável user mode (Nível de usuário) e o menos seguro e não muito confiável share mode.( Nível de compartilhamento). − Share mode (Nível de compartilhamento): cada recurso compartilhado tem uma senha. O usuário pode acessar o recurso através desta senha. − User mode (Nível de usuário): neste modelo a proteção é individual para cada arquivo. Quando o cliente faz uma conexão ele é questionado sobre o login do usuário e sua senha. III. Resolução de nomes: Pode ser feita por broadcast ou por peer-to-peer, − Broadcast38: O usuário envia uma mensagem para toda a rede, procurando uma maquina, por exemplo 'PC01', e quando 'PC01' receptar a mensagem, ela responde para toda rede informando o IP. 38 Em Redes de computadores, um endereço de "broadcast" é um endereço IP (e o seu endereço é sempre o último possível na rede) que permite que a informação seja enviada para todas as maquinas da rede. 33 − Peer-to-peer39: Utiliza o servidor NBNS (NetBIOS Name Service). O servidor NBNS registra quais máquinas que iram compartilhar recursos, registrando num banco de dados com Nome e IP do compartilhamento. Para efetuar o acesso, o usuário faz um pedido ao servidor NBNS, que quer comunicar com outra máquina, e o servidor NBNS responde ao pedido do usuário. IV. Anúncio de Listas (Browsing): é uma lista, que inclui todos os domínios40, computadores, servidores, recursos da rede, enfim com serviços oferecidos pelos computadores da rede. 3.6.1.1 PDC (Primary Domain Controller ) O PDC (Controlador Primário de Domínio) é um servidor que sustenta uma base de dados de usuários, autenticando-os em um domínio. Deste modo independentemente da maquina que o usuário efetuar o logon, seu profile estará intactas, ou seja, por exemplo, o usuário usa a máquina 'PC01' e ela encontra-se em manutenção, por exemplo, e então ele resolve usar o 'PC02', ele a usa está maquina mantendo os mesmos ícones do desktop, perfil do mouse, teclado, etc. Ou seja, o usuário pode efetuar a rotatividade entre as máquinas mantendo o perfil que ele está habituado. 3.6.1.2 BDC (Backup Domain Controller ) O BDC (Controlador Secundário de Domínio) tem como função em providenciar, em caso de falha do PDC, uma solução rápida de recuperação. Logo que o PDC, o BDC assume o papel de autenticação, mas somente um servidor de leitura, o servidor BDC não fornece aos usuários opção de escrita. Todas as alterações feitas no PDC são notificadas ao BDC em tempo real, numa sincronia transparente aos usuários os problemas de troca de servidores. 39 40 A Microsoft preferiu chamar sua implementação de NBNS de WINS (Windows Internet Name Service) É um nome que serve para localizar ou identificar um computador numa rede. 34 Tabela 3.6.1: Características do protocolo SMB/CIFS Características Descrição Acesso de arquivo Operações de arquivos incluem abrir, fechar, ler, escrever e busca. Fechando arquivo e registro Depois que um arquivo ou registro é fechado, as aplicações não fechadas são negadas ao acesso. Caching seguro, leitura a frente, e escrita atrás. Permite acesso de leitura/escrita simultaneamente a um arquivo de clientes múltiplos. Notificação de mudança de arquivo Aplicações podem registrar com um servidor a ser notificado quando são modificados o conteúdo do arquivo ou diretório. Negociação de versão de protocolo Quando o cliente e o servidor fazem o primeiro contato de rede, eles negociam a versão (dialeto) a ser usada. Dialetos diferentes podem incluir mensagem novos tipos de mensagens como também mudanças para os formatos de campo em outros dialetos. Atributos estendidos Podem ser acrescentados atributos de sistema de não-arquivo, como o nome do autor, aos atributos de arquivo embutidos, como criação e tempos de modificação. Servidor de Nomes Clientes podem resolver nomes de servidor que usam qualquer mecanismo de resolução de nome. Usando o servidor DNS, por exemplo, para permitir o acesso a arquivos de sistema através da Internet. Fonte: Tabela adaptada de [18] 35 3.6.1.5 Samba O Samba é um software livre gratuito para sistemas Unix-like que funciona da mesma forma que a um servidor Windows e permite o gerenciamento e compartilhamento de recursos em redes heterogêneas. Deste modo é possível usar os sistemas Unix como servidores e cliente de uma rede que tenha Windows, Apple e Unix. O Samba é uma criação de Andrew Tridgell41 que em 1992, por seu aplicativo precisar dos protocolos Netbios, então ele fez engenharia reversa no protocolo SMB para conseguir implementar o SAMBA. Segundo [29] o Samba implementa os quatro serviços básicos do protocolo SMB/CIFS. I. Serviço de arquivos e impressão; II. Autenticação e autorização; III. Resolução de nomes; IV. Browsing (anúncio de serviços); Para usar estes serviços mencionados, o Samba usa ferramentas daemons importantes para a operação em seus clientes. smbd - daemon42 responsável pelos serviços de arquivos e impressão e de autenticação e autorização; nmbd - daemon responsável pelos serviços de resolução de nomes e de browsing; winbindd - daemon responsável pela unificação de logons entre Windows NT e Unix; 3.6.1.4 Samba TNG Samba TNG é outro servidor SMB para Linux/Unix, sendo uma divisão do Samba que se iniciou em 1999 com a idéia de realizar alguns testes experimentais sem afetar a estabilidade do Samba [30]. O projeto Samba-TNG quer basicamente rodar um controlador de domínio NT em Linux/Unix. 3.6.1.5 Microsoft Windows Microsoft Windows é um sistema operacional, criado pela Microsoft. É um sistema operacional proprietário e comercial, tem o SMB/CIFS como protocolo nativo para efetuar o 41 42 Desenvolvedor do servidor Samba. Daemons é um programa de computador que roda em background, ao invés de ser controlado diretamente por um usuário. 36 gerenciamento e compartilhamento de recursos em redes Microsoft. Windows pode ter SMB funcionando como cliente, servidor, ou ambos. Do mesmo modo que o samba, o Windows tem os quatro serviços básicos do protocolo SMB/CIFS. − Serviço de arquivos e impressão; − Autenticação e autorização; − Resolução de nomes; − Browsing (anúncio de serviços); O grande diferencial do Windows é a facilidade de instalação, configuração e manutenção. Algo que não é tão trivial assim em software como o SAMBA 3.6.2 NFS (Network File System ) NFS é a forma de comunicação padrão entre computadores com sistema operacional baseado em Unix, permitindo a montagem de sistemas de arquivos remotos. Permite criar restrições baseadas em usuários e grupos. É um protocolo baseado no sistema cliente/servidor que permita que os usuários acessem diretórios de arquivos através de uma rede como se fosse local. Por exemplo, se usarmos um computador conectado em outro via NFS, poderíamos acessar os diretórios de arquivos como se fosse localmente. O protocolo NFS foi projetado independente do computador, do sistema operando-se, da arquitetura de rede, e do protocolo do transporte. Isto significa que os serviços NFS podem ser usados por diferentes tipos de sistemas operacionais [2]. Conforme [4] os benefícios mais notáveis que o NFS pode oferecer são: Estações locais usam menos espaço em disco porque dados freqüentemente usados podem ser armazenados em uma única máquina e ainda permanecerem acessíveis a outras pela rede. Não há necessidade de usuários terem diretórios pessoais separados em cada máquina da rede. Diretórios pessoais podem ser configurados no servidor NFS e serem disponibilizados através da rede. Dispositivos de armazenamento como disquetes, leitores de CD-ROM e leitores de ZIP podem ser usados por outras máquinas na rede. Isto pode reduzir o número de leitores de mídia removível em toda a rede [30]. 37 NFS Versions 3: O protocolo NFS versão 3 é baseado nos protocolos RCP (Remote Procedure Call). Visão Geral [30]: − Atualização do NFS versão 2; − Não se armazena estado das transações efetuadas; − As quedas não preocupam os clientes, pois basta solicitar os dados novamente, até que o servidor responda; − Por não ter que guardar estados dos clientes, usa-se pouca memória; − Weak Cache Consistency: é informado pelo servidor se alterou o arquivo que está no seu cache; − Delayed-Write: apenas arquivos que não foram modificados por certo tempo são enviados ao servidor. Impede encaminhar arquivos temporários, ou seja, que serão apagados em breve; − Muito utilizado em redes com sistemas operacionais Unix-like. Problemas [30]: − Pelo fato de não armazenar estado, não tem como controlar locks43 sem a ajuda de alguma outra aplicação e também não se pode controlar o acesso concorrente e nem garantir sua consistência; − Segurança limitada: sendo baseada em gid44 e uid45, as verificações não são complicados, e os dados não trafegam criptografados. NFS Versions 4: O NFSv4, do mesmo modo como NFSv3, o NFSv4 baseia-se no é baseado nos protocolos RCP. Para garantir a segurança do RPC, este protocolo utiliza-se a implementação do esquema RPCSEC_GSS que é baseado na Generic Security Services API (GSS-API) 46. O RPCSEC_GSS pode garantir segurança de todo corpo de uma mensagem RPC. O NFSv4 apresenta uma ruptura com as versões anteriores. O protocolo foi extremamente modificado, inclusive em questões tidas como alicerces da antiga versão. 43 44 45 Quando o arquivo está protegido contra gravação Identificador de grupo Identificador de usuário 46 A GSS-API é uma interface de programação genérica, que tem por objetivo oferecer serviços para construção de aplicações e serviços de segurança. 38 Visão Geral [30]: − Mantém estado das transações juntamente com os clientes, ajudando-o a decidir se usa um cache mais agressivo dos dados ou não; − Controle de locks baseado em leases; − Delegação de arquivos: o cliente altera os arquivos no seu cache, e só manda para o servidor quando não precisar mais, ou quando for requisitado; − Uso de TCP na comunicação entre clientes e servidor, não mais UDP; − Segurança melhorada, utilizando-se dos protocolos Kerberos 5 e SPKM3. Autenticação baseada em texto, e não mais numérica (uid e gid). 3.6.2.2 Windows Services for Unix Windows Services for UNIX é uma tentativa da Microsoft em atender às necessidades de interoperabilidade do Unix nas empresas com componentes de interoperabilidade gerenciamento que oferecem fácil integração com o Windows 2000 em ambientes de rede Unix [21]. Segundo [21] abaixo estão as características mais importantes do produto Windows Services for UNIX: 1) Compartilhamento de arquivos entre UNIX e Windows usando NFS. O SFU fornece: − Cliente NFS; − Servidor NFS; − Gateway NFS. 2) Acesso remoto via linha de comando: − Cliente Telnet; − Servidor Telnet; 3) Shells e scripts: − Korn Shell; − C Shell; − Mais de 350 comandos e utilitários muito usados no Unix; 4) Servidor NIS usando as funcionalidades do Microsoft Windows 2000 Active Directory; 5) Cliente NIS (sincronização de senhas entre Windows e Unix); − O SFU pode ser instalado em Windows NT (Service Pack 6a ou maior), Windows 2000 ou Windows XP. 39 2.7 Serviços de Diretórios: O conceito de serviços de diretórios pode ter vários significados, dependendo da situação, sendo diferente para sistemas distribuídos, sistemas de arquivos, para redes e banco de dados, entretanto, para todos, num nível elementar, passa a idéia de “lista”. Segundo [28], uma base de dados simples, organizada em modelo árvore, com níveis e subníveis como galhos e suas ramificações definem-se serviços de diretórios. Sua estrutura é muito parecida com estrutura de diretórios de um dispositivo de armazenamento. Os serviços de diretórios mais populares são o DNS e o NIS47. 2.7.1 X.500 O serviço do diretório X.500 é um serviço global do diretório. A descrição especificada do X500 usa uma estrutura orientada a objetos para armazenar suas informações, onde cada registro de informação é derivado de uma classe. Seus componentes trabalham juntos para controlar a informação sobre objetos tais como países, organizações, povos, máquinas, e assim por diante em um espaço mundial. Segundo a especificação X.500, o cliente se comunica com o serviço de diretório através de um protocolo denominado DAP (Directory Access Protocol). As funções do diretório são executadas por duas entidades: − DUA (Directory User Agent) - Agente do usuário de diretório - parte cliente: Fornece a funcionalidade padronizada que suporta os usuários olhando um ou mais bancos de dados de diretórios; − DSA (Directory System Agent) - Agente de serviços de diretório - parte servidor: É o banco de dados no qual a informação de diretório é armazenada. Os sistemas que são baseados o no X.500, tal como o LDAP, no diretório do DCE, NDS da Novell, e o Active Directory, da Microsoft, cada um definem sua própria representação característica. 3.7.2 LDAP (Lightweight Directory Access Protocol) 47 NIS (Network Information Service) é um serviço, desenvolvido pela Sun Microsystems, para distribuição de informações por uma rede. Facilita a administração do ambiente Linux/Unix, pelo fato de manter uma base de dados centralizada na rede, o que torna a manutenção e consistências mais fáceis. 40 LDAP é um protocolo leve, baseado no DAP da X.500, que roda através de uma rede com protocolo de transporte TCP/IP e tem função de acessar serviços de diretórios. O LDAP foi proposto com a idéia de propor algo mais leve e funcione com o protocolo TCP/IP. Sendo inicialmente visto como uma versão do DAP da X.500 mais leve, o LDAP foi aceitado somente para ser um substituto do DAP, mantendo X.500 como serviço de diretório. Com o tempo o LDAP evoluiu e foi criada uma versão LDAP do servidor de diretório. Este protocolo de rede permite organizar os recursos de rede como se fosse uma árvore de diretório, de forma hierárquica, de acordo com a necessidade. Um dos grandes pontos positivos do LDAP é a facilidade em localizar informações e arquivos disponíveis e sua grande escalabilidade. Pode-se usar o LDAP em varias funções, mas onde ele é mais utilizado é na função de autenticação, exemplos de aplicações: − Serviços de Acesso aos Arquivos Remotos; − Serviços de Autenticação; − Serviços de Impressão em Rede; − Serviços de Impressão; − Serviços de Serviços de Backup via rede; − Serviço de Distribuição de Software; Figura 3.7.2: Arvore LDAP [28] 3.7.3 OpenLDAP 41 OpenLDAP é um software livre, implementado em LDAP(Lightweight Directory Access Protocol) desenvolvido pelo projeto OpenLDAP que fornece autenticação e Serviço de Diretórios para usuários. O OpenLDAP é independente do sistema operacional. Podendo ser encontrado em várias distribuições. Componentes do software OpenLDAP Software OpenLDAP possui quatro principais componentes: slapd – somente um monitor de execução LDAP. Pode ser configurado como: − Serviço de diretório local; − Serviço de diretório replicado; − Serviço de diretório com orientação; − Serviço de diretório distribuído; slurpd – somente uma replicação atualizada do monitor de execução LDAP Pode ser configurado como: − Servidor mestre; − Servidor escravo; − Logs de replicação; Utilitários, ferramentas, e amostras de clientes. A autenticação do OpenLDAP pode estar baseada em dois métodos básicos [28]: LDAP Bind: É um método de login no serviço de diretórios. Ou seja, o usuário acessa os serviços de diretórios, onde ele autentica com usuário e senha e o serviço permite ou nega o acesso do usuário. Com este método, o usuário não sabe quem está validando as informações, sendo transparente para o usuário. LDAP Compare: O usuário envia a senha para autenticação no servidor, e o servidor compara com aquela guardada em seus serviços de diretórios e servidor responde se o usuário está apto ou não ao processo de autenticação. Por causa da flexibilidade oferecida pelo LDAP Bind, este é o método mais utilizado atualmente, mas há ainda algumas aplicações que estão baseadas ainda no LDAP Compare. Tabela 3.7.3: Visão Geral do OpenLDAP Características Licença Preço Custo Operacional Configuração Medidas de segurança OpenLDAP Livre Gratuito Não exige muito do S.O nem do hardware Relativamente fácil Relativamente fácil de implementar 42 Sistema Operacional Multiplataforma 3.7.4 Active Directory (AD) O AD é uma implementação de serviços do diretório LDAP para Microsoft, para o uso em ambiente Windows que armazena informações sobre objetos em rede e disponibiliza essas informações a usuários e administradores de rede. É um software da Microsoft utilizado somente em ambiente Windows. Com o AD, os usuários bastão ter uma única senha para acessar todos os recursos de rede, ao invés de ter uma senha para cada recurso. O servidor de diretórios Microsoft AD contém informações sobre usuários, recursos da rede e controla a autenticação da rede Windows. A manipulação de usuários do Windows normalmente é feita de forma manual e nem sempre tem relação com o sistema de recursos humanos. O AD é organizado de uma forma hierárquica, com o uso de domínios. Ao utilizar os domínios baseados no AD, temos os seguintes recursos: − Logon único: com esse recurso, o usuário necessita fazer apenas um logon para acessar os recursos em diversos servidores da rede, inclusive e-mail e banco de dados. − Conta de usuário única: os usuários possuem apenas um nome de usuário para acessar os recursos da rede. As contas de usuários ficam armazenadas no banco de dados do AD. − Gerenciamento centralizado: com os domínios baseados no AD, temos uma administração centralizada. Todas as informações sobre contas de usuários, grupos e recursos da rede, podem ser administradas a partir de um único local no domínio. − Escalabilidade: os domínios podem crescer a qualquer momento, sem limite de tamanho. A forma de administração é a mesma para uma rede pequena ou grande. Tabela 3.7.4: Visão Geral do Active Directory Características Licença Preço Configuração Medidas de segurança Sistema Operacional Active Directory Proprietária Pago Fácil Fácil de implementar Windows 3.8 Virtual Private Network (VPN) 43 A Rede Privada Virtual (VPN) é um tipo de comunicação de rede que foi criada para interligar duas redes privadas através de túneis virtuais criptografados entre pontos autorizados construída em cima de uma rede de comunicações não seguras, a Internet, por exemplo, com o objetivo de interligar redes corporativas ou usuários remotos, de modo seguro, garantindo assim a segurança dos dados transmitidos. A grande característica da VPN é que a ela tem se tornado uma forma de reduzir custos com as comunicações corporativas, pois ao invés de colocar links dedicados para interligar os pontos autorizados, usa-se a Internet. Outra característica da VPN é que ela permite suporte a usuários móveis, sem a utilização de bancos de modem ou servidores de acesso remoto, ajudando a aumentar a flexibilidade e diminuir os gastos com equipamentos extras [3]. Vantagens: − Custos mais baixos do que links dedicados; − Maior flexibilidade e escalabilidade (Permite expansão de computadores autenticados no servidor sem a necessidade de investimento extra em intraestrutura); − Conectividade global (Usando a internet pode interligar pontos autorizados, independentemente da posição geográfica). Desvantagens: − Implicações de segurança; − Implementação não é trivial; − Principais aplicações para VPN: − Acesso remoto via Internet; − Conexão de lans via Internet; − Conexão de Computadores numa Intranet. 3.8.1 Arquitetura de uma VPN As VPNs podem ser estruturadas de três formas: 1 Host to host; Nesta arquitetura existe uma comunicação entre os dois host, então a VPN somente estabelece um canal seguro entre as duas máquinas. 44 Figura 3.8.1.1: VPN utilizando a configuração Host-to-Host. [3] 2 Host to Network; Nesta arquitetura tem como objetivo permitir um host efetuar a comunicação com um ponto de rede autorizado. Figura 3.8.1.2: Arquitetura VPN utilizando a configuração Host-to-Network. [3] 3. Network to Network; O objetivo destá arquitetura é interligar dois pontos de redes autorizados. Figura 3.8.1.3: Arquitetura VPN utilizando a configuração Network-to-Network. [3] 3.8.2 Criptografia O termo Criptografia surgiu da fusão das palavras gregas "Kryptós" e "gráphein", que significam "oculto" e "escrever", respectivamente. A criptografia tem como intenção codificar uma informação de modo que apenas que emite e quem recebe pode acessá-lo, deste modo garante o sigilo das informações. Nos últimos anos, com a expansão da internet, a criptografia tornou-se uma ferramenta essencial. [35] 45 A criptografia classifica-se em duas categorias: criptografia simétrica e criptografia assimétrica, isto depende do tipo de chave utilizada. 3.8.2.1 Criptografia Assimétrica Também conhecida como "chave pública", a criptografia assimétrica trabalha com duas chaves: a chave privada e a chave pública. Pode-se trabalhar com quaisquer chaves para criptografar uma informação, mas só com a chave inversa pode ser usada para efetuar decriptografação. Entre os algoritmos que usam chaves assimétricas, têm-se o RSA (o mais usado) e o Diffie-Hellman. O RSA (Rivest Shamir Adleman) é formado por chaves de 512, 768, 1024 e 2048 bits. A maioria das aplicações de criptografia assimétrica baseasse no RSA. [35] 3.8.2.2 Criptografia Simétrica Criptografia simétrica é baseada na simetria das chaves do emissor e receptor, onde o emissor e o receptor fazem uso da mesma chave. [32] Existem vários algoritmos simétricos que produzem chaves de tamanhos variados, quanto maior a chave, maior a segurança. A seguir alguns algoritmos: − Data Encryption Standard (DES) - 56 bits; − Triple Data Encryption Standard (3DES) - 112 bits; − Blowfish - até 448 bits; − Twofish - 128, 192 ou 256 bits; − Advanced Encryption Standard (AES) - 128, 192 ou 256 bits. 3.8.2.3 Certificado Digital Um certificado digital é um arquivo que é assinado eletronicamente por uma entidade certificadora, conhecida como Autoridade Certificadora (AC), nela contém dados relacionados à entidade o qual fez o certificado. Ele faz uma associação à identidade em uma pública e outra privada que trabalha junto para confirmar a identidade. A autenticidade e os dados de um certificado publicado por uma AC, pode ser avaliado por qualquer entidade que tenha o conhecimento da chave pública da AC [32]. 46 3.8.3 Tunelamento As VPN têm como base a tecnologia de tunelamento, sendo responsável pelas transferências dos pacotes de maneira segura e confiável, entre redes internas por meio de redes públicas, por exemplo, a internet. Existem três processos que compõem o tunelamento segundo [32]: − Encapsulamento - Os pacotes da rede local são encapsulados com os pacotes de destino; − Transmissão - Os pacotes são enviados ao seu destino, através das informações do cabeçalho; − Desencapsulamento - No destino, os pacotes são desencapsulados, deixando somente as informações do protocolo da rede local. 3.8.3.1 Protocolos de tunelamento Para criar um túnel precisa-se que os pontos autorizados utilizem o mesmo protocolo de tunelamento. Esses protocolos estabelecem comunicações diretas entre duas redes separadas fisicamente de forma segura e confiável. O tunelamento pode ocorrer na camada 2 ou 3 (enlace e rede). Tunelamento em Nível 2 - Enlace - (PPP sobre IP): − PPTP (Point-to-Point Tunneling Protocol) da Microsoft permite que o tráfego IP, IPX e NetBEUI sejam criptografados e encapsulados para serem enviados através de redes IP privadas ou públicas como a Internet. − L2TP (Layer 2 Tunneling Protocol) da IETF (Internet Engineering Task Force) permite que o tráfego IP, IPX e NetBEUI sejam criptografados e enviados através de canais de comunicação de datagrama ponto a ponto tais como IP, X25, Frame Relay ou ATM. − L2F (Layer 2 Forwarding) da Cisco é utilizada para VPNs Discadas. 47 Tunelamento em Nível 3 - Rede - (IP sobre IP): − IP Security Tunnel Mode (IpSec) - É um conjunto de protocolos desenvolvidos para proteger o tráfego dos pacotes IP. Sua principal caracterista é prover a privacidade, integridade e autenticidade dos dados na comunicação. Tabela 3.8.3.1: Tabela de comparação entre os protocolos [32] Propriedades Autenticação de usuários Descrição Consegue autenticar os usuários que queiram estabelecer uma conexão Autenticação de Autentica computadores computadores envolvidos na conexão Suporte a NAT Passa por meio da NAT para esconder os pontos finais de conexão Suporte a Define um método Multiprotocolo padrão para o tráfego IP e não IP Define uma negociação de endereçamento IP entre o servidor VPN e seus clientes. Isto elimina configurações manuais do protocolo IP. Encriptação Pode criptografar o tráfego corrente Uso de PKI Usa infra-estrutura de chave pública para implementar a criptografia e a autenticação Autenticação de Provê um método Pacotes de autenticação que garante que os pacotes não foram alterados durante a transmissão Suporte a Pode efetuar Multicast tráfego em Multcast PPTP SIM L2TP SIM L2TP/ IpSec SIM IpSec Implementação em Andamento pelo grupo de trabalho IpSec da IETF SIM SIM SIM SIM SIM SIM NÃO NÃO SIM SIM SIM SIM SIM SIM Implementação em Andamento pelo grupo de trabalho IpSec da IETF Implementação em Andamento pelo grupo de trabalho IPsec da IETF SIM SIM SIM SIM SIM SIM SIM SIM NÃO NÃO SIM SIM SIM SIM SIM NÃO Atribuição Dinâmica de Endereço IP Fonte: Tabela adaptada de [32] 48 3.8.4 Principais Ferramentas VPN 3.8.4.1 Freeswan/Openswan O projeto FreesWan é uma implementação para sistemas Unix-like do protocolo IpSec. O openswan é a continução do projeto freeswan Dois componentes são fundamentais para o FreeS/Wan [31]: − KLIPS (Kernel48 IpSec Support), responsável pela interação do IpSec com o kernel dos sistemas Unix-like, para o tratamento de pacotes IpSec, verifica também todos os pacotes que não são IpSec, para assegurar que eles não estão burlando as políticas de segurança; − PLUTO Daemon49 IKE, responsável por implementar o protocolo IKE, e pelo tratamento de associações seguras do ISAKMP. Executa as autenticações do host, cria as Associações Seguras do IpSec, repassa os dados requeridos ao KLIPS, adequar as configurações do firewall necessárias ao IpSec. 3.8.4.2 OpenVPN OpenVPN é software VPN, desenvolvido por James Yonan, para criar túneis criptografados ponto-a-ponto entre servidores de computadores. OpenVPN é muito mais simples quando comprarada ao FreeS/Wan. O OpenVPN simplesmente pega a informação a ser enviada, criptografa e envia pela Internet, por um pacote UDP. A grande vantagem em relação ao FreeS/Wan é que ele não tem grandes problemas para passar por firewalls ou roteadores50 que fazem NAT e possui uma configuração mais simples [31]. A seguir algumas características do OpenVPN − Pode criar túnel para qualquer sub-rede IP ou adaptador ethernet, por um transporte UDP ou TCP; − Usa todas as caracteristicas de encriptação, autenticação e certificação da biblioteca OpenSSL, para proteger o tráfego privado pela internet; − Qualquer cifragem, tamanho de chave, para datagrama de autenticação, suportado pela biblioteca OpenSSL; 48 49 50 Parte principal do Sistema Operacional Um Daemon é um programa permanentemente ativo, que aguarda instruções externas para executar ações específicas. Equipamento utilizado para interligar redes, locais e remotas. 49 − Pode-se escolher entre encriptação convencional, baseado em chave estática ou certificados baseados em encripatação de chave pública; 3.8.5 Protocolo de Segunranca da Internet (IpSec) O IpSec (Internet Protocol Security) é um padrão de segurança seguido no processamento de redes ou de pacotes de comunicação nas redes, definida pelo IETF (Internet Engineering Task Force), cujo principal objetivo é oferecer mecanismos de segurança a pacotes IP. Conforme [3] o IpSec tem como requisito de segurança, independente entre si, podendo ou não ser utilizados de forma conjunta, varia da necessidade da corporação. − Autenticação e Integridade – garante a integridade dos dados; − Confidencialidade – garante o sigilo dos pacotes. O IpSec trabalha basicamente com dois protocolos: − AH: (Authentication Header) Utilizado para fornecer integridade e autenticidade; − ESP: (Encapsulating Security Payload) Fornecem integridade, autenticidade e criptografia à área de dados do pacote; O IpSec pode trabalhar com criptografia assimétrica, por isto existem formas estabelecidas para trocas de chaves segundo [33]. − MKE – Manual Key Exchange; É uma forma manual, nesta configuração a chave devem ser geradas manualmente e adicionadas a arquivos, sendo que a chave pública gerada em um roteador VPN deverá ser passada para o outro roteador. − AKE – Automatic Key Exchange; É uma forma automática, nesta configuração a chave são geradas e passadas automaticamente para outro roteador de tempo em tempo sem que a conexão se perca. Esta forma é mais segura e o protocolo utilizado para efetuar a troca é o IKE – Internet Key Exchange Protocol. 50 3.8.5.1 Mecanismos de Autenticação 3.8.5.1.1 AH (Authentication Header) O AH é o protocolo do IpSec utilizado para garantir autenticidade e integridade das informações, incluindo a parte que não varia do cabeçalho, no entanto, não fornece confidencialidade. O AH pode trabalhar sozinho ou combinado com ESP quando é usado tunelamento. Este protocolo preocupa-se em proteger as informações que não podem ser alterados, deste modo diferentemente do mecanismo ESP, o AH não protege os endereços IP de origem e destino por estes endereços poderem ser variados durante a transmissão do pacote. O AH pode ser usado tanto no modo transporte quanto no modo túnel. 3.8.5.1.2 ESP (Encapsulating Security Payload) O AH protege os dados contra alteração, entretanto, não fornece confidencialidade, ou seja, as informações não estão criptografados, entretanto o ESP garante a confidencialidade, integridade e autenticidade dos dados. O protocolo ESP realiza um trabalho semelhante ao do AH, sem autenticar o cabeçalho IP, sendo assim este protocolo apenas autentica o conteúdo. O ESP pode ser usado tanto no modo transporte quanto no modo túnel. 3.8.5.1.3 IKE (Internet Key Exchange) O IKE é um protocolo que o IETF especificou para gerenciar a negociação e a troca de chaves via Internet. Este protocolo que executa a troca de chaves e negocia Associações de Segurança (SA) entre duas entidades [32]. O protocolo IKE implementa a gerência automática de chaves. É um protocolo formado pelo ISAKMP e pelo OAKLEY. O ISAKMP é responsável pela negociação, estabelecimento, alteração e exclusão das SA. Este protocolo define o formato dos pacotes e os procedimentos. O OAKLEY proporciona o mecanismo de troca de chaves utilizado pelo ISAKMP. O IKE é composto por duas fases, a fase um consiste em envolver duas interfaces de comunicação fazendo uso do protocolo para abrir um canal seguro para a execução da fase dois, que percebe o comportamento de negociação de SA[32]. Este protocolo possue três modos de trocas de chave segundo [35] que são: 51 − Main Mode: Estabelece a troca de chaves da fase um por meio de um canal seguro. − Agressive Mode: Análoga ao main mode, com a diferença de ser mais simples e rápida. − Quick Mode: Acompanha a troca de chaves na fase dois através de negociação de SA para comunicações de modo geral. 3.8.5.2 Modos de Operação O IpSec fornece dois modos de operação: transporte e túnel. Modalidade de transporte: Esta modalidade efetua autenticação e criptografia somente na camada de transporte. A grande desvantagem deste modo de operação é a possibilidade de alteração dos endereços IP de origem e destino em caso de intercepção dos dados, uma vez que somente os dados é encriptografado, enquanto os cabeçalhos são mantidos no formato original, sendo mais apropriada para a comunicação fim-a-fim entre computadores. [35] Figura 3.8.5.2.1: Modo transporte [35] Modalidade de túnel: Neste modo de operação, todo o pacote IP é autenticado e criptografado. Esta modalidade é considerada mais confiavel e segura do que a modalidade transporte devido ao fato de encriptografar as informações e o cabeçalho IP, sendo mais apropriada para a comunicação de roteadores. [35] Figura 3.8.5.2.2: Modo túnel [35] 52 Tabela 3.8.5.1: Relação entre protocolos e associações de Segurança Associações de Segurança Modo Transporte AH ESP Modo Túnel Autentica a carga útil IP e porções Autentica o interior do pacote IP e selecionadas do cabeçalho IP e das porções selecionadas do cabeçalho extensões IPv6. IP. Criptografa a carga útil IP e Criptografa o interior do pacote IP. qualquer extensão IPv6. ESP com autenticação Criptografa a carga útil IP e Criptografa e autentica o interior do qualquer extensão IPv6. Autentica pacote IP. apenas a carga útil IP. Fonte: [32] 53 ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS IP CAPÍTULO 4: IMPLEMENTANDO VPN USANDO O PROTOCOLO IPSEC Será implementado o serviço VPN, em um ambiente de teste, que simla duas redes distintas de uma mesma empresa, a matriz e a filial. Cada uma delas possui um gateway VPN e terá uma rede para simular a Internet. Para simular o meio de comunicação (Internet) entre as redes, será usado um computador que funcionará como roteador entre as mesmas A figura 4.1 ilustra o modelo em questão. Figura 4.1: Modelo VPN Gateway Matriz: eth0 -> 10.1.1.1/255.0.0.0 eth1 -> 192.168.0.99/255.255.255.0 Gateway Filial: eth0 -> 10.2.1.1/255.255.0.0 eth1 -> 192.168.0.100/255.255.255.0 Roteador: eth0 -> 192.168.0.1 54 4.1 Implementando entre Gateway Linux Algumas distribuições vem com o kernel com suporte IpSec, deste modo facilitando a instalação. Caso a distribuição não tenha suporte IpSec, será necessário recompilar o kernel para obter este suporte. No caso deste trabalho, foi utilizada uma distribuição (Debian br-cdd 1.0) com suporte nativo ao IpSec. A ferramenta escolhida para a implementação foi o Opens/Wan, continuação do projeto descontinuado freeswan. 4.1.1 Instalação do Opens/Wan No Debian a instalação é trivial. [33] Antes de começar a instalar, tem que editar o arquivo /etc/sysctl.conf, vejamos: Parâmetros a serem alterados ao arquivo Arquivo /etc/sysctl.conf : # Controls IP packet forwarding *net.ipv4.ip_forward = 0 ( Alterar para 1) # Control source route verification *net.ipv4.conf.default.rp_filter = 1 (Alterar para 0) Linhas a serem adicionadas ao arquivo Arquivo /etc/sysctl.conf: * echo 0 > /proc/sys/net/ipv4/conf/IpSec0/rp_filter * echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter Atualise o source: *aptitude update Instale o Opens/Wan: *aptitude install openswan Para iniciar o Opens/Wan: *IpSec setup restart 55 Para verificar se a instalação foi bem sucedida: *IpSec verify O “IpSec verify” deve ter a seguinte saída Checking your system to see if IpSec got installed and started correctly: Version check and IpSec on-path [OK] Linux Openswan U2.2.0/K2.4.27-2-386 (native) Checking for IpSec support in kernel Checking for RSA private key (/etc/IpSec.secrets) [OK] [DISABLE] IpSec showhostkey: no default key in "/etc/IpSec.secrets" Checking that pluto is running [OK] Checking for 'ip' command [OK] Checking for 'iptables' command [OK] Checking for 'setkey' command for native IpSec stack support [OK] 4.1.2 Configuração do Opens/Wan Toda a configuração do openswan é baseado em dois arquivos: /etc/ipsec.conf e /etc/ipsec.secrets. /etc/ipsec.secrets: Neste arquivo é guardado as chaves de criptografia. Está ferramenta suporta tanto criptografia simétrica quanto assimétrica. Para criptografia assimétrica usa-se o método RSA e para simétrica usa-se o algoritmo PSK. A criptografia assimétrica é mais segura que a simétrica, entretanto neste trabalho foram implementado as duas em ambiente Unix-like. O /etc/ipsec.secrets deve ser escrito da seguinte maneira em ambos roteadores: 192.168.0.99 192.168.0.100: PSK “segredo” /etc/ipsec.conf: Neste arquivo está especificado as configurações da VPN Este arquivo é baseado na rede apresentada na figura 4.1: config setup interfaces=%defaultroute klipsdebug=none 56 plutodebug=none conn %default esp=3des-md5-96 authby=secret conn wink left=192.168.0.99 leftsubnet=10.1.0.0/255.255.0.0 right=192.168.0.100 rightsubnet=10.2.0.0/255.255.0.0 type=tunnel authby=secret network=lan auto=add #Disable Opportunistic Encryption include /etc/IpSec.d/examples/no_oe.conf Este arquivo descreve as principais opções do Opens/Wan. Este arquivo está dividido em três partes: [33] 1. config setup: Nesta parte (config setup) é a configuração do IpSec. Esta seção normalmente não é modificada. Segue os principais parâmetros desta seção: − interface=%defaultroute: Este parâmetro faz com que o IpSec use automaticamente o endereço da interface de rede. − Klipsdebug= Determina quanto da saída de depuração do KLIPS deve ser armazenado. O valor none significa que nada será armazenado. − Plutodebug= Determina quanto da saída de depuração será armazenado. O valor none significa que nada será armazenado. 2. conn %default: Esta parte não indica uma conexão específica, mas serve para que você possa listar quaisquer parâmetros que você queira que sejam válidos para todas as conexões. Listar alguma opção nesta seção é o mesmo que listá-la repetidas vezes dentro de cada uma das conexões. Segue os principais parâmetros desta seção: 57 − esp=3des-md5-96: esp=3des-md5-96 indica o tipo de criptografia que queremos usar. 3des-md4-96 é uma boa opção, sugerida como default. As outras opções estão listadas no manual do openswan (man ipsec.conf e outros). − authby=secret: Este parâmetro determina que deve ser usado autenticação e criptografia do tipo PSK. 3. conn wink: Esta parte define a conexão VPN, podem existir mais de uma, o nome escolhido pode ser de acordo com seu critério. Left e right são "os dois lados" da conexão. Sendo indiferente qual é qual, somente que os lados estejam listados. O Opens/Wan descobre sozinho qual é qual através do IP especificado. Isto faz com que se possa usar o mesmo arquivo de configuração, exatamente igual, para os dois lados. Segue os principais parâmetros desta seção: − left=192.168.0.99: Indica o IP da máquina gateway de um dos lados. Aqui definimos que o left representa o gateway da Rede Matriz. − leftsubnet=10.1.0.0/255.255.0.0: Indica qual é a rede que está "atrás" do gateway, cujos pacotes serão protegidos. Deve-se indicar a mascara da rede em conjunto com o endereço de rede. − type=tunnel: Representa a modalidade da conexão, podendo ser transport ou tunnel. − authby=secret: Este parâmetro determina que deve ser usado autenticação e criptografia do tipo PSK. Para RSA utiliza-se rsasig. − network: Neste parâmetro especifica se você quer ras, lan ou auto (ambas) conexões. − auto=add: Especifica que operação deve ser feita quando o IpSec for iniciado. A opção start indica que a conexão é iniciada quando o IpSec for iniciado. A opção add indica que a conexão é iniciada através do comando do IpSec “ ipsec auto –up wink ”. − Opportunistic Encryption: Este tipo de encriptação permite aos gateways criptografar todo tráfego existente entre eles, mesmo não havendo nenhuma relação entre os mesmos. Finalizando as etapas de configuração do FreeS/Wan, para inicializar as conexões e verificar se o túnel foi estabelecido. * ipsec auto –up wink 58 Deverá gerar a seguinte saída: gateway matriz 104 "wink" #1: STATE_MAIN_I1: initiate 003 "wink" #1: ignoring Vendor ID payload [4f456c4c4f5d5264574e5244] 003 "wink" #1: received Vendor ID payload [Dead Peer Detection] 106 "wink" #1: STATE_MAIN_I2: sent MI2, expecting MR2 108 "wink" #1: STATE_MAIN_I3: sent MI3, expecting MR3 004 "wink" #1: STATE_MAIN_I4: ISAKMP SA established 112 "wink" #2: STATE_QUICK_I1: initiate 004 "wink" #2: STATE_QUICK_I2: sent QI2, IpSec SA established {ESP=>0xfed42729 <0x4b99a00a} Deverá gerar a seguinte saída: gateway filial 117 "wink" #3: STATE_QUICK_I1: initiate 004 "wink" #3: STATE_QUICK_I2: sent QI2, IpSec SA established {ESP=>0xf32e069b <0x34161a1d xfrm=3DES_0-HMAC_MD5 NATD=none DPD=none} 4.1.3 Implementando entre um Gateway Linux e um Windows 2003 Antes de implementar o IpSec no Windows 2003, devemos preparar o ambiente. Primeiramente segundo [34] iremos efetuar o downloads da ferramenta Internet Protocol Security Policies Tool (lpsecpol.exe) diposnibilizada em: http://download.microsoft.com/download/win2000platform/ipsecpol/1.00.0.0/nt5/enus/IpSecpol_setup.exe. Depois efetuaremos o download da ferramenta Windows 2000 VPN Tool, disponibilizada em http://vpn.ebootis.de/package.zip. Instruções para a instalação: 1. Crie o diretório C:\Programme\VPN; 2. Instale IpSecpol.exe Tool neste diretório; 3. Descompacte o VPN tool neste diretório; 4. Baixe a seguinte polstore.dll neste link http://www.dlldump.com/download-dllfiles_new.php/dllfiles/P/polstore.dll/5.1.2600.2180/download.html 5. Edite o ipsec.conf; 59 Edição do ipsec.conf conn wink left=192.168.0.99 leftsubnet=10.1.0.0/255.255.0.0 right=192.168.0.100 rightsubnet=10.2.0.0/255.255.0.0 presharedkey=segredo network=lan auto=start Este arquivo de configuração funciona de maneira similar ao do Opens/Wan do Linux. A maioria dos parâmetros do ipsec.conf do Linux funciona no Windows. No Linux, basta manter a configuração mencionada na seção 4.1.2. 60 ABORDAGENS NO USO DE SOFTWARE LIVRE E PROPRIETÁRIO EM SERVIÇOS IP CAPÍTULO 5: CONCLUSÃO O objetivo deste trabalho foi fazer uma abordagem das ferramentas de software livre e proprietária em serviços de redes IP. Foram definidos e classificados os diferentes tipos de licenças de softwares e seus respectivos graus de liberdade de uso. Foram apresentados os principais protocolos de aplicação (serviços de e-mail, serviços DNS, serviços proxy, serviços FTP, serviços WEB, serviços de arquivo e autenticação, serviços de diretórios, serviços VPN) e ferramentas livres e proprietárias que implementam estes protocolos. Percebemos a importância de ter o conhecimento das restrições que as licenças dos softwares impõem aos administradores e projetistas de redes de computadores e para os administradores de TI. Ao adotar uma determinada solução, o responsável deve ter o conhecimento da licença desta ferramenta para não cometer nenhum ato de ilegalidade. Foi escolhido o serviço VPN como parâmetro de comparação entre software proprietário e software livre. Ele foi escolhido devido às oportunidades que esta tecnologia reserva para o futuro, pois cada vez mais as VPN são agregadas às corporações. Os motivos principais estão relacionados aos benefícios técnicos de segurança das informações e economia no custo tráfego das mesmas. No Windows, o serviço VPN costuma ser implementado sobre os protocolos de encapsulamento PPTP ou o L2TP. Pode-se utilizar o IpSec em conjunto com estes protocolos para aumentar a segurança. Tanto o Windows quanto o Linux possuem kernel com suporte ao protocolo IpSec. Instalando no Windows a ferramenta do Marcus Mueller's, o VPN tool, a implementação da VPN no Windows torna-se similar a implementação da VPN no Linux. A principal diferença é a necessidade da instalação de um pacote de criptografia 3DES no Windows. Outra diferença é a possibilidade de implementar um serviço VPN em equipamentos obsoletos com Linux, ao contrario no Windows que exige mais do equipamento. Neste caso, a documentação na implementação do serviço VPN usando IpSec, foi-se mais completa em software livre entretanto o software proprietário tem-se mais suporte, caso pague por ele. Com a semelhança na dificuldade de implementação em ambas as plataformas (Windows e Linux) neste caso a adoção da ferramenta de software livre é viável. Somente com este serviço 61 não tem embasamento suficiente para afirmar qual categoria de software é mais viável, então como sugestão para trabalhos futuros, poderiam efetuar uma abordagem no uso destas ferramentas em serviços de arquivos e autenticação. Este trabalho foi implementado, primeiramente em computadores de uso pessoal, e depois no laboratório de redes do Departamento de Computação da Universidade Católica de Goiás. As implementações entre os gateway Linux, funcionaram, entretanto a entre Linux e Windows não houve sucesso, utilizando o protocolo IpSec. Nesta implementação (analisando os logs), ocorreu à troca de chaves (o protocolo IKE funcionou corretamente), entretanto notamos que o trafego de dados não foi criptografado. Não tivemos tempo hábil para analisar porque o trafego não foi criptografado. Este trabalho pode ser usado como guia numa possível tomada de decisão na escolha de um destes modelos de software. 62 REFERÊNCIAS BIBLIOGRÁFICAS LIVROS: 1. HALLBERG, BRUCE A. Networking - Redes de Computadores - Teoria e Prática. ALTA BOOKS, São Paulo. 2. MORIMOTO, Carlos E, Termos Técnicos. – Hardware, Redes e Linux. 3a. ed. versão e-book. Ultimo acesso em 13 de setembro de 2006. 3. STARLIN, GORKI. Segurança na Internet. São Paulo, Books Express, 2000. TESES, DISSERTAÇÕES E MONOGRAFIAS: 4. CÉSAR, GUILHERME SOARES. Quadro Uma análise de segurança das versões do protocolo NFS. Campinas-Sp, Unicamp, 2004. Monografia de conclusão do curso de Graduação em Ciências da Computação. Disponível em <http://www.las.ic.unicamp.br/paulo/papers/2004-SSI-guilherme.ruppertanalise.seguranca.NFS.pdf> Ultimo acesso em 5 de novembro de 2006. 5. HEXSEL, ROBERTO ANDRÉ. Propostas de Ações de Governo para Incentivar o Uso de Software Livre. Curitiba, UFPR 2002. Relatório Técnico RT-DINF 004/2002. Disponível em <http://www.inf.ufpr.br/~roberto>. Último acesso em 29 de agosto de 2006. 6. OLIVEIRA, JOSÉ. Grupos de Sistemas Distribuídos. Porto, UNINHO, 2003. Monografia de conclusão do curso de Graduação em Ciências da Computação. Disponível em <br.geocities.com/joseoliveira/gsd.pdf> Último acesso em 29 de setembro de 2006. 7. SANTOS, MAURO; Rodrigues, Renata. A integração de serviços como requisito fundamental no processo de migração para uma plataforma livre. Brasilia, UCB 2003. Monografia de conclusão do curso de Graduação em Ciências da Computação. 8. SOUZA, RICARDO. Quadro Comparativo: IIS e apache. Lavras, UFLA, 2003. Monografia de conclusão do curso de Especialização em Administração de Redes. 63 INFORMAÇÕES RETIRADAS DA INTERNET: 9. APACHE SOFTWARE FOUNDATION: Site oficial do Apache. How It Works. Disponível em <http://www.apache.org/foundation/how-it-works.html>. Ultimo acesso em 19 de setembro de 2006. 10. BRMULTIACCESS. Artigo sobre FTP no Firewall. Disponível em <http://www.brc.com.br/CatID=13&ID=246&cat=no>. Ultimo acesso em 13 de setembro de 2006. 11. BROWN, MARTIN: Server Types: IIS vs. Apache, Looking Beyond the Rhetoric. Disponível em <http://www.serverwatch.com/tutorials/article.php/10825_3074841_2> Ultimo acesso em 20 de setembro de 2006. 12. CENTER FOR DEMOCRACY & TECNOLOGY . DNS. Disponível em http://www.cdt.org/dns> Último acesso em 10 de setembro de 2006. 13. GAYLORD, AULKE. Comparing PHP, JavaServer and ASP. Disponível em <http://www.100days.de/download.php?id=i/677.pdf>. Ultimo acesso em 19 de setembro de 2006. 14. HELPDESK: Conceito de Servidores de Arquivos. Disponível em <http://www.tellnet.com.br/html.php?filnav=empresa/arquivos.html>. Último acesso em 15 de setembro de 2006. 15. JAVASERVER PAGES[TM] TECHNOLOGY. Comparison with ASP. Disponível em <http://java.sun.com/products/jsp/jsp-asp.html>. Último acesso em 29 de setembro de 2006. 16. JAVASERVER PAGES[TM] Technology. Overview. Disponível em <http://java.sun.com/j2ee/appmodel.html>. Último acesso em 5 de outubro de 2006. 17. MICROSOFT CORPORATION. Overview ASP.net. Disponível em <http://g.msn.com/9SE/1?http://msdn2.microsoft.com/en-us/library/4w3ex9c2.aspx>. Último acesso em 2 de outubro de 2006. 18. MICROSOFT CORPORATION. Overview Protocols. Disponível em <http://msdn.microsoft.com/library/default.asp?url=/library/enus/cifs/protocol/cifs.asp>. Último acesso em 9 de outubro de 2006. 19. OPENSOURCE: Bsd License. Disponível em<http://www.opensource.org/licenses/bsd-license.php>. Ultimo acesso em 30 de agosto de 2006. 64 20. PHP: SITE OFICIAL DO PHP. Manual do PHP. Disponível em <http://www.php.net/tut.php>. Ultimo acesso em 21 de setembro de 2006. 21. PINHO, MANOEL. Artigo publicado no Br-Linux. Disponível em <http://br- linux.org/noticias/001666.html>. Ultimo acesso em 5 de novembro de 2006. 22. SLACKSITE. Active and Passive FTP. Disponível em <http://slacksite.com/images/ftp/passiveftp.html>. Último acesso em 10 de setembro de 2006. 23. STALLMAN, RICHARD. GNU Philosophy. Disponivel em <http://www.gnu.org/philosophy>. Último acesso em 28 de agosto de 2006. 24. WIKIPÉDIA, A ENCICLOPÉDIA LIVRE: Artigo sobre Licenças de uso de Software. Disponível em <http://pt.wikipedia.org/wiki/Licen%C3%A7as_de_uso>. Ultimo acesso em 29 de agosto de 2006. 25. WIKIPÉDIA, A ENCICLOPÉDIA LIVRE.: Artigo sobre Direito na Era da Informática. Disponível em <http://pt.wikipedia.org/wiki/Direito_da_inform%C3%A1tica>. Ultimo acesso em 30 de agosto de 2006. 26. WIKIPÉDIA, A ENCICLOPÉDIA LIVRE: Artigo sobre Proxy. Disponível em <http://en.wilipedia.com/proxy>. Ultimo acesso em 13 de setembro de 2006. 27. WOOD, PETER. Teaching DNS. Disponível em <http://www.dcs.bbk.ac.uk/~ptw/teaching/http/dns>. Último acesso em 10 de setembro de 2006. CONGRESSOS, SEMINÁRIOS, WORKSHOP, ETC: 28. DOMINGUES, MARCOS AURÉLIO; SCHNEIDER, BRUNO DE OLIVEIRA; UCHÔA, JOAQUIM QUINTEIRO. Autenticação de Sistemas Linux usando OpenLDAP. In: SEMAC2001. XII Semana da Computação. IV Workshop em Linux, Internet e Aplicações. São José do Rio Preto: UNESP, 2001. Disponível em <http://www.comp.ufla.br/~joukim/extensao>. Último acesso: 26 de outubro de 2006. 29. TOSO, RODRIGO FRANCO. Mini Curso: Samba. Universidade Federal de Lavras, Encontro técnico de Pós-Graduação em Administração de Redes Linux - ARL. 2003. Disponível em <http://www.comp.ufla.br/~rtoso/pages/publicacoes.html>. Último acesso: 19 de outubro de 2006. 65 30. UCHOA, ROBIN:IV Workshop em Linux, Internet e Aplicações. São José do Rio Preto: UNESP, 2001. Disponível em <.http://www.openni.com.br/freebsd-hb/networknfs.html>. Último acesso: 26 de outubro de 2006. 31. WILLIAN, JOÃO MÁRIO. Mini Curso: VPN Disponível em <www.timaster.com.br/minicursos> Último acesso: 19 de novembro de 2006. 32. WILSON, JOÃO ASSIM Implementando uma VPN em Linux. Lavras-MG, UFLA, 2003. Encontro técnico de Pós-Graduação em Administração de Redes Linux. Disponível em <http://www.ginux.ufla.br/documentacao/monografias/mono- JoaoAssis.pdf>. Último acesso em 29 de agosto de 2006 33. 3WAY NETWORK Apostila de treinamento em linux. 34. WSTRASHEIM, ALBERT Opens/Wan Interoperating. Disponivel em: <http://wiki.openswan.org/index.php/Openswan/Windows> Último acesso em 29 de Fevereiro de 2007. 35. Zelio Alecrim Artigo publicado em no InfoWester. Disponível em: <http://www.infowester.com/criptografia.php> Último acesso em 29 de Abril de 2007 66