Anlise de segurana em aplicaes que utilizam plataformas UNIX e MS-Windows como Clientes e Servidores
Banca Examinadora: Prof. Dr. Paulo Lcio de Geus (Orientador) Instituto de Computao, UNICAMP Profa. Dra. Maria de Ftima Ridolfi Pires O. da Silva Coordenadoria Geral de Informtica, UNICAMP Prof. Dr. Ricardo de Oliveira Anido Instituto de Computao, UNICAMP Prof. Dr. Ricardo Dahab (Suplente)
Instituto de Computao, UNICAMP
ii
Curti, Joo Carlos C94a Anlise de segurana em aplicaes que utilizam plataformas UNIX e MS-Windows como Clientes e Servidores / Joo Carlos Curti -- Campinas, [S.P. :s.n.], 2004. Orientador : Paulo Lcio de Geus Dissertao (mestrado) - Universidade Estadual de Campinas, Instituto de Computao. 1. Redes de computao Medidas de segurana. 2. Cliente/Servidor (Computao). 3. TCP/IP (Protocolo de rede de computao). I. Geus, Paulo Lcio. II. Universidade Estadual de Campinas. Instituto de Computao . III. Ttulo.
iii
Anlise de segurana em aplicaes que utilizam plataformas UNIX e MS-Windows como Clientes e Servidores
Este exemplar corresponde redao final do Trabalho Final devidamente corrigida e defendida por Joo Carlos Curti e aprovada pela Banca Examinadora.
Trabalho
Final
apresentado
no
Instituto
de
Computao, UNICAMP, como requisito parcial para a obteno do ttulo de Mestre em Computao na rea de Redes de Computadores.
iv
vi
Agradecimentos
Aos meus pais, primeiramente, por terem me agraciado com o dom da vida, por sua pacincia para transmitir seus ensinamentos, por sua luta diria e constante com extrema dedicao, pilares fundamentais desta conquista. minha namorada Luciana por sua compreenso, pelos dias distantes dedicados a este trabalho e o apoio nos momentos difceis. Ao meu Orientador, prof. Paulo, por sua ateno e aceitar este desafio, tambm por suas horas dedicadas a este trabalho. Aos membros da banca examinadora por terem aceitado prontamente ao convite, pessoas as quais tenho muito respeito e admirao. A todos amigos que auxiliaram direta ou indiretamente para a elaborao deste documento, oferecendo informaes, amizades e experincias enriquecedoras. A Universidade Estadual de Campinas que me acolheu e propiciou o crescimento pessoal de profissional.
vii
Resumo
Nos ltimos anos temos acompanhado e assistido as profundas mudanas na rea de tecnologia, tanto em software quanto em hardware, permitindo que os computadores se popularizassem e que aplicaes pudessem ser criadas para atender a crescente demanda deste novo mercado. Infelizmente a adio dos mecanismos para prover segurana a estas aplicaes no acompanhou o ritmo deste crescimento. Solues foram adotadas para minimizar a exposio dos dados, uma vez que, com a utilizao de computadores em rede, existe a necessidade do trfego de informaes por estes canais novos e de certo modo pouco explorados --- para no dizer pouco conhecidos --- para a maioria dos programadores. Da diversidade de ambientes operacionais, o mercado e o marketing das empresas selecionaram duas plataformas distintas; uma proprietria e fechada, representada basicamente pela Microsoft e outra representada pelas variaes de UNIX, sejam elas de cdigo aberto (FreeBSD, Linux, OpenBSD e outros), ou proprietrias (HP Tru64Unix, SunOs e outros). Sendo assim as informaes tratadas pelas aplicaes esto sujeitas, alm de s suas prprias falhas, tambm s vulnerabilidades do Sistema Operacional onde so desenvolvidas e executadas. Em vista destes fatos, o foco desta dissertao apresentar como possvel a implantao de produtos de software comerciais do tipo ERP1, independentemente da plataforma adotada pela empresa/instituio para execuo de suas aplicaes, provendo segurana nos canais de comunicao. Utiliza-se para isso ferramentas proprietrias ou nativas do prprio Sistema Operacional, bem como buscando de software livre para aplicaes do tipo Cliente/Servidor e WEB.
viii
Abstract
In the last years we have followed and watched deep changes in technology, as much in software as in hardware, allowing for computers to get popular and for applications to be created to serve the growing demand of this new market. Unfortunately the addition of mechanisms to supply security to applications not follow the pace of this growth; solutions were adopted to minimize data exposure, since, with the use of computer networks, there is a need for information flow through these new, somehow unexplored and even unknown channels for the majority of programmers. From the diversity of operating environments, the market and the companies' marketing departments selected two distinct platforms: a proprietary and closed one, represented basically by Microsoft and another, represented by the variations of UNIX, be they of open code nature (FreeBSD, Linux, OpenBSD etc), or of proprietary nature (HP Tru64Unix, SunOS etc). As such, the information dealt with by applications are subject not only to their own vulnerabilities, but also to those of the operating system for which they were developed. In view of these facts, the focus of this dissertation is to show how it is possible, mainly for commercial implementation of ERP software and independently from the platform or operating system used, to supply security to the communication channels by using either free or native proprietary tools of the operating system itself, both to WEB as well as to other client/server applications.
ix
Sumrio
Agradecimentos Resumo Abstract Lista de Figuras Lista de Tabelas vi viii ix xiv xvii
1. Introduo................................................................................................................................1 1.1 Apresentao do problema .........................................................................................3 1.2 Organizao do trabalho.............................................................................................6 2. O modelo Cliente/Servidor .....................................................................................................8 2.1 Elementos do modelo Cliente/Servidor......................................................................8 2.1.1 Cliente.........................................................................................................9 2.1.2 Servidor ....................................................................................................10 2.2 Modelos da arquitetura Cliente/Servidor..................................................................11 2.2.1 Arquitetura C/S em dois nveis.................................................................11 2.2.2 Arquitetura C/S Multinvel.......................................................................13 2.2.3 Arquitetura C/S par-a-par .........................................................................14 2.3 O processo distribudo da arquitetura Cliente/Servidor ...........................................15 2.3.1 Processamento Distribudo ou Concorrente .............................................16 2.4 Camadas da Arquitetura Cliente/Servidor................................................................19 2.5 Sistema de trs camadas para a aplicao ................................................................23 2.5.1 Apresentao distribuda ..........................................................................24 2.5.1.1 Revamping Simples ..................................................................25 2.5.1.2 Revamping Evoludo.................................................................25 2.5.1.3 Revamping Modificado.............................................................25 2.5.2 Apresentao Remota ...............................................................................25 2.5.3 Lgica Distribuda ....................................................................................26 2.5.4 Gerenciamento de dados centralizado ......................................................27
2.5.5 Gerenciamento de dados distribudos.......................................................28 Concluso .......................................................................................................................30 3. O cenrio atual de execuo das aplicaes ........................................................................31 3.1 Caractersticas dos protocolos de comunicao .......................................................32 3.1.1 Aplicativos prontos ou sob medida ..........................................................32 3.1.2 Aplicativos avanados e tendncias .........................................................33 3.1.2.1 Business Intelligence ................................................................34 3.1.2.2 Sistemas de Gesto Empresarial ...............................................34 3.1.2.3 EIS Executive Information System........................................35 3.1.2.4 Softwares integrados de gesto (ERP)......................................36 3.2 O cenrio de comunicao das aplicaes................................................................37 3.2.1 Redes de computadores e protocolos........................................................37 3.2.1.1 O modelo de referncia OSI/ISO..............................................38 3.2.1.2 O protocolo TCP/IP ..................................................................40 3.2.1.3 O protocolo SMB......................................................................41 3.2.1.4 O protocolo NetBIOS e NetBEUI ............................................42 3.2.2 Aspectos de conexo ................................................................................44 3.2.3 Aspectos de sincronismo e passagem de mensagem ................................47 3.2.3.1 Caractersticas da conexo TCP ...............................................48 3.2.3.2 NetBEUI, SPX/IPX e Appletalk...............................................51 3.2.3.3 Sockets ......................................................................................52 3.2.4 Princpios da comunicao .......................................................................57 3.2.4.1 Princpio da Disponibilidade ....................................................57 3.2.4.2 Princpio da Integridade............................................................57 3.2.4.3 Princpio da Confidencialidade.................................................58 3.2.4.4 Princpio da Autenticidade .......................................................58 3.2.4.5 No repdio ..............................................................................59 3.2.4.6 Controle de acesso ....................................................................59 Concluso .......................................................................................................................59
xi
4. Provendo segurana nos protocolos de comunicao ........................................................60 4.1 Protocolos seguros para aplicaes ..........................................................................61 4.1.1 PPP ...........................................................................................................61 4.1.2 PPTP .........................................................................................................62 4.1.2.1 Controle de Conexo PPTP ......................................................63 4.1.2.2 Transmisso de dados no protocolo PPTP................................64 4.1.3 SSL ...........................................................................................................65 4.1.4 TLS ...........................................................................................................69 4.1.5 L2TP .........................................................................................................70 4.1.6 IPSecurity .................................................................................................72 4.1.6.1 Cabealho de Autenticao (AH) .............................................74 4.1.6.2 Cabealho de Encapsulamento de Dados de Segurana (ESP) 74 4.1.6.3 Mecanismos de Gesto de Chaves............................................76 4.2 Protocolos de autenticao .......................................................................................77 4.2.1 Protocolo RADIUS...................................................................................78 4.2.2 Protocolo KERBEROS.............................................................................79 Concluso .......................................................................................................................82 5. Solues de segurana para aplicaes Cliente/Servidor...................................................83 5.1 Um estudo de caso....................................................................................................84 5.1.1 Anlise de problemas encontrados no cenrio..........................................89 5.1.1.1 Vulnerabilidades do cenrio autenticidade do usurio ..........89 5.1.1.2 Vulnerabilidades do cenrio segurana na comunicao cliente/servidor .........................................................................90 5.1.1.3 Vulnerabilidades do cenrio segurana nas estaes de trabalho .....................................................................................91 5.1.2 Anlise da aplicao verso WEB............................................................92 5.2 Tecnologias viveis para soluo do estudo de caso................................................93 5.2.1 VPN (Virtual Private Network) ................................................................94 5.2.1.1 Tipos de VPNs.........................................................................95 5.2.1.2 Componentes de uma VPN baseada em Internet......................97 5.2.2 Relaes de Confiana (Trust Relationship) ............................................98
xii
5.2.3 Certificao de Clientes e Servidores .....................................................101 5.2.3.1 Certificados e Autoridades de Certificao ............................102 Concluso .....................................................................................................................105 6. Propostas de solues para o estudo de caso.....................................................................107 6.1 Anlise das solues viveis ..................................................................................107 6.1.1 Provendo autenticidade na plataforma MS-Windows .............................108 6.1.2 Utilizao de protocolos seguros na plataforma MS-Windows...............110 6.2 Anlise da soluo com a utilizao do servio de VPN Microsoft .......................110 6.3 Anlise da soluo com IPSec nativo da plataforma MS-Windows .......................112 6.4 Anlise da soluo com Certificao Digital .........................................................118 6.5 Proposta de soluo com Proxy Reverso................................................................121 6.6 Comparao entre as solues................................................................................123 6.7 Anlise da soluo adotada para o estudo de caso .................................................125 6.7.1 Fatores para eliminao da proposta de VPN com IPSec nativo............126 6.7.2 Fatores para eliminao da proposta com VPN Microsoft .....................128 6.7.3 Fatores para eliminao da proposta com Certificao Digital ..............129 Concluso .....................................................................................................................130 7. Concluso .............................................................................................................................131 7.1 Trabalhos futuros....................................................................................................133 Glossrio de siglas Referncias 135 138
xiii
Lista de Figuras
Pgina 1.1 1.2 1.3 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 Arquitetura TCP/IP......................................................................................................... 04 Encapsulamento TCP/IP de pacotes do Cliente para um Servidor................................. 05 Integrao de Redes via Internet .................................................................................... 05 Arquitetura C/S simples ................................................................................................. 11 Arquitetura C/S em dois nveis Centrada no Servidor ................................................ 12 Arquitetura C/S em dois nveis Centrada no Cliente................................................... 12 Arquitetura C/S em dois nveis Comunicao Mista................................................... 13 Arquitetura C/S multinvel ............................................................................................. 14 Arquitetura C/S Par a Par ............................................................................................ 15 Sistema Cliente/Servidor ................................................................................................ 16 Modelo de Distribuio de Processos............................................................................. 17 Processamento Distribudo............................................................................................. 17
2.10 Processo de Filtro ........................................................................................................... 18 2.11 Processo Peer-to-Peer..................................................................................................... 18 2.12 Processo Cliente/Servidor .............................................................................................. 19 2.13 Camadas da arquitetura C/S ........................................................................................... 19 2.14 Arquitetura C/S como Servidor de Arquivos ................................................................. 21 2.15 Arquitetura C/S como Servidor de Banco de Dados ...................................................... 22 2.16 Integrao entre os Processos Cliente/Servidor.............................................................. 22 2.17 Apresentao Distribuda ............................................................................................... 24 2.18 Apresentao Remota..................................................................................................... 26 2.19 Lgica Distribuda.......................................................................................................... 27 2.20 Gerenciamento de Dados Centralizado .......................................................................... 28 2.21 Gerenciamento de Dados Distribudos........................................................................... 29 3.1 3.2 3.3 3.4 3.5 Camadas do Modelo de Referncia OSI ........................................................................ 38 Arquitetura de protocolos em camadas .......................................................................... 39 Comparao entre o modelo OSI/ISO e outros protocolos ............................................ 39 Classes do Protocolo TCP/IP.......................................................................................... 40 Conexo por datagramas : sem conexo ........................................................................ 45
xiv
Comunicao baseada em conexo ................................................................................ 46 Troca de mensagens entre processos origem e destino sem bloqueio ............................ 48 Estabelecimento e encerramento de uma conexo TCP atravs da linha do tempo ....... 49 Protocolo TCP/IP ........................................................................................................... 50
3.10 Protocolos idnticos para que haja a comunicao ........................................................ 51 3.11 Relacionamento da biblioteca sockets em ambiente Windows ....................................... 54 3.12 Conexo Bitstream ......................................................................................................... 55 3.13 Conexo datagrama ........................................................................................................ 56 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.1 5.2 5.3 5.4 5.5 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Etapas da conexo do protocolo PPP ............................................................................. 62 PPTP Datagrama TCP com mensagens de controle....................................................... 64 PPTP troca de mensagens entre Cliente e Servidor........................................................ 64 Datagrama IP contendo pacote PPP gerado pelo protocolo PPTP ................................. 65 Camadas Implementadas pelos protocolos SSL e TLS .................................................. 67 Encapsulamento de um pacote IP feito pelo L2TP sob a proteo do cabealho ESP do IPSec.......................................................................................................................... 71 Cabealho de autenticao (AH) .................................................................................... 74 Formato do cabealho de encapsulamento de dados de segurana (ESP)...................... 75 Componentes dos pacotes em modo IP original, transporte e tnel em ESP ................. 76 Cenrio mnimo do Produto verso Cliente/Servidor..................................................... 86 Cenrio do Produto verso Cliente/Servidor numa rede Windows................................. 88 Cenrio do Produto verso WEB ................................................................................... 92 Diagrama esquemtico de uma possvel configurao VPN.......................................... 95 Esquema de Relao de Confiana em ambientes Windows e Unix .............................. 100 Interao para autenticao de usurios em domnios Windows .................................... 109 Cenrio da soluo utilizando VPN Microsoft ............................................................... 111 Autenticao do usurio em um domnio local Windows............................................... 113 Relacionamento de confiana para acesso ao diretrio compartilhado por usurio da aplicao .................................................................................................................... 114 Definindo os usurios e permisses de acesso ao diretrio compartilhado.................... 115 Definindo parmetros na BDE para Banco de Dados Oracle9i...................................... 116 Cenrio da soluo com Relacionamento de Confiana e IPSec ................................... 117
xv
6.8 6.9
Cenrio da soluo com Certificao Digital ................................................................. 119 Utilizao do algoritmo RSA para assinatura digital ..................................................... 120
6.10 Implementao do Servio de Certificados Digitais na plataforma MS-Windows ......... 121 6.11 Utilizando Proxy Reverso para proteger o servidor WEB interno ................................. 123 6.12 Janela de autenticao do usurio para acesso ao recurso remoto.................................. 126 6.13 Comando no prompt do MS-DOS para mapear um disco remoto.................................. 126
xvi
Lista de Tabelas
Pgina 2.1 3.1 3.2 3.3 4.1 4.2 5.1 5.2 5.3 5.4 6.1 6.2 6.3 Principais Tpicos de uma Arquitetura Cliente/Servidor............................................29 Classes e endereamento em redes TCP/IP.................................................................41 Tipos de Conexo ........................................................................................................46 Exemplos de Protocolos do Windows NT/2000...........................................................51 Mensagens do protocolo PPTP....................................................................................63 Descrio dos algoritmos disponveis utilizados pelo SSL .........................................69 Descrio do Produto utilizado no estudo de caso ......................................................85 Descrio das Etapas do Cenrio de interao do produto..........................................86 Descrio das atribuies do Cliente e do Servidor no produto..................................87 Descrio das atribuies do Cliente e do Servidor no produto para WEB ................93 Distribuio dos 28 bits do SID...................................................................................109 Portas utilizadas na comunicao cliente/servidor do cenrio da figura 6.7 ...............118 Quadro comparativo entre as propostas de soluo.....................................................124
xvii
Captulo 1
Introduo
Quando os primeiros computadores comerciais comearam a surgir, apenas grandes corporaes e algumas instituies governamentais, possuam ambiente e condies tcnicas para a construo de aplicaes, mesmo assim no era uma tarefa fcil, os equipamentos eram bastante limitados quanto ao uso de seus recursos e, as linguagens de programao existentes, permitiam que apenas os profissionais altamente capacitados fossem capazes de operar tais equipamentos. Com o surgimento dos computadores pessoais, no final da dcada de 70, abriu-se uma nova perspectiva. Aplicaes de pequeno porte poderiam ser geradas para executar nestes equipamentos, porm seria ainda necessrio aguardar mais de uma dcada para que estes microcomputadores se tornassem populares, tanto nas empresas quanto em residncias. At ento, no havia preocupaes significativas com relao ao trfego de dados, a maior preocupao estava no armazenamento seguro das informaes, uma vez que, nas poucas instituies dotadas de computadores ligados em rede, os clientes eram terminais conhecidos e a estrutura era montada por empresas que possuam protocolos e ambientes proprietrios. A partir do final da dcada de 80 e incio da dcada de 90 comeam a se formar no mercado condies para o surgimento de novas aplicaes, impulsionadas por trs fatores principais:
Captulo 1 - Introduo
1) A popularizao dos microcomputadores nas empresas, no primeiro instante e posteriormente nas residncias, atravs da reduo dos custos de fabricao dos computadores e a adio de Sistemas Operacionais mais amigveis. Fruto principalmente da parceria realizada entre a Microsoft, que fornecia o MS-DOS e posteriormente as verses do Windows e a Intel, que desenvolveu novas tecnologias de construo de chips e processadores, dando origem a famlia i386. 2) O surgimento de linguagens de programao mais amigveis e voltadas para esta plataforma, facilitando o desenvolvimento de aplicaes e permitindo que profissionais de informtica, mesmo sem o conhecimento do conjunto de instrues, pudessem utilizar uma linguagem de alto nvel. 3) O desenvolvimento das tecnologias de perifricos, armazenamento e rede que possibilitaram o surgimento de novas empresas para fornecimento de hardware para esta plataforma, sem a necessidade de tecnologia proprietria. No item de redes de computadores pode-se destacar a consolidao do protocolo TCP/IP como padro de facto para construo de aplicaes do tipo Cliente/Servidor e WEB. Uma das conseqncias foi a enorme expanso da Internet, que permitiu que computadores pudessem trocar dados utilizando qualquer tecnologia atravs de redes geograficamente distantes e heterogneas. Hoje temos um cenrio diferente para o desenvolvimento e execuo de aplicaes. A segurana das informaes que trafegam e ficam armazenadas nestes equipamentos fator decisivo. Se por um lado no temos mais como deixar os computadores fora de uma rede, por outro deve-se possuir mecanismos que minimizem a exposio de informaes, sigilosas ou mesmo valiosas, num ambiente vulnervel. At recentemente, a segurana era vista como mais uma das fases finais de elaborao de um produto de software, no entanto, os custos associados a falta de segurana so muito grandes: manutenes complexas e custosas, falhas de produtividade, fugas de informao, perda de contratos e gasto imprevisto de recursos de comunicao, entre outros. Alm disso, podemos mencionar outros fatores que agravam a situao como: Complexidade e integrao de programas as aplicaes no executam de forma solitria: agora fazem parte de um ambiente complexo com inmeras interaes entre aplicaes. Hoje o cdigo necessrio para produzir uma aplicao sofisticada e multifuncional gigantesco. Necessidade de produzir software rapidamente A necessidade de lanar novas verses de software, ditada por razes de marketing e financeiras, contribui tambm significativamente para este problema. Por essa razo, muitos produtos disponveis atualmente esto repletos de cdigos que apenas cumprem parcialmente a sua funo, mas no so solues conceitualmente elegantes, a prioridade
Captulo 1 Introduo
reside em colocar para funcionar rapidamente, no importando muito os meios usados. Alm disto, os prazos curtos no condizem com fases de teste e reviso do produto. Correes de cdigo de fonte fechada O cliente final de uma aplicao de cdigo de fonte fechada obrigado a aceitar as correes produzidas pelo fabricante e no dispe de alternativas. O cliente, em geral, no possui condies para confirmar se as correes divulgadas realmente resolvem o problema ou se geram novos problemas. Preparao inadequada dos programadores Muitos fabricantes no compreendem os riscos a que expem os seus clientes quando desenvolvem produtos deficientes. Na raiz deste subproblema parecem estar a preparao inadequada dos programadores, em parte devido ao uso excessivo de ciclos produo depurao reviso na codificao de software em contra partida a prticas orientadas ao design, estilo de programao, auditorias de cdigo entre outros. De fato, houve uma grande evoluo com a criao de mecanismos de modo a prover ao protocolo TCP/IP meios para adicionar segurana no canal por onde os dados trafegam, tambm observa-se o esforo das organizaes de software livre em oferecer alternativas viveis para suprir as deficincias ainda existentes para execuo segura de aplicaes em plataformas proprietrias. No decorrer deste trabalho sero apresentadas, atravs da anlise de segurana, quais so os problemas encontrados pelas aplicaes para se comunicar com segurana em uma rede de computadores, composta por elementos mantidos por solues proprietrias e de software livre.
Captulo 1 - Introduo
Ethernet, principal tecnologia de rede local utilizada nas empresas/instituies, bastante conhecida e instalada e a aplicao FTP1, que funciona de modo Cliente/Servidor.
Camadas do Protocolo TCP/IP
Aplicao Cliente FTP
Protocolo FTP
Servidor FTP
Transporte
TCP
Protocolo TCP
TCP
Rede
IP
Protocolo IP
IP
Enlace
Ethernet Driver
Protocolo Ethernet
Ethernet Driver
Fsica
Ethernet
Basicamente, para se ter uma troca de informaes em rede necessrio no mnimo uma estrutura como a apresentada, ou seja, duas mquinas ligadas por uma tecnologia que utilizam o mesmo protocolo de comunicao. Em muitos casos, a Internet o meio utilizado para interligar os computadores de redes locais geograficamente distantes. A pilha de protocolos Internet constituda por camadas lgicas nas quais se definem protocolos de comunicao. A maneira utilizada para fazer chegar a informao entre a aplicao de origem atravs da rede at a aplicao destino, baseia-se no encapsulamento sucessivo dos dados em pacotes de informao, em funo dos protocolos utilizados na origem. Para tal, constri-se um novo pacote adicionando um cabealho adequado ao pacote do protocolo anterior. No destino, executa-se um processo inverso de desencapsulamento dos pacotes de informao (remoo de cabealhos) at se restituir aos dados a sua forma original, a qual ser tratada pela aplicao receptora. A Figura 1.2 [40] apresenta este processo numa rede baseada em tecnologia Ethernet. Durante a travessia na rede, os dados circulam em pacotes cujo formato depende dos meios fsicos usados, mas contm todo o encapsulamento executado na origem, os dispositivos de interligao de redes podem
1
Captulo 1 Introduo
assim observar os pacotes em trnsito e tomar decises de encaminhamento baseando-se nos cabealhos desses pacotes.
Cliente
Dados da aplicao
Dados da aplicao
Servidor
Aplicao
Cab. aplicao
Dados da aplicao
Dados da aplicao
Cab. aplicao
Transporte
Cab. TCP
Dados da Aplicao
Dados da Aplicao
Cab. TCP
Rede
Cab. IP
Cab. TCP
Dados da Aplicao
Dados da Aplicao
Cab. TCP
Cab. IP
Enlace
Cab. Ethernet
Cab. IP
Cab. TCP
Dados da Aplicao
Ethernet trailer
Fsica
Ethernet trailer
Dados da Aplicao
Cab. TCP
Cab. IP
Cab. Ethernet
O processo para comunicao pode ser simples, uma mquina A abrindo uma conexo com uma mquina B, utilizando uma tecnologia para redes locais, porm na realidade existe uma
infinidade de tecnologias de redes e protocolos de comunicao. Deste modo necessrio ampliar esta estrutura de forma a expor a complexidade encontrada fora
dos domnios de uma rede local, onde existem outras redes, conhecidas e desconhecidas, com filtros
(firewalls), roteadores e outros elementos que estaro no caminho entre as mquinas A e B.
Rede A
Internet
Roteador Roteador
Rede C
Rede B
Rede D
Captulo 1 - Introduo
Internamente numa rede local, existem meios para se mensurar os riscos de exposio dos dados, pelo fato de termos o acesso ao controle e a administrao dos elementos que podem ser considerados como pontos vulnerveis. Mas quando estas informaes precisam sair deste domnio controlado e trafegar por redes desconhecidas, no h como garantir a confiabilidade no caminho que os dados percorrem da origem ao seu destino. A proposta desta dissertao mostrar que aplicaes cliente/servidor desenvolvidas, principalmente com finalidades comerciais, necessitam de cuidados especiais na rea de segurana. Alm disso, deve-se considerar que aplicaes complexas requerem, na maioria dos casos, solues complexas, obtidas atravs de um estudo amplo das opes de solues disponveis na plataforma desejada a fim de alcanar os melhores resultados. Sendo assim, este trabalho pretende apresentar um estudo considerando o ambiente de execuo das aplicaes e as vulnerabilidades as quais esto expostas, destacadas no Captulo 5. O foco principal est na exposio das solues viveis para implementao de uma aplicao no modelo cliente/servidor, com caractersticas semelhantes as encontradas em nosso estudo, de forma segura atravs da rede de computadores, fazendo-se cumprir tambm os princpios que regem a comunicao entre computadores, alm de possuir mecanismos que possibilitem que os elementos envolvidos na comunicao possam ser identificados atravs de uma autenticao segura e irrevogvel e, integrado por um sistema que se utiliza de mtodos criptogrficos para garantir a segurana durante a troca de informaes atravs da rede.
Captulo 1 Introduo
implementao de segurana na comunicao analisada e tratada no Captulo 4. Neste Captulo sero apresentados os protocolos seguros existentes e tambm protocolos de autenticao. No Captulo 5 faz-se a apresentao de um estudo de caso de uma aplicao comercial desenvolvida com ferramentas e linguagem para plataforma MS-Windows. Neste Captulo so apresentadas tambm as tecnologias e solues disponveis de segurana para a arquitetura Cliente/Servidor, destacando-se as tcnicas para criao de VPN1s, Relacionamento de Confiana entre hosts ou domnios em redes com tecnologia MS-Windows e Certificao Digital, visando a soluo do problema citado em nosso estudo de caso. No Captulo 6 apresentada a anlise da implementao de cada tecnologia, utilizando os conceitos vistos nos Captulos 3, 4 e 5. O objetivo deste Captulo apresentar alternativas para solucionar os problemas relativos a segurana da informao, vulnerabilidade nos participantes da comunicao e autenticidade na aplicao Cliente/Servidor mostrada no estudo de caso, uma vez que a aplicao em estudo nativamente no possui mecanismos para prover segurana para execuo em um cenrio complexo, inclusive para a verso para a WEB desta mesma aplicao. Por fim, no Captulo 7 so apresentadas algumas consideraes e concluses gerais obtidas ao longo de todas as etapas abordadas em cada Captulo e tambm abre-se um novo cenrio para pesquisa utilizando a tecnologia de VPN para soluo do estudo de caso.
Captulo 2
O Modelo Cliente/Servidor
Neste captulo sero expostos os conceitos e elementos de um modelo Cliente/Servidor, suas principais caractersticas e as arquiteturas de interao entre os participantes da comunicao. A escolha do modelo e o modo como so realizados os processamentos, influenciam diretamente no desempenho das aplicaes. Atualmente existe uma grande flexibilidade e diversidade destes modelos e muitos so utilizados nas aplicaes que executamos diariamente. A exposio destes modelos e arquiteturas nos faz compreender melhor o papel desempenhado em cada uma das extremidades da comunicao entre computadores.
Primeiro, a realocao de aplicaes em Mainframe para as chamadas plataformas abertas rodando Sistema Operacional UNIX. Posteriormente, com relao a abordagem dos dados, saindo de Sistemas de Arquivos ou Banco de Dados Hierrquicos locados em Mainframes para Sistemas de Banco de Dados Relacional e posteriormente, a importncia da capacidade grfica dos pacotes de front-end existentes, facilitando a interao com o usurio [20]. Atravs dos estudos realizados do modelo Cliente/Servidor, pode-se destacar como mais comuns as seguintes definies: O termo Cliente/Servidor refere-se ao mtodo de distribuio de aplicaes computacionais atravs de muitas plataformas., tipicamente essas aplicaes esto divididas entre um provedor de acesso, uma central de dados e numerosos clientes contendo uma interface grfica para usurios para acessar e manipular dados. Cliente/Servidor geralmente refere-se a um modelo onde dois ou mais computadores interagem de modo que um oferece servios aos outros. Este modelo permite aos usurios acessarem informaes e servios de qualquer lugar. Cliente/Servidor uma arquitetura computacional que envolve requisies de servios de clientes para servidores. Uma rede Cliente/Servidor uma extenso lgica da programao modular. Uma definio para a arquitetura Cliente/Servidor seria a existncia de uma plataforma base para que as aplicaes, onde um ou mais Clientes e um ou mais Servidores, juntamente com o Sistema Operacional e o Sistema Operacional de Rede, executem um processamento distribudo. Em suma, um sistema Cliente/Servidor poderia ser, ento, entendido como a interao entre Software e Hardware em diferentes nveis, implicando na composio de diferentes computadores e aplicaes de forma distribuda. Para melhor se entender o paradigma Cliente/Servidor necessrio observar que o conceito chave est na ligao lgica e no fsica. O Cliente e o Servidor podem coexistir ou no na mesma mquina [28]. Um ponto importante para uma real abordagem Cliente/Servidor a necessidade de que a arquitetura definida represente uma computao distribuda [20]. Algumas das caractersticas do Cliente e do Servidor so descritas a seguir baseados em [31] e [12].
2.1.1 Cliente
Cliente, tambm denominado de front-end e Workstation, um processo que interage com o usurio atravs de uma interface grfica ou no, permitindo consultas ou comandos para recuperao de
10
dados e anlise e representando o meio pela qual os resultados so apresentados. Alm disso, apresenta algumas caractersticas distintas: o processo ativo na relao Cliente/Servidor. Inicia e termina as conversaes com os Servidores, solicitando servios distribudos. No se comunica com outros Clientes. Torna a rede transparente ao usurio.
2.1.2 Servidor
Servidor, tambm denominado back-end, fornece um determinado servio que fica disponvel para todo Cliente que o necessita. A natureza e escopo do servio so definidos pelo objetivo da aplicao Cliente/Servidor. Alm disso, ele apresenta ainda algumas propriedades distintas: o processo reativo na relao Cliente/Servidor. Possui execuo contnua. Recebe e responde s solicitaes dos Clientes. No se comunica com outros Servidores enquanto estiver fazendo o papel de Servidor. Presta servios distribudos. Atende a diversos Clientes simultaneamente. Alguns tipos de servios que um Servidor pode proporcionar so: Servidor de Arquivos Servidor de Impresso Servidor de Banco de Dados Servidor de Redes Servidor de Fax Servidor X-Windows Servidor de Processamento e Imagens Servidor de Comunicao e outros. O estilo de interao entre o usurio e o Cliente no precisa, necessariamente, ser feita por poderosas interfaces grficas. Porm, j que o poder de processamento local do Cliente est disponvel,
11
pode-se retirar todo seu proveito, atravs de interfaces grficas GUI (Graphical User Interface), para melhor rendimento do usurio no seu trabalho.
Servidor
Resposta
Cliente
12
Servidor
Cliente 1
Cliente 2
Cliente N
Cliente
13
Cliente 1
Cliente 2
Cliente N
14
Estado Cliente
Estado Servidor
Cliente 1
Cliente 2
Cliente N
15
Servidor 1
Cliente 1
Servidor 2
Cliente 2
Servidor N
Cliente N
16
representao, tambm fornecida em trs camadas, mostra como tratada a diviso da funcionalidade de uma aplicao, segundo as configuraes do Gartner Group1, como pode ser visto na Figura 2.8.
Cliente
17
Modelo
Parte Lgica
Apresentao
Apresentao
Apresentao
Apresentao
Apresentao
Lgica de Negcio
Lgica de Negcio
Lgica de Negcio
Gerncia de Dados
Rede de Comunicao
Parte de Gesto
Apresentao
Lgica de Negcio
Lgica de Negcio
Lgica de Negcio
Gerncia de Dados
Gerncia de Dados
Gerncia de Dados
Gerncia de Dados
Gerncia de Dados
Processamento
Processamento Centralizado
Processamento Distribudo
Filtro
Par-a-Par
Cliente/Servidor
18
Caractersticas do Processo de Filtro: Determina uma converso na mensagem de comunicao entre o usurio e o host. Exemplo: Ligao de um desktop com um mainframe atravs de um emulador de terminal.
Processo Filtro
Filtro
Caractersticas do Processo Peer-to-Peer (no hierrquico): So processos clones rodando em todas as mquinas e prestando servios uns para os outros. No existem processos servidores, estabelecendo um Servidor Dedicado. Cada processo pode ser Cliente e Servidor para outros processos.
Processo Peer-to-Peer
Processo A
Processo A
Durante a execuo das consultas, os processos Cliente e Servidor so confundidos com os processos Peer-to-Peer, porque este processo foi desenvolvido com base na LU6.2 (Logical Unit verso 6.2) do SNA (Systems Network Architecture) da IBM [28]. Caractersticas do Processo Cliente / Servidor: Existem processos distintos: o processo cliente diferente do processo servidor. Os processos servidores tornam a estao Servidora dedicada ao seu trabalho.
19
Processos clientes so sempre clientes. Processos servidores podem se tornar processos clientes de outros Servidores.
Processo Cliente/Servidor
Processo A
Processo B
O modelo que utiliza processos Cliente/Servidor depende do cliente para inicializar a comunicao. Caso o Servidor comece a comunicao, o processo instalado fica sendo o Peer-to-Peer. A caracterstica bsica da arquitetura Cliente/Servidor a que processos Clientes enviam pedidos a um processo Servidor, que retorna o resultado para o Cliente. O processo Cliente fica ento liberado da ao do processamento da transao podendo realizar outros trabalhos.
20
A arquitetura Cliente/Servidor pode existir tanto no nvel da camada de Aplicao, quanto no da camada de Servios do Sistema. A coexistncia do paradigma nestas camadas surge em funo da hierarquia das atuaes no sistema. Caso o usurio seja externo ao sistema, ento os processos Cliente e Servidor compem a camada da Aplicao, enquanto que, se o usurio for um programa de aplicao, o Cliente um processo redirecionador e o Servidor ser um processo respondedor da camada de Servios do Sistema. A utilizao de sistemas Cliente/Servidor pela camada de aplicao utiliza Servios do Sistema no Cliente/Servidor (Figura 2.13), entretanto, sistemas no Cliente/Servidor, ao nvel da aplicao utilizam Servios do Sistema Cliente/Servidor [28]. Para sistemas Cliente/Servidor na camada de aplicao, a camada Servios do Sistema oferece somente um mecanismo de IPC1 para troca de mensagens. Por outro lado, a camada Servios do Sistema configurada como Cliente/Servidor, responsvel por gerenciar o redirecionamento das solicitaes de gravao/leitura, por exemplo. importante notar que a diferena entre os sistemas Cliente/Servidor nas camadas de Aplicao e Servios do Sistema, o equilbrio entre a quantidade de processamento tanto no lado do Cliente quanto no lado Servidor. Existem vrios sistemas que podem ser baseados na estrutura Cliente/Servidor. O uso mais freqente so as aplicaes de Banco de Dados usando processos SQL (Structured Query Language) de front-end, para acessar remotamente, as bases de dados. A Figura 2.14 mostra uma estrutura baseada num Servidor de Arquivos. Esta estrutura ocasiona um maior fluxo de informaes na rede, uma vez que todo o arquivo ser transferido para o Cliente para ento ser trabalhado.
21
Servidor de Arquivos
Camada Aplicao Servios do Sistema Servio Gerenciador de Banco de Dados Redirecionador do Sistema de Arquivos Aplicao Servios do Sistema Hardware
Cliente
Hardware
Servidor
Neste tipo de estrutura, a camada de Aplicao passa a ser o Cliente do Sistema. Com isto, a camada de Servio do Sistema utilizada simplesmente como um redirecionador para acesso a base de dados [28]. Pode-se chamar este Sistema como falso Sistema Cliente/Servidor, por no haver um equilbrio de processamento entre os dois lados Cliente e Servidor. O lado Servidor somente ter o trabalho de executar as rotinas comuns de I/O1, no caracterizando assim, como um processamento intrnseco aplicao. A Figura 2.15 demonstra outra possibilidade de se estruturar um Sistema baseado na arquitetura Cliente/Servidor, que consiste na utilizao de um Servidor de Banco de Dados dedicado, podendo coexistir normalmente com o Servidor de arquivos. Neste momento, com um Servidor de Banco de Dados exclusivo, o fluxo de informaes trafegadas na rede diminui, j que, somente a resposta da consulta retornada ao Cliente, ao invs de transferir todo o arquivo como era feito anteriormente. O Cliente, neste tipo de estrutura o usurio, passando a ter uma viso da aplicao como se as partes, Cliente e Servidor, fossem algo nico. A Figura 2.16 exemplifica esta viso.
I/O: Input/Output
22
Cliente
Hardware
Servidor
BD
Aplicao
Cliente
Hardware
Servidor
Este tipo de estrutura favorece o aumento da performance da rede de comunicao, possibilitando assim, um maior nmero de ligaes simultneas de diversos Clientes com diversos Servidores [28]. Embora a arquitetura Cliente/Servidor possa parecer, a princpio, uma nova verso do modelo de arquivos compartilhados atravs da Rede Local baseada em microcomputadores, suas vantagens so inmeras. Fundamentalmente, ambos os modelos provem capacidade de processamento distribudo e permitem o compartilhamento de informao, entretanto, no Modelo de Arquivos compartilhados
23
baseado em Servidor de Arquivos, o Cliente alm de executar a aplicao, executa tambm o motor da Base de Dados, que por sua vez acessa essas Bases de Dados remotamente como se fossem locais. O Servidor de Arquivos envia arquivos inteiros atravs da rede para o Cliente processar localmente, ocasionando congestionamento na rede, enquanto que, no modelo Cliente/Servidor, o Cliente executa parte da aplicao, sendo deixado para o Servidor a tarefa da administrao da Base de Dados, comumente exercida por algum SGBD1, o Servidor envia para o Cliente, atravs da rede, apenas o bloco de dados apropriado, como resultado da consulta efetuada pela aplicao. Desta forma, na arquitetura Cliente/Servidor, cada Servidor pode suportar um nmero maior de usurios, uma vez que o Cliente que gerencia a aplicao e a interface com o usurio, alm do mais, com a crescente conectividade entre mquinas e sistemas operacionais, pode-se escolher para Cliente o ambiente de software e hardware que melhor se adeque as necessidades de cada aplicao do usurio, sem ter que se preocupar com o Servidor. A melhor diviso de tarefas entre o Cliente e o Servidor depende de cada aplicao em si. Se o Servidor for apenas um SGBD, deixando para o Cliente o resto do processamento ou, se algumas tarefas como controle de acesso, anlise dos dados e validao dos comandos executada pelo Servidor. Esta uma deciso do construtor do Sistema em funo das caractersticas do negcio do usurio. As diferenas sero mostradas no tpico a seguir.
24
reservas. Deste modo as transaes ocorrem nos Clientes e so formatadas e enviadas ao Servidor para armazenamento. Seria razovel imaginar que as primeiras aplicaes a serem desenvolvidas em Sistemas Cliente/Servidor seriam relativamente simples, garantidas e no crticas, porm, as empresas que se decidiram pelo modelo Cliente/Servidor testaram-no com aplicaes de processamento de transaes e na maioria dos casos ficaram satisfeitas com os resultados. Como pde ser visto pela Figura 2.8, o Gartner Group apresenta cinco maneiras de se implementar a arquitetura Cliente/Servidor. Cada camada dividida entre a parte lgica e a parte de gesto. A primeira representao refere-se a distribuio da camada de Apresentao.
Parte Lgica
Apresentao
Rede de Comunicao
Parte de Gesto
Apresentao
Lgica do Negcio
Gerncia de Dados
25
2.5.1.1
Revamping Simples
Consiste em habilitar as telas de modo grfico das aplicaes centralizadas com dilogos em modo grfico. Cada mapa de tela, gerado corresponde a uma janela de interface grfica.
2.5.1.2
Revamping Evoludo
Este tipo no emite simplesmente uma rplica grfica da janela a ser criada de uma aplicao no grfica. Constri uma aplicao inteiramente nova, inteiramente diferente da aplicao original. Assim, um dilogo na nova aplicao pode representar um empilhamento de vrias janelas da aplicao centralizada.
2.5.1.3
Revamping Modificado
Este terceiro tipo se deriva do segundo, porm com o fato interessante de se poder manipular a aplicao centralizada instalando sistemas grficos, visando retirar o melhor de sua performance.
26
Modelo
Parte Lgica
Apresentao
Rede de Comunicao
Parte de Gesto
Lgica de Negcio
Gerncia de Dados
27
Modelo
Parte Lgica
Apresentao
Lgica de Negcio
Rede de Comunicao
Parte de Gesto
Lgica de Negcio
Gerncia de Dados
28
Modelo
Parte Lgica
Apresentao
Lgica de Negcio
Rede de Comunicao
Parte de Gesto
Gerncia de Dados
29
Modelo
Parte Lgica
Apresentao
Lgica de Negcio
Gerncia de Dados
Rede de Comunicao
Parte de Gesto
Gerncia de Dados
Outro ponto muito importante a ser verificado o gerenciamento da concorrncia entre processos, quase sempre a cargo dos Sistemas Operacionais das plataformas, tais como o Windows NT e o UNIX [09] [26] [35]. O trabalho de gerenciamento para o compartilhamento dos dados se deve exclusivamente aos SGBDs. Os tipos de arquiteturas apresentadas no so mutuamente exclusivas, mas sim complementares. possvel fazer vrios tipos de associaes entre Servidores e Clientes, dentro de uma rede de computadores. A Tabela 2.1 mostra um resumo das caractersticas de sistemas Cliente/Servidor. Atributo Modo Execuo Finalidade Principal Cliente Ativo Incio e final fixos 1. Manipulao de tela / janela 2. Interpretao de menu / comando 3. Entrada de mouse / teclado 4. Entrada de dados e validao 5. Processamento de ajuda 6. Recuperao de erro Servidor Reativo Roda o tempo todo 1. Oferecer servios funcionais 2. Compartilhamento de dados na aplicao 3. Compartilhamento de dispositivos
30
Cliente Oculta rede e servidores Comunicao com diferentes servidores Comunicao Cliente Cliente
Servidor Oculta detalhes de implementao dos servios Comunicao com diferentes clientes Comunicao Servidor Servidor
Concluso
Os modelos da arquitetura cliente/servidor propem maneiras de organizar as partes integrantes na comunicao entre computadores, definindo as atribuies em cada elemento participante e o fluxo da informao da origem ao seu destino. O conhecimento dos processos e das camadas da arquitetura em cada um destes elementos fornecem informaes fundamentais para a elaborao de aplicaes mais robustas e eficientes.
Captulo 3
O cenrio atual de execuo das aplicaes
O objetivo neste captulo bem amplo e tcnico, porm essencial. As aplicaes tm sido desenvolvidas para suprir principalmente o mercado comercial, automatizando e informatizando processos de trabalho. Devido a grande diversidade de reas de aplicao, passou-se a utilizar uma srie de nomenclaturas e ttulos para diferenciar os aplicativos, incluindo novas siglas que merecem aqui serem estudadas, porm no poderamos esquecer o cenrio atual utilizado por estes aplicativos. A arquitetura cliente/servidor e o protocolo TCP/IP fornecem uma srie de mecanismos que podem comprometer a segurana e o sigilo da informao, entretanto existe uma srie de outros protocolos que podem ser utilizados nas redes locais em conjunto com o TCP/IP. Com ferramentas automatizadas e disponveis atravs da Internet, atacantes aproveitando-se das falhas existentes no cenrio da comunicao entre as partes cliente/servidor de uma aplicao, podem ter acesso as informaes trocadas atravs da rede ou mesmo ter acesso aos computadores e servidores envolvidos na comunicao. A exposio destes protocolos e os mecanismos utilizados para comunicao so essenciais para compreendermos quais os pontos vulnerveis que so utilizados para a realizao de ataques.
31
32
33
outro lado, como os pacotes so padronizados, podem no atender completamente s suas necessidades e talvez o usurio no ache um produto que funcione exatamente como deseja. Aplicativos feitos sob encomenda so usados, geralmente, por grandes organizaes, que podem manter equipes internas de programadores para resolver suas necessidades especficas. Organizaes que precisam de aplicativos especiais, mas no podem ou no desejam manter equipes internas de programadores, costumam recorrer a software-houses, empresas que desenvolvem aplicativos sob encomenda, deste modo aplicativos feitos sob encomenda podem ser ajustados exatamente as necessidades de uma organizao, porm tem como desvantagem manter o investimento e os altos custos de desenvolvimento, como a manuteno da equipe de programadores e a elaborao da documentao. Existem outras formas de distribuio de aplicativos: Shareware Um programador ou uma pequena empresa de programao cria um aplicativo e o disponibiliza gratuitamente, no todo ou em parte, via Internet ou na forma de disquetes. O usurio pode experimentar o programa e s ter de pagar se decidir adot-lo para seu uso regular. Geralmente o preo baixo, pois no inclui gastos com embalagem, distribuio e publicidade. Venda ou aluguel de mdulos Os usurios podem utilizar mdulos disponibilizados via Internet, pagando pelo tempo de uso. O custo bem baixo, j que a distribuio via Internet elimina muitos gastos. Os programas so divididos em componentes especficos para cada tarefa a ser realizada e o usurio sempre tem acesso a verso mais atualizada de cada programa, esse esquema ainda experimental, mas sua importncia tende a aumentar com o desenvolvimento de novas tecnologias.
34
35
para operar e gerenciar toda a organizao, em geral, so projetados para necessidades bem especficas e contam com poderosos bancos para o armazenamento e a manipulao dos dados. A implementao costuma ser muito cara e, para que tudo d certo, importante que os usurios sejam envolvidos no projeto. Alm disso, eles devem receber treinamento para usar bem o sistema [17].
36
tarefa de extrao, transformao e carga dos dados fica por conta dos tcnicos do Data Warehouse, o executivo deve ocupar-se, apenas, da anlise dos dados. As principais caractersticas que os EIS devem apresentar so: Ter como propsito atender s necessidades de informaes dos executivos de alto nvel: acompanhamento e controle de informaes a nvel estratgico da organizao; Poder ser customizados de acordo com o estilo de cada executivo; Dispor de recursos grficos de alta qualidade para que as informaes possam ser apresentadas graficamente de vrias formas; Ser fceis de usar, para que o executivo possa oper-los com muito pouco treinamento; Proporcionar acesso rpido e fcil a informaes detalhadas; ou seja, as informaes so visualizadas em nveis que podem ser expandidos. O EIS alm de facilitar o trabalho num ambiente fcil e simples, tambm deve permitir que o usurio altere o nvel de detalhamento das informaes trabalhadas, permite que o usurio faa anlises de tendncias e comparaes entre diversas informaes de forma prtica e rpida, sem necessitar de um apoio da rea de informtica para conseguir atingir o seu objetivo [17]. Isso torna os executivos mais competitivos, organizados e independentes, que tudo o que eles querem.
37
A maior flexibilidade na modificao dos fluxos de processos organizacionais, dentro da gama de solues oferecida pelo fornecedor do pacote; A viso sistmica dos eventos e objetos organizacionais. Os principais fabricantes de software integrado de gesto no mercado so, dentre outros, SAP, Oracle, PeopleSoft e BAAN. A opo por um pacote padro, composto por softwares integrados, que substitua os sistemas corporativos tradicionais, tem se tornando cada vez mais atrativa, principalmente em razo do custo elevado de desenvolvimento e manuteno de softwares produzidos internamente ou sob encomenda. Muitas organizaes implementaram ERP, pois desejavam substituir sistemas que estavam ficando obsoletos. J em outras organizaes, a integrao de sistemas era o ponto crtico fuses e aquisies deixaram-nas com uma coleo de sistemas ineficientes, no confiveis e incompatveis. A maioria das organizaes tem a expectativa de que a adoo de um ERP reduza os seus custos de operao. Elas tambm esperam que o sistema produza melhorias em processos especficos, tais como os de logstica, planejamento da produo e atendimento ao cliente, entretanto muitas organizaes esto descobrindo do modo mais difcil que a integrao macia de aplicaes algo mais complexo do que esperavam. O caminho da implantao passa por cinco estgios: projeto, implementao, estabilizao, melhoria contnua e transformao.
38
Nesta seo ser dada uma viso geral sobre os conceitos bsicos de protocolos, passagem de mensagem, os aspectos de conexo e sincronismo de processo. H duas dcadas, diversos esforos vm sendo traados para se estabelecer um padro nico para redes de computadores. No entanto, foram definidos no apenas um, mas vrios modelos de referncia. Aqui sero expostos dois principais, o modelo de referncia OSI/ISO e o TCP/IP.
Camadas
A Figura 3.2 mostra que quando a mensagem passa da camada n+1 para a camada n so acrescidos outros dados relevantes a camada n. Estes dados so retirados quando a mensagem chega na camada de mesmo nvel na estao destino. Estes acrscimos podem ser informaes tais como: tipo da mensagem, endereos, tamanho da mensagem, cdigo de deteco de erro entre outros.
1 2
39
Mensagem
Mensagem
Protocolo da Camada
Mensagem Mensagem
Retirada de Dados
Camada n
Camada n-1
O modelo OSI/ISO especifica todas as primitivas de comunicao para que haja troca de mensagens entre as camadas [01] [06] [11] [28][36]. Cada camada adiciona um cabealho para que haja uma identificao na mquina destino. A Figura 3.3 baseada em [44] [45], mostra os principais protocolos usados nas comunicaes Cliente / Servidor baseados na Microsoft, Internet e IBM.
O Modelo OSI/ISO e outros protocolos
Microsoft Aplicao Apresentao Sesso Transporte Rede Enlace Fsica Canais Nomeados (Named Pipes) e RPC NetBIOS e WinSock Drivers NetBEUI TCP / UDP IP e outros protocolos de roteamento IEEE LLC Token Ring Par-tranado Ethernet Coaxial PU 2.1 Internet HTTP, S/MINE, FTP, DNS, TFTP, DHCP, BOOTP, SMTP e outros IBM APPC LU 6.2
SDLC
40
Tendo em vista os objetivos do trabalho pretendido pela presente tese, somente o protocolo de comunicao TCP/IP e alguns outros que forem essenciais para o desenvolvimento deste trabalho sero descritos.
Classes A B C D E
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
0 1 0
1 1 0 1 1 1 0 1 1 1 1 0
O nmero de redes e hosts que podem ser endereados pelas Classes A, B, C, D e E, bem como o escopo de seus endereos IP so definidos na Tabela 3.1. Por exemplo, possvel enderear at 65.136 hosts para cada rede da classe B. Portanto, 65.136 x 16.382 = 1.067.057.952. Isto quer dizer que mais de 1 milho de hosts podem ser endereveis pela classe B, j que certos endereos IP no podem ser utilizados por serem destinados a trabalhos especficos, como o endereamento de Gateways e de Broadcasting.
41
Classes A B C D E
Endereos de Rede 0.0.0.0 127.255.255.255 128.0.0.0 191.255.255.255 192.0.0.0 223.255.255.255 224.0.0.0 239.255.255.255 240.0.0.0 247.255.255.255
Tabela 3.1 Classes e endereamento em redes TCP/IP
Com isto, quando se tem um endereo de rede na classe B e deseja-se aumentar o nmero de redes possveis, em detrimento da capacidade de mquinas que podem ser instaladas, ou vice-versa, utiliza-se a tcnica da mscara de rede (NetMask). Esta tcnica permite a criao de sub-redes atravs da modificao local da linha divisria que separa os bits de identificao das redes e dos hosts. Cada sub-rede tambm representada pela notao de ponto decimal. Os bits da NetMask definidos como um identificam a poro da rede, enquanto os definidos por zero, representam os hosts. Por exemplo, caso uma empresa possua o endereo IP 166.78.4.139 da classe B, isto indica que o computador reside na rede 166.78 e que tem uma identificao de host 4.139. Porm, caso os administradores da rede decidam utilizar a NetMask 255.255.255.0 para aumentar o nmero de redes internas a empresa, necessrio que se faa uma combinao AND, do endereo IP original com a NetMask, alterando a identificao de rede para 166.78.4 e a identificao de host para 139. Pode-se dizer com isso, que o computador o host 139 na sub-rede 166.78.4.0 (endereo de gateway).
42
O protocolo SMB funciona baseado em uma arquitetura cliente/servidor, onde os clientes enviam requisies para a utilizao dos recursos disponveis nos servidores e estes por sua vez respondem ou, permitindo o acesso aos recursos ou impedindo este acesso, dependendo do nvel de segurana atribudo aos recursos requisitados. A segurana no protocolo SMB provido em dois nveis [13]: Nvel de compartilhamento Neste nvel uma senha atribuda a cada recurso a ser compartilhado e o cliente s pode acessar este recurso se tiver posse desta senha, entretanto uma vez que o cliente ganha acesso ao recurso ele pode acessar todos os arquivos presentes neste recurso compartilhado. Nvel de usurio No nvel de usurio possvel atribuir senhas para arquivos individuais e cada usurio poder ter um privilgio diferente de acesso ao arquivo. Aqui o usurio deve primeiro se autenticar no servidor e ser autenticado por este servidor, ao fazer isto para este usurio, associado um Identificador nico (UID), utilizado para o gerenciamento de acesso aos recursos compartilhados. Para efetuar a conexo com os servidores, o SMB necessita de protocolos de transporte e mais comumente utiliza uma das seguintes combinaes: TCP/IP mais especificamente NetBIOS sobre TCP/IP como especificado nos RFCs 1001 e 1002 -, NetBEUI ou IPX. Depois que a conexo foi estabelecida entre os clientes e servidores, os clientes esto aptos a enviarem comandos SMB para os servidores e podem ganhar acesso ao sistema de arquivos de outras mquinas, podendo abrir, ler escrever e fazer qualquer outra operao sobre o sistema de arquivos remotamente atravs de comandos SMB [13]. Para anunciar a sua presena na rede os servidores enviam mensagens de broadcast de tempos em tempos. Os clientes escutam por estas mensagens e constroem uma lista de servidores disponveis. Quando o SMB est utilizando o NetBEUI como camada de transporte, este mecanismo funciona satisfatoriamente bem, uma vez que as mensagens ficam confinadas em um mesmo segmento de rede, entretanto quando a camada de transporte o TCP/IP, problemas podem surgir, uma vez que os roteadores no costumam propagar mensagens de broadcast para fora da sub-rede, embora isto possa ser configurado, este tipo de artifcio no combina muito bem com a arquitetura e o modelo oferecido pelo TCP/IP [13].
3.2.1.4
NetBIOS (Network Basic Input / Output System) foi desenvolvido pela Sytec Inc. (hoje Hughes LAN Systems) para a IBM em 1983. geralmente descrito como um protocolo de nvel de sesso,
43
entretanto o NetBIOS no um protocolo e sim uma interface que foi projetada para ser uma extenso da BIOS para oferecer servios de rede, tais como traduo de nomes de hosts para endereos e transferncia de dados. Resumidamente uma maneira que as aplicaes tm de se comunicar com a rede [13]. Foi implementado como uma API1, embora com o passar do tempo passou a ser chamado de protocolo NetBIOS. Geralmente, o termo protocolo NetBIOS utilizado para referenciar o conjunto de protocolos que utilizam a API NetBIOS e o nome oficial utilizado pela IBM NetBIOS Frame Protocol (NBF) [13]. O NetBIOS criou uma interface entre os programas de aplicao e os protocolos de rede, assim aplicaes podem ser escritas para acessar apenas a camada mais alta do modelo OSI, permitindo que sejam transportadas por vrias tecnologias diferentes. Neste modelo qualquer aplicao pode usar a rede fazendo chamadas usuais ao Sistema Operacional e o NetBIOS habilita que o usurio acesse aplicaes em outras mquinas atravs da rede. Este protocolo foi desenvolvido para a utilizao em redes pequenas que compartilham o mesmo meio fsico e oferece dois tipos de servio: orientado conexo e no orientado conexo, de forma broadcast e multicast. Quando utilizado em redes maiores com diversos segmentos ele implementado utilizando outros protocolos que possuam capacidade de roteamento para prover o transporte, entre eles o TCP/IP. As RFCs relevantes, que descrevem como o NetBIOS encapsulado e carregado em TCP e UDP so os seguintes [13]: RFC 1001 RFC 1002 - PROTOCOL STANDARD FOR A NetBIOS SERVICE ON A TCP/UDP - PROTOCOL STANDARD FOR A NetBIOS SERVICE ON A TCP/UDP TRANSPORT: CONCEPTS AND METHODS TRANSPORT: DETAILED SPECIFICATIONS Quando utilizam o transporte baseado em TCP/UDP existem trs tipos de servios que podem ser implementados com este protocolo: O NetBIOS Name Server (NBNS) e o NetBIOS Datagram Distribution Server (NBDD) e um servio de sesso. O NBNS pode ser configurado para trabalhar de vrias maneiras. As duas mais comuns so como um quadro de avisos, onde os sistemas podem registrar os seus nomes e a segunda maneira onde ele pode gerenciar completamente nomes e endereos. O NBDD serve para prover funcionalidade de broadcast e multicast em Intranets. Desta forma datagramas podem ser enviados para ns individuais ou para todos (difuso).
44
Neste servio as mensagens possuem comprimento de 512 bytes e a entrega no garantida, isto , o servio no seguro, mas permite a comunicao com vrias mquinas ao mesmo tempo. O servio de Sesso oferece uma maneira orientada conexo para a comunicao entre duas estaes. Nesta modalidade de servio deve existir obrigatoriamente um cliente e um servidor, as mensagens so de 64 Kbytes e o servio seguro, manipulando deteco e correo de erros, mas s permitem conexes unicast entre duas mquinas. O NetBIOS tambm pode ser carregado pelo conjunto IPX/SPX da Novell e por frames PPP (Point-to-Point). NetBEUI (NetBios Extented User Interface) O NetBEUI uma verso melhorada do NetBIOS. Ele formaliza o frame de transporte que no foi padronizado no NetBIOS. O NetBEUI implementa o OSI LLC2 1[13]. Este protocolo foi o protocolo de redes original do PC2, utilizado pela IBM em seu servidor LanManager. Depois foi adotado pela Microsoft para os produtos de rede da empresa. Ele define a maneira como as aplicaes enviam e recebem mensagens sobre o NetBIOS Frame Protocol. Sua especificao est em um documento da IBM chamado de IBM Local Area Network Technical Reference Manual que executa sobre a camada de enlace padro 802.2. Ele tambm um protocolo no rotevel, que se tornou a maior limitao deste protocolo assim como para o NetBIOS, que deve rodar sobre um protocolo de rede e transporte para poder ser utilizado em um ambiente WAN [13].
45
Destino
A mensagem, que dividida em vrios pacotes, pode seguir caminhos distintos, tanto do host 1 (origem) para o host 2 (destino), quanto no sentido inverso, podendo, inclusive, chegar ao seu destino em tempos diferentes, havendo assim, a necessidade de reordenao da mensagem na parte responsvel da comunicao pela aplicao do host de destino. O outro tipo de comunicao o baseado em conexo, onde um circuito prvio estabelecido antes que a troca de dados se efetue. Quando um circuito estiver conectado, cada mensagem segue uma seqncia e sempre direcionada ao longo do mesmo circuito [06] [11] [27]. Logo, cada mensagem s precisa de um identificador de circuito para ser direcionada para o seu destino. O recebimento de cada mensagem normalmente confirmado e, se for o preciso, o controle de fluxo usado para regular a velocidade com que as mensagens so enviadas. A comunicao baseada em conexo, conforme apresentado na Figura 3.6, garante a transmisso das mensagens, estas so tambm divididas em pacotes, sem perda para o seqenciamento dos pacotes nos hosts destinos, diminuindo assim o trabalho de implementao na parte de comunicao do aplicativo.
46
Destino
Quando a comunicao finalizada, torna-se necessrio desfazer a conexo para poder liberar os recursos de rede utilizados. Deve-se notar que as mensagens sempre chegam ordenadas neste tipo de conexo. Um exemplo de comunicao baseado em conexo o sistema telefnico, na Tabela 3.2 compara os dois tipos de comunicao. Caracterstica Tipo de mensagem Rota Endereamento Mensagem Com Conexo Fluxo de Dados Esttica estabelecer do circuito Confiabilidade Seqenciado, controle de erro e fluxo, Sem garantias, as mensagens entrega garantida Opes Podem ser negociadas durante podem se perder ou chegar ao destino fora de ordem a No disponveis circuito, Sem Conexo Datagrama Dinmica aps todas as mensagens
da Endereo de destino completo para Endereo destino completo em estabelecimento necessita apenas do ID
47
48
Fluxo da mensagem
Processo Solicitante Processo Destino
Send(Mensag1, Destino)
Receive(Mensag1, Solicitante)
Send(Resp1, Solicitante)
Receive(Resp1, Destino)
Figura 3.7 Troca de mensagens entre processos origem e destino sem bloqueio
49
Por se tratar de um protocolo mais complexo necessita de mais recursos para implementao deste tipo de conexo, deste modo so consumidos mais recursos para garantir o funcionamento de todas as etapas, entretanto com o avano na tecnologia, que proporcionou o aumento na velocidade de processamento, este overhead diminuiu significativamente. Outro detalhe importante que devido a estas caractersticas e ao aumento do nmero de pacotes transmitidos, existe a necessidade de um controle do fluxo e tambm o controle de conexo. Na Figura 3.8 conforme [40], apresentado um esquema atravs da linha do tempo para estabelecimento de uma conexo TCP.
A
CLOSED SYN_SENT SYN SYN_RCVD
N) CK(SY SYN, A
B
LISTEN TEMPO
ESTAB
FIN_WAIT_1
ESTAB
+FIN) ACK(rq
CLOSE_WAIT
FIN_WAIT_2
st Respo FIN a
TIME_WAIT
ACK(F IN)
LAST_ACK
CLOSED CLOSED
Figura 3.8 Estabelecimento e encerramento de uma conexo TCP atravs da linha do tempo
Em conjunto com o protocolo IP, TCP/IP transformou-se no protocolo padro utilizado pela Internet, que possibilita a interligao de diversas plataformas. Atualmente existem vrios servios que utilizam o protocolo TCP/IP, entre eles pode-se destacar alguns bem conhecidos como o FTP, Telnet, E-mail, Ping, Finger entre outros ilustrados atravs da Figura 3.9, que tambm apresenta a respectiva referncia na camada do modelo OSI/ISO.
50
Na camada de Transporte pode-se notar a existncia de dois padres, o TCP, que a comunicao com conexo e o UDP, que a comunicao sem conexo. O padro TCP permite a abertura de uma conexo virtual entre a mquina fonte e a destino em todas as camadas do modelo OSI/ISO.
Protocolo TCP/IP
Aplicao FTP, SMTP, DNS Telnet
A Internet utiliza o padro UDP, uma vez que as comunicaes baseadas no protocolo TCP/IP se utilizam de portas de comunicao que, associadas aos sockets, permitem a troca de mensagens. O protocolo TCP/IP disponibiliza 999999 portas (comprovao emprica), sendo que as portas de nmero 0 at a porta de nmero 1023 so reservadas para servios pr-determinados, como por exemplo a porta 23, para o servio Telnet, a porta 21 para o FTP e assim por diante. Devido a este limite, caso a Internet utilizasse o padro TCP, as mquinas que respondessem a um nmero muito grande de acessos, acabariam limitando a sua utilizao. No padro UDP, por sua vez, quando existe uma solicitao de comunicao, o endereo IP do remetente da mensagem segue junto com a mensagem para o destinatrio, de forma que o disponibilizador do servio possa posteriormente enviar a resposta do servio solicitado. importante salientar que, para que as comunicaes transcorram normalmente, as APIs no necessariamente precisam ser as mesmas, muito embora os protocolos devam ser os mesmos, como pode ser visto na Figura 3.10.
51
No Funciona
Servidor Cliente Aplicao da Rede Winsock API
TCP / IP
Os demais protocolos suportados pelo Windows NT permitem a conexo com outros tipos de plataformas, como pode ser visto na Tabela 3.3. Protocolo NetBEUI SPX/IPX Apple Talk Plataforma Microsoft Novell Macintosh
52
Por sua vez, o protocolo Apple Talk permite a conexo com mquinas da plataforma Macintosh e um protocolo totalmente particular. Os principais protocolos usados por mquinas Macintosh so os DDP - Datagram Delivery Protocol, ATP AppleTalk Transaction Protocol e ADSP - AppleTalk Data Stream Protocol [28].
3.2.3.3 Sockets
O Socket teve origem na Universidade de Berkeley, como sendo a API de desenvolvimento do protocolo TCP/IP para o ambiente UNIX [06]. Ele um dos mecanismos que o IPC possui para a troca de mensagens entre processos. Um Socket similar a um descritor de arquivo. Ele identifica o ponto final (endpoint) para a comunicao e implementado como um inteiro positivo [30]. Existe uma diferena sutil, porm importante, entre descritores de arquivos e socket. Um descritor de arquivo ligado a um arquivo ou dispositivo especfico quando criado pelo comando open. Um descritor de socket no ligado a local algum quando criado pelo comando socket. Uma aplicao pode decidir ligar-se a um endereo explicitamente usando um comando bind ou pode fornecer endereos dinamicamente quando envia datagramas usando o comando send. Portanto, sockets podem ser usados como uma interface para transportes de rede baseados em conexo e sem conexo [06] [11]. O socket, que um manipulador (handle), est associado a um largo conjunto de dados armazenados na implementao do protocolo de rede. O termo socket usado no UNIX para fornecer uma interface tipo arquivo s redes. Quando uma operao para criar um socket chamada, o sistema retorna um manipulador, como descritor de socket. Esse descritor usado em todos os outros comandos relacionados ao socket e intercambivel com o descritor de arquivo usado em funes read e write. Os dados associados ao socket incluem vrias informaes, como o endereo IP das mquinas que esto se conectando, as portas dos dois lados da conexo TCP e o estado da conexo corrente. A camada de sockets dentro do contexto da comunicao corresponde a camada de Sesso do Modelo OSI/ISO, que tem como funo o gerenciamento das sesses de comunicao processo a processo entre os hosts. Ela tambm responsvel por estabelecer e encerrar as conexes entre os aplicativos cooperantes [11].
53
Dentro do protocolo TCP/IP, a camada TCP abrange a camada de Sesso e Transporte do Modelo OSI/ISO, favorecendo diretamente a programao dos sockets sobre o protocolo TCP/IP. Para o ambiente Windows foi desenvolvido o Windows Sockets - Winsock, visando facilitar a interconexo entre as estaes Windows, atravs do protocolo TCP/IP, que base para o acesso a Internet. Windows Sockets uma interface aberta para programao em rede sob o Microsoft Windows [27]. A especificao da interface do Windows sockets define claramente a diviso entre a aplicao de rede e o protocolo da rede, sua verso mais recente o winsock32 5.0 (reviso 2.6) para Windows 2000/XP e para winsock a verso 3.10. A partir verso 2.0 da especificao do Windows sockets se associa a arquitetura que o Windows NT utiliza para suportar mltiplos protocolos de fornecedores variados [27]. O Winsock API aumenta a funcionalidade dos sockets de Berkeley, ao acrescentar extenses especficas do Windows para suportar a natureza orientada a mensagens do S.O. baseado no Windows. Todas as aplicaes que hoje em dia acessam a Internet diretamente da residncia do usurio, usando FTP, E-mail, Finger, Telnet, SMTP, entre outros, utilizam os sockets como base de comunicao, atravs do protocolo TCP/IP [30]. Os Sistemas Operacionais Windows NT/2000 e Windows 95 em diante j possuem dentro de suas bibliotecas, as rotinas para suportar a programao para o protocolo TCP/IP via sockets [10]. Para o ambiente Windows, o relacionamento entre as aplicaes e o ambiente de rede, pode ser demonstrado na Figura 3.11.
54
Transporte
Internet
IP
Interface de Rede
Fsica
Na API do sockets possvel determinar se a comunicao que se vai estabelecer com conexo - STREAM, ou sem conexo - DATAGRAM. Para se trabalhar numa comunicao baseada em conexo, na camada de transporte do TCP/IP, o protocolo utilizado o TCP, determinando que somente aps o estabelecimento de uma comunicao possvel efetuar troca de mensagens. Para a abertura de uma conexo com sockets, necessrio que vrias funes da biblioteca Winsock sejam chamadas. A Figura 3.12 demonstra a seqncia de operaes tanto no lado Servidor quanto no lado Cliente. No caso de se estabelecer uma conexo Stream, o Servidor primeiramente inicializado. A funo Socket() define o descritor no qual a aplicao se associar quando desejar transmitir uma mensagem. Posteriormente a funo Bind() interliga o descritor ao endereo IP da mquina servidora e a porta TCP/IP na qual as transmisses iro ocorrer. A funo Listen() permite ao Servidor ficar escutando qualquer solicitao de conexo.
55
Conexo Stream
Servidor
Socket( )
Cliente
Socket( )
Bind( )
Listen( )
Accepct( )
Connect( )
Send( ) / Receive( )
Send( ) / Receive( )
CloseSocket( )
CloseSocket( )
Quando uma solicitao chega de um Cliente aps ativar a funo Connect(), o Servidor cria um processo filho mediante a funo Accept(), numa nova porta TCP/IP. O pedido do Cliente associado a esta porta, permitindo assim a transferncia de dados pelas funes Send()/Recv(), deixando, desta forma, a porta original de conexo do Servidor livre para efetuar novas conexes. Ao trmino da comunicao, o Cliente utiliza a funo CloseSocket() para fechar a conexo, liberando a porta do processo filho do Servidor para ser ligada a outro processo de comunicao. O Servidor s ir utilizar esta funo quando for desligado.
56
Servidor
Socket( )
Cliente
Socket( )
Bind( )
Send( ) / Receive( )
Send( ) / Receive( )
CloseSocket( )
CloseSocket( )
Por sua vez, para uma comunicao sem conexo, conforme a Figura 3.13, a utilizao das funes de sockets tornam-se mais fceis de se implementar, porm, necessrio lembrar que a utilizao de comunicao baseada em Datagramas determina que as rotinas de recuperao das seqncias dos pacotes entregues a rede devem ser programadas, aumentando assim a possibilidade de falhas na implantao do sistema. A seqncia e as funes definidas para uma conexo Datagrama so as mesmas da conexo Stream, excluindo apenas as funes Listen(), Accept() e Connect(). Isto ocorre pelo fato do protocolo baseado em Datagrama no utilizar uma conexo real entre as mquinas origem e destino, implementando, automaticamente dentro das funes de troca de mensagens, Send()/Recv(), um cabealho com o endereo IP da mquina no qual ser feita a comunicao. Um ponto a ser observado, que, para a transmisso, tanto na funo Send() ou Recv(), os sockets somente operam com dados do tipo Char. Para a transmisso de dados puramente do tipo caracter, o sistema desenvolvido baseado em sockets no impe nenhuma restrio, entretanto, para sistemas
57
desenvolvidos sob o paradigma da Orientao a Objeto, que manipula tanto objetos simples, como complexos ou longos, necessrio que, ao se transmitir, se faa uma converso da classe do objeto para o tipo Char. No momento em que a informao chega ao seu destino, necessrio que o receptor faa a reconverso, isto , do tipo Char para o tipo original do objeto. Esta peculiaridade para a transmisso de dados de tipos diferentes de Char, faz com que o destinatrio da mensagem possua o conhecimento prvio de todos os tipos possveis de objetos que podem ser transmitidos.
58
servio. Sob outro foco, este servio trata tanto da modificao da mensagem como da negao de servios. possvel fazer uma distino entre o servio com e sem recuperao. Pois o servio de integridade trata de ataques ativos, a ateno se concentra na deteco ao invs da preveno [18] [39]. Caso uma violao de integridade seja detectada, ento o servio pode simplesmente informar esta violao, de forma que uma outra parte do software ou algum tipo de interveno humana seja necessrio para a recuperao de tal violao. De forma alternativa, existem mecanismos disponveis para a recuperao de perda de integridade de dados. Esta ltima alternativa a mais atraente.
59
3.2.4.5 No Repdio
Este servio previne tanto o emissor contra o receptor, quanto previne contra a negao de uma mensagem transmitida [18] [39]. Desta forma, quando uma mensagem enviada, o receptor pode provar que de fato a mensagem foi enviada pelo emissor em questo. De forma similar, quando uma mensagem recebida, o emissor pode provar que a mensagem foi realmente recebida pelo receptor em questo.
Concluso
As aplicaes esto evoluindo e criando novas tendncias para atender a demanda de mercado, porm o conhecimento do ambiente de comunicao e suas particularidades so fatores fundamentais para o sucesso e sobrevivncia destas aplicaes. Com o crescimento da Internet interligando computadores atravs da rede e o estabelecimento do protocolo TCP/IP como padro de facto, h uma tendncia para que os protocolos proprietrios caiam em desuso.Algumas empresas resolveram este problema utilizando seus protocolos proprietrios encapsulados dentro de pacotes TCP/IP, garantindo assim que aplicaes pudessem ser migradas para esta nova realidade.
Captulo 4
Provendo segurana nos protocolos de comunicao
O propsito deste Captulo mostrar que apesar das fraquezas existentes nos protocolos de comunicao utilizados nas aplicaes cliente/servidor, existem mecanismos que aliados a outras tcnicas, como por exemplo, a distribuio fsica da rede (estaes, servidores locais, servidores pblicos) e firewalls possibilitam agregar segurana ao meio. Protocolos para estabelecimento de canais seguros e mtodos para garantir a autenticao vinda de uma rede externa ou pblica, podem prover a soluo para o problema da segurana das informaes e dos usurios que acessam os dados. No decorrer deste Captulo haver uma breve exposio dos principais protocolos seguros e tambm dos mtodos de autenticao. No aprofundaremos no funcionamento detalhado destes para que no desviemos do foco principal deste trabalho e incorrermos no erro de estender o documento apresentando uma srie de caractersticas que esto mais ligadas a aspectos criptogrficos, apenas este tpico pode gerar uma nova dissertao.
60
61
62
Cliente
Cabealho do Protocolo
Uma observao importante a fazer sobre este protocolo o fato de em muitas situaes, clientes remotos possuem um acesso direto a uma rede TCP/IP, no necessariamente o acesso provm de uma rede discada.
63
PPTP o protocolo de rede que encapsula pacotes PPP dentro de datagramas IP para transmisso sobre a Internet ou outras redes pblicas baseadas em TCP/IP. Pode apenas ser utilizado para interligao em redes privadas locais, ou seja LAN-to-LAN. Foi desenvolvido para prover um mtodo seguro para interligar redes privadas sobre a Internet e, examinando sua construo, observa-se que a comunicao segura se faz atravs de trs processos, cada qual necessita da execuo com sucesso do anterior. So eles: PPP Comunicao e Conexo. Um cliente PPTP utiliza o protocolo PPP para se conectar a um ISP , geralmente atravs de uma linha telefnica ou ISDN2. Esta conexo utiliza o protocolo PPP para estabelecer a conexo e criptografar os dados no pacote. PPP Controle de Conexo. Usando uma conexo Internet estabelecida pelo protocolo PPP, o protocolo PPTP gera um controle de conexo do cliente PPTP para um servidor PPTP na Internet. Esta conexo utiliza o transporte TCP para estabelecer a conexo que denominada de tnel PPTP. PPTP Tunelamento de dados. Na ltima etapa o protocolo PPTP gera datagramas contendo pacotes criptografados PPP que so ento enviados atravs do tnel PPTP ao servidor PPTP. Ao receber os datagramas, estes so desmontados e decriptografados novamente tornando-se pacotes PPP que finalmente so encaminhados para a rede local.
1
1 2
64
Mensagens de controle so transmitidas em pacotes de controle em um datagrama TCP. Uma conexo TCP criada entre o cliente PPTP e o servidor PPTP. Esta conexo utilizada para troca de mensagens de controle. Um datagrama contm um cabealho PPP, um cabealho TCP, um controle de mensagens PPTP e os traillers apropriados, como pode ser visto na Figura 4.2 [21]. Cabealho de entrega PPP Cabealho IP Controle de Mensagens PPTP Traillers
Figura 4.2 PPTP Datagrama TCP com mensagens de controle
A troca de mensagens entre o cliente PPTP e o servidor sobre conexes TCP so utilizadas para criar e manter um tnel PPTP. Este processo ilustrado na Figura 4.3.
PPTP - Troca de mensagens entre Cliente e Servidor
Servidor de Acesso a Rede
Cliente
Servidor PPTP
Internet
65
gerado utilizando-se uma verso modificada do protocolo Generic Routing Encapsulation (GRE), definido na RFC 1701 e 1702. O datagrama IP criado pelo protocolo PPTP simular ao apresentado na Figura 4.4. Cabealho de entrega PPP Cabealho IP Cabealho GRE Cabealho PPP Cabealho IP Cabealho TCP Dados
Figura 4.4 Datagrama IP contendo pacote PPP gerado pelo protocolo PPTP
O cabealho de entrega PPP prov a informao necessria para que o datagrama seja trafegado pela Internet, o cabealho GRE utilizado para encapsular o pacote PPP com o datagrama IP. O pacote PPP foi gerado pelo Servidor de Acesso a Rede (ISP). Nos servidores Microsoft como Windows NT/2000/2003 Server este servio denominado de RAS . importante salientar que o pacote PPP um bloco ilegvel devido a criptografia aplicada, caso a conexo seja capturada os dados esto seguros.
1
4.1.3 SSL
O Secure Socket Layer (SSL, atualmente na verso 3) um protocolo de comunicao que implementa um duto seguro para comunicao de aplicaes na Internet, de forma transparente e independente da plataforma. Foi desenvolvido pela Netscape Communications em sua verso inicial em julho de 1994. Em abril de 1995 foi lanada a referncia para implementao da verso 2 (sendo distribudo junto os Browsers Netscape e Internet Explorer e os servidores web mais comuns - Apache, NCSA httpd, IIS2, Netscape Server dentre outros), apoiado pela Verisign e Sun, transformando-se em um padro em e-commerce, tendo a sua especificao submetida ao grupo de trabalho W3C3 (especificao disponvel em um draft do IETF com o nome de TLS - Transaction Layer Security) [14].
1 2
RAS: Remote Access Service IIS: Internet Information Service 3 W3C: World Wide Web Consortium
66
Em novembro de 1995 foi lanada a verso 3 do SSL, tendo como melhorias a diminuio no nmero de rodadas de negociao, a escolha das cifras e compresso por parte do servidor, um suporte mais completo para a troca de chaves de algoritmos de cifragem, a possibilidade de renegociao das cifras em uso e a separao das chaves de autenticao e criptografia. Embora as diferenas entre o TLSv1 e o SSLv3 no sejam grandes, so suficientes para que eles no possam interoperar diretamente. Caso seja necessrio, o TLSv1 pode emular o SSLv3 [14]. A proposta do SSL permitir a autenticao de servidores, criptografia de dados, integridade de mensagens e, como opo, a autenticao do cliente, operando nas comunicaes entre aplicativos de forma interopervel. Visa garantir os seguintes objetivos: Segurana criptogrfica para o estabelecimento de uma ligao segura entre duas mquinas/aplicativos, assegurando a privacidade na conexo, com a utilizao de algoritmos simtricos (como o DES ou RC4) que negociam uma chave secreta na primeira fase do handshaking (usando chaves pblicas assimtricas); Autenticao do Servidor (opcionalmente tambm do Cliente) por meio de algoritmos assimtricos como o RSA ou o DSS1; Confiabilidade na conexo, conseguida com o uso de Cdigos de Autenticao de Mensagens (MAC). O SSL tambm permite a montagem de um framework onde outras chaves pblicas e mtodos de criptografia podem ser utilizados, evitando a necessidade de implementao de toda uma pilha de protocolos (com os riscos da introduo de fraquezas). Como uma vantagem adicional, a questo do desempenho foi levada em considerao no projeto para reduzir o nmero de conexes e minimizar o trfego na rede, opcionalmente pode ser usado um esquema de cache em memria durante o estabelecimento da sesso, com a finalidade de reduzir o nmero de conexes e reduzir a atividade no acesso a rede. O SSL atua entre as camadas transporte (TCP) e aplicao, sendo independente do protocolo de alto nvel podendo ser executado sob HTTP, Telnet, FTP, SMTP e outros, de forma transparente [14]. Ele implementa duas novas camadas, sobre o TCP/IP, conforme apresentado na Figura 4.5.
67
Aplicao
HTTP
FTP
Telnet
Outro
Handshake
Alert
Record
Transporte
TCP/IP
SSL Handshake Protocol: Faz a autenticao entre cliente e servidor, cuidando da inicializao da comunicao, permitindo a negociao do algoritmo de criptografia e as chaves criptogrficas iniciais. Utiliza as chaves assimtricas para fazer a negociao inicial, abrindo um canal seguro para o envio da chave simtrica de sesso, criada de forma aleatria. Opera sobre o Record Layer. Todas as mensagens da negociao utilizam o MAC e funes de hash (como SHA, MD5 e outras) para aumentar a segurana do processo inicial. A ordem das mensagens absoluta e seus contedos so manuseados pela Record Layer. Ao estabelecer a conexo, o Handshake Protocol estabeleceu o identificador de sesso, o conjunto criptogrfico (cypher suite) a ser adotado e o mtodo de compresso a ser utilizado. O conjunto criptogrfico negociado define trs algoritmos: Um algoritmo para troca de chaves; Um algoritmo para cifragem de dados, e Um algoritmo para insero de redundncia nas mensagens.
68
SSL Change Cipher SPEC Protocol: Sinaliza as transies nas estratgias de cifragem. Constitui-se de uma nica mensagem que pode ser transmitida tanto pelo cliente como pelo servidor para notificar que os prximos blocos utilizaro chaves criptogrficas recm negociadas. SSL Alert Protocol: Acompanham os erros na Record Layer, fazendo troca de mensagens para sinalizar problemas com a seqncia de mensagens, erros de certificao ou criptografia. SSL Record Layer Protocol: Encapsula as camadas de nvel mais alto (quando conjugado com o HTTP, implementa o HTTPS), provendo os seguintes servios: Fragmentao (transforma blocos de dados em registros SSLPlaintext de, pelo menos, 224 bytes) Compresso, (transforma os registros SSLPlaintext em registros SSLCompressed, utilizando os algoritmos negociados no handshake). Autenticao de mensagem, acrscimo do MAC e nmero seqencial (antes da criptografia). Criptografia (as funes definidas no handshake so definidas na mensagem SSLCipherSpec e so utilizadas para transformar o SSLCompressed em SSLCiphertext). A comunicao iniciada pelo estabelecimento de uma sesso, caracterizada pelo Estado da Sesso e o Estado da Conexo. O Estado de Sesso constitudo pelos seguintes elementos: Session Identifier: Uma seqncia arbitrria de bytes escolhida pelo servidor para identificar a sesso. Peer certificate: Certificado do peer (opcionalmente pode ser nulo). Compressiom Metod: Algoritmo utilizado na compresso. Cipher Spec: Especifica o algoritmo usado na criptografia (null, DES entre outros) e um algoritmo MAC (MD5 ou SHA). Master Secret: Uma chave secreta de 48 bytes trocada entre cliente e servidor. Is Resumable: Flag que indica se a sesso pode ser utilizada em outras conexes. O Estado de Conexo constitudo pelos seguintes elementos: Server and Client Random: Seqncia de bytes aleatrios escolhidos pelo servidor e cliente a cada conexo. MAC Secret: Segredo usado nas operaes MAC na escrita de dados. Write Key: Chave de criptografia usada pelo cliente e servidor para criptografar e descriptografar.
69
Inicialization Vetors: Utilizados no algoritmo de criptografia. Sequence Numbers: Utilizados no algoritmo de criptografia. Na Tabela 4.2 temos um resumo dos algoritmos disponveis utilizados no SSL verso 3. Algoritmos DSS, DHE_DSS, DHE_RSA, DH_anonymous, Fortezza/DMS NULL, RC2, RC4, IDEA, DES, 3DES, Fortezza NULL , SHA , MD5 X.509 v1, X.509 v2, X.509 v3 Definio de chave de criptografia Implementao da funo de Hash para definio do MAC Certificados Utilizao
NULL, RSA, Diffie-Hellman RSA, Diffie-Hellman Troca de chaves de sesso, durante o handshake
O sucesso do SSL se deve ao fato de ser um dos protocolos mais convenientes e utilizados para implementao de transaes seguras. Sua implementao relativamente simples, colocando-se o SSL no topo da pilha TCP/IP e substituindo as chamadas TCP pelas chamadas SSL [14]. Trabalha independente das aplicaes utilizadas e, aps o handshake inicial, comporta-se como um canal seguro que permite que se execute todas as funes que normalmente esto disponveis no TCP/IP. Outro fator importante a disponibilidade de primitivas necessrias para conexes seguras, a saber: autenticao, troca de chaves de sesso com o uso de criptografia assimtrica prvia, criptografia com mtodos simtricos, MAC e certificao. O IETF1 est trabalhando na sua padronizao formal, denominada TLS, que ser apresentada na seo 4.1.4.
4.1.4 TLS
O protocolo TLS (Transport Layer Security), descrito na RFC 2246, tem por objetivo prover privacidade e integridade de dados entre duas aplicaes que utilizam redes pblicas/abertas como meio para comunicao. o padro do IETF e o sucessor do Netscape SSL, sua construo foi baseada no SSL v3, no fundo o TLS no difere muito do SSL v3, eles no so compatveis, mas em termos de
1
70
segurana, no h nenhuma diferena. O TLS nada mais do que uma padronizao do SSL v3. Hoje o TLS suportado pela maioria dos navegadores, por exemplo, o Internet Explorer 5.0 [25]. um protocolo independente da aplicao, ou seja, outros nveis de protocolo podem estar acima do TLS de forma transparente. As decises sobre como iniciar o TLS e como interpretar os certificados de autenticao trocados entre as partes da comunicao, ficam a cargo da aplicao que executa acima do TLS. Permite que aplicaes cliente-servidor comuniquem-se prevenindo: escuta de conversas privadas, modificao das mensagens sem permisso e cpia ilegal de mensagens [08]. O protocolo est composto por duas camadas: a camada de gravao (TLS Record Protocol) e a camada de Handshake (TLS Handshake Protocol) que podem ser vistas na Figura 4.5. Existem poucas diferenas entre os protocolos SSL v3 e TLS v1. A principal delas que o TLS utiliza o algoritmo Keyed-Hashing for Message Authentication Code (HMAC), enquanto que o SSL v3 utiliza o algoritmo Message Authentication Code (MAC). O HMAC gera um valor para a verificao da integridade assim como o MAC gera, mas com a construo utilizando a funo de hash torna-se muito mais difcil de ser quebrada e violada.
4.1.5 L2TP
Projetado pela Cisco Systems e, posteriormente, homologado pelo IETF como protocolo padro, o L2TP baseia-se no Layer Two Forwarding (L2F) para solucionar os problemas do PPTP, sendo considerado o seu herdeiro [33]. Algumas caractersticas, como a utilizao do PPP para fornecer o acesso remoto e a operao em ambientes como o NetBEUI e o IPX, so mantidas do PPTP. Da mesma forma que o PPTP, o L2TP um protocolo baseado no PPP. Uma das diferenas entre o L2TP e o PPTP est no protocolo utilizado na camada inferior. Enquanto o PPTP deve ser sempre utilizado acima do IP, o L2TP pode utilizar um conjunto de outros protocolos inferiores, como o PPP, o IP e o Frame Relay. Sob o ponto de vista da segurana da comunicao, o L2TP, diferentemente do PPTP, no possui servios de cifragem e integridade de dados, porm as informaes iniciais, relativas ao processo de autenticao dos dois extremos do tnel so protegidas, enquanto que no PPTP os parmetros podem ser livremente obtidos.
71
Outra diferena visvel em relao a seu predecessor quanto a forma de autenticao, pois ela feita em dois nveis, no primeiro, o usurio autenticado pelo provedor de acesso antes do tnel ser instalado e, no segundo, quando a conexo estabelecida entre os roteadores [23]. Sendo um protocolo padro, qualquer fabricante pode criar produtos que utilizem o L2TP, de forma que provedores de acesso e consumidores em geral no dependam de produtos fornecidos por uma nica empresa. Apesar de ser atual, o L2TP apresenta como desvantagem no possuir um mecanismo eficiente de encapsulamento, ou seja, para executar esta tarefa, ele necessita do protocolo IPSec, que ser explicado posteriormente, para que juntos possam garantir a segurana da VPN [23] [34].
Encapsulamento de pacote IP feito pelo L2TP agregando segurana
Cabealho IP
Cabealho ESP
Cabealho IP
Cabealho UDP
Cabealho L2TP
Cabealho IP
Cabealho TCP
Dados
Cifragem ESP
Figura 4.6 Encapsulamento de um pacote IP feito pelo L2TP sob a proteo do cabealho ESP do IPSec.
Dado que o L2TP no foi projetado para a configurao de ambientes seguros, seu uso em cenrios onde existe uma rede no confivel, como a Internet, entre os extremos de um tnel, deve sempre ser combinado com outros protocolos capazes de suprir a sua ausncia de servios de segurana. Um conjunto de propostas tem sido desenvolvido para conciliar o uso do L2TP com o IPSec. Quando executado sobre o IP, o L2TP transportado atravs do UDP, desta forma, a aplicao da proteo do IPSec sobre o L2TP pode basear-se simplesmente no uso de seletores que filtram o trfego L2TP. importante notar que a combinao do tunelamento do IPSec com o L2TP resulta na criao de dois tneis, um para cada protocolo. A Figura 4.6 baseada em [23] exibe o encapsulamento de um pacote TCP feito pelo L2TP sendo utilizado sobre o IP protegido pelo ESP1. Um problema na integrao do L2TP com o IPSec a impossibilidade do segundo levar em considerao os valores dos campos de pacotes IP encapsulados pelo primeiro [33]. Outros
1
72
procedimentos de interao entre os dois protocolos tm sido sugeridos no intuito de prover o desenvolvimento de solues para aspectos ainda no padronizados do IPSec. Uma das propostas sugere, por exemplo, o L2TP como protocolo para a troca de informaes relativas s polticas de segurana entre um host e um roteador IPSec. Apesar destas solues serem prticas e de baixo custo, pelo fato do protocolo L2TP j ser um padro definido, existem crticas severas quanto ao uso de um protocolo que no foi projetado para ambientes seguros na execuo de procedimentos vitais para um protocolo de segurana como o IPSec.
73
Algoritmo e modo de autenticao que aplicado ao cabealho de autenticao; Chaves usadas no algoritmo de autenticao; Algoritmo, modo e criptografia utilizados no cabealho de encapsulamento de dados de segurana, ESP; Chaves usadas no algoritmo de criptografia do cabealho de encapsulamento de dados; Chaves de autenticao usadas com o algoritmo que faz parte da transformada ESP; Tempo de vida da chave; Tempo de vida da associao de segurana; Endereo(s) fonte da associao de segurana; Nvel de sensibilidade dos dados protegidos. Na prtica, uma associao de segurana representada por um ndice de parmetros de segurana - Security Parameter Index (SPI) - com um endereo IP destino. O SPI um campo que surge nos cabealhos de segurana IPv6 (AH e ESP), que no criptografado na transmisso, j que a sua informao essencial para decifrar a informao transmitida. Quando uma entidade quiser estabelecer uma associao de segurana, utiliza um SPI e um endereo destino (pertencente a entidade com que deseja estabelecer comunicao segura) e envia essa informao entidade com que quer estabelecer o canal seguro, assim, para cada sesso de comunicao autenticada entre dois ns, so necessrios dois SPI - um para cada sentido, dado que cada associao de segurana unidirecional. O IPSec apresenta uma estrutura bastante flexvel, que no obriga a utilizao de algoritmos de autenticao ou criptografia especficos, deste modo o IPSec pode interagir com as normas mais recentes. No entanto, dada a necessidade de segurana, o IETF definiu alguns algoritmos para serem utilizados: HMAC-MD5 e HMAC-SHA-1 para autenticao (quer no cabealho AH, quer no ESP); DES-CBC1, para a criptografia usada no cabealho ESP. O IPSec integra gesto manual de chaves. A gesto da responsabilidade de protocolos criados para este fim, tais como o SKIP, da Sun Microsystems, ou o Photuris, (acrnimo em latim para o desenvolvido por Phil Karn, ou ainda o protocolo Internet Key Exchange, IKE) [07]. Na medida em que estes cabealhos so cabealhos de extenso que iro ser adicionados a um cabealho IP, os encaminhadores podem interpret-los como fazendo parte integrante dos dados, o que
1
74
permite a compatibilidade destes mecanismos com equipamento que compreende o protocolo IP mas no o IPSec. Os componentes da IPSec so: Cabealho de Autenticao (AH) Cabealho de Encapsulamento de Dados de Segurana (ESP) Mecanismos de Gesto de Chaves
Tamanho do Mdulo
Reservado
75
Um contador no ESP informa quantas vezes o mesmo SPI foi utilizado para o mesmo endereo IP de destino. Esse mecanismo previne um tipo de ataque no qual os pacotes so copiados e enviados fora de ordem, confundindo assim os ns de comunicao. Todo o restante do pacote, com exceo a parte de autenticao, criptografado antes de ser transmitido. Os algoritmos de criptografia mais utilizados so o DES (Data Encryption Standard) e o 3DES (Triple Data Encryption Standard) e protocolos proprietrios de fabricantes. O ESP tambm pode ser utilizado para autenticao, com o campo opcional destinado para esse fim. O somatrio de verificao (checksum) computado sobre todo o ESP, com exceo do campo de autenticao e o seu comprimento varia de acordo com o algoritmo utilizado. A autenticao do ESP diferente da fornecida pelo AH, porque no protege o cabealho IP que precede o ESP, embora proteja um cabealho IP encapsulado no modo Tnel. O AH, por sua vez, protege este cabealho externo, juntamente com todo o contedo do pacote ESP. As duas autenticaes no so utilizadas simultaneamente por questo de economia de processamento. A utilizao do ESP pode ser efetuada de dois modos: Modo de Transporte (transport-mode). Prov proteo principalmente no que tange aos protocolos da camada superior. utilizado na maioria dos casos em comunicaes ponto-a-ponto entre dois ns, por exemplo, um cliente e um servidor. Este modo criptografa a informao do protocolo da camada de transporte, adicionando-lhe em seguida um novo cabealho IP no-criptografado, deste modo torna-se vantajoso em redes relativamente pequenas, nas quais o(s) servidor(es) e n implementam o IPSec ; Modo de Tnel (tunnel-mode). Prov proteo ao pacote IP. Para tal, aps a adio dos campos ESP ao pacote IP, todo o pacote tratado como o mdulo de dados de um novo pacote IP. Assim, pode ser usado para enviar dados criptografados atravs de um tnel, o que permite enviar dados independentemente da infra-estrutura utilizada. Um exemplo o envio de pacotes IP atravs de canais virtuais criados numa rede IP pblica, como a Internet. Atravs deste modo, pode ser fornecida segurana a um grupo de ns que no implementem o IPSec. ndice do parmetro de segurana (SPI) Vetor de inicializao Dados de payload padding Medida do pad Payload type
Figura 4.8 Formato do cabealho de encapsulamento de dados de segurana (ESP)
76
IPv4
Cabealho IP Original
Dados
IPv4
Cabealho IP Original
Cabealho ESP
TCP
Dados
Trailler
ESP
ESP Auth
( b ) Modo de transporte autenticado criptografado Novo IPv4 Cabealho IP Cabealho ESP Cabealho IP Original TCP Dados ( c ) Modo tnel
Trailler
ESP
ESP Auth
Figura 4.9 Componentes dos pacotes em modo IP original, transporte e tnel em ESP
77
Resoluo ISAKMP/Oakley - define o perfil do protocolo hbrido ISAKMP/Oakley, escolhido como norma de gesto de chaves criptogrficas pela Internet Engineering Task Force; IKE - Internet Key Exchange. O IKE utiliza a porta 500 UDP para interagir com os demais mecanismos de segurana IPSec atravs de associaes de segurana para diversos protocolos e associaes de segurana. Desta forma permite uma utilizao transparente para associar diferentes mecanismos de segurana sem envolver as entidades participantes na comunicao. O IKE agrupa funcionalidades dos protocolos ISAKMP (mensagens) e Oakley (modos). Quando uma entidade pretende estabelecer comunicao segura, passa pelas fases IKE que so: Fase 1: esta fase ocorre num meio inseguro. Tem o objetivo de estabelecer um canal seguro que ir proteger as trocas da Fase 2. executada uma vez para vrias fases 2; Fase 2: esta fase ocorre no canal seguro criado na fase 1. As suas negociaes tm o objetivo de estabelecer as associaes de segurana que iro proteger a comunicao. Aps estas duas fases, encontra-se estabelecido um canal seguro atravs do qual se pode efetuar comunicao segura. Existem ainda outros protocolos de gesto de chaves com os quais o IPSec pode interagir, por exemplo o SKIP e o Photuris [07].
78
Portmaster: usualmente utilizado para autenticao RADIUS, pode ser um hardware especfico (como Livingston RADIUS Server) ou software atravs de uma mquina rodando UNIX.
79
80
Kerberos
Servio
4 5
Cliente
Figura 4.10 Passos no processo da autenticao do protocolo Kerberos
1 ) Obter um ingresso para um servidor designado. O usurio primeiro pede ao servidor de autenticao KERBEROS um ingresso para o KERBEROS TGS. Este pedido leva a forma de uma mensagem que contm o nome do usurio e o nome do TGS (pode haver vrios); 2 ) O servidor de autenticao verifica o usurio em seu banco de dados e ento gera uma chave de sesso para ser usada entre o usurio e o TGS. KERBEROS codifica esta chave de sesso que usa a chave de segredo do usurio (processo de uma s direo com senha do usurio). Ento cria um TGT1 para o usurio apresentar ao TGS e codifica o TGT usando a chave de segredo do TGS (que s conhecido pelo servidor de autenticao e o servidor TGS). O Servidor de Autenticao envia de volta as mensagens codificadas ao usurio; 3 ) O usurio decifra a primeira mensagem e recupera a chave de sesso. Logo, o usurio cria um autenticador que consiste em seu nome, seu endereo de rede e um selo de tempo, tudo codificado com a chave de sesso gerada pelo servidor de autenticao KERBEROS. O usurio ento envia o pedido ao TGS para fazer ingresso a um servidor designado. Este pedido contm o nome do servidor, o TGT KERBEROS (que foi codificado com o a chave de segredo do TGS) e o autenticador codificado;
81
4 ) O TGS decifra o TGT com sua chave secreta e ento usa a chave de sesso includa no TGT para decifrar o autenticador. Compara a informao do autenticador com a informao do ingresso, o endereo da rede do usurio com o endereo foi enviado no pedido e o tempo estampado com o tempo atual. Se tudo se emparelhar, permite a continuao do pedido. O TGS cria uma chave de sesso nova para o usurio e o servidor final com esta chave em um ingresso vlido para o usurio apresentar ao servidor. Este ingresso tambm contm o nome do usurio, endereo da rede, um selo de tempo e um tempo de vencimento para o ingresso, que foi codificado com a chave de segredo do servidor designado e o seu nome. O TGS tambm codifica a nova chave de sesso designada que vai ser compartilhada entre o usurio e o TGS. Envia ambas as mensagens de volta ao usurio; 5 ) O usurio decifra a mensagem e a chave de sesso para uso com o servidor designado. O usurio est agora pronto para se autenticar com o servidor. Ele cria um autenticador novo codificado com a chave de sesso de usurio e servidor final que o TGS gerou. Para pedir acesso ao servidor final, o usurio envia junto ao ingresso recebido de KERBEROS (que j codificado com a chave de segredo do servidor designado) o autenticador codificado. O autenticador contm o texto plano codificado com a chave de sesso, prova que o remetente sabe a chave. Da mesma maneira importante codificar o tempo, para prevenir que terceiros que tentem registrar o ingresso e o autenticador possam usar as informaes em futuras conexes; 6 ) O servidor designado decifra e confere o ingresso e o autenticador, tambm confere o endereo do usurio e o selo de tempo. Se tudo confirmar, o servidor sabe agora que o usurio que esta reivindicando o acesso realmente ele. A partir deste instante podem usar a chave de criptografia para comunicao segura. (Como s o usurio e o servidor compartilham esta chave, eles podem assumir que uma recente mensagem codificou aquela chave originada com a outra chave anterior); Para aplicaes que requerem autenticao mtua, o servidor envia para o usurio uma mensagem que consiste no selo de tempo mais 1 (t+1), codificada com a chave de sesso. Isto serve como prova ao usurio que o servidor soube da sua chave secreta de fato e pde decifrar o ingresso e o autenticador [32]1.
Nota: O protocolo RADIUS adequado em sistemas de servios remotos discados, enquanto o KERBEROS, pode ser utilizado
atravs de qualquer tipo de conexo. A autenticao um dos pontos forte na segurana de qualquer sistema, pois tem a finalidade de atravessar os mecanismos de segurana para autenticar o usurio, autorizando ou no a sua conexo [32].
82
Concluso
Os protocolos seguros apresentados neste Captulo representam o resultado de um grande esforo realizado pelas diversas instituies de pesquisas, empresas e em muitos casos pessoais, com objetivo de proporcionar a realizao de uma comunicao segura atravs de um canal vulnervel. Neste sentido pode-se afirmar que j existem ferramentas suficientes para ficarmos mais tranqilos quando acessamos a rede local do trabalho utilizando um computador remoto para navegarmos na Internet, utilizar o correio eletrnico ou mesmo aplicaes que acessam a base de dados. A segurana da informao depender de um conjunto de iniciativas que tanto o administrador quanto o cliente dos sistemas tenham condies e possam aplicar e conhecer estes mecanismos.
Captulo 5
Solues de segurana para aplicaes Cliente/Servidor
No captulo anterior vimos que os protocolos se modernizaram para agregar segurana ao meio. Deste modo pde-se criar mecanismos de baixo custo para integrar redes geograficamente distantes, atendendo aos anseios de boa parte das empresas e instituies. Entretanto apenas os protocolos seguros no fornecem todos os subsdios para que as aplicaes do tipo Cliente/Servidor tenham sucesso. necessrio atender tambm as limitaes impostas pelos Sistemas Operacionais, sejam eles livres ou proprietrios, utilizados nas estaes de trabalho ou em servidores da rede. Para exemplificar questes relacionadas a segurana da informao e autenticidade do usurio, ser apresentado neste Captulo um estudo de caso real, utilizando uma aplicao comercial do tipo ERP gerado para administrar informaes relacionadas a rea Administrativa que manipula dados principalmente de Recursos Humanos. Este software foi desenvolvido por uma empresa brasileira com mais de 500 clientes espalhados pelo Pas. O produto est baseado na arquitetura Cliente/Servidor e faz acesso ao banco de dados relacional. Em seguida mostraremos algumas das tcnicas utilizadas para interligar a parte cliente de uma aplicao aos seus respectivos servidores. Finalmente so expostas quais as solues encontradas para que estas aplicaes possam executar suas tarefas, independente da tecnologia de enlace fsico utilizado, tendo garantido os requisitos de compatibilidade entre os Sistemas Operacionais dos envolvidos na comunicao, a segurana da informao e tambm da identidade atravs da autenticao do usurio.
83
84
85
A Tabela 5.1 apresenta as principais caractersticas do produto. Tipo de Arquitetura Cliente/Servidor Linguagem de programao do produto Gerenciadores Suportados Comunicao com Banco de Dados Parametrizao do produto Protocolo de comunicao em Rede Plataforma utilizada para Clientes Plataforma utilizada para Servidores Utiliza-se da BDE1 instalada no cliente Realizada atravs de arquivos armazenados no servidor TCP/IP e NETBEUI (sobre TCP/IP) Windows Windows 2000/2003 Server (arquivos do produto) e/ou UNIX com Apache WebServer para arquivos WEB Observao: Existe tambm a verso WEB para este produto, porm esta no possui todas as funcionalidades da verso C/S e to pouco funciona em qualquer plataforma, mesmo que trabalhe com o protocolo TCP/IP (Internet). Isso se explica pelo fato das pginas conterem cdigos utilizando tecnologia CSS2 e tambm controles ActiveX3.
Tabela 5.1 Descrio do Produto utilizado no estudo de caso
Centrada
no
Cliente
(Figura
2.3)
para
verso
Cliente/Servidor Borland Delphi 5.0 de Banco de Dados Oracle, IBM DB2 ou Informix
Na Figura 5.1 demonstrado o cenrio real mnimo de comunicao da verso Cliente/Servidor do produto.
1 2
BDE: Borland Database Engine CSS: (Cascading Style Sheets), so modelos desenvolvidos para que possibilitam controlar e melhorar a apresentao e o layout de elementos HTML nas pginas WEB 3 ActiveX: So componentes de software definidos para interagir entre com outros componentes com tecnologia Java ou Microsoft Component Object Model (COM) em um ambiente de rede
86
A descrio completa da seqncia de atividades necessrias pela aplicao, apresentadas na Figura 5.1, esto expostas na Tabela 5.2. Etapa Atividade 1 Ao ser iniciado, o mdulo SERVER inicia alguns servios personalizados instalados no Windows 2000/2003 Server, dentre eles esto o servio que verifica a conexo com o Banco de Dados e o gerenciador de conexes dos clientes, que fica aguardando requisies dos clientes do Sistema, pois somente se estes servios estiverem ativos que os clientes conseguiro se comunicar e ter acesso aos arquivos e a base de dados pelo mdulo Cliente 2 Com o mdulo SERVER j iniciado, o Cliente, atravs da verso CLIENT do produto instalado no desktop, envia os dados criptografados para autenticao no sistema (usurio/senha) atravs da rede 3 O mdulo SERVER recebe as informaes e verifica se o usurio/senha esto corretos com os dados armazenados na base de dados, bem como os privilgios que este usurio ter sobre o Produto. Nesta etapa podem ser desabilitadas algumas funcionalidades para restringir o uso 4 O banco de dados Oracle Client instalado no cliente abre uma sesso com o servidor de banco de dados atravs dos parmetros definidos na BDE. Por este canal sero transmitidas todas as informaes que so requisitadas atravs de comandos SQL do Produto ao servidor de banco de dados
87
Etapa Atividade 5 O servidor do banco de dados atende s solicitaes do mdulo Client atravs do canal estabelecido
Tabela 5.2 Descrio das Etapas do Cenrio de interao do produto
Uma observao importante: utilizado como exemplo neste estudo de caso o banco de dados Oracle 9i, lembrando que este pode ser substitudo por qualquer um outro mostrado na Tabela 5.1. A Tabela 5.3 mostra quais as funcionalidades exercidas em cada um dos mdulos do produto. Cliente Servidor
Armazena uma cpia dos arquivos Binrios Armazena os arquivos fundamentais para execuo Executveis dos mdulos e demais associados do Sistema nos Clientes. Estes so divididos em (*.ini, *.hlp etc). Servidor, no momento da primeira execuo eles so novamente copiados para os clientes. Todo o processamento (clculo de folha de pagamento, fechamento de freqncia dos funcionrios, execuo de relatrios e outros) ocorre NO CLIENTE, portanto um produto com arquitetura centrada no cliente (Figura 2.3). As informaes processadas pelo Servidor de Banco de Dados so transferidas diretamente ao Cliente. diretrios com funcionalidades especficas, como Modelos de Relatrios (da Empresa e Quando h atualizaes destes arquivos no por exemplo: Personalizados) Regras para clculos em geral (folha de pagamento, freqncia de funcionrios, entre outros) Modelos de Telas do Sistema (da Empresa ou Personalizados) Arquivos Binrios Executveis do Sistema (*.exe) e demais arquivos associados aos mdulos (*.ini, *.hlp e outros)
O Cliente precisa acessar os arquivos do Produto responsvel por manter os servios de conexo e atravs de uma conexo de rede que possua o abertura e fechamento das sesses com os Clientes protocolo NETBEUI (nativo ou sobre TCP/IP) do Produto. Deve permitir que os clientes tenham acesso a estes arquivos atravs da rede, esta tarefa realizada utilizando-se o protocolo NETBEUI (nativo ou sobre TCP/IP)
Tabela 5.3 Descrio das atribuies do Cliente e do Servidor no produto
88
Por se tratar de um produto voltado para instalao em plataformas Windows 2000/2003 Server, os arquivos do Sistema (parte Servidor) geralmente so instalados no mesmo servidor onde os Servios do Produto esto. Opcionalmente pode-se ter uma configurao onde os usurios acessam os arquivos atravs de um outro Servidor UNIX que possua a funcionalidade de compartilhar arquivos para estaes Windows, neste caso o software de domnio pblico SAMBA1. Na Figura 5.2 demonstrado o cenrio de interao adequado para implantao do produto com integrao entre redes distintas. importante observar que todas as interaes da Figura 5.1, que tambm faz parte da soluo, esto ocultas, mostradas apenas pelas setas verde e vermelha.
Clientes do Produto
Roteador/ Firewall
Roteador/ Firewall
Clientes do Produto
O problema estaria totalmente resolvido se no fosse a questo do trfego de dados pela rede, dependendo da configurao do cenrio (verso do banco de dados e sistema operacional no servidor, por exemplo) pode-se ter srios problemas com os dados, que muitas vezes, estaro passando abertamente pela rede, sem nenhum tipo de criptografia. As solues para este e outros problemas, sero discutidas mais adiante, no Captulo 6, bem como as opes para soluo completa do problema.
SAMBA: Aplicao desenvolvida para possibilitar a utilizao de servidores UNIX o uso de protocolo SMB, como conseqncia a integrao com redes MS-Windows. http://www.samba.org
89
90
disco remoto (como o NFS1 no UNIX) no servidor de arquivos. Isso geralmente implica em uma reestruturao da rede, juntamente com o modo como os usurios so autenticados. Por se tratar de uma aplicao executada apenas em estaes de trabalho MS-Windows. necessrio que estes usurios sejam cadastrados e autenticados por um servidor de domnio Windows NT 4.0 ou SAMBA. Para algumas empresas/instituies que estejam mais adiantadas e com conhecimentos definidos pode-se utilizar tambm a estrutura de Diretrio Ativo presente na verso do Windows 2000/2003 Server. Sem esta estrutura, um atacante pode simplesmente monitorar o canal de comunicao e capturar os pacotes que trafegam na rede com as informaes para autenticao no servidor. Existe para isso uma srie de ferramentas shareware e freeware disponveis na Internet. Estes pacotes, caso no utilizem protocolos seguros, trazem informaes valiosas como nome do usurio, nome do diretrio compartilhado pelo servidor e em alguns casos a senha de acesso com a criptografia padro das redes Microsoft. Um bom atacante possui ferramentas capazes de realizar ataques com a utilizao de dicionrios de senhas ou mesmo de fora bruta, que menos eficiente, pois faz uma anlise combinatria de uma srie de caracteres. No inteno deste documento apresentar como estas ferramentas funcionam, mas em testes realizados, podem afirmar que so muito eficientes, principalmente quando utilizadas em redes mal estruturadas ou compartilhadas. Se em uma destas contas ele conseguir o acesso, o que provvel se no houver uma poltica de senha que garanta parmetros mnimos para tamanho de senha, por exemplo, ele pode ter acessos as informaes da aplicao e ainda tornar-se um administrador do servidor, o que seria um desastre. A soluo para este problema simples, com a utilizao de tcnicas que permitam a integrao dos domnios MS-Windows e o uso de protocolos seguros. Estas tcnicas e as solues viveis sero abordadas no Captulo 6.
91
permitir que as portas utilizadas pelo produto (incluindo NETBEUI e Banco de Dados), estejam liberadas para todos os clientes. Mais uma vez o administrador se depara com problemas de segurana, pois as portas necessrias so conhecidamente fontes para ataques automatizados. Sniffers, como so conhecidos os programas que vasculham e escutam a rede, podem varrer todas as portas de um computador a procura de falhas ou brechas que permitam a instalao e execuo de programas maliciosos. No se pode esquecer que a aplicao utiliza bancos de dados relacionais para efetuar suas transaes, deste modo necessrio tambm configurar estes softwares para trabalharem com algoritmos de autenticao e criptografia, desta forma, independente do protocolo utilizado no meio de transmisso, os dados relativos a base de dados esto protegidos contra acessos indevidos e, informaes utilizadas para conexo e execuo de rotinas no banco de dados trafegam de forma ilegvel. As medidas utilizadas para evitar o trfego em claro so apresentadas no Captulo 6 deste trabalho.
92
Internet
Cliente com Browser (adequado)
A interao entre cliente e servidor do produto ocorre normalmente com o protocolo http, porm devido a algumas caracterstica e tecnologias utilizadas na construo da verso WEB, tanto o cliente quanto o servidor devem satisfazer algumas premissas que so mostradas na Tabela 5.4.
93
Cliente Necessita de browsers que suportam as tecnologias de pginas CCS e controles ActiveX Deve permitir o estabelecimento de conexes FTP de modo ativo para receber os relatrio atravs do browser
Servidor Devem possuir um software para publicao de pgina para Internet, geralmente o IIS da Microsoft ou o Apache (software Livre). Necessita do servio de FTP de modo ativo habilitado, pois esta a maneira como os arquivos de relatrio gerados pelo Produto so transmitidos aos browsers dos Clientes. Armazenam os arquivos do Produto e tambm os temporrios em um diretrio que precisa ser compartilhado para uma rede Windows, pois o programa de atualizao da verso do sistema precisa acessar estes arquivos para substitu-los. Faz o controle da quantidade de instncias ativas de cada mdulo (informado pela empresa e conforme o contrato)
Tabela 5.4 Descrio das atribuies do Cliente e do Servidor no produto para WEB
evidente que o Produto, da maneira como est apresentado para WEB, ter problemas de segurana, mas neste momento o objetivo apenas expor suas caractersticas. A soluo para a verso WEB tambm ser discutida no Captulo 6 deste trabalho.
94
Atualmente existe uma srie de tecnologias que podem ser empregadas para a soluo deste problema, as principais sero expostas a seguir e sua aplicao efetiva na soluo tratada no Captulo 6 desta dissertao.
95
Talvez a melhor forma de descrever uma VPN seja defini-la a partir de sua funo: estabelecer uma rede privada e confivel de dados entre dois ou mais pontos, sobre uma rede pblica no confivel, de baixo custo operacional. A Internet uma rede pblica e considerada insegura, pois todas as informaes esto sujeitas a interceptao. A VPN vem de encontro a essa necessidade de segurana dentro da rede. Ela permite a interligao das redes locais de uma empresa que esto em regies geogrficas diferentes, utiliza a prpria rede pblica para fazer a interligao, mas o canal seguro e ajustvel as necessidades da empresa em questo. Na Figura 5.4 tem-se um exemplo de uma VPN que pode interligar redes que esto fisicamente em cidades distintas.
Internet
Rede Local Firewall/ Concentrador VPN Canal virtual seguro Firewall/ Concentrador VPN Rede Local
96
VPN Segura Com a popularizao da Internet como meio de comunicao de dados, a segurana se tornou uma preocupao muito maior. Por definio, a Internet no tem dono, nem canais ou circuitos que pertenam apenas a um provedor de servios, o que complica a utilizao da VPN confiada. Assim, os fabricantes de equipamentos de telecomunicaes comearam a trabalhar em protocolos que permitissem a encriptao e decriptao dos dados nas pontas, independente de sua transmisso pela Internet. A rede transmitiria o dados como outro qualquer. Esses dados funcionam como um tnel entre as duas pontas: mesmo que um intruso tenha acesso a eles durante a transmisso, no poder l-los e qualquer modificao fraudulenta nos dados ser detectada na recepo. VPN Hbrida Em geral, os mesmos provedores que vendiam servios de VPNs confiadas, vendem tambm acesso Internet. A perda de receita com a migrao dos clientes para VPNs seguras fez com que os provedores passassem a oferecer servios de VPNs seguras sobre a Internet. Nesses casos, a responsabilidade pela segurana dos dados dividida entre o cliente, que deve adotar polticas de segurana (senhas, por exemplo), e o provedor, que deve administrar corretamente seus equipamentos e sistemas de segurana. O cliente confia a segurana de seus dados ao provedor, mas o provedor no tem acesso aos mesmos. As VPNs hbridas recebem esse nome por apresentarem caractersticas tanto de VPNs confiadas quanto de VPNs seguras. Quanto a topologia, as VPNs podem ser LAN-to-LAN, Client-to-LAN ou mistas. LAN-to-LAN VPNs com topologia LAN-to-LAN interligam duas ou mais LANs1 atravs de tneis criados sobre uma rede pblica de dados. So como rotas seguras estabelecidas entre redes locais, e podem ser utilizadas, por exemplo, em substituio a uma WAN2, embora sem as restries geogrficas impostas por esta; as redes locais no precisam estar localizadas na mesma cidade, ou no mesmo pas, para serem interligadas por uma VPN conforme mostrados na Figura 5.4.
1 2
97
Client-to-LAN Nessa topologia, clientes remotos individuais utilizam tneis VPN para se conectarem a rede corporativa. Pode ser usada, por exemplo, por tcnicos, executivos ou vendedores em campo, que precisem de uma conexo com a rede da empresa independentemente de sua localizao. Mistas Nessa topologia, redes locais podem ser interligadas tanto a outras LANs quanto a clientes remotos.
98
Hardware para VPN Outra soluo para VPN a utilizao de hardware especfico, desenhado para fazer tunelamento, criptopgrafia e autenticao dos dados. Esses equipamentos so normalmente inseridos entre os roteadores e os links das WANs e, apesar de a maioria desses produtos ser destinada a VPNs LAN-to-LAN, alguns suportam tambm conexes de clientes. A utilizao de hardware especializado apresenta algumas vantagens sobre as outras solues: em primeiro lugar, elimina-se o ponto nico de falha na rede, caso haja algum problema com o equipamento. Outro ponto o alto desempenho, e a possibilidade de integrao de outros servios ao gateway de segurana, como gerenciamento de banda e priorizao de trfego na VPN. Servidor de polticas de segurana Alm do gateway de segurana, outro componente importante de uma VPN o servidor de polticas de segurana. Esse servidor mantm as listas de controle de acesso e outras informaes relacionadas aos usurios que o gateway de segurana usa para determinar qual trfego autorizado. Autoridades Certificadoras Autoridades certificadoras so necessrias para verificar a autenticidade das chaves compartilhadas entre os sites e podem tambm ser usadas para verificar indivduos, atravs da utilizao de certificados digitais. As instituies/empresas podem utilizar um servidor corporativo de certificados digitais, deste modo ter seu prprio banco de dados de certificados digitais. Se a VPN tambm utilizada como Extranet, pode ser necessria a utilizao de entidades certificadoras externas, para verificar a identidade dos parceiros comerciais que acessam a rede.
99
os servidores com os quais possui relao de confiana, e tambm as recursos disponveis deste(s) servidor(es). A diferena entre o modelo de relacionamento de confiana em servidores Unix e Windows est no fato que no Windows NT Server os relacionamentos de confiana so estabelecidos entre domnios, j no Unix podem ser estabelecidos entre hosts [19]. Cada relacionamento de confiana configurado como uma relao unidirecional, no recproca e no transitiva. Isto significa que o fato de um domnio A estar configurado para confiar em um domnio B no implica que o domnio B ir confiar no domnio A. Tal condio exigiria a configurao de um segundo relacionamento de confiana, no qual fossem invertidos, isto , o domnio B confiasse explicitamente no domnio A. Da mesma forma, o relacionamento de confiana estabelecido entre dois domnios no estendido a outros domnios pelo fato de haverem relacionamentos de confiana adicionais. Assim se o domnio A confia em B e supomos que B confie em um terceiro domnio C, no ser estabelecido com isso que A confia em C. Isso s aconteceria se fosse criado um relacionamento de confiana entre os domnios A e C. Uma vantagem do relacionamento de confiana que podem simplificar o gerenciamento de contas e direitos de acesso em redes complexas, proporcionando uma estrutura mais escalvel e possibilitado o emprego de mtodos de administrao distribuda [19].
100
Domnio B
Domnio Confiante
Domnio Confivel
Host B
Host C
Na Figura 5.5 mostra que possvel interligar domnios utilizando servidores Unix com o SAMBA Server instalado com controladores de domnio Windows NT Server. J para se criar uma relao de confiana entre hosts UNIX necessrio alterar alguns arquivos do sistema operacional como os arquivos rhosts e hosts.equiv. Com o surgimento da famlia Windows 2000 Server tambm surgiu um novo modelo da Microsoft para administrao do domnio e seus recursos denominado Active Directory. O Active Directory representa uma iniciativa para estabelecer um gerenciamento integrado de recursos, distinto e aperfeioado em relao quele oferecido pelo Windows NT, que dependia de relao de confiana para
101
integrao entre domnios. Com o Active Directory os relacionamentos de confiana so substitudos por uma representao unificada do conjunto de recursos disponveis em vrios domnios [19].
102
Um certificado s vlido pelo perodo de tempo nele especificado, ou seja, o certificado tem prazo de validade e tem que ser renovado periodicamente. Esta uma medida importante para garantir aumentar o nvel de segurana, pois a cada renovao, um novo par de chaves gerado [04]. Cada certificado contm datas Vlido de e Vlido at, que limitam o perodo de validade. Depois que o perodo de validade de um certificado terminar, um novo certificado deve ser solicitado pelo usurio do agora expirado certificado. Em situaes em que seja necessrio desabilitar um certificado, este pode ser revogado pelo emissor. Cada emissor mantm uma lista de certificados revogados (CRL Certification Revocation List), a qual usada pelos programas quando a validade de um determinado certificado est sendo verificada. Por exemplo, programas que usam certificados para autenticao, ao receberem uma tentativa de acesso, primeiro entram em contato com a autoridade certificadora (no caso do Windows 2003 Server um servidor com o Microsoft Certificate Service) para verificar se o certificado que est sendo apresentado para logon, no est na lista dos certificados revogados CRL. Se o certificado estiver na CRL, o logon ser negado.
103
Cada autoridade de certificao pode ter requisitos diferentes de prova de identidade, como uma conta de domnio do Diretrio Ativo, crach de empregado, carteira de motorista, solicitao autenticada ou endereo fsico dentre outros. Verificaes de identificao como essa geralmente asseguram uma autoridade de certificao no local, de tal modo que as organizaes possam validar seus prprios empregados ou membros. As autoridades de certificao corporativas, como do Windows 2000/2003 Server, usam as credenciais da conta de usurio do Diretrio Ativo de uma pessoa, como prova de identidade. Neste exemplo, se um usurio tiver efetuado logon em um domnio do Windows 2000/2003 Server e solicitar um certificado de uma autoridade de certificao corporativa, a autoridade de certificao saber este usurio atravs do Diretrio Ativo, que vai dizer quem ele . Todas as autoridades de certificao tm um certificado para confirmar sua prpria identidade, emitido por outra autoridade de certificao confivel ou, no caso de autoridades de certificao raiz, emitido por elas mesmas. importante lembrar que qualquer pessoa pode criar uma autoridade de certificao, a questo real se voc, como um usurio ou um administrador, confia naquela autoridade de certificao e, por extenso, nas diretivas e procedimentos que ela emprega para confirmar a identidade dos certificados emitidos para entidades por essa autoridade de certificao. Em uma rede baseada no Windows 2000/2003 Server, o administrador tambm pode utilizar uma CA externa. Porm, com o uso do Microsoft Certificate Services, o administrador pode criar sua prpria autoridade certificadora. Este servio permite a criao de sofisticados ambientes de certificao, com a criao de uma hierarquia de CAs. Com o uso do Certificate Services podem ser criadas os seguintes tipos de autoridades certificadoras: Enterprise Root CA. Enterprise Subordinate CA. Standalone Root CA. Standalone Subordinate CA Enterprise Root CA Autoridade certificadora corporativa raiz: Um nico servidor pode ser configurado como Enterprise root CA em uma floresta de domnios. Este servidor ocupa o topo da hierarquia de autoridades certificadoras. Normalmente no utilizado para emitir certificados para usurios ou computadores, mas sim para autoridades certificadoras corporativas subordinadas. Os certificados para usurios e computadores so emitidos
104
pelas autoridades subordinadas. Com isso pode-se criar uma hierarquia de autoridades certificadoras, de tal maneira que a emisso de certificados seja efetuada por um servidor do prprio domnio do usurio. Outro detalhe importante que a autoridade certificadora raiz responsvel por assinar o seu prprio certificado (afinal no h nenhuma autoridade acima dela). Isso que caracteriza esta autoridade como uma autoridade certificadora raiz. Enterprise Subordinate CA Autoridade certificadora Corporativa subordinada: Para instalar uma autoridade certificadora corporativa subordinada, necessrio ter acesso ao certificado da autoridade certificadora corporativa raiz. O uso deste certificado que liga a autoridade certificadora que est sendo instalada, com uma autoridade subordinada a autoridade certificadora raiz, formando uma hierarquia de entidades certificadoras. Este tipo de autoridade pode emitir certificados para usurios e computadores do Diretrio Ativo ou para outras autoridades certificadores subordinadas de nveis mais baixos, aumentando desta maneira, o nmero de nveis da hierarquia de autoridades certificadoras. Stand-alone Root CA Autoridade certificadora autnoma raiz: Este tipo de autoridade certificadora no depende do Diretrio Ativo. Pode ser utilizado, por exemplo, para emitir certificados para parceiros de negcio e prestadores de servio, que precisam de certificados digitais para acessar determinadas reas da Intranet ou da Extranet da instituio. Uma vantagem adicional que um servidor configurado como autoridade certificadora autnoma raiz, pode ser desconectado da rede, como uma garantia adicional de segurana. Este tipo de autoridade certificadora tambm responsvel por emitir os certificados de registro das autoridades certificadoras autnomas subordinadas. Stand-alone Subordinate CA - Autoridade Certificadora Autnoma Subordinada: Este tipo de autoridade certificadora est subordinada a uma autoridade certificadora autnoma raiz. O processo normalmente o mesmo utilizado para o caso das autoridades certificadoras corporativas, ou seja, a autoridade certificadora autnoma raiz no utilizada para emisso de certificados para usurios e computadores, mas sim para a emisso de certificados para as autoridades certificadoras autnomas subordinadas. As autoridades certificadoras autnomas subordinadas que so responsveis pela emisso dos certificados para usurios e computadores. A existncia de uma autoridade certificadora significa que voc tem confiana de que a autoridade de certificao possui as diretivas corretas no local correto e ao avaliar as solicitaes de certificado, ir negar certificados para qualquer entidade que no atender a essas diretivas. Esta uma questo fundamental para garantir a identidade dos usurios.
105
Ao fazer uma verificao rigorosa dos dados informados, antes de emitir um certificado para um usurio, servidor ou computador, a CA garante que quem obtm o certificado realmente quem diz ser prova de identidade. Por isso a importncia fundamental de definir uma metodologia clara, simples e de fcil execuo, para a verificao dos dados, antes de emitir os certificados [04]. Para servios, computadores e usurios do Windows 2000/2003 Server, a confiana em uma autoridade de certificao estabelecida quando voc possui uma cpia do certificado raiz no armazenamento das autoridades de certificao raiz confiveis e tem um caminho de certificao vlido, significando que nenhum dos certificados no caminho de certificao foi revogado ou que seus perodos de validade expiraram. O caminho de certificao inclui todos os certificados emitidos para cada CA na hierarquia da certificao de uma CA subordinada para a CA raiz [04].
Concluso
Aps o surgimento dos protocolos seguros, o prximo passo seria dado se fosse encontrada uma maneira de considerar os canais pblicos ou abertos como um caminho de rede tambm seguro. E as instituies de pesquisa e esforos pessoais conseguiram uma maneira para soluo deste problema. Como principal resultado destas pesquisas e a que melhor representa este esforo a criao da tecnologia de VPNs. Podemos dizer que hoje, o leque de opes disponveis para implantao de uma aplicao Cliente/Servidor muito maior, independente do tipo de plataforma desejada, pois grande parte da soluo encontra-se disponvel como software livre e de cdigo aberto. Somando-se a isso temos o fato que podemos agregar diversas tcnicas para alcanar este objetivo. A exposio de um estudo de caso real, atravs de uma aplicao Cliente/Servidor proprietria, expe as principais caractersticas sobre como so desenvolvidas as aplicaes comerciais, utilizadas principalmente na plataforma MS-Windows. O conhecimento destas caractersticas pode oferecer subsdios suficientes, para que os administradores de sistemas possam tomar decises importantes no que tange aos mecanismos necessrios para implantao de produtos de software de forma integrada, transparente ao usurio e segura.
106
Em resumo, hoje existem mtodos, tecnologias e condies para se cumprir todos os requisitos que regem uma comunicao segura como disponibilidade, integridade, confidencialidade, autenticidade, no repdio e controle de acesso aos recursos.
Captulo 6
Propostas de solues para o estudo de caso
A proposta deste Captulo apresentar as diversas formas para solucionar os problemas relativos a segurana, escalabilidade e compatibilidade para a execuo da aplicao Cliente/Servidor, mostrada anteriormente em nosso caso de estudo no Capitulo 5. Os conceitos e mtodos seguros apresentados nos captulos 4 e 5 foram colocados em prtica. Algumas solues no puderam ser adequadas devido as particularidades da aplicao, outras se mostraram insuficientes ou de difcil administrao e, desta maneira, prejudicavam a utilizao da aplicao mesmo em ambientes homogneos (solues totalmente proprietrias ou software livre). Ao longo do desenvolvimento deste Captulo, sero apresentadas as propostas implementadas e analisadas, com a exposio da soluo adotada justificando-se suas razes, bem como os fatores que levaram a eliminao de algumas propostas.
107
108
Para compreender como pde-se chegar a uma soluo necessrio rever alguns conceitos bsicos sobre autenticidade e segurana na plataforma MS-Windows. Deste modo, buscou-se solues existentes para esta plataforma, sem descartar a possibilidade da utilizao de outras. Ao longo dos ltimos 11 anos a Microsoft vem desenvolvendo seus sistemas operacionais para ambientes corporativos e servidores de grande porte. Uma prova disso a evoluo da famlia Windows NT Server at a concepo da famlia 2003 Server. Neste caminho muitas falhas de segurana e bugs na construo deste software desafiaram a capacidade desta plataforma de garantir a privacidade e a segurana da informao administrada por estes sistemas. Alm disso a famlia Windows NT no possui ferramentas nativas capazes de oferecer aos administradores recursos mais avanados para atender a demanda das novas aplicaes, muito mais abrangentes e que, em sua maioria, utilizam como protocolo padro TCP/IP e no mais protocolos proprietrios. Somando-se a isso tm o aspecto da mobilidade: a tendncia que os usurios do sistema estejam fisicamente fora de suas empresas/instituies e, portanto no estaro utilizando redes seguras. O acesso pode partir de qualquer parte onde exista um ponto de rede conectado a Internet. Em vista deste novo cenrio, a Microsoft incorporou a nova famlia de Sistemas Operacionais, funcionalidades e ferramentas capazes de aumentar o leque de opes para atender os requisitos de segurana e autenticidade. A partir da verso MS-Windows 2000 j possvel utilizar protocolos seguros, criar entidades certificadoras, utilizar e administrar informaes de um diretrio ativo e muito mais. com base nestas ferramentas novas, que se chegou a soluo do problema de implantao da nossa aplicao em estudo, contudo importante ressaltar algumas caractersticas que diferem esta plataforma das demais, incluindo principalmente o processo de autenticao do usurio e sua identificao na rede.
109
domnio ou diretrio ativo. A informao armazenada no registro da mquina controladora ou mesmo localmente, nos casos em que no est ligada a nenhum domnio ou diretrio ativo. Um algoritmo criptogrfico utilizado para codificar a informao, o padro para servidores Windows NT o protocolo NTLM1 e para servidores Windows 2000 Server o kerberos v5. Desta maneira temos conforme [22]: Campo Revision Count Top Level Auth. Subauth. Subauth. Subauth. Bytes 1 1 6 4 12 4 Valor 0x01 5 0x05 0x15 SECURITY_NT_AUTHORITY SECURITY_NT_NON_UNIQUE Identificador da mquina Identificador do usurio Observao Revision Number
Uma cadeia alfanumrica armazenada no registro como abaixo. S-1-5-21-1179599015-1994013950-622671684 Sendo assim, quando um usurio faz o procedimento de logon na rede existe a interao mostrada na Figura 6.1 entre o cliente e o servidor do domnio ou diretrio ativo.
Winlogon
1
MSGINA
LPC 2
RPC 3
Netlogon
MSV1_0
rede
RPC
Base de usurios
Mquina Remota
Onde: LPC, Local Procedure Call MSGINA, Microsoft Graphical Identification and Authentication LSASS, Local Security Authority Subsystem Service RPC, Remote Procedure Call MSV1_0, chave armazenada no registro com informaes sobre segurana do computador.
110
Se a aplicao estiver em um ambiente integrado a um domnio Windows 2000, o esquema de autenticao utilizar novas bibliotecas e novos algoritmos para autenticar a informao, como por exemplo, o protocolo kerberos (Captulo 4, item 4.2.2). A base de dados de usurios, neste caso, passa a ser um objeto do Sistema Operacional.
111
L2TP/IPsec, utilizado mtodos de autenticao PPP em nvel de usurio e autenticao IPSec em nvel de kernel para certificados e autenticao de dados, tambm integridade e criptografia PPTP, usando mtodo de autenticao PPTP em nvel de usurio e MPPE (Microsoft Point-toPoint Encryption) para criptografia de dados. Devido a estas caractersticas o uso da VPN torna-se limitado. Tipicamente os clientes da VPN so de acordo com [41]: Usurios com laptop que precisam conectar-se a Intranet da organizao para acessar e-mail e outros recursos atravs de redes externas ou inseguras. Pessoas que precisam utilizar a Internet para acessar os recursos da organizao atravs de redes domsticas. Administradores remotos que utilizam a Internet para conectar-se a uma rede da organizao e configurar redes, servios e aplicaes. Para se permitir o uso de aplicaes Cliente/Servidor em ambientes de VPN, todos os elementos envolvidos na comunicao devem fazer parte deste cenrio, ou seja, possuir endereos de rede distribudos pelo concentrador da VPN, conforme mostrado na Figura 6.2, pois o acesso aos recursos do servidor pelo cliente verificado atravs do seu SID.
Conexo VPN e Relacionamento de Confiana Unidirecional
Usurio autenticado na estao Maria Silva S-1-5-21-...-622671684
Servidor do Domnio
Servidor de arquivos
Internet
Canal virtual seguro Firewall/ Concentrador VPN
/aplicativo
Logon na VPN
Servidor de WEB
112
Do ponto de vista da segurana e da autenticidade o problema todo resolvido. Comprovadamente os protocolos e mtodos utilizados numa VPN atendem perfeitamente, entretanto existe a questo da administrao deste ambiente e tambm a escalabilidade. A adio de novos usurios ou grupos de usurios que podem acessar o recurso de disco /Aplicativo no servidor de arquivos, no ser problema, desde que o servidor de domnio/diretrio ativo esteja integrado a VPN. Faixas de endereos destinados a VPN devem ser reservados e conhecidos dos administradores, pois em caso de perda da conexo, o servidor local pode ser autenticado novamente na VPN com seu endereo de rede conhecido. Outro cuidado que se deve tomar com redes locais que utilizam classes reservadas de endereos da arquitetura TCP/IP atravs de NAT (Network Address Translation), uma vez que a maioria das VPNs so formadas por endereos de classe semelhante, o que no impede o uso de endereos reais, quando for o caso. Em virtude destes fatos, a administrao desta soluo torna-se algo complexo a medida em que novos clientes e servidores so adicionados. A questo da escalabilidade est intimamente ligada a questo da quantidade de clientes que utilizaro o Sistema, evidentemente existe um limite tanto de hardware quanto de software que deve ser levado em considerao na montagem desta soluo. O elevado nmero de usurios e conexes podem degradar a utilizao da aplicao [29].
113
clientes, pois aceita apenas estaes com Sistema Operacional padro MS-Windows, devido as caractersticas de construo da aplicao (na verso cliente/servidor). A Figura 6.3 demonstra o primeiro passo da soluo, que a autenticao do usurio por um servidor de domnios Windows NT/Samba Server ou Windows 2000/2003 Server (Diretrio Ativo).
Domnio Cliente
Usurio
Servidor Domnio
Base de Usurios
Neste exemplo o usurio Maria Silva est se autenticando em um servidor que controla um Diretrio Ativo, portanto ela possui uma conta neste domnio que a identifica unicamente. Nesse tipo de ambiente o usurio deve pertencer (no mnimo) ao grupo de usurios do sistema, porm o Administrador pode criar uma srie de outros grupos, agrupando os usurios de acordo com sua poltica de administrao, inclusive recebendo novos usurios de domnios diferentes, em que possa confiar. Esse o prximo passo, ou seja, criar uma relao de confiana entre domnios.
114
Domnio Cliente
Servidor Domnio Confivel
Confiana Unidirecional
/shared /aplicativo
Diretrio compartilhado para a aplicao
Figura 6.4 Relacionamento de Confiana para acesso ao diretrio compartilhado por usurios da aplicao
Atravs da relao de confiana unidirecional, mostrada na Figura 6.4, o administrador do domnio confiante poder escolher quais usurios ou grupos do domnio confivel tero acesso ao diretrio compartilhado, bem como definir as permisses de acesso destes usurios e mtodos de auditoria. Deste modo cria-se uma rede de servidores confiveis com a administrao de usurios de forma descentralizada, ao contrrio das VPNs que necessitam do concentrador de VPN e dos usurios cadastrados no servidor. Vale lembrar que as conexes entre as estaes clientes e o servidor utilizam o protocolo IPSec nas comunicaes. A Figura 6.5 apresenta o esquema utilizado para disponibilizar o diretrio /aplicativo para domnios clientes, neste diretrio esto instalados os arquivos da verso SERVER da aplicao, alm dos programas que possibilitam a instalao remota da verso CLIENTE nas estaes. Pode-se encontrar tambm os arquivos que so gerados pelos clientes e armazenados temporariamente no servidor como relatrios, grficos, documentos e imagens.
115
Domnio A
SID Usurio S-1-5-21-...-622671684 Maria Silva S-1-5-21--622671685 Oswaldo Mendes S-1-5-21--622451690 Danilo Alves : S-1-5-21--623542 2567 Juliana Sousa
/aplicativo
Servidor Domnio
Domnio B
Uma vez garantida a identidade dos usurios, no se deve esquecer que estas aplicaes utilizam bancos de dados clientes, neste caso o banco Oracle 9i. Sendo assim necessrio definir parmetros na BDE que possibilitem a comunicao nativa entre o servidor do banco de dados e o cliente, alm de alterar parmetros na configurao cliente de forma a habilitar autenticao e criptografia. Por sua vez o administrador do banco de dados deve possuir regras que protejam a base de dados. Isso inclui controle de acesso, integridade dos dados, criptografia e auditoria. O banco Oracle possui suporte para uma srie de algoritmos criptogrficos como: RSA Data Security RC4: este algoritmo permite a criptografia dos dados de forma rpida, utilizando uma chave privada gerada randomicamente em cada sesso com o banco. Todo o trfego ocorre de maneira segura, incluindo os comandos SQL, os valores associados a estes comandos, resultados e chamadas de procedimentos (stored procedure call). O cliente, servidor ou ambos, podem requisitar ou requerer o uso do mdulo criptogrfico para garantir a proteo dos dados. Data Encryption Standard (DES): este algoritmo utiliza criptografia de chaves simtricas para proteger as comunicaes atravs da rede.
116
Triple DES (3DES): esta variante, criptografa a mensagem com trs passos do algoritmo DES. Ele prov um alto grau de segurana na mensagem, porm tem como ponto negativo a perda de performance devido ao processamento adicional. Em geral trs vezes mais lento que o DES. Para verificar a integridade dos dados, o banco Oracle utiliza os seguintes algoritmos: MD5 Checksum: este algoritmo prov a integridade dos dados atravs do hash e da seqncia para garantir que o dado no foi alterado ou roubado quando transmitido pela rede. Secure Hash Algorithm (SHA): similar ao MD5, porm indicado para grandes mensagens que necessitam de alta segurana. Na Figura 6.6 demonstrado como se pode configurar uma BDE para acesso nativo ao banco de dados utilizando os parmetros definidos no servidor para comunicao.
117
Uma vez que todos os elementos envolvidos na comunicao esto definidos e conhecidos, bem como os mtodos que se pode utilizar para garantir a integridade dos dados e sua origem, tem-se na Figura 6.7 todo o cenrio da utilizao da aplicao Cliente/Servidor atravs de uma rede pblica.
Cenrio completo do ambiente de execuo da Aplicao
Roteador e firewall
Internet
Maria Silva S-1-5-21-...-622671684
/aplicativo
Oracle 9i
Legendas: : Relao de Confiana Unidirecional : Autenticao Local e acesso ao diretrio compartilhado : Conexo com o banco de dados Oracle
118
As portas TCP e UDP utilizadas no cenrio apresentado na Figura 6.7 esto listadas na Tabela 6.2 a seguir. Porta Transporte Finalidade ESP1 88 135 138-139 389 445 500 UDP TCP TCP TCP UDP Prov a confidencialidade para o payload IP. ESP no modo transporte no criptografa todo o pacote IP, e sim apenas o payload Kerberos PortMapper Porta fixa do Netlogon NetBEUI Mapear diretrios remotos SMB Estabelecimento do Relacionamento de Confiana Utilizado nas comunicaes em IPSec
Tabela 6.2 Portas utilizadas na comunicao cliente/servidor do cenrio da figura 6.7
TCP e UDP LDAP Utilizado pelos servidores com Windows 2000/2003 Server
Atravs do conhecimento das portas de comunicao utilizadas pelos servios, tanto na origem quanto no destino, podemos definir regras nos firewalls que permitam a passagem de pacotes apenas de redes conhecidas, adicionando-se mais um fator para garantir a segurana. Neste cenrio a administrao do acesso dividida em duas partes, os clientes so administrados pelos administradores locais, eles definem quais so os usurios que faro parte dos grupos e, portanto podem definir quem pode utilizar ou no os recursos no servidor. A segunda parte fica a cargo do administrador do servidor de arquivos que precisa confiar na informao que busca no domnio/diretrio ativo remoto.
119
certificar tanto o usurio do sistema, quanto a sua estao de trabalho, provendo autenticidade e criptografia no canal de comunicao entre o cliente e o servidor da aplicao.
Utilizando Certificao Digital
Entidade Certificadora
Internet
192.168.1.10 Roteador e firewall Servidor do Banco de Dados 10.0.1.11
192.168.2.15
A implementao da estrutura bastante facilitada pelo servio de Certificao Digital. Existem duas opes para se adquirir um certificado: via uma pgina web ou utilizando a estrutura do diretrio ativo. O administrador mantm uma lista dos certificados vlidos e tambm dos certificados revogados. Esta lista deve ser publicada para que todos envolvidos na soluo tenham conhecimento. O algoritmo RSA utilizado para criar a assinatura digital [42] e em seguida anexado aos dados originais da mensagem. Este procedimento ilustrado na Figura 6.9.
10.0.1.0
120
Mensagem
Mensagem
Funo de cifragem da mensagem Mensagem Dados transmitidos Decriptografa com a chave pblica
Cifragem
Assinatura
Cifragem obtida
Destinatrio Origem
Uma vez realizado o processo para assinatura digital a informao pode ser transmitida pela rede atravs de um canal seguro, utilizando o protocolo IPSec, por exemplo. Na Figura 6.10 baseada em [43] pode-se perceber os elementos envolvidos para utilizao do servio de Certificados Digitais e a infraestrutura de chaves pblicas aplicadas por servidores MS-Windows 2000/2003 Server.
121
Chave pblica Mdulo de entrada Processa as requisies de certificados com padro PKCS 10 Servio de Certificados Gera os certificados padro X.509 atravs de modelos especficados pela poltica adotada. Gera tambm a lista de certificados revogados Mdulo de sada Envia os certificados vlidos e a lista dos revogados aos pontos de distribuio
Modelos de Certificados
CPS: Cryptographic Service Providers PKCS 10: Public Key Cryptography Standard 10 certificate requests
122
A implementao de segurana para aplicaes disponvel via Internet ocorre atravs do protocolo https ao invs do tradicional http, ou seja, utiliza-se o protocolo SSL (vide item 4.1.3). Desta maneira agrega-se criptografia na comunicao, gerando um canal seguro entre o cliente e o servidor da aplicao, todavia, como o caso da aplicao em estudo, freqente o uso do servidor de pginas MSIIS, que conhecidamente alvo de diversos tipos de ataque que podem causar a indisponibilidade do servio de WEB ou a troca de pginas da empresa, por exemplo. Apesar do grande empenho da Microsoft para eliminar as falhas, detectadas desde o desenvolvimento do produto e a implementao do protocolo SSL nas verses mais recentes, muitos administradores procuram solues que evitam o acesso direto as pginas neste servidor, pois tratam-se de dados crticos e muitas vezes sigilosos, neste caso existe uma outra maneira de prover uma camada de segurana e evitar o acesso direto a estes servidores web. Esta tcnica denominada proxy reverso. O proxy reverso funciona como um receptor de pginas para um ou mais domnios Internet registrados no DNS, ou seja, ele pode receber todas as solicitaes enviadas ao servidor de pginas original como um front-end do site, e somente atravs dele estas solicitaes chegam ao servidor real da aplicao [03]. Pode-se somar a esta proposta as vantagens obtidas atravs do uso dos certificados digitais. No entanto a estrutura computacional (com a adio de um servio de certificao interno ou externo) e a administrao do ambiente, tendem a se tornarem mais complexos. A Figura 6.11 demonstra o esquema da comunicao entre o cliente e o servidor da aplicao web, bem como a ao do proxy reverso. O proxy reverso pode atuar como um filtro de acesso ao servidor da aplicao. Em geral utilizado o software APACHE, devido a facilidade de instalao e configurao dos arquivos para atuar como um proxy reverso [03].
123
192.168.1.10
192.168.2.15
Internet
10.0.0.0
10.0.1.0
Figura 6.11 Utilizando Proxy Reverso para proteger o servidor WEB interno
124
Aspectos Positivos Integrada ao Sistema Operacional do servidor e dos usurios centralizado cliente e o servidor software livre Operacional Windows de 32 bits nativo Gerenciamento dos usurios descentralizado nos domnios centralizado cliente e o servidor No necessita da criao da VPN de camada de enlace; a autenticao na rede local utilizada para prover autenticidade
Aspectos Negativos Administrao Complexa da performance com crescimento de usurios (escalabilidade) no servidor para realizao da VPN Oracle com endereos de VPN em devem domnios/diretrios possuir Sistema
Prov autenticidade e segurana entre o Implementao complexa no cliente e Pode ser substituda por VPN de Protocolos adicionais so utilizados Cliente pode possuir qualquer Sistema Problemas para configurao do Banco VPN com IPSec Implementao simples com protocolo Confiana ativos remotos Clientes Operacional que implemente IPSec polticas de segurana de senha nos
Gerenciamento do acesso ao recurso No possui autonomia para aplicar Prov autenticidade e segurana entre o domnios confiveis
Certificao Digital
Desnecessrio para acesso aos recursos Necessita criar uma hierarquia de dos Necessita do IIS para implementar de forma integrada ao Sistema Operacional
Implementa conexo segura atravs da compartilhados em ambiente Windows Garante atravs da infra-estrutura de entidades certificadoras participantes na comunicao Pode ser utilizado em conjunto com o servio de diretrio ativo Maior controle e conhecimento dos computadores que acessam o sistema
125
Proxy Reverso
Implementa conexo segura atravs da Necessita de mais um servidor WEB WEB WEB da aplicao Pode ser implantada com software livre
Tabela 6.3 Quadro comparativo entre as propostas de soluo
126
Estes procedimentos so um incmodo para quem utiliza a aplicao. Com o uso do relacionamento de confiana, o administrador do recurso compartilhado pode escolher os
127
usurios/grupos, bem como os privilgios de acesso personalizados, eliminando a necessidade de novas autenticaes. Portanto o uso do recurso passa a ser transparente para o usurio. O uso do protocolo IPSec nativo implementado nos Sistemas Operacionais MS-Windows 2000 Profissional em diante, torna segura a comunicao entre o cliente e os servidores com os quais interage, isto tambm proporciona que Sistemas Operacionais obsoletos, como MS-Windows 95/98/98SE e Millenium, sejam substitudos para atender a este requisito, eliminado desta maneira a possibilidade de ataques a estas verses que no possuem suporte para os protocolos seguros. A simplicidade e a facilidade para implementao da soluo outra vantagem com relao as demais solues, relacionamentos de confiana so simples de se fazer at mesmo utilizando software de domnio pblico, como o SAMBA1. O fato de ser unidirecional no interfere na poltica de administrao dos usurios locais, pois os usurios so apenas exportados, no tendo nenhuma interferncia externa ou necessidade de modificao em grupos, privilgios e outros aspectos no domnio confivel. Este processo realizado apenas uma vez entre os domnios confiantes e confiveis, pois uma vez estabelecida a relao de confiana, os sistemas operacionais possuem mecanismos para verificar os estados desta relao e alertar em caso de falhas, desta maneira a administrao torna-se descentralizada, pois os administradores locais conhecem melhor sua realidade que o administrador do ambiente servidor. Isso proporciona a escalabilidade necessria para adicionar novas redes para acesso a aplicao, independente de sua localizao geogrfica, de maneira organizada e mensurvel. Para a soluo da verso WEB a implementao de um proxy reverso mostrou-se mais eficaz. Apesar de adicionar um novo elemento no ambiente computacional, o que tambm ocorre com a soluo utilizando certificados digitais, a performance no foi prejudicada. Mais uma vez a simplicidade da soluo e a transparncia para os usurios foram os fatores determinantes para a escolha, alm, claro, da questo da segurana com o uso do protocolo SSL e tambm a proteo ao acesso direto ao servidor primrio das pginas da aplicao, evitando a exposio para ataques realizados por hackers atravs das vulnerabilidades conhecidas nesse tipo de servio. Em geral verses para WEB de aplicaes desenvolvidas para fins administrativos, tendem a serem amplamente utilizadas para consultas, com pouca entrada de dados. Este o perfil em que nosso estudo de caso se encaixa, no necessitando obrigatoriamente de um esquema complexo de certificados digitais.
Somente a partir da verso 3.0.1 do SAMBA Server possvel fazer relacionamentos de confiana com domnios MS-Windows
128
129
Uma vez criada esta instncia no servidor os clientes utilizaro estes parmetros para acesso, sendo assim os administradores da base devero fazer suas manutenes integrados a esta rede ou, possurem acesso direto ao console do servidor. Tambm existem problemas para compatibilidade do servio de VPN com sistemas operacionais no-Microsoft ou mesmo proprietrio, em muitos casos difcil, ou mesmo invivel, a conexo do servidor a VPN criada, pode-se citar como exemplo um servidor com banco de dados Oracle9i, instalado sobre uma plataforma HP-Tru64 Unix em uma mquina AlphaServer1. Portanto, a implementao desta soluo menos laboriosa quando se utiliza apenas recurso das redes e dos Sistemas Operacionais da Microsoft, inclui-se nesta proposta o servidor do Banco de Dados. Como compensao pode-se utilizar a aplicao em qualquer um dos Sistemas Operacionais da Microsoft de 32bits, pois estes j possuem suporte para conexo a uma VPN. No se pode esquecer que por se tratar de uma soluo com algoritmos criptogrficos, exige dos clientes e servidores um processamento adicional para a conexo a VPN e tambm para a gerao dos pacotes que so transmitidos pelo tnel, em hardwares mais antigos isso pode ser representativo na performance da aplicao.
Plataforma da Antiga Digital Corporation adquirida pela Hewlett Packard (HP), com processadores RISC de 64bits
130
domnios do cliente e do servidor da aplicao. Isso torna a soluo administrativamente mais complexa, pois requer a adoo de uma poltica para a solicitao e aprovao dos certificados, sejam elas para usurios ou computadores e, tambm a distribuio da lista dos certificados revogados, pois essa informao precisa ser utilizada pelo administrador para realizar o compartilhamento e a liberao do acesso para o cliente, neste sentido recomendvel a criao de rotinas para automatizar este procedimento. No caso da adoo da soluo, de fundamental importncia a criao de uma entidade certificadora reserva, com a cpia do banco de dados de certificados da entidade principal.
Concluso
Nos ltimos anos a preocupao com a segurana da informao tornou-se fator fundamental para a implantao de sistemas nas empresas. A exposio das vulnerabilidades dos protocolos utilizados e o conhecimento de seus riscos fizeram com que ferramentas para agregar segurana, no somente ao meio de transmisso, mas tambm nos meios de armazenamento, fossem adotadas e amplamente analisadas. Atualmente o que se v um grande mercado oferecendo aplicaes, com as mesmas caractersticas encontradas em nosso estudo de caso, sendo comercializadas, sem que a soluo completa seja apresentada para sua implantao, muitas vezes por falta deste conhecimento dos prprios desenvolvedores. Mecanismos simples de serem adotados na rea de segurana podem trazer grandes benefcios. O uso do protocolo IPSec uma prova disso. No cenrio de rede atual, existem milhares de programas na Internet que facilitam o trabalho dos atacantes, simulam, decodificam e alteram dados e se valem justamente das vulnerabilidades conhecidas e informaes capturadas para realizar um ataque. O conhecimento das principais caractersticas dos Sistemas Operacionais e seus servios disponveis, focados especialmente na segurana e autenticidade, podem fornecer informaes importantes para a deciso de colocar uma aplicao que utiliza a rede para troca de informaes.
Captulo 7
Concluso
O desenvolvimento de aplicaes sofreu grandes modificaes ao longo das ltimas dcadas. O cenrio de execuo transformou-se rapidamente, deixando os antigos ambientes homogneos -em sua maioria composta por mainframes e terminais com tecnologia proprietria das empresas, passando para redes no-proprietrias e protocolos abertos. Pode-se destacar tambm outros fatores como o surgimento e a adoo da Internet pelas empresas e instituies e do estabelecimento do protocolo TCP/IP como padro de facto. Alm disso, a significativa evoluo do hardware que proporcionou a diminuio dos custos com infra-estrutura de comunicao e o aumento da velocidade no processamento das informaes atravs da comutao de pacotes em taxas, antes inimaginveis. Acompanhando a evoluo deste cenrio, foram desenvolvidos no modelo cliente/servidor novas arquiteturas e modelos capazes de atender as necessidades das novas aplicaes, contudo no se pode esquecer que os avanos na rea de segurana permitiram a integrao entre cliente e servidor atendendo os princpios bsicos que regem a comunicao descrita no item 3.2.4. A apresentao do estudo de caso demonstrou, na prtica, os problemas que so encontrados para a implementao e execuo das aplicaes no cenrio da comunicao, bem como as opes disponveis que podem ser aplicadas e adaptadas a fim de solucionar um problema do mundo real.
131
132
Captulo 7 Concluso
Obteve-se com este trabalho importantes contribuies para se compreender melhor o modelo Cliente/Servidor e sua arquitetura, vista em detalhes no Captulo 2, tornando-se uma referncia aos que se interessam e necessitam de mais informaes sobre o assunto. No Captulo 3 desenvolveu-se o cenrio da comunicao, suas nomenclaturas e tendncias utilizadas para a construo de aplicaes voltadas ao mercado e grandes corporaes. Tambm foram expostas informaes com as caractersticas dos protocolos de comunicao e suas particularidades, destacando-se os protocolos TCP/IP, SMB e NetBIOS/NetBEUI. Alm disso, mostrou-se os aspectos importantes da conexo fsica/lgica entre sistemas e informaes sobre sincronismo e passagem de mensagens utilizadas para comunicao. Os Captulos 4 e 5 foram complementares, contendo informaes fundamentais e detalhadas sobre os protocolos seguros, utilizados para interligao dos clientes aos servidores. No captulo 4 destacou-se a exposio de protocolos seguros como SSL e IPSec e mecanismos para fornecer autenticao como KERBEROS. O estudo destes proporcionou sua adoo na proposta de soluo de segurana no estudo de caso, apresentado no Captulo 5. No Captulo 5 foi apresentado um estudo de caso utilizando uma aplicao Cliente/Servidor comercial voltada para rea administrativa. Desenvolvida com ferramentas e linguagens para execuo na plataforma MS-Windows, que sem dvida a plataforma mais comum nas empresas/instituies. Analisando a aplicao e seus requisitos, pode-se constatar que a implementao segura destes produtos, na plataforma para qual foi desenvolvida, requer um estudo mais elaborado, pois o cenrio apresentado repleto de falhas e vulnerabilidades que podem ser exploradas. Sendo assim, as tecnologias apresentadas no Captulo 5 utilizando tcnicas de tunelamento com a criao de VPNs, Relacionamentos de Confiana e Certificao Digital dos clientes e servidores, em conjunto com os protocolos seguros expostos no Captulo 4, forneceram subsdios para elaborao das propostas de soluo que foram apresentadas no Captulo 6. Neste sentido o presente trabalho contribu aos administradores que necessitam implementar aplicaes com caractersticas semelhantes s encontradas em nosso estudo de caso, de forma segura e que possa garantir a autenticidade dos usurios, mesmo utilizando conexes atravs de redes inseguras. Por fim no captulo 6 foi desenvolvida uma proposta vivel e segura para a implementao da aplicao de nosso estudo de caso. Utilizou-se conhecimentos e tcnicas vistas ao longo deste trabalho e apresentou-se tambm as razes pelas quais solues vlidas no puderam ou no foram recomendadas. Por se tratar de uma aplicao real concebida com um modelo amplamente difundido, pode-se aplicar esta proposta de soluo em diversas aplicaes que possuam o mesmo perfil e funcionalidade.
Captulo 7 Concluso
133
Este trabalho possibilitou uma pesquisa abrangente da arquitetura cliente/servidor e apresentou propostas para adio de camadas de segurana, tendo como cenrio, redes distintas utilizando conexes remotas ou redes inseguras. Como resultado das pesquisas pde-se demonstrar que em muitos casos Sistemas Operacionais e servios de rede - muitas vezes proprietrios, podem ser substitudos, sem perda alguma, por solues no-proprietrias como, por exemplo, UNIX. Servios como WEB, VPN, Arquivos e at servidores de domnios, mesmo para redes Windows, j existem para este ambiente. Deste modo abre-se um novo horizonte para adequao do ambiente corporativo. Com o grande desenvolvimento das aplicaes freeware para UNIX, no ser obrigatrio o uso de apenas um modelo nico para a execuo de aplicaes Cliente/Servidor.
134
Captulo 7 Concluso
hardware em mquinas clientes, diminuindo e simplificando significativamente os custos de implantao de aplicaes cliente/servidor atravs de uma rede de computadores pblica/privada.
Glossrio de siglas
ADSP: Appletalk Data Stream Protocol AH: Authentication Header API: Application Programming Interface APPC: Advanced Program-to-Program Communications (IBM) ATP: Appletalk Transaction Protocol BDE: Borland Database Engine BI: Business Intelligence CA: Certificate Authority CRL: Certification Revocation List CSS: Cascading Style Sheets DDP: Datagram Delivery Protocol DES: Data Encryption Standard DES-CBC: Data Encryption Standard-Cipher Block Chaining DSS: Decision Support System DSS: Digital Signature Standard EIS: Executive Information System ERP: Enterprise Resource Planning ESP: Encapsulated Security Payload FS DRIVERS: File System Drivers GRE: Generic Routing Encapsulation GUI: Graphical User Interface HMAC: Keyed-Hashing Message Authentication Code IDEA: International Data Encryption Algorithm IDP: Internet Datagram Protocol IEEE: Institute of Electrical Engineers IETF: Internet Engineering Task Force IIS: Internet Information Service (Microsoft Web Server) IKE: Internet Key Exchange IP: Internet Protocol
135
Glossrio de Siglas
136
IPC: InterProcess Comunication IPX: Internet Protocol Exchange ISAKMP: Internet Security Association and Key Management Protocol ISDN: Integrated Services Digital Network ISP: Internet Service Provider LDAP: Lightweight Directory Access Protocol LLC: Logical Link Control LPC: Local Procedure Call LSASS: Local Security Authority Subsystem Service LU: Logical Unit LU: Logical Unit (IBM) MAC: Message Authentication Code MD5: Message Digest Five MSGINA: Microsoft Graphical Identification and Authentication NBDD: NetBIOS Datagram Distribution NBNS: NetBIOS Name Server NCSA: National Center for Supercomputing Applications NTLM: NTLanMan (Windows NT Lan Manager Authentication Protocol) OLAP: OnLine Analytical Processing OS2: Operation System Two (IBM) OSI: Open System Interconnection PC: Personal Computer PPP: Point to Point Protocol PPTP: Point to Point Tunneling Protocol PU: Physical Unit (IBM) RADIUS: Remote Authentication Dial-In User Service RAS: Remote Access Service RFC: Request for Comments RPC: Remote Procedure Call SDLC: Synchronous Data Link Control SGDB: Sistema Gerenciador de Banco de Dados SHA: Secure Hash Algorithm
Referncias
137
SID: Security Identifier SMB: Server Message Block Protocol SNA: System Network Architecture SO: Sistema Operacional SOR: Sistema Operacional de Rede SPI: Security Parameter Index SPP: Sequenced Packet Protocol SPX: Sequential Packet Exchange SQL: Structured Query Language SSL: Secure Socket Layer TGS: Ticket-Granting Service TGT: Ticket-Granting Ticket TI: Technologic of Information TLS: Transaction Layer Security VPN: Virtual Private Network W3C: World Wide Web Consortium XDR: External Data Representation XNS: Xerox Network Service
Referncias
[01] - AMARAL, Wilson Henriques do, Arquitetura Cliente/Servidor Orientada a Objeto, Tese de Mestrado, DES-IME - Departamento de Engenharia de Sistemas, Instituto Militar de Engenharia, 1993. [02] - ANDREWS, Gregory R., Concurrent Programming: Principles and Practice, AddisonWesley, 1991. [03] - Reverse Proxy Documentation. Disponvel em: http://www.apache.org. Acesso em: 10/06/2004 [04] - BATTISTI, Julio, Windows Server 2003: Curso Completo, Editora Axcel Books, 2003 [05] - LEVACHOF, Alessandro, Uma proposta de extenso da camada de transporte (TLS) para uso sobre datagramas de usurios (UDP), Tese de Mestrado, UFRJ, 2004 [06] - COMER, Douglas E. & STEVENS, David L. Internetworking With TCP/IP Vol.III: Client/Server Programming and Application (Socket Version). Prentice Hall, Englewood Cliffs, New Jersey, USA, 1993. [07] - SOFIA, Helena Rute E. C., Estudo do Protocolo ISAKMP/Oakley como Norma de Gesto de Chaves da Arquitetura de Segurana IPSec. Tese de Mestrado, FCUL - Faculdade de Cincias da Universidade de Lisboa/ Departamento de Informtica, 1999. [08] - DANSEGLIO, Mike. MOWERS, David and CRALL, Chris. SSL/TLS in Windows Server 2003. Disponvel em: http://technet.microsoft.com. Acesso em: 01/07/2003. [09] - CUSTER, Helen. Windows NT, Microsoft Press, Makron Books, So Paulo, 1993. [10] - DAVIS, Ralph. Windows NT Networking Programming Addison Wesley, 1994 [11] - DUMAS, Arthur Programando WinSock, Axcel Books, Rio de Janeiro, 1995. [12] - HULTQUIST, Steve <ssh@vnet.ibm.com> FAQ about Client/Server. Disponvel em: http://non.com/news.answers/client-server-faq.html. Acesso em: 03/07/1997. [13] - KORB, Alexei, Colaborao Visual: Ferramentas, protocolos e aplicaes para a interao remota entre pessoas, Tese de Mestrado, UFRGS, 2000. [14] - SCHIFFMAN, Allan M., The Secure Sockets Layer Protocol and Applications, Western Institute of Computer Science, Internet Security Course, 02/08/1996. [15] - LEFEBVRE, Alain LArchitecture Client-Serveur: Aspects techniques, enjeux stratgiques, Armand Colin, 2e dition, 1994.
138
139
Referncias
[16] - LOCHER, L. J., Trusted and Trusting Domains in NT 4.0, Windows & .NET Magazine, December 1999. [17] - CARMO, Agnaldo do, et al, Tecnologia da Informao em Governo, Curso de capacitao para executivos pblicos, mdulo 9, FUNDAP. Disponvel em: http://www.fundap.sp.gov.br. Acesso em: 02/06/2003. [18] - MACHADO, Pedro P. Lemos, BEZERRA, Ernani Lopes, LIMA, Jos Ney de O., Fundamentos do Modelo de Segurana da Informao. Disponvel em: http://www.redegoverno.gov.br. Acesso em: 10/08/2000. [19] - FERNANDEZ, Alexandre M., Segurana em redes IP. Monografia de Ps-Graduao, ASIT (Advanded School of Internet Tecnology), 2001. [20] - STEWART, McKie, Everything you wanted to know about Client/Server computing but were afraid to ask Eye on Technology. Disponvel em: http://www.duke.com/controller/Issues/DecJan/Clientse.htm. Acesso em: 11/07/2002. [21] - Microsoft Corporation, Understanding PPTP (Windows NT 4.0), Write Paper 0197 Part n 098-68564, 1996. Disponvel em: http://technet.microsoft.com. Acesso em: 03/03/2003. [22] - Microsoft Corporation, Single Sign-On in Windows 2000 Networks, Microsoft paper,. Disponvel em: http://technet.microsoft.com. Acesso em: 03/03/2001. [23] - Microsoft Corporation, How VPN Works. Disponvel em: http://technet.microsoft.com. Acesso em: 08/04/2003. [24] - MURHAMMER, Martin. BOURNE, Tim. GAIDOSCH, Tamas. KUNZINGER, Charles. RADEMACHER, Laura. WEINFURTER, Andreas. A Compreensive Guide to Virtual Private Networks, Volume I: IBM Firewall, Server and Client Solution. Internacional Business Machines Corporation 1998. Disponvel em: http://www.redbooks.ibm.com. Acesso em: 04/05/2003. [25] - PASTORE, Pablo. Grupo de Teleinformtica e Automao-UFRJ. Disponvel em: http://www.gta.ufrj.br/grad/03_1/http/tls.html. Acesso em: 30/04/2004. [26] - PHAM, Thuam Q. & Garg, Pankaj K. Multithreaded Programming with Windows NT Prentice Hall, 1996. [27] - QUINN, Bob & Shute, Dave Windows Sockets Network Programming Addison Wesley, 1996 [28] - RENAUD, Paul E. Introduo aos Sistemas Cliente/Servidor IBPI Press, RJ 1993. [29] - REZENDE, Edmar Roberto S. de, Segurana no acesso remoto VPN, Dissertao de Mestrado, IC-UNICAMP Instituto de Computao, Universidade Estadual de Campinas, 2004 [30] - ROBERTS, Dave. Developing for the Internet with Winsock Coriolis Group Books, 1995.
140
Referncias
[31] - SALEMI, Joe. Guia para Banco de Dados Cliente/Servidor . IBPI Press, 1993. [32] - SANTOS, Luiz Carlos dos. Como funciona a autenticao, artigo publicado em agosto/2000, Clube das Redes. Disponvel em: http://www.clubedasredes.eti.br/rede0008.htm. Acesso em 07/06/2004. [33] - SENA, Jansen C. Um modelo para proteo do trfego de servios baseado em nveis de segurana. Tese de Mestrado, IC-UNICAMP Instituto de Computao, Universidade Estadual de Campinas, 2002 [34] - SMITH, Randy Franklin. Windows 2000 Security Gains, Windows 2000 Magazine,. Disponvel em: http://www.win2000mag.net/, 2001 e http://technet.microsoft.com, 2002. Acesso em: 04/03/2003. [35] - TANENBAUM, Andrew S. Distributed Operating Systems Prentice Hall, 1995. [36] - TANENBAUM, Andrew S. Computer Networks Prentice Hall, Third Edition, 1996. [37] - TAROUCO, Liane Margarida Rockenbach. Redes de Computadores: Locais e de Longa Distancia. McGraw-Hill ,So Paulo, 1986. [38] - VIDAL, Paulo Csar Salgado. Modelagem para Arquitetura Cliente/Servidor Orientada a Objeto. Tese de Mestrado, DES-IME - Departamento de Engenharia de Sistemas, Instituto Militar de Engenharia, 1994. [39] - BLENT, Yener. Internet Security, Rensselaer Polytechnic University, New York, 2002. [40] - STEVENS, Richard W., TCP/IP Illustrated, Volume 1 the protocols, Addison Wesley, 2001 [41] - Microsoft Corporation, Virtual Private Networks for Windows Server 2003. Disponvel em: http://technet.microsoft.com. Acesso em: 09/06/2004. [42] - Microsoft Corporation, Cryptography for network and information security, Windows 2000 Server Resource Kit Documentation. Disponvel em: http://technet.microsoft.com. Acesso em: 09/06/2004. [43] - Microsoft Corporation, Windows 2000 Certificate Services and Public Key Infrastructure, Windows 2000 Server Resource Kit Documentation. Disponvel em: http://technet.microsoft.com. Acesso em: 10/06/2004. [44] Kurose, James F., Ross, Keith W., Computer Networking: A TopDown Approach Featuring the Internet, Addison Wesley, 3rd Edition [45] Microsoft Corporation, Chapter 1 - Windows NT Networking Architecture, Windows NT Server Documentation. Disponvel em: http://www.microsoft.com/technet/prodtechnol/winntas/support/chptr1.mspx. Acesso em: 27/10/2004.