Sei sulla pagina 1di 95

COMPUTAO EM NUVEM: UMA NOVA ABORDAGEM EM AMBIENTES DE REDE

ANDR COVELINHAS DA ROCHA

Centro Universitrio da Cidade do Rio de Janeiro

RIO DE JANEIRO JUNHO/2009

COMPUTAO EM NUVEM: UMA NOVA ABORDAGEM EM AMBIENTES DE REDE

ANDR COVELINHAS DA ROCHA

Centro Universitrio da Cidade do Rio de Janeiro

Prof. FREDERICO SAUER Orientador

RIO DE JANEIRO JUNHO/2009

II

COMPUTAO EM NUVEM: UMA NOVA ABORDAGEM EM AMBIENTES DE REDE

Andr Covelinhas da Rocha

Projeto desenvolvido durante o curso de Tecnologia em Redes de Computadores, apresentado ao Centro Universitrio da Cidade, UniverCidade, como pr-requisito para obteno do ttulo de Tecnlogo em Redes de Computadores.

__________________________________ Prof Frederico Sauer, Doutor

RIO DE JANEIRO JUNHO/2009


III

Este trabalho reflete a opinio do autor e no necessariamente a da UniverCidade. Autorizo por meio desta a difuso deste trabalho.

____________________________________ Andr Covelinhas da Rocha

IV

DEDICATRIA

Este trabalho dedicado a minha famlia, especialmente minha me, que graas a sua confiana, seu apoio, seu incentivo e

principalmente pela ddiva da vida, tenho mais uma vez a oportunidade de expressar a minha opinio. Dedico tambm a todos os meus professores, que tanto se sacrificam para trazer conhecimentos que muitas vezes excedem os limites do escopo das disciplinas que ministram. A eles, entrego atravs deste gesto simblico o ttulo de verdadeiros amigos, em especial ao Prof Sauer, ao Prof Celso, ao Prof Sobral e ao Prof Paulo. A materializao deste trabalho reflete todo o ensinamento que foi adquirido.

Andr Covelinhas da Rocha

AGRADECIMENTOS

Agradeo a Deus por mais esta oportunidade, a minha me, a minha namorada Fabola, ao meu orientador, aos demais professores e a todos os meus amigos, inclusive os de mbito profissional e acadmico, por acreditarem em mim, me apoiarem, confiarem, incentivarem e tambm pela compreenso pelas faltas que deixei no perodo em que me dediquei a extenuante tarefa que conclu com a realizao deste trabalho. A minha namorada, agradeo pela pacincia e pelo carinho, e por sempre me incentivar a fazer e agir da melhor forma possvel, o que me empurra alm do limite e faz com que eu descubra novas capacidades.

Andr Covelinhas da Rocha

VI

EPGRAFE

Sucesso, conquistar aquilo que voc ama. Felicidade, amar aquilo que voc j conquistou. Dalai Lamma

VII

SUMRIO CAPTULO 1 .....................................................................................................................10 1 - INTRODUO ............................................................................................................10 CAPTULO 2 .....................................................................................................................12 2 - COMPUTAO EM NUVEM ....................................................................................12 2.1. COMPARAES .......................................................................................................14 2.2. HISTRIA ..................................................................................................................16 2.3. ANATOMIA DA COMPUTAO EM NUVEM ......................................................18 2.3.1. Software Como Servio.............................................................................................19 2.3.2. Plataforma Como Servio.........................................................................................19 2.3.3. Infra-estrutura Como Servio....................................................................................20 2.4. TIPOS DE IMPLEMENTAO DA NUVEM ..........................................................22 2.4.1. Nuvens Pblicas........................................................................................................22 2.4.2. Nuvens Privadas........................................................................................................22 2.4.3. Nuvens Hbridas........................................................................................................23 2.5. APROVEITAMENTO DA NUVEM ..........................................................................23 2.5.1. Usando a Nuvem.......................................................................................................24 2.5.2. Alavancando a Nuvem..............................................................................................24 2.5.3. Construindo a Nuvem................................................................................................26 2.6. CARACTERSTICAS ................................................................................................26 2.6.1. Independncia de Dispositivo e Local......................................................................26 2.6.2. Multi-locao............................................................................................................27 2.7. MITIGAO DE RISCOS..........................................................................................28 VIII

CAPTULO 3 .....................................................................................................................31 3 - VIRTUALIZAO ......................................................................................................31 3.1. VIRTUALIZAO DE SISTEMAS OPERACIONAIS ............................................37 3.2. VIRTUALIZAO DE PLATAFORMA ...................................................................37 3.3. VIRTUALIZAO DE REDE ...................................................................................39 3.4. VIRTUALIZAO DE APLICAES .....................................................................40 CAPTULO 4 .....................................................................................................................42 4 - IMPLEMENTANDO UM AMBIENTE DE NUVEM .................................................42 4.1. SISTEMAS UTILIZADOS .........................................................................................43 4.2. DIAGRAMA DE REDE .............................................................................................46 4.3. INSTALAO DOS SISTEMAS ..............................................................................50 4.3.1. Firewall + Proxy Reverso + DNS..............................................................................51 4.3.1.1. Configuraes de Segurana..................................................................................53 4.3.1.2. Configuraes do Servio DNS..............................................................................56 4.3.1.3. Configuraes do Proxy Reverso...........................................................................60 4.3.2. Cloud Server..............................................................................................................62 4.3.2.1. Instalao dos Softwares Necessrios....................................................................65 4.3.3. Gerncia....................................................................................................................71 4.4. CONSIDERAES SOBRE A CONTRIBUIO DO TRABALHO ......................86 CAPTULO 5 .....................................................................................................................88 5 - CONCLUSO ..............................................................................................................88 APNDICE 1 ARQUIVO DE CONFIGURAO DO VICOMPRESS ..................92 REFERNCIAS BIBLIOGRFICAS .........................................................................93

IX

10

CAPTULO 1

1 - INTRODUO

Na era tecnolgica contempornea, tm-se recursos computacionais mais que suficientes para atender a grande maioria das necessidades de usurios, sejam eles domsticos ou empresariais. No entanto, paga-se por poder de fogo alm do que realmente necessrio, pois para muitos se faz necessrio apenas a leitura e envio de mensagens, navegao web, e acesso a sistemas de escritrio. Despesas com maquinrio esto sempre acompanhadas de despesas de manuteno, pois computadores possuem inmeros componentes fsicos (hardware) e lgicos (software) interdependentes. A fim de minimizar desperdcio de recursos computacionais e tambm de capital com atividades mantenedoras e renovao de licenas de software, prope-se a utilizao de um ambiente centralizado em nuvem, no suscetvel a perda de informaes, e acessvel de qualquer lugar do mundo, atravs de dispositivos conectados internet. Este trabalho apresenta de forma objetiva e prtica o conceito de Computao em Nuvem (Cloud Computing), e como projetar e implementar este ambiente,

11 de forma a torn-lo capaz de fornecer funcionalidades essenciais ao expediente de todos, sejam usurios domsticos ou empresariais. A Computao em Nuvem uma tecnologia emergente que altera o conceito em termos de infra-estrutura, onde a execuo de dados e softwares acontece diretamente na nuvem (internet). Ela abstrai a plataforma de aplicao de softwares da infra-estrutura de hardware subjacente, desobrigando o usurio de estar preso a um hardware especfico. A Computao em Nuvem est mostrando que possvel nos dias atuais o uso de tecnologia antes apresentada apenas em publicaes sobre tecnologias do futuro. O trabalho est segmentado da seguinte forma: O captulo 2 descreve os conceitos fundamentais da computao em nuvem. O captulo 3 descreve os tipos de virtualizao existentes, e de que forma elas esto inseridas no conceito deste trabalho. O captulo 4 descreve os passos necessrios para implementar e gerenciar um ambiente de nuvem, e descreve as consideraes a respeito da contribuio do trabalho. O captulo 5 conclui o trabalho.

12

CAPTULO 2

2 - COMPUTAO EM NUVEM

Computao em Nuvem um modelo emergente de computao, que se refere ao uso de tecnologia computacional (Computao), e desenvolvimento e distribuio de aplicaes baseadas em internet (Nuvem), onde recursos so dinamicamente virtualizados e dimensionados de forma escalvel1, para serem disponibilizados como servios na web. Uma caracterstica interessante da Computao em Nuvem o fato da mesma ocultar de desenvolvedores e usurios finais a complexidade de sua infra-estrutura, apresentando aos mesmos apenas uma interface para acesso aos sistemas. Usurios no precisam ter conhecimento ou at mesmo saber o que existe no interior da nuvem para que possam se beneficiar de seus recursos. Este modelo de utilizao pode ser melhor entendido na ilustrao 1, onde a rea identificada por 1 representa de forma abstrada o interior da infra-estrutura real, e a rea identificada por 2 representa o que percebido pelos usurios.

1 Passvel de aumento de capacidade de forma dinmica, de acordo com a necessidade.

13

Ilustrao 1: Acesso a recursos em nuvem

A Nuvem uma metfora para internet, baseada em como ela representada nos diagramas de redes de computadores. Ela uma abstrao da complexa arquitetura que representa. Tim O'Reilly, CEO2 da O'Reilly Media, definiu a computao em nuvem da seguinte forma: It's one of the foundations of the next generation of computing. It's a world where the network is the platform for all computing, where everything we think of as a computer today is just a device that connects to the big computer we're building. Cloud computing is a great way to think about how we'll deliver computing services in the future.

De acordo com esta definio, a computao em nuvem um dos fundamentos para a prxima gerao de computao, onde a rede ser a plataforma, e tudo o que se pensa hoje em termos de computador, ser apenas um dispositivo que se conectar ao grande computador que est sendo construdo. A computao em nuvem uma grande forma de pensar como sero distribudos servios computacionais no futuro.

2 CEO: Chief Executive Officer. Em portugus, "Diretor-executivo" ou "diretor-geral".

14 2.1 - COMPARAES

A Computao em Nuvem freqentemente confundida com os seguintes termos:

Computao em Grade (Grid Computing), que uma forma de

computao distribuda onde um Super e Virtual Computador composto de um cluster de computadores fracamente acoplados3, agindo em conjunto para realizar tarefas maiores. Grids tambm necessitam que aplicaes estejam em conformidade com suas interfaces de software (IBM Grid Literature, 2006). O modelo grid difere do modelo de nuvem, pois voltado a realizao de tarefas especficas, com incio e fim definidos, onde o modelo de nuvem (que pode utilizar em sua arquitetura a tecnologia de grid), voltado ao fornecimento contnuo de um servio.

Computao Utilitria (Utility Computing), que o empacotamento

e disponibilizao de recursos computacionais de processamento e armazenamento, atravs de um modelo de negcio de fornecimento de servios, similar ao modelo adotado no fornecimento de energia eltrica, onde consumidores pagam pela quantidade de recursos consumidos. Embora paream similares, as diferenas entre utility computing e cloud computing so grandes. Utility computing est relacionada ao modelo de negcio em que se baseia o fornecimento de servios, atravs da infra-estrutura de um provedor, onde normalmente o aumento de capacidade est atrelado ao upgrade de recursos. J Cloud computing, apesar de utilizar o mesmo sistema de cobrana e fornecimento de servios,
3 Computadores interligados atravs de uma rede.

15 possui habilidade para crescimento dinmico de capacidade, tornando possvel a alocao de recursos sob-demanda, em tempo real, permitindo que aplicaes que necessitem de processamento mais intensivo no se limitem a capacidade de uma determinada infraestrutura. (IBM Systems Journal, 2004)

Computao Autonmica (Autonomic Computing), que so sistemas

de computadores capazes de auto-gerenciamento. O conceito teve origem quando a preocupao com o aumento do poder de processamento deixou de ser to grande, e decidiu-se mudar a linha de pesquisa de forma a descobrir meios de construir computadores mais inteligentes, ao invs de poderosos. A abordagem utilizada para esta adio de inteligncia foi a construo de sistemas baseados em elementos artificiais inspirados em elementos biolgicos, permitindo assim que sistemas solucionem seus prprios problemas, dispensando a alocao de tempo e mo-de-obra necessrias a realizao de manutenes. (IBM Research Autonomic Computing, 2009) Em computao em nuvem, o crescimento dinmico de ambientes depende, entre outras coisas, que sistemas sejam capazes de perceber situaes e tomar decises por conta prpria.

De fato, muitas implementaes de Computao em Nuvem realizadas atualmente, dependem de grids, possuem caractersticas autonmicas e so cobradas como servios tradicionais.

Nota do Autor:4 Este trabalho utiliza o termo Servidor para remeter a servios e aplicaes. O termo, em nenhuma forma, est diretamente associado a mquinas ou computadores, e sim, as aplicaes que so executadas nos mesmos.

4 Servidor no mquina, e sim, um processo. (Simone Markenson, 2008)

16 2.2 - HISTRIA

Resumidamente, computao em nuvem um meio de distribuir recursos de TI como servios. Quase todos os recursos de TI podem ser distribudos como um servio de nuvem: aplicaes, poder de processamento, capacidade de armazenamento, networking, ferramentas de desenvolvimento, e at mesmo servios de comunicao. A computao em nuvem comeou a ser utilizada em larga escala por provedores de servios de internet como Google5, Amazon6 e outros, com a construo de suas prprias infra-estruturas. Assim, uma nova arquitetura emergiu: Massively Scaled Recursos de sistemas distribudos horizontalmente, abstrados como servios virtuais de TI, agrupados e gerenciados continuamente. Este modelo arquitetural foi apresentado por George Gilder, atravs do artigo The Information Factories7. Este artigo fala sobre uma arquitetura, onde os dados esto em sua maioria residentes em servidores em algum lugar na internet, e as aplicaes rodam tanto em servidores de nuvem quanto no browser do usurio. Tanto nuvens como grids so construdos para escalonar horizontalmente de forma muito eficiente. Ambos foram desenhados para resistir a falhas de ns ou elementos individuais, e so cobrados por uso. No entanto, normalmente grids processam trabalhos
5 Google App Engine: Com o Google App Engine, possvel criar aplicativos da web sobre os mesmos sistemas escalveis dos aplicativos do Google, atravs do fornecimento de um ambiente de aplicativos totalmente integrado, que facilita a criao de aplicativos escalveis, que crescem de um usurio para milhes, sem preocupaes com a infra-estrutura. <http://code.google.com/intl/pt-BR/appengine/> Acessado em 05 de abril de 2009. 6 Amazon EC2: Servio web, que fornece atravs de nuvem, capacidade computacional redimensionvel. desenhado de forma a tornar mais fcil para desenvolvedores o escalonamento de aplicaes web. <http:// aws.amazon.com/ec2/> Acessado em 05 e abril de 2009. 7 The Information Factories: Revista Wired, outubro de 2006. <http://www.wired.com/wired/archive/14.10/ cloudware.html> Acessado em 05 de abril de 2009.

17 em srie, com um ponto de incio e fim definidos, a despeito de servios em nuvem, que podem ser contnuos. Alm disso, nuvens expandem os tipos de recursos disponveis (armazenamento de arquivos, bancos de dados, e servios web), e aumentam a aplicabilidade da web para aplicaes empresariais. Ao mesmo tempo, o conceito de computao utilitria (utility computing), tornou-se foco em projetos e operaes de TI. Como Nick Carr observou em seu livro The Big Switch8, a infra-estrutura de servios de computao estava comeando a se tornar similar ao uso da eletricidade como servio fundamental. O livro em questo fala sobre como seria excepcional poder comprar recursos computacionais sob-demanda, pagando apenas pelo que fosse necessrio, quando necessrio. Para usurios finais, computao em nuvem significa que no existem custos com aquisio de hardware, gerenciamento de licenas ou upgrades de software, contratao de novos empregados ou consultores, locao de instalaes, e custos de capital de qualquer natureza. No existem custos implcitos, apenas uma contagem pelo consumo ou uma taxa fixa de inscrio. Utiliza-se somente o que for necessrio, e paga-se somente pelo que for utilizado. A computao em nuvem eleva o modelo de computao utilitria ao prximo nvel. uma forma nova e evoluda deste modelo, em que muitos tipos diferentes de recursos (hardware, software, armazenamento, comunicaes, etc.) podem ser combinados e recombinados on the fly9, para alcanar capacidades ou servios especficos, de acordo com a necessidade do cliente. Desde ciclos de CPU para projetos de HPC (high performance computing10) a altssima capacidade de armazenamento para backups de
8 The Big Switch <http://www.nicholasgcarr.com/bigswitch/> Acessado em 05 e abril de 2009. 9 O termo On The Fly significa em tempo de vo, ou seja, em tempo de execuo, sem a necessidade de paralisao para alterar configuraes. 10 High Performance Computing: Modelo de computao de alto desempenho, utilizado para processamento intensivo de dados, atravs de uma rede fracamente acoplada. Exemplo: Cluster.. <http://www.sun.com/servers/hpc/index.jsp> Acessado em 05 de abril de 2009.

18 grandes corporaes, a computao em nuvem pode, em tempo real, distribuir virtualmente qualquer capacidade de TI.

2.3 - ANATOMIA DA COMPUTAO EM NUVEM

Enquanto a primeira revoluo da internet viu o modelo three-tier11 ou ntier emergir como uma arquitetura geral, o uso de virtualizao em nuvens criou um novo conjunto de camadas: aplicao, plataforma e infra-estrutura. Estas camadas no encapsulam apenas recursos sob-demanda, mas tambm definem um novo modelo de desenvolvimento de aplicaes. Em cada camada de abstrao, existe uma mirade de oportunidades de negcio, no tocante a definio de servios que podem ser oferecidos em uma base pay-per-use12.

Ilustrao 2: Camadas da Computao em Nuvem

11 Three-tier: Modelo de programao em trs camadas, onde o software desenvolvido baseando-se em camadas de responsabilidades, e cada uma destas partes executada em um computador diferente (Ariel Ortiz Ramirez, Julho de 2000). <http://www.linuxjournal.com/article/3508> Acessado em 05 de abril de 2009. 12 Pay-per-use: Diretamente traduzido para o portugus: "pague para usar".

19 A ilustrao 2 representa a fundao das camadas existentes em uma arquitetura de nuvem. Como se pode perceber, necessrio que se possua uma infraestrutura slida, para que sob a mesma, possa estabelecer-se uma plataforma onde sero disponibilizadas aplicaes baseadas em nuvem.

2.3.1 - SOFTWARE COMO SERVIO (Software as a Service SaaS): Representada como Aplicao na ilustrao 1, a camada mais alta, e possui como caracterstica oferecer servio sob-demanda, em forma de uma aplicao completa, via multiarrendamento ou multitenancy (uma nica instncia de um software executa na infraestrutura e servidores de um operador de nuvem, e serve a mltiplas organizaes clientes tenants). Um exemplo de SaaS a empresa Salesforce.com. No entanto, existem outros, incluindo o Google Apps, que oferece servios bsicos de negcio, como o e-mail. As aplicaes da Salesforce.com precedem em alguns anos a definio de computao em nuvem. No entanto, esta empresa criou um outro segmento, o Force.com, e passou a operar em mais de uma camada de computao em nuvem. Este segmento se apresenta de forma a ser um ambiente amigvel de desenvolvimento de aplicaes, tambm conhecido como Plataforma como Servio.

2.3.2 - PLATAFORMA COMO SERVIO (Platform as a Service PaaS): Representada como Plataforma na ilustrao 1, a camada do meio, e prev o encapsulamento por abstrao de um ambiente de desenvolvimento de servios. Este ambiente abstrado normalmente , por exemplo, uma imagem Xen13 (adotado pela Amazon
13 Xen: um hypervisor, e suas imagens so mquinas virtualizadas. <www.xen.org> Acessado em 06 de abril de 2009.

20 Web Services) ou Vmdk14, contendo uma pilha bsica web, que pode ser, por exemplo, uma distribuio Linux, com um servidor web e um ambiente de programao (como Perl15 ou Ruby16). Ofertas de PaaS podem sustentar todas as fases do desenvolvimento e teste de softwares, e podem tambm ser especficas a uma rea particular, como gerncia de contedos. Um exemplo comercial deste tipo de oferta o Google App Engine, que serve aplicaes na infra-estrutura do Google. Servios PaaS como este podem prover uma grande flexibilidade. No entanto, podem ser limitados pela capacidade disponvel no provedor.

2.3.3 - INFRA-ESTRUTURA COMO SERVIO (Infrastructure as a Service IaaS): Representada como Infra-estrutura na ilustrao 1, a camada mais baixa de servio fornecido, e representa um meio de distribuir atravs da rede servios padronizados de armazenamento e capacidade computacional. Servidores, sistemas de armazenamento, switches, roteadores, e outros dispositivos so agrupados (atravs de tecnologia de virtualizao, por exemplo) de forma a serem capazes de lidar com tipos especficos de cargas. O exemplo comercial mais conhecido desta camada o Amazon Web

14 Vmdk (Virtual Machine Disk): um dos formatos de discos virtuais utilizados por mquinas abstradas pelos produtos da VMware <www.vmware.com> Acessado em 06 de abril de 2009. 15 Perl (Practical Extraction And Report Language): uma linguagem de programao estvel e multiplataforma, utilizada em aplicaes de misso crtica, onde destaca-se o uso para desenvolvimento de aplicaes web de todos os tipos. <http://www.perl.org/> Acessado em 05 abril de 2009. 16 Ruby: Linguagem dinmica, open source, com foco na simplicidade e na produtividade. Tem uma sintaxe elegante de leitura natural e fcil escrita. <http://www.ruby-lang.org/pt/> Acessado em 05 abril de 2009.

21 Services, cujos servios EC26 e S317 oferecem capacidade computacional e de armazenamento, respectivamente. Outro exemplo a Joyent <http://www.joyent.com/> acessado em 05 de abril de 2009, cujo produto principal uma linha de servidores virtualizados que fornecem uma infra-estrutura de alta escalabilidade sob-demanda, com a finalidade de rodar pginas web, incluindo aplicaes mais bem elaboradas, escritas em Ruby on Rails18, PHP19, Python20 e Java21. Existe tambm o GoGrid

<http://www.gogrid.com/> acessado em 06 de abril de 2009, que opera de forma semelhante este ltimo.

Ilustrao 3: Tipos de servios de nuvem e alguns ofertantes, sobre as camadas que tornam possvel a computao em nuvem. Autor: Cloudtrends.

17 S3: Simple Storage Service Servio de armazenamento para internet, destinado a tornar a computao escalar para web mais fcil para desenvolvedores. <http://aws.amazon.com/s3/> Acessado em 05 de abril de 2009. 18 Ruby on Rails: um framework de desenvolvimento web, gratuito e de cdigo aberto. <http://www.rubyonrails.pro.br/> Acessado em 05 de abril de 2009. 19 PHP (Hypertext Preprocessor): uma linguagem de programao amplamente utilizada, voltada ao desenvolvimento de contedo dinmico para web. <http://php.net/> Acessado em 05 de abril de 2009. 20 Python: uma linguagem de programao de alto nvel orientada a objetos, que pode ser utilizada para o desenvolvimento de vrios tipos de aplicaes. <http://www.python.org/> Acessado em 05 de abril de 2009. 21 Java: Sua versatilidade, eficincia, portabilidade de plataforma e segurana fazem dela a tecnologia ideal para a computao em rede. <http://java.com/pt_BR/about/> Acessado em 05 de abril de 2009.

22 A ilustrao 3 exemplifica, na cor azul, os tipos de servios de nuvem apresentados e algumas de suas operadoras. Na cor verde, as camadas tecnolgicas que tornam a computao em nuvem possvel. Nesta ilustrao, tm-se uma viso mais clara da hierarquia tecnolgica que d origem a computao em nuvem.

2.4 TIPOS DE IMPLEMENTAO DA NUVEM

Uma companhia pode escolher utilizar um provedor de servios de nuvem ou construir seu prprio. Esta possibilidade deu origem a alguns conceitos, que possuem vantagens distintas: (Sun, 2009)

2.4.1 - NUVENS PBLICAS: So geridas por terceiros, e tarefas de muitos clientes diferentes compartilham recursos da infra-estrutura existente no interior da nuvem. Usurios finais no possuem viso sobre as tarefas de outros, e estas por sua vez, podem estar em execuo no mesmo recurso, ao mesmo tempo. Esta a forma tradicional de computao em nuvem, e tambm conhecida como nuvem externa.

2.4.2 - NUVENS PRIVADAS: So uma boa opo para companhias que lidam com proteo de dados e necessidades relacionadas ao nvel de servio. Elas so uma infraestrutura sob-demanda, mantidas por um nico cliente, que controla quais aplicaes iro executar, e onde. Neste modelo privado, o cliente possui o servidor, a rede, os discos, e

23 pode decidir quais usurios estaro autorizados a utilizar a infra-estrutura. Esta forma de computao em nuvem tambm conhecida como nuvem interna. Mesmo os que se sentirem compelidos a construir uma arquitetura de nuvem privada, provavelmente sentiro a necessidade de executar tambm aplicaes no espao de uma nuvem pblica. Esta necessidade d origem a um outro conceito: o de Nuvem Hbrida.

2.4.3 - NUVENS HBRIDAS: Combinam os modelos de nuvem pblica e privada. Neste modelo, existem partes da infra-estrutura que so de uso exclusivo e partes que so de uso compartilhado. Nuvens hbridas pretendem oferecer escalonamento externo e sobdemanda, ao custo de ser necessrio lidar com a complexidade existente em determinar como aplicaes sero distribudas por estes ambientes diferentes. Embora empresas possam se sentir atradas pelas promessas de uma nuvem hbrida, acredita-se que esta opo, pelo menos inicialmente, ser reservada apenas a aplicaes aptridas, que no necessitaro de bancos de dados complexos ou esquemas de sincronizao.

2.5 - APROVEITAMENTO DA NUVEM

Computao em nuvem no significa apenas que um usurio possa carregar em uma nuvem pblica imagens de mquinas contendo toda sua pilha de software, como no caso da Amazon Web Services. Existem vrios caminhos diferentes para explorar esta infra-estrutura, juntamente com o ecossistema de novos modelos de negcio.

24 2.5.1 - USANDO A NUVEM: O nmero e qualidade de ofertas pblicas de servios baseados em nuvem crescente (Johnm Willis, 2008). Usar uma nuvem freqentemente a melhor opo para iniciantes, projetos de pesquisa, desenvolvedores de web 2.0 ou apenas experimentadores, que desejem uma maneira simples e de baixo custo para iniciar. Quando se iniciante em internet, recomendvel que se mantenha os custos com TI os menores possveis. Esta exatamente a finalidade de uma nuvem. A ilustrao 4 exemplifica alguns dos ofertantes de servios de nuvem.

Ilustrao 4: Ofertas de servios de nuvem. Autor: Dion Hinchcliffe.

2.5.2 - ALAVANCANDO A NUVEM: Normalmente, empresas esto utilizando nuvens pblicas para funes especficas ou gerenciamento de picos de carga. A nuvem uma alternativa para:

Teste e Desenvolvimento: Este provavelmente o caso mais

interessante para empresas (e no apenas desenvolvedores iniciantes). No h a necessidade de comprar computadores para iniciar um determinado projeto, sem saber se o mesmo ser aprovado.

25

Descarga Funcional: Pode-se utilizar a nuvem para gerenciar picos de

carga especficos. Como exemplo, a empresa SmugMug22 processa a miniaturizao de imagens atravs de um processo batch (em seqncia) na nuvem. Segue um pronunciamento de Don MacAskill, CEO da SmugMug:

We really don't want to operate datacenters anymore. We'd rather spend our time giving our customers great service and writing great software than managing physical hardware.

Este pronunciamento expressa a vontade do diretor em focar seu tempo no desenvolvimento de melhores aplicaes para os clientes, ao invs de desperdi-lo com administrao de equipamentos. Antecipao: Nuvens oferecem uma nova opo para gerenciar picos

de carga ou antecipar picos para servios em demanda. Esta uma opo muito atraente para empresas. No entanto, potencialmente um dos mais difceis casos de uso, pois o sucesso dependente do estado total da aplicao, e tambm da interdependncia com outros conjuntos de dados que podem necessitar serem replicados e balanceados entre dois sites.

Experimentao: No ser mais necessrio realizar o download de

demos de novos softwares, para depois instal-los, licenci-los e s ento poder test-los. No futuro, a avaliao de softwares pode ser realizada dentro da nuvem, antes que licenas e suporte precisem ser comprados.

22 SmugMug: Servio de compartilhamento de vdeos e fotos. <http://www.smugmug.com/> Acessado em 05 de abril de 2009.

26 2.5.3 - CONSTRUINDO A NUVEM: Apesar dos benefcios econmicos da computao em nuvem, necessria muita cautela na adoo da plataforma, pois deve-se antes de qualquer movimento, assegurar a aplicao rigorosa de polticas de segurana. Uma vez estabelecidos estes padres, pode-se iniciar a migrao e posteriormente a homologao de sistemas empresariais maduros em um ambiente de nuvem privada, de forma a avaliar e convencionar os nveis ideais necessrios de capacidade computacional.

2.6 - CARACTERSTICAS

Sero examinadas agora algumas caractersticas que fazem da nuvem um ambiente atrativo.

2.6.1 - INDEPENDNCIA DE DISPOSITIVO E LOCAL: Permite que usurios acessem sistemas utilizando um navegador web, independentemente de sua localizao e dispositivo utilizado, tais como PCs, celulares, Thinclients23, etc. Sua infra-estrutura offsite24 (normalmente fornecida por terceiros) e acessada pela internet, tornando possvel o acesso a partir de qualquer lugar do mundo.

23 Thinclient: um computador cliente de uma rede modelo cliente-servidor, que possui poucos ou nenhum aplicativo instalados, de forma a depender de um servidor central para o processamento de dados. 24 Off-site: Tomando lugar ou localizado longe do local original, com a finalidade de realizar uma determinada atividade. Ex: Uma estao de tratamento de resduos. <http://www.answers.com/topic/offsite> Acessado em 05 de abril de 2009.

27

Ilustrao 5: CherryPal C114. Autor: Green Corporation.

A ilustrao 5 mostra um dispositivo para utilizao de pilhas web, que podem ser sistemas operacionais completos.

2.6.2 - MULTI-LOCAO: Possibilita o compartilhamento de recursos e distribuio de custos entre um grande grupo de usurios, tornando possvel:

Centralizao da infra-estrutura em reas de baixo custo; Aumento da capacidade de gerenciamento de picos; Melhor aproveitamento e eficincia de sistemas ociosos; Aumento da Confiabilidade atravs do uso de mltiplos sites

redundantes (continuidade do negcio e recuperao de desastres);

Aumento da Escalabilidade atravs de fornecimento sob-demanda, em

tempo real, de recursos computacionais;


Aumento da Segurana devido tratamento cauteloso dos dados; Aumento da Sustentabilidade, pois com a melhor utilizao de recursos,

28 menor a energia consumida com operao e resfriamento de mquinas, diminuindo assim a emisso de carbono.

2.7 - MITIGAO DE RISCOS

Apesar da evoluo da tecnologia de computao em nuvem, possvel que com o advento da crise financeira global iniciada no ano de 2008, empresas fiquem receosas em adot-la. provvel que a questo da segurana neste tipo de ambiente seja um dos principais motivos causadores de preocupaes quando se pensa em adotar a plataforma, pois a grande maioria dos administradores de rede esto acostumados a estarem prximos a seus ambientes. Uma outra questo a ser considerada a disponibilidade dos dados. recomendvel que antes de se contratar uma infra-estrutura de nuvem seja feita uma anlise cautelosa na Poltica de Segurana do provedor do servio. A empresa Gartner25, que possui foco em consultoria e anlise tecnolgica, exemplifica alguns itens que devem ser discutidos em detalhes com o fornecedor da soluo, e quais as informaes devem ser solicitadas. Esta lista pode ser visualizada abaixo. 1. Acesso Privilegiado por Usurio: Questionar sobre quem possuir acesso especializado aos dados, e tambm sobre a contratao e gerncia de tais administradores;
25 Gartner: Seven cloud-computing security risks <http://www.infoworld.com/d/security-central/gartnerseven-cloud-computing-security-risks-853> Acessado em 05 de abril de 2009.

29 2. Conformidade da Concesso: Certificar-se de que o fornecedor est disposto a se submeter auditorias externas e certificaes de segurana;

3. Locao de Dados: Consultar se o provedor permite algum nvel de controle sobre a locao dos dados;

4. Segregao de Dados: Certificar-se de que existe uso de criptografia em todos os estgios da migrao e tambm da operao, e que os esquemas criptogrficos tenham sido desenhados e testados por profissionais experientes;

5. Recuperao: Saber em quanto tempo dados extraviados por uma situao de desastre podem ser recuperados, e tambm se ser possvel realizar uma restaurao completa do ambiente;

6. Suporte Investigativo: Questionar se o fornecedor dispe de profissionais qualificados para investigar a ocorrncia de possveis atividades imprprias ou ilegais;

7. Termo de Longa Viabilidade: Deixar claro o que acontecer com os dados caso a companhia abandone o negcio, e tambm como estes sero devolvidos e em qual formato.

Como se pode perceber pelos itens acima, de extrema importncia levar em considerao a segurana do ambiente, pois este novo conceito de computao em nuvem pode causar a impresso de que esta plataforma uma soluo definitiva para

30 alguns dos problemas de infra-estrutura enfrentados atualmente. Assim, vale ressaltar que deve existir uma grande preocupao com as decises e aes que devem ser executadas em caso de desastre. Devido ao disposto, recomendvel que alm dos itens sugeridos faa-se uso de tecnologias que garantam a consistncia e a disponibilidade dos dados das empresas. Algumas destas tecnologias podem ser vistas no Captulo 4.

31

CAPTULO 3

3 - VIRTUALIZAO

Embora as tecnologias fundamentais da computao em nuvem como escalabilidade horizontal e computao distribuda j estejam disponveis h algum tempo, a Virtualizao (abstrao de recursos computacionais) a Pedra Angular26 da tecnologia para todas as arquiteturas de nuvem. Com a capacidade para virtualizar computadores, dispositivos de armazenamento, desktops e aplicaes atravs de um sistema operacional abstrado por um hypervisor27, um amplo vetor de recursos de TI pode ser alocado sobdemanda.

26 A Pedra Angular: Salmo 118:22 A pedra angular que os construtores rejeitaram, veio a ser posta como principal pedra. 27 Hypervisor: Permite que um computador rode mltiplos sistemas operacionais simultaneamente. <http:// www.vmware.com/interfaces/paravirtualization.html> Acessado em 06 de abril de 2009.

32

Ilustrao 6: Virtualizao Autor: Vmware.

A ilustrao 6 exemplifica como computadores so virtualizados. Uma camada de virtualizao adicionada entre o hardware e o sistema operacional, e permite que mltiplos sistemas operacionais executem concorrentemente como mquinas virtuais, em um nico computador, compartilhando e particionando dinamicamente os recursos fsicos (processador, memria, rede e armazenamento). O crescimento nos ltimos anos da disponibilidade ubqua de redes de banda larga a custos acessveis igualmente crtico. O que outrora estava disponvel apenas a uma pequena porcentagem de usurios de internet, agora oferecido maior parte do mundo. A banda larga permite que massivos recursos de computao e dados sejam acessados atravs de um browser. Recursos virtualizados podem estar em qualquer lugar na nuvem, podendo ser acessados remotamente por programadores ou usurios finais. Adicionalmente, atravs de tecnologias capacitantes, a computao em nuvem pode remeter a capacidades de TI em uma escala absolutamente sem precedentes. Alguns exemplos destas tecnologias so:

33

Sistemas de Arquivo sofisticados, a exemplo do ZFS28 da Sun que pode suportar uma capacidade virtualmente ilimitada de

Microsystems,

armazenamento, garantir a integridade e gerncia de dados, e at gerar clones de discos que estejam em operao.

Padres de Arquitetura, que permitem o desenvolvimento acelerado

de estruturas de nuvem super-escalares, atravs do fornecimento de solues redundantes para problemas comuns.

Novas Tcnicas, voltadas a gerncia de dados estruturados, no-

estruturados e semi-estruturados, podem fornecer uma melhoria radical no processamento intensivo de dados.

Imagens de Mquinas (snapshots), podem ser instantaneamente

mobilizadas, simplificando e acelerando dramaticamente a alocao de recursos, aumentando assim a agilidade e responsividade de operaes de TI.

Ilustrao 7: Recursos fsicos migrados para Nuvem Autor: Gene Smith 28 ZFS: The Solaris ZFS offers a dramatic advance in data management with an innovative approach to data integrity, tremendous performance improvements, and a welcome integration of file system and volume management capabilities. <http://www.sun.com/software/solaris/zfs_learning_center.jsp> Acessado em 05 de abril de 2009.

34 A ilustrao 7 simboliza a migrao de arquiteturas fsicas para arquiteturas de nuvem. Nesta imagem, so usados como recursos para implementao da nuvem servidores blade e storages.

Virtualizao a pedra angular em concepo tcnica para todas as arquiteturas de nuvem. Na computao em nuvem, refere-se primariamente a virtualizao de plataforma ou abstrao de recursos fsicos de TI, das pessoas e aplicaes que os usam. Ela permite que servidores, dispositivos de armazenamento, e outros hardwares sejam tratados como um grupo de recursos ao invs de sistemas discretos, fazendo com que estes recursos possam ser alocados sob-demanda. Na computao em nuvem, existe o interesse em tcnicas como paravirtualization, que permite que um nico servidor seja tratado como mltiplos servidores virtuais, e clustering, que permite que mltiplos servidores sejam tratados como um nico servidor. Como um meio de encapsulamento de recursos fsicos, a virtualizao resolve vrios dos desafios do ncleo de gerentes de data-centers, e traz ainda algumas vantagens especficas, incluindo:

Altas taxas de utilizao: Anteriormente a virtualizao, estimava-se

que a taxa mdia de utilizao da maioria das mquinas e dispositivos de armazenamento em data-centers empresariais era inferior a 50% da capacidade disponvel, e que taxas entre 10% e 15% eram comuns. A ilustrao 8 exemplifica esta estatstica. Atravs da virtualizao, cargas podem ser encapsuladas e transferidas para sistemas ociosos ou subutilizados o que significa que sistemas j existentes podem ser consolidados, e que a compra de hardware adicional pode ser adiada ou evitada.

35

Baixo consumo de CPU e RAM, mesmo com 5 mquinas abstradas

Melhor Aproveitamento de Recursos

Ilustrao 8: Caso real de consolidao de servidores: Baixo consumo de CPU justifica virtualizao. Autor: Azul Seguros

Consolidao de recursos: A virtualizao permite consolidar

mltiplos recursos de TI. Alm da consolidao de servidores e armazenamento, ela prov uma oportunidade para consolidar a arquitetura dos sistemas, a infra-estrutura de aplicaes, bancos de dados, interfaces, redes, estaes de trabalho, e at processos do negcio, resultando em diminuio de custos e aumento de eficincia.

36

Menor consumo de energia: O custo da eletricidade necessria para

implementar data-centers empresariais est ascendendo. Estima-se (Sun Microsystems, 2009) que para cada dlar gasto em hardware para computadores servidores de aplicaes, um dlar adicional gasto em energia (incluindo o custo para rodar e resfriar mquinas). Usar a virtualizao para consolidar servios torna possvel diminuir o consumo total de energia, e conseqentemente o de capital.

Economia de espao fsico: O aumento da quantidade de computadores

servidores continua sendo um problema srio na maioria dos data-centers, e a expanso deste ltimo nem sempre uma opo disponvel, pois os custos de construo so sempre muito elevados. A virtualizao pode aliviar esta tenso, pois permite consolidar muitos sistemas virtuais em poucos sistemas fsicos.

Recuperao de desastres: A virtualizao pode aumentar as taxas de

disponibilidade de servios em todas as reas, fornecendo novas opes em solues de recuperao de desastres, garantindo assim a continuidade do negcio.

Custos reduzidos de operao: Acredita-se que existe uma proporo

de 8 para 1, em termos de despesas com manuteno e aquisio de nova infra-estrutura, respectivamente. A virtualizao pode mudar a racionalizao mquinas/administrador, reduzindo o total de carga administrativa necessria, diminuindo assim custos operacionais.

A ilustrao 8 mostra a janela de administrao bsica de um sistema VMWare Server (VMWare, 2009), que um dos produtos de virtualizao disponveis no

37 mercado. Como se pode perceber, os hosts consolidados (virtualizados), bem como o computador em que ocorre a virtualizao, consomem muito pouco processamento, dando a viso clara de como recursos podem ser melhor aproveitados atravs do uso desta tcnica.

3.1 - VIRTUALIZAO DE SISTEMAS OPERACIONAIS

O uso de Nveis de Virtualizao ou Particionamento de Recursos29 (IBM, 2008) em arquiteturas de nuvem pode ajudar a resolver alguns dos problemas de segurana, privacidade e questes regulatrias existentes na mesma, e que atrasam sua adoo.

3.2 - VIRTUALIZAO DE PLATAFORMA

Permite que sistemas operacionais distintos (Linux, Windows, Solaris, etc.) e suas respectivas aplicaes executem em um determinado sistema. Existem dois modelos bsicos:

Virtualizao Completa Total simulao de hardware: Um

29 Particionamento de Recursos: Subconjunto de recursos de hardware, virtualizados como computadores independentes, onde uma mquina fsica pode ser particionada em mltiplas mquinas lgicas.

38 computador completo, com seus respectivos componentes (disco, rede, memria, vdeo, etc.) emulado atravs da implementao de Hypervisors Tipo 2, que executam no topo de um sistema operacional tradicional;

Paravirtualizao Oferece um modelo similar do hardware

subjacente, compartilhando recursos fsicos do mesmo, atravs da implementao de Hypervisors Tipo 1, que executam diretamente no hardware.

Existem vantagens e desvantagens em cada um dos modelos de virtualizao de plataforma. Normalmente, quanto mais abstrado do hardware subjacente o sistema operacional, menos caractersticas especficas podem ser acessadas. O aumento da abstrao tambm pode aumentar a probabilidade de ocorrerem limitaes e redues na performance. Por outro lado, como se pode observar na ilustrao 9, quanto menos abstrado o sistema operacional, mais caractersticas especficas podem ser acessadas, e menor a probabilidade de ocorrerem limitaes e redues de performance. No entanto, podem ocorrer potenciais problemas de compatibilidade.

39

Ilustrao 9: Relao entre Funcionalidade e Abstrao. Autor: Sam Johnstone

3.3 - VIRTUALIZAO DE REDE

Tcnicas de Balanceamento de Carga so um constante em computao de nuvem, pois a medida que se escalam os sistemas fsicos e virtuais, igualmente escala-se a complexidade de gerenciar os picos de carga que so gerados na distribuio dos servios. Balanceadores de carga agrupam mltiplos computadores e servios atrs de um endereo IP virtual. Eles realizam a distribuio dos recursos de acordo com as requisies aos servios, e fornecem resistncia automtica a falhas quando estas ocorrem em um dos ns da arquitetura. Enquanto balanceadores baseados em hardware superam em performance os balanceadores baseados em software, sua flexibilidade sempre limitada. Engenheiros terminaram por fim escrevendo softwares que interagem com o hardware

40 atravs de interfaces sub-otimizadas, ou ainda atravs do uso de um grande nmero de computadores para resolver o problema em questo. Um desafio significativo em redes de computao em nuvem no apenas o fornecimento de uma interface individual e virtual de rede para um dado ambiente, mas tambm a necessidade crescente de infra-estruturas de nuvem que ofeream data-centers privados mais complexos, e que provisionem um conjunto de diferentes papis com interconexes lgicas entre si.

3.4 - VIRTUALIZAO DE APLICAES

Existe tambm a figura dos containers30 dentro da nuvem. A tecnologia de container web implementada na nuvem impacta diretamente na produtividade e flexibilidade do desenvolvedor. O container web a parte da aplicao servidora que gerencia Servlets31, arquivos JSP32, e outros componentes de 3 camadas (web-tier). Atualmente, a maior parte dos ofertantes de computao em nuvem concentram-se em virtualizao de plataforma, e o desenvolvedor escolhe qual sistema operacional ser utilizado como plataforma de desenvolvimento. No entanto, com o aumento da quantidade de nuvens pblicas, provavelmente nuvens privadas iro oferecer

30 Container: Elemento de software que implementa mltiplos recursos, aumentando a flexibilidade de desenvolvimento de aplicaes. <http://java.sun.com/webservices/containers/index.html> Acessado em 05 de abril de 2009. 31 Servlet: Mecanismo simples e consistente para expandir as funcionalidades de um servidor web. <http://java.sun.com/products/servlet/index.jsp> Acessado em 05 de abril de 2009. 32 JSP (JavaServer Page): Fornece um meio rpido e simples de criar contedo web dinmico <http://java.sun.com/products/jsp/> Acessado em 05 de abril de 2009.

41 abstraes de ambientes de programao de nvel mais elevado. Espera-se que com o passar do tempo, o nvel de abstrao das interfaces para desenvolvedores avance, ao passo que novas funcionalidades agreguem-se plataforma.

Ilustrao 10: Imagem retirada do filme The Matrix. Autores: Andy Wachowski e Larry Wachowski

Off-Topic: A ilustrao 10 refere-se a uma idia curiosa sobre virtualizao, que foi utilizada no cinema. No filme The Matrix (1999), seres humanos eram virtualizados.

42

CAPTULO 4

4 - IMPLEMENTANDO UM AMBIENTE DE NUVEM

Padres abertos so crticos para o crescimento da computao em nuvem, e softwares livres fornecem a fundao para muitas implementaes desta tecnologia. Este trabalho no se destina a ser um manual de instalao de sistemas operacionais. Por isso, sero cobertos aqui apenas os pontos relevantes de configurao destes. No entanto, a instalao e configurao das aplicaes ser apresentada de forma mais detalhada, pois esto diretamente ligadas a materializao do ambiente. Todos os softwares e sistemas utilizados neste trabalho so de cdigo aberto ou livres de licenas, no constituindo seu uso infrao de distribuio no autorizada ou violao de copyright. Os scripts apresentados foram desenvolvidos pelo autor, e podem ser utilizados e alterados livremente, desde que sejam mantidos os crditos originais. Ser apresentada a seguir uma breve descrio das aplicaes e ferramentas utilizadas nesta implementao.

43 4.1 - SISTEMAS UTILIZADOS

OpenSolaris: Verso open source do sistema Solaris, utilizado

tipicamente em grandes empresas. Possui alta tolerncia a cargas e falhas, alm de grande performance, e conta com recursos nativos de virtualizao e alta disponibilidade. (Sun Microsystens, 2009)

Slackware: Distribuio Linux rpida e estvel, que apesar do uso ser

relativamente fcil, adotada por administradores mais experientes. (Volkerding, 2009)

Debian: Distribuio Linux de fcil administrao, que conta com

milhares de softwares disponveis em sua base. (Debian GNU/Linux, 2009)

ViCompress: um proxy de cache para o protocolo HTTP, que possui

suporte a compresso de dados. Open source e extremamente flexvel, utilizado para reduzir o consumo de banda e aumentar os tempos de resposta em aplicaes que rodam no protocolo HTTP. Possui a habilidade para compactar pginas de texto, fazendo com que a quantidade de dados a ser transferida seja reduzida, minimizando assim o consumo do link de dados, possibilitando desta forma transferncias mais rpidas. (ViSolve, 2009)

Apache: Servidor web (HTTP/HTTPS) open source de grande robustez.

O objetivo de seus desenvolvedores fornecer um servidor seguro, eficiente e expansvel, que esteja em conformidade com o padro HTTP. o servidor web mais popular da Internet desde Abril de 1996. (The Apache Software Foundation, 2009)

44

OpenSSL: Conjunto de ferramentas open source, robustas e completas

em funcionalidades, que fornecem uma forte biblioteca criptogrfica voltada a implementar as criptografias SSL (Secure Sockets Layer) v2/v3 e TLS (Transport Layer Security) v1, o que possibilita realizar comunicaes seguras. (OpenSSL Project, 2009)

PHP: Linguagem de programao amplamente utilizada, voltada ao

desenvolvimento de aplicaes web. A figura 11 exemplifica o crescimento da adoo da linguagem PHP (Hypertext Preprocessor) nos ltimos anos. (PHP, 2009)

Ilustrao 11: Adoo da linguagem PHP nos ltimos anos. Autor: PHP

Netfilter (IpTables): Firewall nativo em sistemas Linux capaz de operar

nos modos stateless packet filtering e statefull packet filtering. capaz ainda de realizar traduo de endereos de rede (NAT) e outras funes avanadas, como filtragem por strings, que podem ser lidas de dentro de cabealhos. (Netfilter, 2009)

Net-SNMP: Conjunto de aplicaes open source, que implementam os

protocolos SNMPv1, SNMPv2c e SNMPv3, utilizados na gerncia de sistemas e ambientes de rede. (Net-SNMP, 2009)

45

DjbDNS: Servidor DNS rpido e seguro, que segundo seu

desenvolvedor, imune aos tipos de ataque desferidos contra servidores convencionais. Existe uma recompensa em dinheiro para o primeiro que descobrir uma falha de segurana neste software. (D.J.Bernstein, 2009)

Nagios: Ferramenta bem conhecida para gerncia de redes. Possibilita a

monitoria de servios, mquinas e ativos de rede. As informaes obtidas podem ser utilizadas em planejamento pr-ativo, identificao e resoluo rpida de problemas. Pode ser customizada de forma a atender qualquer tipo de monitoramento. (Nagios, 2009)

Cacti: Ferramenta de fcil uso complementar ao Nagios. Gera e

armazena grficos de monitoramento, que so administrados atravs de uma interface intuitiva. Muito robusto, capaz de monitorar redes com centenas de ativos. (Cacti, 2009)

Centreon: Ferramenta que roda sob a plataforma Nagios. Atravs de sua

interface, facilita a configurao e consolida o uso deste sistema. (Centreon, 2009)

MySQL: Banco de Dados open source muito popular devido a sua

consistncia, desempenho, confiabilidade e fcil operao. (MySQL, 2009)

EyeOS: Aplicao que simula um sistema operacional atravs de

tecnologias web. (EyeOS, 2009)

OpenOffice:

Sute

open

source

completa

de

escritrio.

Seu

desenvolvimento j alcanou um grau de maturidade que o torna comparvel s sutes

46 comerciais. (OpenOffice, 2009)

Scripts: Desenvolvidos para facilitar a instalao, aumentar a segurana,

suportar a integrao, a gerncia e a manuteno da arquitetura apresentada.

4.2 - DIAGRAMA DE REDE

Para a implementao prtica deste trabalho, prope-se o diagrama de rede exibido na ilustrao 12.

Ilustrao 12: Diagrama de rede proposto para realizao do trabalho.

47 1) Cloud Server: Principal fornecedor de servios deste projeto. Foi escolhida a plataforma OpenSolaris para seu desenvolvimento, devido ser uma plataforma estvel, robusta e de grande performance, alm de possuir ferramentas nativas para virtualizao e expanso dinmica de recursos. Como algumas das preocupaes so a escalabilidade e a disponibilidade do ambiente, a plataforma em questo apresentou-se como melhor alternativa.

2) Banco de Dados: Foi utilizada a aplicao MySQL como servidor de banco de dados, devido a sua grande popularidade, consistncia, performance, fcil operao e manuteno.

3) Gerncia: Atravs das aplicaes Nagios, Cacti e Centreon, realiza o monitoramento ostensivo do ambiente, bem como a coleta de informaes teis, como consumo de processamento, disco e banda de rede. O monitoramento permite saber o estado dos hosts (se os mesmos esto online e com tempo de resposta adequado), e dos servios (se os mesmos esto rodando e respondendo de forma otimizada). A coleta das informaes citadas permite que seja realizado um planejamento pr-ativo de crescimento da arquitetura, bem como identificar onde e quando falhas ocorrerem, atravs de avisos e alarmes configurados com base em thresholds33, afim de diminuir o downtime34 e agilizar a resoluo de problemas.

33 Valores mnimos tolerveis, que representam o estado normal de um determinado sistema. A excedncia destes valores significa que um sistema est operando fora de suas especificaes, e que uma ao corretiva deve ser empregada, afim de restabelecer o estado normal do mesmo, evitando dificuldade ou instabilidade no acesso ao recurso. 34 Quantidade de tempo que um determinado host ou servio permanece indisponvel.

48 4) Backup Server: Servio responsvel por realizar e manter cpias de segurana de informaes sensveis, como dados de usurios, configuraes de sistemas e informaes armazenadas em banco de dados. A implementao deste servio permite que sejam recuperadas em pouco tempo informaes necessrias a reconstruo parcial ou total de ambientes, bem como dados que eventualmente possam ser extraviados pelos usurios.

5) Firewall + Proxy Reverso + VPN: Fornece a segurana fundamental do ambiente, bem como evita o processamento redundante de informaes, alm de garantir um meio seguro para administrao dos sistemas. A segurana implementada atravs da utilizao do Netfilter (IpTables), que atravs da criao de regras de acesso, permite a comunicao entrante oriunda de ambiente externo apenas para as aplicaes disponibilizadas publicamente. O proxy reverso, como encontra-se antes do Cloud Server, intercepta as requisies HTTP e HTTPS, evitando que este tenha que processar e responder novamente a uma solicitao que j tenha sido realizada e armazenada em cache anteriormente, como o acesso a uma determinada pgina ou imagem. Este servio aumenta a confiabilidade do ambiente, pois faz com que o cloud server processe apenas requisies teis, diminuindo assim o desperdcio de ciclos de CPU. A VPN fornece um nvel a mais de segurana, pois disponibiliza um canal seguro (criptografado) para que os administradores realizem intervenes mais avanadas. Ela permite que os sistemas sejam acessados e configurados remotamente, apenas por pessoal autorizado.

6) DNS Server: Servio que associa endereos IP a FQDN (full qualified domain name), que so nomes de domnio qualificados, como por exemplo, univercidade.br. fundamental para que os servios possam ser acessados atravs da internet e da intranet. Foi escolhida a aplicao DjbDNS, pois possui excepcional

49 desempenho e segurana. Segundo seu desenvolvedor, imune aos ataques conhecidos, como por exemplo, envenenamento de cache de zonas. Ainda segundo seu desenvolvedor, devido a arquitetura modular da aplicao, onde 3 programas realizam tarefas especficas (diferentemente de outras aplicaes monolticas, onde apenas uma aplicao realiza todo o trabalho), um simples computador 486 capaz de gerenciar mais de 500 domnios, com um desempenho satisfatrio. A confiana de seu mantenedor em seu trabalho to grande que h uma recompensa em dinheiro para quem apontar falhas de segurana na aplicao.

Nota: De acordo com a ilustrao 12, o ambiente proposto apresenta o uso de um Roteador, VLANs e mquinas independentes, responsveis pelos servidores. A idia inicial era utilizar um roteador virtual, emulado com a aplicao Dynamips (Christophe Fillot, 2009), atravs da interface GNS3 (Jeremy Grossmann e Xavier Alt, 2009). No entanto, devido ao baixo desempenho e limitaes deste emulador, o mesmo no pde ser utilizado, pois comprometeria a qualidade do projeto. Outras limitaes foram a disponibilidade de ativos de rede (switch gerencivel, para criao de VLANs),

capacidade de processamento e quantidade de memria (para execuo de mquinas virtuais). Devido a isso, foi necessrio o acmulo de funes, se fazendo necessrio executar mais de um servidor por mquina virtual, onde o ideal seria que cada mquina ficasse responsvel por apenas um servidor. Porm, a qualidade do resultado final no ficou comprometida com esta prtica.

50 4.3 INSTALAO DOS SISTEMAS

As informaes apresentadas a seguir no compreendem a nica forma possvel para a materializao do ambiente proposto. Elas expressam apenas o ponto de vista do autor, e foram elaboradas levando-se em considerao os limites dos recursos disponveis durante a realizao do projeto. Devido a estas limitaes, ser implementada apenas a parte que se acredita ser a mais nobre. Isto significa que os servios de VPN e Backup no sero implementados, alm de que alguns processos tenham que ser acumulados em um mesmo host, conforme descrito na tabela a seguir:

NR 1 2 3

FUNO firewall cloudserver gerencia

NOME DE HOST alfa beta gama

SERVIOS Firewall, Proxy Reverso e DNS Servios e Aplicaes Web Nagios, Cacti e Banco de Dados

Apesar do disposto, foram observadas boas prticas de segurana e configurao das aplicaes envolvidas. Os nomes de host praticados foram escolhidos com base em orientao do professor Paulo Mendona (Segurana de Redes) em sala de aula, de que deve-se evitar utilizar nomes cognitivos para mquinas importantes em um ambiente de rede. Por conveno, sero adotadas as seguintes nomenclaturas para os segmentos de rede utilizados: DMZ: rea onde sero fornecidos servios publicamente. LAN: rea de trfego interno apenas.

51 4.3.1 - FIREWALL + PROXY REVERSO + DNS: Sistemas de firewall so fundamentais para a segurana de ambientes de rede, pois previnem o acesso no autorizado a estas ou a servios especficos, atravs da criao de permetros de segurana (Paulo Mendona, 2009). Este trabalho aborda a implementao de um Firewall Statefull, pois como est sendo levada em considerao a segurana do ambiente, acredita-se que este modelo seja o mais adequado. Tambm ser feito uso de um proxy reverso, que ficar localizado antes do servidor web, e funcionar realizando cache de pginas e arquivos acessados com maior freqncia, evitando desta forma que o servidor web desperdice recursos com tarefas redundantes, realizando na maior parte do tempo operaes mais relevantes. O servio DNS, por ser sensvel, foi escolhido com cautela, pois est sendo buscada nesta implementao a maior performance e segurana possvel. Todos estes ficaro alocados em uma mesma mquina, que no tocante a hardware, prope-se que possua 3 interfaces de rede, para que se possam acomodar todos os segmentos da mesma. Dever ainda, possuir um disco de 20Gb e 256Mb de memria RAM. Para sistema operacional, ser utilizado o Slackware 12.2, sem ambiente grfico, levando-se em considerao os seguintes detalhes:

Particionamento de Disco: Do total disponvel, 25% devero ser

alocados para a partio root (/), 25% para a partio usr, 10% para a partio swap e o restante para a partio var. O filesystem utilizado dever ser o EXT4, devido sua consistncia e desempenho, proporcionados por tcnicas como Alocao Tardia, Marcas Temporais de maior resoluo (nanosegundos) e verificaes melhores de integridade. (Mathur, 2007)

Configuraes de Rede: O nome de host dever ser alfa. Ser

utilizado um domnio fictcio para todas as mquinas deste trabalho, denominado

52 forenaite.net. A interface de rede identificada por eth0 ser responsvel pela comunicao do segmento DMZ, que representa a rea onde sero disponibilizados servios publicamente atravs da internet, e dever possuir o endereo IP 10.0.0.1/28. A interface de rede identificada por eth1 ser responsvel pela comunicao do segmento LAN, onde sero realizadas as comunicaes internas, como gerncia do ambiente, acesso a banco de dados e gravao de backups (este ltimo no implementado neste trabalho). O endereo IP dever ser 172.16.1.1/26. A interface de rede identificada por eth2 ser responsvel pela comunicao com a rede externa (internet). Dever possuir endereo de rede 10.128.0.11/24, pois um endereo IP pertencente ao mesmo segmento de rede do link de dados utilizado durante o desenvolvimento deste trabalho. Seu gateway dever ser 10.128.0.10, pois neste trabalho quem fornecer acesso internet. Finalizando a

configurao bsica de rede, existe a figura do servidor DNS, que ser o prprio firewall, pois conforme explicado no incio deste captulo, algumas funes sero acumuladas. O endereo utilizado ser 127.0.0.1, tendo em vista que os processos de firewall e DNS estaro executando no mesmo host.

Observao: A instalao padro do sistema Slackware no fornece opo para configurar todas as interfaces de rede. De fato, permite que seja configurada apenas uma interface no ato da instalao. Para configurar as demais interfaces, ser necessrio editar o arquivo /etc/rc.d/rc.inet1.conf, adicionando ao mesmo as configuraes pendentes, conforme exibido na ilustrao 13.

53

Ilustrao 13: Adicionando as configuraes pendentes

Para validar as alteraes, basta reiniciar o servio de rede, atravs da execuo do comando /etc/rc.d/rc.inet1 restart.

4.3.1.1 - Configuraes de Segurana: Conforme dito no captulo 4.3.1, para a implementao da soluo proposta ser utilizado um Firewall Statefull, atravs da utilizao da aplicao IPTables. Para isso, dever ser criado em /etc/rc.d/rc.firewall um script, que realizar a configurao desta aplicao. Este script dever possuir o seguinte contedo:

#!/bin/bash # Fore FW. Andre Rocha, Maio de 2009 case "$1" in stop) # Limpa as regras do Firewall # iptables -F iptables -t nat -F iptables -X 2> /dev/null iptables -t nat -X 2> /dev/null ;;

54
start) # Declara Interfaces # IF_DMZ=eth0 IF_LAN=eth1 # Interface que da acesso ao link intrenet IF_INET=eth2 # Declara Redes # LAN=172.16.1.0/26 DMZ=10.0.0.0/28 # Rede utilizada durante o desenvolvimento do trabalho INET=10.128.0.0/24 # Ativa o forward de IPs # /bin/echo 1 > /proc/sys/net/ipv4/ip_forward # Limpa as regras do Firewall # iptables -F iptables -t nat -F iptables -X 2> /dev/null iptables -t nat -X 2> /dev/null # Nega todos os acessos por padrao # iptables -P INPUT DROP iptables -P FORWARD DROP # Evita Spoofing iptables -A FORWARD -i $IF_INET -s ! $INET -j DROP iptables -A FORWARD -i $IF_LAN -s ! $LAN -j DROP iptables -A FORWARD -i $IF_DMZ -s ! $DMZ -j DROP iptables -P OUTPUT ACCEPT # Habilita o NAT iptables -t nat -A POSTROUTING -o $IF_INET -j MASQUERADE # Permite Loopback iptables -A INPUT -i lo -j ACCEPT iptables -A FORWARD -i lo -j ACCEPT # Habilita modo Statefull iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Descarta pacotes invalidos iptables -A FORWARD -m state --state INVALID -j DROP iptables -A INPUT -m state --state INVALID -j DROP # Libera IPs da Administracao iptables -A FORWARD -s 10.128.0.4 -j ACCEPT iptables -A FORWARD -s 10.128.0.9 -j ACCEPT # Permite Acesso ao Proxy Reverso # PortasTCP=" 80 443 " for A in $PortasTCP do iptables -A INPUT -i $IF_DMZ -p tcp --dport $A -j ACCEPT iptables -A INPUT -i $IF_LAN -p tcp --dport $A -j ACCEPT iptables -A INPUT -i $IF_INET -p tcp --dport $A -j ACCEPT done

55
# Permite acesso ao DNS iptables -A INPUT -i $IF_LAN -p udp --dport 53 -j ACCEPT iptables -A INPUT -i $IF_DMZ -p udp --dport 53 -j ACCEPT iptables -A INPUT -i $IF_INET -p udp --dport 53 -j ACCEPT # Permite SSH - Nao deve ser liberado em caso de producao iptables -A INPUT -i $IF_LAN -p tcp --dport 22 -j ACCEPT iptables -A INPUT -i $IF_DMZ -p tcp --dport 22 -j ACCEPT # Permite Ping # iptables -A INPUT -i $IF_DMZ -p icmp -j ACCEPT iptables -A INPUT -i $IF_LAN -p icmp -j ACCEPT iptables -A INPUT -i $IF_INET -p icmp -j ACCEPT iptables -A FORWARD -i $IF_DMZ -p icmp -j ACCEPT # Permite SNMP # iptables -A INPUT -i $IF_LAN -p udp --dport 161 -j ACCEPT # Permite acesso aos/dos servidores da ServerLAN=" 1 2 3 " for I in $ServerLAN do iptables -A FORWARD -i $IF_LAN -p tcp iptables -A FORWARD -i $IF_LAN -p udp iptables -A FORWARD -i $IF_LAN -p tcp iptables -A FORWARD -i $IF_LAN -p udp iptables -A FORWARD -i $IF_DMZ -p tcp iptables -A FORWARD -i $IF_DMZ -p udp iptables -A FORWARD -i $IF_DMZ -p tcp iptables -A FORWARD -i $IF_DMZ -p udp iptables -A FORWARD -i $IF_DMZ -p tcp iptables -A FORWARD -i $IF_DMZ -p udp iptables -A FORWARD -i $IF_INET -p tcp iptables -A FORWARD -i $IF_INET -p udp done # Bloqueia NETBIOS NetBIOS=" 137 138 139 " for L in $NetBIOS do iptables -A FORWARD iptables -A FORWARD iptables -A FORWARD iptables -A FORWARD iptables -A FORWARD iptables -A FORWARD done # Habilita Logs # Logs=" 0 1 2 " for G in $Logs do iptables -A INPUT "InputDeny_eth$G-Log " iptables -A INPUT iptables -A FORWARD "ForwardDeny_eth$G-Log " iptables -A FORWARD done ;; LAN #

-d -d -s -s -d -d -s -s -o -o -o -o

172.16.1.$I -j ACCEPT 172.16.1.$I -j ACCEPT 172.16.1.$I -j ACCEPT 172.16.1.$I -j ACCEPT 10.0.0.$I -j ACCEPT 10.0.0.$I -j ACCEPT 10.0.0.$I -j ACCEPT 10.0.0.$I -j ACCEPT $IF_INET -j ACCEPT $IF_INET -j ACCEPT $IF_DMZ -j ACCEPT $IF_DMZ -j ACCEPT

-i -i -i -i -i -i

$IF_LAN $IF_LAN $IF_DMZ $IF_DMZ $IF_INET $IF_INET

-p -p -p -p -p -p

tcp udp tcp udp tcp udp

--dport --dport --dport --dport --dport --dport

$L $L $L $L $L $L

-j -j -j -j -j -j

DROP DROP DROP DROP DROP DROP

-i eth$G -j LOG --log-prefix -i eth$G -j DROP -i eth$G -j LOG --log-prefix -i eth$G -j DROP

56
restart) $0 stop $0 start ;; *) ;; esac echo "Uso: /etc/rc.d/rc.firewall {start|stop|restart}" exit 1

exit 0

Para que o script possa ser executado, dever ser atribuda a permisso correspondente, levando em considerao que apenas o usurio administrador do sistema identificado por root, possa manipul-lo. Para obter este nvel de privilgio, basta executar o comando chmod 700 /etc/rc.d/rc.firewall.

4.3.1.2 - Configuraes do Servio DNS: Conforme dito no Captulo 4, o servio DNS utilizado neste trabalho o DjbDNS, pois acredita-se que suas caractersticas so as mais apropriadas ao objetivo desta implementao, por englobarem segurana, baixo consumo de recursos e alta performance. No possvel afirmar que sua instalao seja complexa, mas certamente demanda uma grande quantidade de trabalho, pois possui dependncias (softwares que so pr-requisitos). Para facilitar o entendimento, preciso que alguns detalhes sejam elucidados. O primeiro deles o fato deste software ser modular, ou seja, possui processos separados que so responsveis por funes especficas. Estes processos sero descritos a seguir.

DNSCache: apenas um resolvedor recursivo, criado com a

finalidade nica de encontrar endereos IP para os hosts solicitados, atravs de queries (perguntas) UDP e TCP para servidores autoritativos (servidores que possuem autoridade

57 sobre domnios), conforme necessidade. Ele utiliza uma tcnica de restries a respeito do que ser retornado como resposta, para evitar ataques relacionados a este tipo de consulta, como por exemplo, o envenenamento de cache, ou em sua forma original, DNS Cache Poisoning (SecureWorks, 2007). Os servidores autoritativos so encontrados atravs de uma cadeia de delegaes, que comea pelos endereos dos servidores root (servidores raiz) configurados internamente. Tudo isso faz parte do modelo de segurana empregado nesta soluo. Se o DNSCache no houvesse sido desenhado para funcionar desta forma, estaria passivo aos mesmos tipos de ataque de envenenamento de cache sofridos pelos servidores DNS atualmente no-seguros35, como por exemplo, o Bind (ISC, 2009). TinyDNS: Serve autoritativamente (possui autoridade sobre domnio)

nomes, exclusivamente por queries UDP. Por ser autoritativo, no serve nomes recursivamente (responde a consultas sobre domnios sobre os quais no tem autoridade) de forma direta, e tampouco responde a queries TCP. Este servio recebe requisies de hosts apenas por intermdio de outros servidores recursivos, como o DNSCache ou o Bind. Devido a isso, seu endereo IP nunca dever ser configurado em um sistema operacional na rea referente a Servidores DNS ou semelhante.

AxfrDNS: Serve nomes autoritativamente, atravs de queries TCP

apenas, ao mesmo tempo em que o servidor de transferncia de zonas. Existem dois motivos para se utilizar programas separados para cada funo. Um deles limitar incurses de segurana, e o outro devido ao fato de muitos sites no necessitarem de transferncia de zonas, evitando assim que um servio desnecessrio esteja em execuo. A exemplo do Bind, que um software monoltico (um

35 Bind DNS Cache Poisoning (http://www.trusteer.com/bind9dns - Acessado em 17 de maio de 2009)

58 mesmo processo responsvel por vrias funes), a agregao de funcionalidades excessivas em um nico mdulo o principal motivo para ocorrncia de desastres na segurana (RFC 2010, RFC 2870).

Com o intuito de diminuir a complexidade envolvida na instalao deste sistema, todas as aplicaes necessrias foram agrupadas em um nico arquivo, e foi desenvolvido um script que automaticamente o obtm e resolve as dependncias, instalando posteriormente o DjbDNS. Este script deve ser executado com privilgios de administrador, e seu cdigo ser apresentado a seguir.

#!/bin/bash # Fore DjbDNS Installer. Andre Rocha, Maio de 2009 # Realiza o download dos softwares necessrios, inclusive dependncias cd /usr/src wget http://www.auroradigital.com.br/djbdns.tar.gz tar zxvf djbdns.tar.gz # Instalacao do UCSPI-TCP, que e a primeira dependencia tar zxvf ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88 patch < ../ucspi-tcp_errnopatch make && make setup check # Instalacao do DAEMONS TOOLS, que e a segunda dependencia mkdir -p /package ; chmod 1755 /package cd /package tar xzvf /usr/src/daemontools-0.76.tar.gz cd /package/admin/daemontools-0.76/src patch < /usr/src/daemontools_errnopatch cd .. package/install # Instala o TinyDNS cd /usr/src tar zxvf djbdns-1.05.tar.gz cd djbdns-1.05 patch < ../djbdns_errnopatch make && make setup check # Cria as contas de usurio necessrias useradd -s /dev/null -d /dev/null dnscache useradd -s /dev/null -d /dev/null dnslog useradd -s /dev/null -d /dev/null tinydns

59 Aps realizada a instalao, deve-se proceder com a configurao do sistema. O comando dnscache-conf dnscache dnslog /etc/dnscache 172.16.1.1 configura o mdulo DNSCache, que aps ativado, passar a responder s solicitaes que chegarem pela interface do segmento LAN. O endereo IP 172.16.1.1 nunca dever ser cadastrado nos registros de NS (Name Servers). Deve ser configurado apenas nos sistemas operacionais, na rea referente a Servidores DNS ou Nameserver, pois sua funo apenas resolver nomes. O comando ln -s /etc/dnscache /service habilita o DNSCache. Por padro, este software no responde a nenhuma rede que no for explicitamente autorizada. Para informar as redes que esto autorizadas a utilizar o cache, basta executar os comandos touch /etc/dnscache/root/ip/10.0.0, que libera a rede DMZ, touch /etc/dnscache/root/ip/172.16.1, que libera a rede LAN, e em seguida touch /etc/dnscache/ root/ip/127, que libera o acesso via loopback.

O mdulo TinyDNS o prximo a ser configurado. Primeiramente, deve-se cadastrar o endereo IP do servidor autoritativo (que possuir autoridade sobre o domnio). Isso pode ser feito atravs do comando tinydns-conf tinydns dnslog /etc/tinydns 10.0.0.1. O comando ln -s /etc/tinydns /service habilita o servio TinyDNS.

A prxima ao a ser executada informar ao TinyDNS o domnio sobre o qual ele ter autoridade. Isso pode ser feito atravs do comando cd

/service/tinydns/root ; ./add-ns forenaite.net 10.0.0.1 ; ./add-ns 0.0.10.in-addr.arpa 10.0.0.1 ; make. Este comando, alm de realizar o informado, tambm cadastra o reverso (funo que resolve um endereo IP para um nome de servidor) dos IPs deste domnio. Agora basta adicionar o mesmo a lista de servidores root, com o comando cd / etc/dnscache/root/servers ; echo 10.0.0.1 > forenaite.net ; ln -s forenaite.net 0.0.10.in-

60 addr.arpa. Feito isso, os nomes dos hosts onde sero executados servios pblicos podem ser cadastrados, atravs 10.0.0.1 do ; comando ./add-host cd /service/tinydns/root 10.0.0.2 ; ; ./add-alias ./add-host

ns1.forenaite.net

beta.forenaite.net

gama.forenaite.net 10.0.0.3 ; ./add-alias www.forenaite.net 10.0.0.1 ; make. Seguindo recomendao do professor Paulo Mendona (Segurana de Redes) em sala de aula, o nome de host do firewall no ser cadastrado no servio DNS. Os hosts onde sero executados os servios internos podem ser cadastrados com o comando cd /service/tinydns/root ; ./add-host sol.forenaite.net 172.16.1.2 ; ./add-host mon.forenaite.net 172.16.1.3.

Nota: Em um ambiente real de produo, recomendvel que seja utilizado um servio DNS a parte, de forma que atenda apenas a rede interna.

Para que todas as alteraes entrem em vigor, basta reiniciar o servio, com o comando svc -h /service/dnscache/.

Isto conclui a configurao do servidor DNS.

4.3.1.3 - Configuraes do Proxy Reverso: O ltimo sistema a ser configurado para este host o proxy reverso. Para este servio ser utilizada a aplicao ViCompress, devido s caractersticas apresentadas no captulo 4. Acredita-se que sua instalao no seja complexa, pois a documentao disponvel no site do desenvolvedor36 bastante clara. O

36 ViCompress HTTP Compression & Caching Proxy <http://www.visolve.com/vicompress/vicompress.html>Acessado em 17 de maio de 2009.

61 servio de proxy reverso deve ser configurado de forma que intercepte as requisies entrantes direcionadas ao protocolo HTTP, confrontando o resultado das solicitaes com o contedo de sua rvore de cache. Caso a resposta para a solicitao conste no cache do proxy reverso, o mesmo se encarregar de a enviar diretamente ao solicitante, sem que esta chegue ao servidor web. Esta prtica visa aumentar a performance e o balanceamento de processos do ambiente, fazendo com que as aplicaes envolvidas funcionem de forma otimizada e sem gargalos. Para agilizar o processo de instalao, foi criado o seguinte script, que se destina a realizar automaticamente a instalao da aplicao ViCompress.

#!/bin/bash # Fore ViCompress Installer. Andre Rocha, Maio de 2009 # Faz o download e descompacta a aplicacao cd /usr/src wget http://www.visolve.com/vicompress/vicompress-1.0.9.tar.gz tar xzf vicompress-1.0.9.tar.gz ; cd vicompress-1.0.9/src/ # Prepara o cdigo fonte para ser instalado ./configure /usr/vicompress # Compila e instala o software make && make install

Antes que a aplicao ViCompress possa ser inicializada, necessrio que a mesma seja configurada. Os detalhes acerca deste processo podem ser vistos em sua documentao oficial. O ltimo passo automatizar a inicializao deste software, para que o mesmo execute automaticamente toda vez que o sistema operacional for inicializado. Isto pode ser feito atravs do comando ln -s /usr/vicompress/bin/vicompress.sh /etc/rc.d/rc.vicompress.

62 O acesso a este script deve ser controlado, de forma que somente o administrador do sistema possa manipul-lo. Isso pode ser feito atravs do comando chmod 500 /etc/rc.d/rc.vicompress. Isto finaliza a configurao e tambm a instalao deste host. Para fins acadmicos, o arquivo de configurao do ViCompress pode ser examinado na ntegra no Apndice 1, pois mesmo o manual da aplicao citar os pontos relevantes do processo, acredita-se que h espao para interpretaes variadas.

A ilustrao 14 exemplifica o benefcio da utilizao de um proxy reverso. Como se pode perceber, houve uma significativa economia no link de dados, o que agiliza processos e diminui custos.

sem cache e sem compresso

com cache e compresso

Ilustrao 14: Economia de banda com uso de proxy reverso Autor: ViSolve

4.3.2 - CLOUD SERVER: Da parte de hardware, a mquina utilizada dever possuir 2 interfaces de rede, com a finalidade de acomodar os segmentos DMZ e LAN. Dever possuir ainda um disco de 30Gb, e 1Gb de memria RAM. O sistema operacional utilizado ser o OpenSolaris, e devero ser levados em considerao os seguintes detalhes:

63

Particionamento de Disco: Do total disponvel, 25% devero ser

alocados para a partio root (/), 25% para a partio var, 10% para swap e o restante para a partio home, pois tipicamente onde ficam armazenados os dados dos usurios. O filesystem dever ser o ZFS28, devido sua consistncia, capacidades nativas de backup, clonagem, self-healing37, escalabilidade e fcil administrao; alm de possibilitar o uso de conteiners38. Mais informaes sobre a instalao do OpenSolaris podem ser obtidas na documentao oficial39.

Configuraes de Rede: O nome de host dever ser beta. O nome de

domnio ser forenaite.net. A Interface de rede identificada por e1000g0 ser responsvel pela comunicao com o segmento DMZ, e dever possuir o endereo IP 10.0.0.2/28. A interface de rede identificada por e1000g1 ser responsvel pela comunicao com o segmento LAN, e dever possuir endereo de rede 172.16.1.2/26. Como o servidor DNS utilizado ser o firewall, o sistema dever ser configurado de forma que as requisies DNS apontem para o endereo IP 172.16.1.1. Desta forma, as consultas de nomes realizadas pelas mquinas da rede interna utilizaro como meio fsico o segmento de rede LAN. Esta prtica melhora a performance da rede, pois sero utilizados meios apartados para comunicao, de acordo com o pblico atendido. Ou seja, as comunicaes pertinentes DMZ ocorrero por um meio fsico, e as comunicaes pertinentes LAN ocorrero por outro.

37 Self-healing: Capacidade autnoma de recuperao aps uma falha. 38 Solaris Conteiners: Tecnologia que permite virtualizao de forma nativa em sistemas Solaris <http://www.sun.com/software/solaris/virtualization.jsp> Acessado em 06 de maio de 2009. 39 OpenSolaris Documentation: <http://www.opensolaris.org/os/documentation/> Acessado em 06 de maio de 2009.

64 Como as configuraes de rede em ambientes Solaris so tipicamente mais complexas, as mesmas sero cobertas em detalhes. Sero descritos a seguir, os passos necessrios a obteno de uma configurao correta para o ambiente proposto. A primeira ao que deve ser realizada o cadastramento das subnets que o sistema faz parte. Este processo requer que as mesmas sejam declaradas no arquivo /etc/inet/netmasks. No caso deste trabalho, este arquivo possuir contedo semelhante ao apresentado na ilustrao 15.

Ilustrao 15: Cadastro de Subnets

O prximo passo realizar a configurao de nome de host, pois caso este no esteja configurado, no ser possvel atribuir corretamente os endereos IP para as interfaces de rede. Para isso, basta substituir o contedo do arquivo /etc/nodename pelo texto beta. Para habilitar a interface de rede que faz parte do segmento DMZ do ambiente, deve-se criar o arquivo /etc/hostname.e1000g0 com o contedo beta_dmz. Para a interface de rede que faz parte do segmento LAN, o processo semelhante, bastando criar o arquivo /etc/hostname.e1000g1 com o contedo beta_lan. A atribuio de endereos IP a estas interfaces dever ser feita atravs da manipulao do arquivo /etc/hosts, que deve possuir contedo semelhante ao apresentado na ilustrao 16.

65

Ilustrao 16: Atribuio de endereos IP

A prxima ao necessria ao processo de configurao de rede constitui em informar o sistema sobre o servidor DNS a ser utilizado. Para isso, basta criar o arquivo /etc/resolv.conf, com o contedo nameserver 172.16.1.1. Para que o sistema passe a utilizar este servidor, deve-se manipular o arquivo /etc/nsswitch.conf, onde a linha que possui o contedo hosts: files deve ser alterada para hosts: files dns. Para finalizar a configurao de rede, basta definir qual ser a rota padro. Para isso, basta inserir no arquivo /etc/defaultrouter o contedo 10.0.0.1. A tabela de rotas do sistema pode ser visualizada atravs do comando netstat -rn. Todas as alteraes realizadas somente entraro em vigor aps o reboot do sistema.

4.3.2.1 Instalao dos Softwares Necessrios: Atravs do gerenciador de pacotes, devero ser adicionadas as seguintes aplicaes: PHP, Apache Web Server, Expect, System Management Agent, OpenOffice e OpenOffice-pt-BR. Estas aplicaes possuem dependncias (dependem de outros pacotes para funcionarem). Devido a isso, automaticamente sero instalados outros aplicativos, alm dos que foram selecionados. Um item fundamental para a segurana desta implementao o uso de criptografia de dados. Comunicaes criptografadas so mais seguras, pois mesmo que o trfego seja interceptado, no ser possvel decodificar os dados capturados, garantindo

66 assim a privacidade dos usurios do sistema. Como os servios sero fornecidos via web, necessrio que seja habilitado o protocolo HTTPS, que implementa o uso de criptografia SSL sobre o protocolo HTTP. A configurao deste protocolo em servidores web baseados em Apache trivial, pois todas as informaes necessrias esto presentes no manual do produto40. No entanto, necessria a utilizao de uma chave privada para criptografia. Esta chave deve possuir uma senha secreta, que precisa ser inserida todas as vezes que o servio HTTPS for iniciado. Esta interatividade conflita com a proposta deste trabalho, pois sistemas de nuvem devem possuir caractersticas que o tornem o mais automtico possvel. Uma prtica que pode resolver esta questo a criao de uma chave privada que no possua senha cadastrada. Porm, esta no uma prtica aceitvel, pois caso a chave privada seja roubada, o ladro poder utilizar a mesma livremente, pois no haver uma senha para controlar seu uso legtimo. Desta forma, o infrator poder assumir facilmente a identidade do proprietrio, e poder aplicar golpes virtuais, como por exemplo, enviar mensagens assinadas digitalmente passando-se por outra pessoa. Para resolver esta questo, ser utilizado um simples script criado em linguagem Expect41. Esta linguagem capaz de realizar a captura de mensagens especficas de um terminal, como por exemplo, uma solicitao de senha, permitindo que sejam criadas respostas para as mesmas, automatizando assim o processo. Este script pode ser armazenado em

/etc/scripts/startssl, e seu nvel de acesso deve ser controlado, de forma que apenas o administrador do sistema tenha acesso, pois possuir informaes sensveis. A definio do privilgio pode ser feita com o comando chmod 500 /etc/scripts/startssl. Ser apresentado a seguir o cdigo do script que foi desenvolvido para a automatizao do processo de inicializao do servidor web com uso de criptografia.
40 Apache SSL/TLS Encryption <http://httpd.apache.org/docs/2.2/ssl/> Acessado em 17 de maio de 2009. 41 Expect uma ferramenta para automatizar aplicaes interativas, como Telnet e FTP. (Charles Hymes, 2009)

67
#!/usr/bin/expect # Fore ApacheSSL Auto Start. Andre Rocha, Maio de 2009 # Nao exibe no terminal a informacao que sera inserida set force_conservative 1 set timeout -1 # Software que sera iniciado e que solicitara os dados spawn /usr/apache2/2.2/bin/apachectl -f /etc/apache2/2.2/httpd.conf start match_max 100000 # Espera exibicao de uma determinada string, e envia a resposta expect "Enter pass phrase:" send -- "univercidade\r" expect eof -k

Nota: Tipicamente, uma autoridade certificadora deve assinar o

certificado digital gerado, para que o mesmo tenha sua autenticidade reconhecida. Sem um certificado assinado, um servidor web utilizando criptografa SSL no funcionar. Por isso, foi preciso assinar localmente o certificado. Certificados assinados localmente no so menos seguros que certificados assinados por uma autoridade certificadora. A diferena, que a assinatura deste ltimo j vem cadastrada nos sistemas operacionais atuais, e a assinatura do anterior, como foi criada localmente, no. Devido a isso, quando o servidor web referenciado neste trabalho for acessado atravs do protocolo HTTPS, ser exibida uma mensagem referente ao certificado utilizado no ser reconhecido. Isto no representa nenhum tipo de risco para o sistema ou para o utilizador. Um exemplo da mensagem exibida pode ser visto na ilustrao 17.

68

Nome da autoridade que assinou o cer tificado

Ilustrao 17: Certificado digital assinado localmente

A comprovao da eficcia do uso de criptografia pode ser demonstrada atravs do uso da ferramenta Wireshark42, que possui a capacidade de analisar em detalhes o trfego de uma rede. A ilustrao 18 exibe a captura de um trfego no criptografado.

Dados trafegando em texto claro


Ilustrao 18: Captura de trfego no criptografado

Como se pode perceber na ilustrao 18, dados trafegam em texto claro, o que torna possvel que terceiros tenham acesso a informaes pessoais.

42 Wireshark: Go Deep <http://www.wireshark.org/> Acessado em 24 de maio de 2009.

69 A ilustrao 19 exibe a captura de um trfego criptografado. Nesta imagem percebe-se claramente que no possvel visualizar nenhum tipo de informao pessoal.

Ilustrao 19: Captura de trfego criptografado

Para finalizar a configurao do servidor web, necessrio fazer com que o mesmo inicie automaticamente quando o sistema operacional for iniciado. Para isso, ser criado outro script, que se encarregar de iniciar este servio juntamente com o uso de criptografa, sem que para isso seja necessrio inserir manualmente a senha da chave privada gerada. Este script deve ser armazenado em /etc/rc3.d/S01apache, e necessrio que seja atribuda permisso de execuo para o mesmo, de forma que somente o administrador do sistema possa manipul-lo. Isto pode ser feito com o comando chmod 500 /etc/rc3.d/S01apache. Seu cdigo ser mostrado a seguir.

70
#!/bin/bash export PATH=/usr/gnu/bin:/usr/bin:/usr/X11/bin:/usr/sbin:/sbin:/usr/apache2/2.2/ bin export LD_LIBRARY_PATH=/lib:/usr/apache2/2.2/lib:/usr/apache2/2.2/libexec case $1 in 'start') /etc/scripts/startssl ;; /usr/apache2/2.2/bin/apachectl stop ;;

'stop')

'restart') /usr/apache2/2.2/bin/apachectl stop sleep 2 /etc/scripts/startssl ;; *) echo "Uso: $0 start|stop|restart" exit 1 ;;

esac

Uma vez finalizada a configurao do servidor web, ser iniciado o processo de instalao do sistema EyeOS, que ser responsvel por fornecer servio de desktop em nuvem. A instalao deste sistema muito simples, e no ser coberta em detalhes, pois existe farta documentao acerca deste tpico no site do desenvolvedor 43. O mesmo se aplica a integrao do OpenOffice ao ambiente EyeOS. Um desktop de nuvem possui funes similares a um desktop tradicional, proporcionando assim um uso intuitivo. A ilustrao 20 exibe um desktop EyeOS. Como se pode perceber, as semelhanas so claras.

43 EyeOS Quick Install Instructions <http://wiki.eyeos.org/Quick_Install_Instructions> Acessado em 17 de maio de 2009)

71

Ilustrao 20: Desktop de Nuvem com sistema EyeOS

4.3.3 - GERNCIA: De um modo geral, a gerncia de redes de computadores de fundamental importncia para a manuteno do ambiente e conseqente continuidade do negcio. Possuir aplicaes de gerncia bem dimensionadas e bem configuradas, alm de permitir monitoramento ostensivo, auxilia na tomada de decises, possibilitando que atitudes pr-ativas sejam tomadas e problemas sejam resolvidos em um menor espao de tempo ou at mesmo sejam evitados. Tambm permite identificar pontos especficos de gargalo, o que torna possvel realizar uma reorganizao do ambiente, evitando assim que novos equipamentos tenham que ser adquiridos ou tenham que passar por um processo de upgrade, diminuindo desta forma o desperdcio de capital, que pode ser empregado de forma mais eficiente. Com base neste pensamento, optou-se por montar um ambiente de

72 gerncia, que alm de possibilitar tudo o que foi citado, servir de ferramenta para comprovar a validade e eficcia de se possuir um ambiente baseado em tecnologia de nuvem, como por exemplo, a implementao prtica deste trabalho. Para materializar a figura do gerente, ser necessrio utilizar um computador a parte, que deve possuir configurao de hardware semelhante a apresentada a seguir. Da parte de hardware, a mquina deve possuir 2 interfaces de rede, alm de um disco de 30Gb, e 256Mb de memria RAM. O sistema operacional utilizado ser o Debian 5.01. Para o preparo da mquina, devero ser levados em considerao os seguintes detalhes:

Particionamento de Disco: Do total disponvel, 35% devero ser

alocados para a partio root (/), 55% para a partio var, 3% para swap e o restante para a partio log. Nesta ltima, ficaro armazenados os logs das aplicaes, pois um sistema de gerncia tipicamente gera grandes quantidades de logs. O filesystem dever ser o EXT344, nativo em sistemas Linux, por questes de integridade e disponibilidade.

Configuraes de Rede: O nome de host dever ser gama, e o nome

de domnio ser forenaite.net. A Interface de rede que ser responsvel pela comunicao com o segmento LAN dever possuir endereo IP semelhante a 172.16.1.3/26, enquanto que a interface de rede responsvel pelo segmento DMZ dever possuir endereo IP semelhante a 10.0.0.3/28. O servidor DNS a ser utilizado possui IP 172.16.1.1, e o gateway tambm ficar a cargo desta mesma mquina.

44 EXT3 <http://www.redhat.com/support/wpapers/redhat/ext3/> Acessado em 28 de maio de 2009.

73 Inicialmente, o ambiente de gerncia foi desenvolvido e implementado em plataforma Slackware. No entanto, as operaes de automatizao e a complexidade dos scripts criados para esta plataforma adicionaram um certo grau de dificuldade manuteno do ambiente proposto. O autor acredita que gerar complexidade alm do necessrio no uma boa prtica, e a medida adotada em favor da resoluo desta questo foi a alterao do sistema operacional original para a distribuio Debian, pois este possui ferramentas que facilitam a instalao de aplicativos, minimizando assim a quantidade de intervenes administrativas necessrias. Com esta alterao, o script criado para automatizar a instalao e configurao dos sistemas de gerncia teve uma reduo significativa em sua quantidade de linhas de cdigo, o que diminui a complexidade de manuteno.

Uma das aplicaes utilizadas para realizar a gerncia o Centreon45, que atravs da utilizao da aplicao Nagios46, consolida o monitoramento ostensivo, alm de manter em banco de dados um histrico dos resultados do monitoramento. No possvel afirmar que sua instalao seja complexa, mas certamente demanda uma grande quantidade de trabalho, pois possui vrias dependncias (softwares que so pr-requisitos) que precisam ser resolvidas antes que se inicie o processo. Com a finalidade de simplificar as operaes envolvidas na instalao do Centreon, foi desenvolvido um script que automaticamente resolve todas as dependncias e realiza a instalao propriamente dita.

Vale ressaltar, que a utilizao de scripts para automatizar tarefas de extrema importncia, pois no caso de uma situao de desastre onde nem as cpias de
45 Centreon <www.centreon.com> Acessado em 19 de maio de 2009. 46 Nagios <www.nagios.org> Acessado em 19 de maio de 2009.

74 segurana estejam disponveis, ser possvel restabelecer o estado original dos sistemas em um curto espao de tempo. Sem a adoo desta prtica, possvel que incontveis horas tcnicas sejam necessrias at que o ambiente retorne a seu estado original, o que dependendo do caso pode multiplicar os prejuzos. O resultado deste desenvolvimento pode ser conferido abaixo.

#!/bin/bash # # # # Fore Nagios & Centreon Installer. Andre Rocha, Maio de 2009 Escrito com funcoes para facilitar a manutencao Algumas verificacoes nao inclusas para diminuir o tamanho do codigo Compatibilidade: Debian 5.01 lenny

### CABECALHO ### clear if [ "$1" = "" ] then printf "\nO que voce quer fazer? Preciso de uma opcao!\n" printf "\nUse: $0 [ all | centreon | nagios ]" printf "\nOnde 'all' realiza todas as operacoes,\ne as realizam apenas o escolhido.\n\n" exit 1 fi ### FUNCOES ### function resolv_depends() { printf "\nResolvendo as dependencias ...\n\n" ; sleep 3 apt-get -y install sudo mailx lsb-release \ build-essential apache2 apache2-mpm-prefork \ php5 php5-mysql php-pear php5-ldap php5-snmp \ php5-gd mysql-server-5.0 libmysqlclient15-dev \ rrdtool librrds-perl libconfig-inifiles-perl elinks \ libcrypt-des-perl libdigest-hmac-perl libdigest-sha1-perl \ libgd-gd2-perl snmp snmpd libnet-snmp-perl libsnmp-perl \ libgd2-xpm libgd2-xpm-dev libpng-dev libsdl-perl \ eperl libperl-dev ssh tofrodos } function account_create() { printf "\nCriando as contas de sistema necessarias ...\n\n" sleep 5 groupadd nagcmd ; groupadd nagios useradd -c Nagios -d /home/nagios -g nagios -G nagcmd /bin/bash nagios usermod -a -G nagcmd www-data usermod -G crontab nagios }

demais

-m

-s

75
function nagios_install() { printf "\nInstalando o NAGIOS + NDOUTILS ...\n\n" ; sleep 5 apt-get -y install ndoutils-nagios3-mysql }

CENTREON

MYSQL

function ndoutils_setup() { printf "\nConfigurando o NAGIOS para utilizar o NDOUTILS ...\n\n" ; sleep 5 htpasswd -c -b /etc/nagios3/htpasswd.users nagiosadmin univercidade grep -v "broker_module" /etc/nagios3/nagios.cfg > /tmp/nagios.cfg.tmp echo "broker_module=/usr/lib/ndoutils/ndomod-mysql-3x.o config_file=/etc/nagios3/ndomod.cfg" >> /tmp/nagios.cfg.tmp cat /tmp/nagios.cfg.tmp > /etc/nagios3/nagios.cfg chown nagios:nagios /etc/nagios3/* echo "grant select,insert,update,delete on ndoutils.* to ndoutils@'' identified by 'ndoutils';"|mysql -uroot -punivercidade } function ndoutils_start() { printf "\nIniciando o NDOUTILS ...\n\n" ; sleep 5 sed s/0/1/g /etc/default/ndoutils > /tmp/ndoutils.tmp cat /tmp/ndoutils.tmp > /etc/default/ndoutils /etc/init.d/ndoutils start } function get_centreon() { echo -ne "\nFazendo o download do Centreon ...\n\n" ; sleep 2 wget http://www.auroradigital.com.br/centreon-2.0.2.tar.gz if [ $? -ne 0 ] then echo -ne "\nErro ao fazer o download do Centron!\n" echo -ne "\nGrave manualmente o arquivo de instalacao em '/usr/local/src'" echo -ne "\ne execute '$0 centreon' para continuar a instalacao.\n\n" exit 1 else echo "Download realizado com sucesso!" ; sleep 2 sleep 3 fi } function install_centreon() { echo -ne "\nInstalando o Centreon ...\n\n" ; sleep 2 cd /usr/local/src tar xzvf centreon-2.0.2.tar.gz ; cd centreon-2.0.2 ln -f /usr/lib/ndoutils/ndomod-mysql-3x.o /usr/sbin/ndomod.o ./install.sh -i -f /usr/local/src/centreon2.0.2/tmpl/vardistrib/debian-lenny chown -R nagios:www-data /etc/nagios3 }

76
### PROGRAMA PRINCIPAL ### case $1 in all)

resolv_depends account_create nagios_install ndoutils_setup ndoutils_start get_centreon install_centreon

;; centreon) get_centreon install_centreon ;; nagios) nagios_install ndoutils_setup ndoutils_start ;; esac

Nota: Durante o processo de desenvolvimento do ambiente de gerncia foi enfrentado um grave problema de desempenho em uma das principais aplicaes que so pr-requisitos. A proposta deste trabalho obter um ambiente de alto desempenho, e para isso, necessrio que todas as aplicaes envolvidas funcionem da forma mais otimizada possvel. A aplicao em questo o RRDTool, que responsvel pela tarefa de gerar os grficos de acordo com as instrues enviadas pelos softwares Centreon e Cacti. A verso afetada foi a 1.3.8, lanada em 19 de maio de 2009. Apesar dos esforos empregados (diversos parmetros diferentes de compilao, e pesquisas no frum oficial da aplicao), no foi possvel sanar o problema. A soluo encontrada foi fazer downgrade (utilizar uma verso mais antiga) para a verso 1.2.23 da aplicao. As ilustraes 21 e 22 representam o problema enfrentado e a resoluo do mesmo, respectivamente.

77

Ilustrao 21: Consumo excessivo de CPU pelo RRDTool 1.3.8

Na ilustrao 21, a aplicao em questo aparece como processo que mais consome recursos de processamento.

Ilustrao 22: Downgrade para verso 1.2.23 do RRDToll: Dramtica diminuio de processamento.

Na ilustrao 22, a aplicao em questo no mais figura na lista dos processos que mais consomem processamento.

78 A configurao inicial do Centreon pode ser realizada sem maiores dificuldades, tendo em vista sua interface ser bastante intuitiva. Esta interface pode ser visualizada no endereo http://mon.forenaite.net/centreon. O primeiro acesso inicia automaticamente o processo de configurao. Neste processo, apenas necessrio que sejam informados nomes de usurio, senhas e nomes para os bancos de dados que sero utilizados. Para este trabalho as informaes adotadas foram:

Centreon Database Name: centreon Centstore Database Name: centreon_ods Database password: centreon

Os prximos passos so realizar a configurao interna da ferramenta e definir os monitoramentos. Isso deve ser feito de forma que todos os servios de todos os hosts sejam monitorados, inclusive os itens de hardware, como interfaces de rede, processadores e discos. Os detalhes acerca deste processo no sero cobertos, pois a prpria ferramenta possui manual de configurao. O monitoramento contar com o auxilio do protocolo SNMPv2c, por este ser mais estvel (Sauer, 2009). Para isso, o mesmo dever estar instalado e em execuo nos hosts monitorados. Apesar deste protocolo e suas ferramentas associadas fazerem parte dos sistemas operacionais modernos, ele dever ser configurado para que funcione corretamente. Uma observao importante quanto ao uso da community padro, que denominada de public. Esta community no dever ser utilizada, devido a questes de segurana (Sauer, 2009). A mesma dever ser alterada para supercloud, ou outro nome diferente de public. Em sistemas OpenSolaris, o SNMP pode ser configurado direto no arquivo

/etc/sma/snmp/snmpd.conf, atravs das seguintes mudanas:

79

Alterar a linha que possui o texto rocommunity

public para

rocommunity supercloud

Alterar a linha que possui o texto syslocation "System administrators

office" para syslocation "forenaite.net"

Alterar a linha que possui o texto syscontact "System administrator"

para syscontact "postmaster@forenaite.net"

Aps a configurao, necessrio ativar o servio atravs do comando svcadm enable sma.

Em sistemas Slackware e Debian, a configurao do SNMP que atende a esta implementao pode ser realizada atravs da substituio do contedo do arquivo /etc/snmp/snmpd.conf pelo exibido a seguir:

com2sec local localhost supercloud com2sec lan 172.16.1.0/255.255.255.192 supercloud group group group group group group fore fore fore fore fore fore v1 v2c usm v1 v2c usm .1 80 local local local lan lan lan

view all included

access fore "" any noauth exact all none none access fore "" any noauth exact all all none syslocation forenaite.net syscontact postmaster@forenaite.net disk / 10000 load 5 10 15

80 Para monitorar servidores web baseados em Apache, basta incluir em seu arquivo de configurao as diretivas abaixo:

ExtendedStatus On <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from .forenaite.net </Location> <Location /server-info> SetHandler server-info Order deny,allow Deny from all Allow from .forenaite.net </Location>

A ilustrao 23 exibe a interface de um sistema Centreon, monitorando detalhes de um host do ambiente.

Ilustrao 23: Monitoria via Centreon

81 Nota: A documentao oficial no deixa claro a configurao que possibilita o acesso do Centreon base de dados do Nagios. Com o objetivo de auxiliar na implementao, ser exibida na ilustrao 24 o local e as informaes corretas que devem ser utilizadas para possibilitar o acesso da ferramenta base citada.

1 2 3 4

OBSERVAR OS LOCAIS INDICADOS EM VERMELHO Ilustrao 24: Configuraes de acesso do Centreon base de dados do Nagios

Como se pode perceber, a ilustrao 24 indica de forma numerada o passoa-passo a percorrer at alcanar os campos que devem ser preenchidos, bem como seus valores corretos.

Vale ressaltar que a instalao do Centreon no inutiliza a ferramenta Nagios, que permanece ativa e em funcionamento. O Centreon apenas uma interface de configurao que facilita seu uso.

82 Como recurso complementar a gerncia, foi utilizada a ferramenta Cacti47, que tem a capacidade de gerar vrios tipos de grficos que auxiliam no acompanhamento do estado dos sistemas. Estes grficos permitem, entre outras coisas, visualizar o consumo de processamento, consumo do link de dados, consumo de disco, e quantidade de processos ativos. Foi realizada a instalao e configurao tendo por base os procedimentos descritos na pgina oficial da ferramenta48. Os aplicativos adicionais que foram instalados anteriormente para satisfazer as dependncias da ferramenta Centreon tambm so utilizados para o Cacti, dispensando assim que novas dependncias (softwares que so prrequisitos) tenham que ser resolvidas. A interface do Cacti pode ser acessada atravs do endereo http://mon.forenaite.net/cacti.

Dica: O site Debian Help49 oferece diversos modelos para gerao de grficos compatveis com o Cacti.

A ilustrao 25 exibe uma compilao de grficos que podem ser gerados pelo Cacti. As informaes foram coletadas do host beta (CloudServer).

47 Cacti: Complete Network Graphing Solution <http://www.cacti.net/> Acessado em 23 de maio de 2009. 48 Installing Under Linux <http://www.cacti.net/downloads/docs/html/install_unix.html> Acessado em 23 de maio de 2009. 49 Debian Help <http://www.debianhelp.co.uk/cactitemplates.htm> Acessado em 23 de maio de 2009.

83

Ilustrao 25: Grficos de consumo de recursos gerados pelo Cacti

Um aspecto interessante a ser analisado estando de posse de uma ferramenta de gerncia o comparativo entre um sistema tradicional, como por exemplo, um notebook, e um sistema de nuvem, como por exemplo o ambiente implementado neste trabalho. As ilustraes 26 e 27 exibem o comparativo entre as arquiteturas de nuvem e tradicional, respectivamente, atravs de grficos gerados durante uma sesso de 4 (quatro) horas de uso contnuo de cada estrutura individualmente.

84

Ilustrao 26: Sistemas que compe o Ambiente de Nuvem

Como se pode perceber na ilustrao 26, o sistema que mais consome processamento o CloudServer, que teve um pico mximo de 1,6% de consumo de CPU com 90 processos em execuo. Os demais sistemas, Firewall e Gerncia, alcanaram juntos a marca de 150 processos, e no entanto no chegaram a consumir 1% de CPU.

Ilustrao 27: Sistema Tradicional

Na ilustrao 27, pode ser observado que um nico sistema, no momento em que atingiu pico mximo de 46 processos em execuo, chegou a consumir 70% de CPU. Como se pode perceber, um sistema tradicional realiza uma carga maior de trabalho,

85 pois precisa processar sozinho todos os trmites necessrios a atender as requisies dos usurios. Sob este aspecto, um sistema de nuvem leva vantagem, pois seus processos esto distribudos por reas de competncia, sendo tratados em computadores diferentes. O trabalho em conjunto faz com que toda a arquitetura funcione de forma otimizada, pois sua carga est distribuda, o que aumenta a confiabilidade do ambiente.

Uma outra abordagem pode ser analisada atravs da interface do hypervisor utilizado para o desenvolvimento deste trabalho (VMWare ESX50). Nesta interface, v-se o consumo exato de processamento de cada mquina virtual utilizada. A ilustrao 28 exemplifica este consumo.

Ilustrao 28: Consumo Individual de processamento de cada mquina virtual.

Analisando a ilustrao 28, fica claro o baixo consumo de recursos computacionais necessrios para a execuo do ambiente proposto.

50 VMWare ESX: Produto comercial da empresa VMWare, fornecedora de solues para virtualizao de ambientes.

86 4.4 CONSIDERAES SOBRE A CONTRIBUIO DO TRABALHO

Este trabalho foi objetivamente destinado a buscar resultados de obteno de competncias nas seguintes reas:

Contribuio para a preservao de recursos naturais, essenciais para a

vida humana;

Contribuio para o aumento da disponibilidade dos recursos

computacionais, cada vez mais essenciais para qualquer elemento da sociedade;

Contribuio para a reduo do risco para a empresa cujas vocaes no

so diretamente da rea de prestao de servios de TI;

Contribuio na implementao de procedimentos automatizados que

possibilitam resoluo de falhas dos sistemas em execuo, dispensando a ao reativa do suporte;

Contribuio com o gerenciamento otimizado, possibilitando a utilizao

de ferramentas proativas centralizadas;

Contribuio por conta do uso preferencial de ferramentas livres e

gratuitas, reduzindo o custo com software e servios;

Contribuio no desenvolvimento de scripts de tarefas que consumiriam

horas de trabalho em comparao com casos de resoluo ad-hoc, onde as solues so desenvolvidas caso-a-caso.

87 A luz destes objetivos pode-se entender que:

A preservao de recursos naturais obtida atravs da implementao de

solues baseadas na virtualizao;

O aumento da disponibilidade ser obtido atravs da implementao do

conceito da nuvem, onde os recursos so transparentes ao usurio e as contingncias so acionadas de forma que o usurio sequer perceba seu acionamento;

A concentrao de esforos nas empresas obtida atravs da

transferncia de responsabilidades para outra empresa, cujo esforo de servios focado em disponibilidade de servios, e no de competncias especficas;

O uso de scripts especiais para a implementao de servios eficaz

para a automatizao da implementao de procedimentos vrios, descritos detalhadamente no capitulo 4. Adicionalmente, em caso de desastres, os scripts possibilitam o restabelecimento do estado original dos sistemas em curto espao de tempo;

As ferramentas de gerncia e de segurana adotadas e adicionadas

nuvem conferem ao administrador um conjunto de informaes que permitem uma postura proativa no combate s falhas e as ameaas; e

O uso exclusivo de solues livres e gratuitas faz com que a

implementao seja de baixssimo custo e retorno garantido.

Os resultados obtidos permitem afirmar que os objetivos definidos no incio do trabalho em termos de contribuio na rea de Redes de Computadores foram alcanados.

88

CAPTULO 5

5 - CONCLUSO

Conforme apresentado neste trabalho, a computao em nuvem se prope a prover recursos computacionais como um servio, e com isso, a habilidade para escalar dinamicamente o mesmo, de forma simples e transparente, atravs do uso de computadores e armazenamento adicionais. O segredo est nas tecnologias j existentes, que unidas, tornam a nuvem uma realidade. Como destaque, uma das mais importantes idias por trs da computao em nuvem a escalabilidade, e a tecnologia chave que torna isso possvel a virtualizao. Esta ltima permite melhor uso de um servidor, possibilitando agregar mltiplos sistemas operacionais e aplicaes em um nico computador compartilhado. Tambm permite migrao online, o que significa que se um computador ficar sobrecarregado, uma instncia de um sistema operacional (e suas aplicaes) podem ser migradas para um novo computador menos atarefado. De uma forma simplista, computao em nuvem a migrao de computao e armazenamento que existem dentro de uma empresa para o exterior da mesma, em um ambiente de nuvem, onde se pode

89 definir necessidade de recursos (como computao e quantidade de banda), e agreg-los virtualmente no interior da infra-estrutura de um provedor de nuvem. Apesar das preocupaes, um ambiente de nuvem se prope a oferecer segurana to boa quanto ou melhor que um ambiente local, pois em nuvem tornam-se mandatrios o uso de tcnicas como criptografia de arquivos e de comunicao, o que impede que terceiros, mesmo que tenham acesso aos arquivos fsicos e fluxos de dados, possam decifr-los. Alm disso, existem os logs de acesso, possibilitando que se realizem auditorias quando forem necessrias. Com a centralizao dos dados, h o aumento de recursos focados em segurana, pois provedores devotam esforos para solucionar problemas que muitos consumidores no podem arcar. A implementao realizada para vivenciar aspectos peculiares da computao em nuvem permitiu agregar a visualizao da utilizao dos recursos de forma otimizada e eficiente. Atravs da monitoria e anlise dos grficos, foi possvel perceber o melhor aproveitamento e balanceamento de recursos de um ambiente de nuvem, em comparao com um sistema tradicional centralizado. Tambm foi possvel perceber a importncia do uso da criptografia, quando foi realizada a captura de trfego criptografado e no criptografado. Ficou clara tambm a importncia do desenvolvimento de scripts que suportam a soluo adotada, pois alm de automatizarem tarefas (o que facilita na recuperao de uma situao de desastre), auxilia na automatizao do funcionamento normal do ambiente, viso clara para o uso de criptografa SSL em servidor web, que em sua forma original, necessita que toda vez que o mesmo for iniciado, o administrador do sistema esteja presente para que seja inserida a senha secreta da chave de criptografia utilizada. Foi possvel ainda comprovar a eficcia do uso de um proxy reverso, que prov uma economia considervel no consumo do link de dados. Outro detalhe importante

90 inerente ao baixo requisito de hardware, pois ficou claro que mquinas com poucos recursos, desde que distribudas adequadamente, podem rodar de forma satisfatria um ambiente de nuvem. Concluindo, apesar das dificuldades tcnicas enfrentadas para implementar e manter um ambiente de nuvem, o uso desta tecnologia compensadora, pois possibilita a explorao de novas formas de operao, novos horizontes e tambm novos planos de negcio, trazendo assim benefcios reais a seus utilizadores. Como trabalhos futuros, pode-se propor a extenso deste trabalho das seguintes formas:

Distribuio do ambiente proposto em cluster; Realizar a implementao de todo o ambiente proposto em um

hypervisor que suporte alocao dinmica de ciclos de CPU e quantidade de memria compartilhada, a exemplo do VMware ESX, evidenciando a distribuio dinmica de recursos;

Realizar a implementao de todo o ambiente proposto em plataforma

OpenSolaris, utilizando os recursos Conteiner e Zones, evidenciando suas caractersticas funcionais;

Expandir as funcionalidades do cloud-desktop, agregando mais

aplicaes na pilha destinada usurios tradicionais;

Criar pilhas para finalidades especficas, de forma a disponibiliz-las

sob demanda, com a finalidade de levantar em pouqussimo tempo um ambiente de trabalho;

Atravs da implementao do protocolo PXE e do preparo de uma

imagem para boot via rede (remoto) que contenha apenas um ambiente grfico e um browser, criar terminais burros (thinclients23), para acesso aos cloud-desktops.

91

Pesquisar empresas brasileiras que j estejam utilizando tecnologias de

nuvem, e quais foram os benefcios obtidos com a mudana.

Pesquisar a associao da tecnologia de nuvem com o chamado TI

Verde, apontando similaridades e benefcios.

Etc.

92 APNDICE 1 ARQUIVO DE CONFIGURAO DO VICOMPRESS

# Vicompress configuration file webserver 10.0.0.2 80 webserver 10.0.0.2 443 hostheader sol.forenaite.net listen 0.0.0.0 80 listen 0.0.0.0 443 outgoingip 0.0.0.0 enable_sessions yes enable_compression yes enable_caching yes cache_memory 200 max_cacheditem_size 512 cache_expires 240 enable_dns_caching yes dns_expires 48 user nobody rotatesize 100 logformat squid enable_debug no accesslog /usr/vicompress/log/accesslog errorlog /usr/vicompress/log/errorlog errorpage /usr/vicompress/etc/errorpage.html logstats /usr/vicompress/logstats

93 REFERNCIAS BIBLIOGRFICAS Base de Conhecimento da Sun Microsystems <http://sunsolve.sun.com> Acessado em 11 de maro de 2009. Laboratrio de Tecnologia de Nuvem da IBM Corporation <http://www.ibm.com/ibm/cloud/labs/> Acessado em 10 de maro de 2009. VMWare Server <http://www.vmware.com/products/server/> Acessado em 04/04/2009. VMWare White Papers <http://www.vmware.com/solutions/whitepapers/virtualization.html> 04/04/2009. Acessado em

10 Obstacles to Cloud Computing by UC Berkeley, written by Michael Sheehan <http://blog.gogrid.com/2009/02/19/10-obstacles-to-cloud-computing-by-uc-berkeleyhow-gogrid-hurdles-them/> Acessado em 05 de abril de 2009. Cloud Computing Trends <http://cloudtrends.blogspot.com/> Acessado em 05 de abril de 2009. Cherrypal <http://www.cherrypal.com/> Acessado em 05 de abril de 2009. Cloud Computing: The Next Great Buzzword? <http://www.ignitesocialmedia.com/blog/gene/> Acessado em 05 de abril de 2009. What is the Cloud? <http://vinf.net/2009/01/08/what-is-the-cloud/> Acessado em 05 de abril de 2009. Patrick J. Volkerding <http://www.slackware.com> Acessado em 03 de maio de 2009. Open Solaris <http://www.opensolaris.org/os/> Acessado em 03 de maio de 2009. Solaris <http://www.sun.com/software/solaris/10/index.jsp> Acessado em 03 de maio de 2009. ViSolve ViCompress <http://www.visolve.com/vicompress/index.php> Acessado em 03 de maio de 2009. The Apache Software Foundation <http://www.apache.org/> Acessado em 03 de maio de 2009. OpenSSL <http://www.openssl.org/> Acessado em 03 de maio de 2009.

94 PHP <http://www.php.net/> Acessado em 03 de maio de 2009. Netfilter Iptables <http://www.netfilter.org/> Acessado em 03 de maio de 2009. Net-SNMP <http://www.net-snmp.org/> Acessado em 03 de maio de 2009. D.J.Bernstein DjbDNS <http://cr.yp.to/djbdns.html> Acessado em 03 de maio de 2009. Nagios <http://www.nagios.org/> Acessado em 03 de maio de 2009. Cacti <http://www.cacti.net/> Acessado em 03 de maio de 2009. Centreon <http://www.centreon.com/> Acessado em 03 de maio de 2009. MySQL <http://www.mysql.com/> Acessado em 03 de maio de 2009. EyeOS <http://eyeos.org/> Acessado em 03 de maio de 2009. OpenOffice <http://www.openoffice.org/> Acessado em 03 de maio de 2009. Jeremy Grossmann e Xavier Alt - GNS3 <http://www.gns3.net/> Acessado em 03 de maio de 2009. Christophe Fillot - Dynamips <http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator> Acessado em 03 de maio de 2009. IBM Grid Literature <http://www-03.ibm.com/linux/grid/resources/> Acessado em 04 de maio de 2009. IBM Systems Journal <http://www.research.ibm.com/journal/sj43-1.html> Acessado em 04 de maio de 2009. IBM Research Autonomic Computing <http://www.research.ibm.com/autonomic/> Acessado em 05 de maio de 2009. Johnm Willis Blog <http://www.johnmwillis.com/cloud-computing/cloud-vendors-a-to-z-revised/> Acessado em 05 de maio de 2009.

95 Dion Hinchcliffe Blog <http://blogs.zdnet.com/Hinchcliffe/> Acessado em 05 de maio de 2009. IBM Logical Partitioning <https://www01.ibm.com/servers/resourcelink/lib03030.nsf/pagesByDocid/477FB265C4183781852573 7C007DD123?OpenDocument&pathID=1> Acessado em 10 de maio de 2009. Mathur - EXT4 Filesystem <https://ols2006.108.redhat.com/2007/Reprints/mathur-Reprint.pdf> Acessado em 16 de maio de 2009. EXT4 <http://kernelnewbies.org/Ext4#head-97cbed179e6bcc48e47e645e06b95205ea832a68> Acessado em 16 de maio de 2009. Charles Hymes - Expect <http://expect.nist.gov/> Acessado em 17 de maio de 2009. SecureWorks - DNS Cache Poisoning <http://www.secureworks.com/research/articles/dns-cache-poisoning/> Acessado em 17 de maio de 2009. ISC Internet Systems Consortium <https://www.isc.org/> Acessado em 17 de maio de 2009. RFC 2010 - Operational Criteria for Root Name Servers (http://www.rfc-archive.org/getrfc.php?rfc=2010 - Acessado em 17 de maio de 2009. RFC 2087 - IMAP4 QUOTA extension <http://www.rfc-archive.org/getrfc.php?rfc=2087> Acessado em 17 de maio de 2009. Centreon <http://www.centreon.com> Acessado em 19 de maio de 2009. Debian GNU/Linux <http://www.debian.org/index.pt.html> Acessado em 28 de maio de 2009.

Potrebbero piacerti anche