Vous êtes sur la page 1sur 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.

Comisso Examinadora:

________________________________________
Prof. Frederico Sauer Guimares Oliveira, Doutor
________________________________________
Prof. Celso Rabelo Machado Pinto, Especialista
________________________________________
Prof. Rodrigo de Almeida David, Especialista

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

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

Java21.

Existe

tambm

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

Microsystems,

Sistemas de Arquivo sofisticados, a exemplo do ZFS28 da Sun


que

pode

suportar

uma

capacidade

virtualmente

ilimitada

de

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

FUNO

NOME DE HOST

SERVIOS

firewall

alfa

Firewall, Proxy Reverso e DNS

cloudserver

beta

Servios e Aplicaes Web

gerencia

gama

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
;;

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

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

LAN #

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

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

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

tcp
udp
tcp
udp
tcp
udp

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

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

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


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

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

DROP
DROP
DROP
DROP
DROP
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,

ns1.forenaite.net

atravs
10.0.0.1

do
;

comando
./add-host

cd

/service/tinydns/root

beta.forenaite.net

10.0.0.2

./add-alias

./add-host

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

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

-k

match_max 100000
# Espera exibicao de uma determinada string, e envia a resposta
expect "Enter pass phrase:"
send -- "univercidade\r"
expect eof

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
;;

'stop')

/usr/apache2/2.2/bin/apachectl 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 desenvolvedor43. 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

demais

### 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
}

-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,

SNMP

pode

ser

configurado

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

direto

no

arquivo

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

view all included

local
local
local
lan
lan
lan
.1 80

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

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

Contribuio para o aumento da disponibilidade dos recursos

vida humana;

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

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.

em

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.

Vous aimerez peut-être aussi