SlideShare une entreprise Scribd logo
1  sur  136
Télécharger pour lire hors ligne
UNIVERSIDADE ESTADUAL DE GOIAS
       UNIDADE UNIVERSITARIA DE TRINDADE




        MARCUS WINICIUS OLIVEIRA COSTA
          RAYNER MAX FERNANDES LIMA




ANÁLISE DE DESEMPENHO DE UM SERVIDOR PROXY
               VIRTUALIZADO




                  Trindade - GO
                      2012
MARCUS WINICIUS OLIVEIRA COSTA
             RAYNER MAX FERNANDES LIMA




ANÁLISE DE DESEMPENHO DE UM SERVIDOR PROXY
                    VIRTUALIZADO




                                   Trabalho   de   Conclusão    de   Curso
                              apresentado como parte dos requisitos básicos
                              para a obtenção do Título de Tecnólogo em
                              Redes de Computadores ao Curso Superior de
                              Tecnologia em Redes de Computadores da
                              Universidade Estadual de Goiás.




     Orientador: Prof. Esp. Antônio Cruvinel Borges Neto




                       Trindade - GO
                            2012
Costa, Marcus Winicius Oliveira;
          Lima, Rayner Max Fernandes


          Análise de Desempenho de um Servidor Proxy Virtualizado/ Marcus
Winicius Oliveira Costa, Rayner Max Fernandes Lima. – Trindade: 2012. XX
p. :il.


          Orientador Esp. Professor Antônio Cruvinel Borges Neto.


          Trabalho de Conclusão de Curso Superior de Tecnologia em Redes de
Computadores
          UEG (Universidade Estadual de Goiás), Trindade, 2012. Inclui
bibliografia.
MARCUS WINICIUS OLIVEIRA COSTA
           RAYNER MAX FERNANDES LIMA




ANÁLISE DE DESEMPENHO DE UM SERVIDOR PROXY
                  VIRTUALIZADO




                                  Trabalho submetido à Banca Examinadora
                             como parte dos requisitos para Conclusão do
                             Curso    de   Tecnologia   em   Redes   de
                             Computadores.



                 BANCA EXAMINADORA:



      ___________________________________________
          Prof. Esp. Antônio Cruvinel Borges Neto


      ___________________________________________
             Prof. Esp. Pabllo Borges Cardoso


      ___________________________________________
             Prof. Esp. George Mendes Marra




                      Trindade - GO
                           2012
DEDICATÓRIA



Este trabalho é dedicado aos nossos pais, que acreditaram em
nós desde o início. São eles, os principais responsáveis pela
construção de nosso caráter. Aos nossos amigos e as pessoas
próximas a nós, que estiveram ao nosso lado, sempre à
disposição para nos ajudar e apoiar nos momentos difíceis. E por
último, mas não menos importante, aos nossos professores, seres
humanos formidáveis, detentores do saber e, que fizeram, fazem
e farão toda a diferença em nossas vidas, tanto profissional,
quanto pessoal.
AGRADECIMENTOS



É de Jean Cocteau a frase: “Não sabendo que era impossível, foi
lá e fez”. E é com ela, que iniciamos nossos agradecimentos.
Primeiramente a Deus, pois sabemos que, sem Ele, nada somos
e nenhuma conquista é possível. Aos nossos pais os mais
sinceros e profundos agradecimentos. Agradecemos também aos
nossos familiares e amigos, que apoiaram e foram pacientes
conosco nos momentos mais difíceis e desafiantes. Ao corpo
docente e demais profissionais da UEG - Unidade Universitária
de Trindade, que nos acolheu com tanto carinho, nosso
reconhecimento. Ao Professor George Marra que acompanhou
de perto nossa trajetória e, em especial, ao Professor Antônio
Cruvinel, que não só nos orientou, mas, acreditou em nós e neste
projeto desde o início.
“Que os vossos esforços desafiem as impossibilidades, lembrai-
vos de que as grandes coisas do homem foram conquistadas do
que parecia impossível.”

                                              Charles Chaplin
SUMÁRIO
RESUMO ................................................................................................................................................ 11
ABSTRACT .............................................................................................................................................. 12
LISTA DE ILUSTRAÇÃO ........................................................................................................................... 13
LISTA DE TABELAS.................................................................................................................................. 15
LISTA DE SÍMBOLOS E ABREVIATURAS .................................................................................................. 16
1 INTRODUÇÃO...................................................................................................................................... 18
   1.1 Objetivo geral .............................................................................................................................. 20
   1.2 Objetivos específicos ................................................................................................................... 20
   1.3 Justificativa .................................................................................................................................. 21
   1.4 Metodologia ................................................................................................................................ 21
2 FUNDAMENTAÇÃO TEÓRICA .............................................................................................................. 22
   2.1 Máquina Virtual ........................................................................................................................... 22
       2.1.1 Monitor de máquina virtual ................................................................................................. 23
       2.1.2 Técnicas de Virtualização ..................................................................................................... 23
           2.1.2.1 Virtualização Completa ................................................................................................. 23
           2.1.2.2 Paravirtualização ........................................................................................................... 24
           2.1.2.3 Recompilação Dinâmica ................................................................................................ 24
       2.1.3 Vantagens de se utilizar a virtualização ............................................................................... 25
       2.1.4 Desvantagens ....................................................................................................................... 27
       2.1.5 Utilização .............................................................................................................................. 28
       2.1.6 Segurança ............................................................................................................................. 28
       2.1.7 Ferramenta Escolhida ........................................................................................................... 29
           2.1.7.1 Diferenças entre VMware ESX e VMware ESXi ............................................................. 30
   2.2 Servidor Proxy ............................................................................................................................. 31
       2.2.1 Características do Servidor Proxy ......................................................................................... 31
       2.2.2 Tipos de Proxy ...................................................................................................................... 32
           2.2.2.1 Transparente ................................................................................................................. 32
           2.2.2.2 Controlado ..................................................................................................................... 33
           2.2.2.3 Proxy Transparente x Controlado.................................................................................. 33
              2.2.2.3.1 Vantagens do Proxy Transparente ......................................................................... 33
              2.2.2.3.2 Vantagens do Proxy Controlado ............................................................................. 34
           2.2.2.4 Proxy Anônimo .............................................................................................................. 34
           2.2.2.5 Proxy Reverso ................................................................................................................ 35
2.2.3 Squid ..................................................................................................................................... 36
          2.2.3.1 Breve história do Squid ................................................................................................. 36
          2.2.3.2 Características do Squid ................................................................................................ 37
          2.2.3.3 Requisitos Específicos para o Squid .............................................................................. 38
          2.2.3.4 Estrutura do Squid ......................................................................................................... 38
             2.2.3.4.1 Arquivo de Configuração ........................................................................................ 39
             2.2.3.4.2 Restrições de acessos ............................................................................................. 39
             2.2.3.4.3 Lista de Controle de Acesso ................................................................................... 39
             2.2.3.4.4 Parâmetros administrativos ................................................................................... 44
      2.2.4 Microsoft ISA Server ............................................................................................................. 46
      2.2.5 Escolha da ferramenta ......................................................................................................... 46
      2.2.6 Firewall Iptables ................................................................................................................... 46
   2.3 Sistema Operacional.................................................................................................................... 48
      2.3.1 Arquitetura ........................................................................................................................... 48
      2.3.2 Tipos de Sistemas Operacionais ........................................................................................... 50
      2.3.3 Principais finalidades de um S.O. ......................................................................................... 51
      2.3.4 Red Hat Enterprise Linux 6 ................................................................................................... 54
   2.4 Software de Benchmark .............................................................................................................. 57
      2.4.1 Definição............................................................................................................................... 57
      2.4.2 Características ...................................................................................................................... 58
      2.4.3 Tipos de Benchmark ............................................................................................................. 59
      2.4.4 Utilização dos Benchmarks ................................................................................................... 59
      2.4.5 Estratégias do Benchmark .................................................................................................... 60
      2.4.6 Erros do processo de Benchmarking .................................................................................... 61
      2.4.7 Análise dos dados ................................................................................................................. 62
      2.4.8 Benchmarking do Servidor Proxy ......................................................................................... 62
      2.4.9 WebPolygraph ...................................................................................................................... 63
          2.4.9.1 Metas da ferramenta WebPolygraph ............................................................................ 63
          2.4.9.2 Visão geral sobre a arquitetura ..................................................................................... 64
3 INSTALAÇÃO DAS FERRAMENTAS ...................................................................................................... 66
   3.1 VMware vSphere ESXi 5.0 ........................................................................................................... 66
      3.1.1 Primeiros passos ................................................................................................................... 67
      3.1.2 Instalando o VMware vSphere ESXi 5.0 ............................................................................... 68
      3.1.3 Instalação do VMware vSphere Client ................................................................................. 74
3.2 Red Hat Enterprise Linux 6 .......................................................................................................... 82
       3.2.1 Instalação ............................................................................................................................. 82
       3.2.2 Configuração ........................................................................................................................ 88
       3.2.3 Registro do Red Hat Enterprise Linux 6 ................................................................................ 91
   3.3 Squid ............................................................................................................................................ 94
   3.4 WebPolygraph ............................................................................................................................. 95
4 ESTUDO DE CASO ............................................................................................................................... 98
   4.1 Projeção do estudo de caso ........................................................................................................ 99
   4.2 Maquina 1 – Servidor Proxy Nativo ............................................................................................. 99
   4.3 Maquina 2 – Servidor Proxy Virtualizado .................................................................................. 107
   4.4 Configuração física e lógica da Rede de Computadores ........................................................... 108
   4.5 Utilizando o WebPolygraph ....................................................................................................... 112
   4.6 Problemas encontrados ............................................................................................................ 124
   4.7 Resultados obtidos .................................................................................................................... 125
5 CONCLUSÃO ..................................................................................................................................... 131
6 TRABALHOS FUTUROS ...................................................................................................................... 133
7 REFERÊNCIAS BIBLIOGRÁFICAS ........................................................................................................ 134
11


                                         RESUMO


       A área de Tecnologia da Informação – TI, é uma das que mais têm apresentado
crescimento no mundo moderno. A informatização nos diversos setores é uma realidade que
vivenciamos cotidianamente. As inúmeras economias de mercado buscam hoje uma
otimização no sentido de garantir eficiência e eficácia na produção e prestação de serviço. No
intuito de garantir estes requisitos, as empresas vêm buscando a implementação de técnicas e
tecnologias que garantam economia de tempo e custos, melhorando assim a produtividade
sem perder a qualidade dos serviços prestados. Dentre as várias técnicas e ferramentas
empregadas neste sentido, está a virtualização.

       Com o emprego da virtualização, podem-se criar várias máquinas virtuais em uma
mesma máquina física, o que torna possível oferecer os mais distintos serviços, em sistemas
operacionais e servidores diferentes, de forma concomitante. Entretanto a utilização dessa
técnica vem gerando uma série de discussões no que se refere ao desempenho ou ausência
dele, como é o caso da virtualização do Servidor Proxy.

       Este trabalho objetiva, portanto, analisar o desempenho de um Servidor Proxy
Virtualizado. O conhecimento necessário para realizar esse procedimento, será adquirido
através de consultas e pesquisas a fontes diversas como livros, artigos, web sites, revistas e
outros. A análise se efetivará, através de ferramentas que verifiquem o tráfego da rede de
computadores, mediante a comparação dos dados obtidos, levando-se em conta, o
comportamento de um Servidor Proxy na máquina física e o desempenho do mesmo em um
ambiente virtualizado.


Palavras-chave: Virtualização, máquina virtual, análise, Servidor Proxy, desempenho.
12


                                         ABSTRACT


       The area of Information Technology - IT is one of the fastest growth are presented in
the modern world. Computerization in various sectors is a reality that we experience daily.
The many market economies have now sought an optimization to ensure efficiency and
effectiveness in production and service delivery. To ensure these requirements, companies
have been seeking the implementation of techniques and technologies to ensure saving time
and costs, improving productivity without losing the quality of services provided. Among the
various techniques and tools used in this sense, is virtualization.

       With the use of virtualization, you can create multiple virtual machines on a single
physical machine, which makes it possible to offer the most distinguished services in different
operating systems and servers, concomitantly. However the use of this technique has
generated a lot of discussions regarding the performance or lack of it, as is the case of the
Proxy Server virtualization.

       This paper aims, therefore, to analyze the performance of a Virtualized Server Proxy.
The knowledge required to perform this procedure, will be acquired through consultations and
surveys to various sources such as books, articles, web sites, magazines and other. The
analysis become effective, using tools that check the network traffic from computers, by
comparing the data, taking into account the behavior of a proxy server on the physical
machine and the same performance in a virtualized environment.


Keywords: Virtualization, Virtual Machine, analysis, Proxy Server, performance.
13


                                                 LISTA DE ILUSTRAÇÃO

FIGURA: 1 – INFORMAÇÕES DE DOWNLOAD E LICENCIAMENTO .......................... 67
FIGURA: 2 – ESCOLHA DO BOOT ...................................................................................... 68
FIGURA: 3 – TELA DE INSTALAÇÃO DO VMWARE VSPHERE ESXI 5 ...................... 69
FIGURA: 4 – CONFIRMAÇÃO DE ESCOLHA DE DISCO ................................................ 70
FIGURA: 5 – DEFINIÇÃO DA SENHA DO ROOT.............................................................. 70
FIGURA: 6 – TELA DE REINICIO DO SERVIDOR APÓS INSTALAÇÃO DA
FERRAMENTA ....................................................................................................................... 71
FIGURA: 7 – TELA DE LOGIN DO VMWARE VSPHERE ESXI 5 ................................... 72
FIGURA: 8 – DEFINIÇÃO DO ENDEREÇO IP .................................................................... 73
FIGURA: 9 – DEFINIÇÃO DO SERVIDOR DNS................................................................. 73
FIGURA: 10 – TELA DE INÍCIO DE INSTALAÇÃO DO VMWARE VSPHERE CLIENT
5.0 ............................................................................................................................................. 74
FIGURA: 11 – TERMOS DE CONTRATO E LICENÇA ...................................................... 75
FIGURA: 12 – ESCOLHA DA PASTA DE INSTALAÇÃO ................................................. 76
FIGURA: 13 – TELA DE FINALIZAÇÃO DE INSTALAÇÃO DO VMWARE VCLIENT 76
FIGURA: 14 – CONEXÃO COM O VMWARE VSPHERE ESXI 5 .................................... 77
FIGURA: 15 – TELA INICIAL DO VCLIENT ...................................................................... 78
FIGURA: 16 – CRIAÇÃO DE UMA MÁQUINA VIRTUAL ............................................... 78
FIGURA: 17 – ESCOLHA DA VERSÃO DA MÁQUINA VIRTUAL ................................. 79
FIGURA: 18 – DEFINIÇÃO DAS PLACAS DE REDE DA NOVA MÁQUINA VIRTUAL
.................................................................................................................................................. 80
FIGURA: 19 – FINALIZAÇÃO DA CRIAÇÃO DA NOVA MÁQUINA VIRTUAL .......... 80
FIGURA: 20 – INICIANDO A MÁQUINA VIRTUAL CRIADA ......................................... 81
FIGURA: 21 – TELA INICIAL DE INSTALAÇÃO DO RED HAT ENTERPRISE LINUX 6
.................................................................................................................................................. 82
FIGURA: 22 – ESCOLHA DO IDIOMA PADRÃO .............................................................. 83
FIGURA: 23 – ESCOLHA DO NOME DA MÁQUINA ........................................................ 84
FIGURA: 24 – ESCOLHA DO PARTICIONAMENTO DE DISCO ..................................... 85
FIGURA: 25 – PERSONALIZAÇÃO DA INSTALAÇÃO DO RED HAT ENTERPRISE
LINUX 6 .................................................................................................................................. 86
FIGURA: 26 – DEFINIÇÃO DE INSTALAÇÃO DOS PACOTES ADICIONAIS .............. 87
FIGURA: 27 – TELA DE REINICIO DO SERVIDOR .......................................................... 87
14


FIGURA: 28 – REGISTRO DO RED HAT ENTERPRISE LINUX 6 ................................... 88
FIGURA: 29 – CRIAÇÃO DE NOVOS USUÁRIOS ............................................................. 89
FIGURA: 30 – TELA INICIAL DE LOGIN ........................................................................... 90
FIGURA: 31 – REGISTRO DO RED HAT ENTERPRISE LINUX 6 ................................... 91
FIGURA: 32 – LOGIN E SENHA PARA REGISTRAR O S.O. ............................................ 92
FIGURA: 33 – CONCLUSÃO DO REGISTRO ..................................................................... 93
FIGURA: 34 – TERMINAL CONTENDO AS INFORMAÇÕES DE INSTALAÇÃO DO
SQUID 3.1 ................................................................................................................................ 94
FIGURA: 35 – PÁGINA DE DOWNLOAD DO PACOTE DA FERRAMENTA
WEBPOLYGRAPH ................................................................................................................. 96
FIGURA: 36 – TERMINAL CONTENDO O PROCESSO DE INSTALAÇÃO DO
WEBPOLYGRAPH ................................................................................................................. 97
FIGURA: 37 – ESTRUTURA INICIAL ............................................................................... 109
FIGURA: 38 – ESTRUTURA DESEJADA .......................................................................... 110
FIGURA: 39 – ESTRUTURA OBTIDA ............................................................................... 111
FIGURA: 40 – EXEMPLIFICAÇÃO DO WEBPOLYGRAPH ........................................... 123
FIGURA: 41 – REPRESENTAÇÃO MÉDIA DE TEMPO DE RESPOSTA DE 1 CLIENTE
................................................................................................................................................ 129
FIGURA: 42 – REPRESENTAÇÃO MÉDIA DE TEMPO DE RESPOSTA DE 200
CLIENTES ............................................................................................................................. 130
15


                                                    LISTA DE TABELAS


TABELA 1 – COMPARAÇÃO ENTRE OS PRODUTOS RED HAT ENTERPRISE LINUX
- RED HAT INC. ..................................................................................................................... 56
TABELA 2 – RESULTADOS DO SERVIDOR PROXY NATIVO .................................... 125
TABELA 3 – RESULTADOS DO SERVIDOR PROXY VIRTUALIZADO ...................... 126
TABELA 4 – COMPARAÇÃO DE RESULTADOS............................................................ 127
TABELA 5 – RESULTADOS DO ACESSO DE 200 CLIENTES AO SERVIDOR PROXY
NATIVO................................................................................................................................. 128
TABELA 6 – RESULTADOS DO ACESSO DE 200 CLIENTES AO SERVIDOR PROXY
VIRTUALIZADO .................................................................................................................. 128
TABELA 7 – COMPARAÇÃO DE RESULTADOS DA SIMULAÇÃO DE 200 CLIENTES
................................................................................................................................................ 128
16


                    LISTA DE SÍMBOLOS E ABREVIATURAS


ABNT: Associação Brasileira de Normas Técnicas

ACL: (Access Control List) Listas de Controle de Acesso

BIOS: (Basic Input/Output System) Sistema Básico de Entrada/Saída

CD: Disco Compacto

CPU: (Central Processing Unit) Unidade Central de Processamento

DHCP: (Dynamic Host Configuration Protocol) Protocolo de configuração dinâmica de host

DNS: (Domain Name System) Sistema de Nomes de Domínio

DVD: Disco Versátil Digital

FTP: (File Transfer Protocol) Protocolo de Transferência de Arquivos)

GB: GigaByte

GUI: (Graphical User Interface)- Interface gráfica com o usuário

HD: (Hard Disk) Disco Rígido

HTTP: (HyperText Transfer Protocol) - Protocolo de Transferência de Hipertexto

HTTPS: (HyperText Transfer Protocol Secure) Protocolo de Transferência de Hipertexto
Seguro

I/O: (Input/Output) Entrada/Saída

ICP: (Public Key Infrastructure) Infra-estrutura de Chaves Públicas

ICQ: A sigla “ICQ” é um acrônimo feito com base na pronúncia das letras em inglês: I Seek
You, que traduzido para o português: eu procuro você

IP: (Internet Protocol) Protocolo de Internet

ISO: Organização Internacional para Padronização

JVM: (Java Virtual Machine) Máquina Virtual Java

KB: KiloByte

KDE: (K Desktop Environment) Ambiente de Desktop Especial

KVM: (Kernel-based Virtual Machine) Máquina Virtual de Kernel baseado

MB: MegaBytes
17


MMV: Monitor de Máquina Virtual

NAT: (Network Address Translation) Tradutor de Endereços de Rede

NIC: (Network Information Center) Centro de Informação de Redes

NTLM: (New Technology Local Area Network Manager) Novo Gerente de Tecnologia de
Rede de Área Local

OSI: (Open Systems Interconnection) Sistema Aberto de Interconexão

PC: (Personal Computer) Computador Pessoal

PDA: (Personal Digital Assistants) Assistentes Pessoais Digitais

RAM: (Random-Access Memory) Memória de Acesso Aleatório

RAS: (Reliability, Availability and Serviceability) Confiabilidade, Disponibilidade e Utilidade

S.O.: Sistema Operacional

SELinux: (Security-Enhanced Linux) Segurança Linux Aprimorada

SGBDs: Sistema de Gerenciamento de Banco de Dados

SMTP: (Simple Mail Transfer Protocol) Protocolo Simples de Transferência de Email

SNMP: (Simple Network Management Protocol) Protocolo simples de gestão de rede

SPEC: (Standard Performance Evaluation Corporation) Corporação Padrão de Avaliação de
Desempenho

SSH: Secure Shell

SSL: (Security Sockets Layer) Segurança da Camada de Transporte

TI: Tecnologia da Informação

TPC: (Transaction Processing Performance Council) Conselho de Desempenho de
Processamento de Transações

TSL: Segurança da Camada de Transporte.

UEG: - UnU: Universidade Estadual de Goiás - Unidade Universitária

URL: (Uniform Resource Locator) Localizador-Padrão de Recursos

VMM – (Virtual Machine Monitor) Monitor de Máquina Virtual

VMM: (Virtual Machine Monitor) Monitor de Máquina Virtual

VPN: (Virtual Private Network) Rede Privativa Virtual
18


                                     1 INTRODUÇÃO

       A evolução tecnológica aliada ao aumento da utilização da internet vem obrigando as
empresas a se adequarem a um novo contexto no que se refere à área da informática: a
necessidade de maquinas cada vez mais potente. Naturalmente, os servidores utilizados nas
empresas, necessitam a cada dia, de maior poder de processamento, memória, espaço e outros
requisitos, que os faça cada vez mais eficientes, capacitando assim as empresas a atuarem em
um mercado altamente competitivo.
       De acordo com MIGUEL (2009), em seu artigo, publicado no site Tecnologia do
Globo, intitulado “O que é um servidor, um servidor dedicado e um mainframe?”, um
servidor pode ser entendido como um sistema ou equipamento que disponibiliza serviços
específicos à outras máquinas na rede de computadores.
        Uma das principais funções de um servidor é centralizar o acesso a estes serviços,
tornando uma informação disponível em um maior tempo possível, em vários lugares
diferentes, de maneira segura e íntegra.
       Em contrapartida ao uso deste tipo de equipamento, as empresas, na maioria dos casos,
tem como meta, oferecer o mesmo serviço, com a menor despesa possível. Embora os custos
atuais dos equipamentos necessários aos servidores terem diminuindo, se comparado há
alguns anos atrás, as controvérsias do lucro e gastos, acabam levando estas mesmas empresas
a adotarem medidas específicas no intuito de resolverem este tipo de questão.
       Dentre as medidas adotadas para aumentar a disponibilidade lógica, diminuindo os
custos físicos, está a virtualização. Segundo LAUREANO (2006), o conceito de máquina
virtual não é novo. Suas origens remetem ao início da história dos computadores, no final dos
anos 50 e inicio dos anos 60. A virtualização pode ser definida, como a capacidade de repartir
diferentes estações lógicas ou virtuais em uma mesma máquina hospedeira, com isso é
possível instalar diferentes Sistemas Operacionais em uma mesma máquina física, estando
estes funcionando ao mesmo tempo e paralelamente. “Virtualizar virou sinônimo de abstrair
e, portanto, praticamente tudo que tem um conceito de abstração leva virtualização em seu
nome” (SCHAFFER, 2008).
       Todas essas máquinas virtuais são gerenciados por um midlleware, uma camada
mediana que fica entre o sistema nativo e o hardware. Esta camada, que também é conhecida
como Hypervisor, MMV - Monitor de Máquina Virtual - ou VMM – Virtual Machine
Monitor-, tem o controle sobre os recursos do hardware e permite criar várias maquinas
virtuais sobre uma maquina real (LAUREANO, 2006, p. 19).
19


       A virtualização traz uma série de vantagens sólidas. Dentre elas podemos destacar a
redução do consumo de energia, facilidade para exercícios de teste e desenvolvimento, maior
segurança e disponibilidade, melhor aproveitamento do espaço físico e do hardware,
flexibilidade para migrar ambientes dentre outras importantes características, o que acabam
por fazer com que esta tecnologia caminhe a passos largos.
       Com o processo acima citado, as empresas podem implantar um ou mais servidores
em uma mesma máquina, satisfazendo assim o seu objetivo de redução de custos, além de
maximizar o uso das máquinas físicas, diminuir a ociosidade do servidor e reduzir gastos com
infraestrutura, refrigeração e energia, vantagens descritas por MOREIRA (2008). Para
exemplificar, em um mesmo computador, pode-se implantar um Servidor de Fax e um
Servidor de Impressão virtualizados em um Servidor Web devido a pouca demanda de
execução que estes exigem do hardware. Mas este procedimento, de virtualização de
máquinas, acabou por gerar algumas discussões a respeito do desempenho dos servidores,
principalmente devido às limitações que este tipo de técnica possui. A virtualização de um
Servidor Proxy, é um tópico importante dessas discussões.
       Um Servidor Proxy nada mais é do que um computador que fica localizado na rede de
computadores, entre o usuário e a Internet, e que segundo MARCELO (2006), pode ser
utilizado para armazenar um cache das páginas Web, controlar e registrar o acesso do usuário
à Internet, além de providenciar anonimato e também bloquear o acesso a determinados sites.
       Este tipo de servidor atua da seguinte maneira: um cliente ou usuário conecta-se a um
Servidor Proxy, requisitando um serviço - como uma conexão, um arquivo, entre outros - o
servidor avalia a solicitação e a atende de acordo com as políticas estabelecidas. Dentre as
vantagens de se utilizar esse Servidor podemos citar: o aumento na velocidade de resposta de
uma requisição feita por um cliente e economia de banda larga, pois, com o cache
armazenado, o servidor não precisará buscar todas as informações novamente na Internet,
sendo necessária apenas uma atualização das informações locais (MARCELO, 2006).
       A maior problemática gerada sobre esse conceito e a virtualização deste tipo de
serviço está na perda de desempenho. Isto porque uma máquina virtual, de acordo com
LAUREANO (2008, p. 34), não possui o mesmo desempenho que uma máquina nativa
devido à introdução de uma camada extra de software, além de que um simples gargalo nessa
camada extra ou até mesmo na máquina física pode atrapalhar o normal funcionamento da
máquina virtual.
20


       Até o presente momento, não constatamos um estudo aprofundado visando uma
solução para a problemática apresentada, sendo assim, será proposto, neste trabalho, a criação
de um Servidor Proxy que funcionará em uma máquina virtualizada para que possamos fazer
a análise de desempenho do mesmo. A análise dos resultados pode vir a ser, uma contribuição
a aos profissionais da área de Tecnologia da Informação, como tecnólogos e administradores
de rede, no que se refere à comprovação ou não da provável perda de desempenho de um
Servidor Proxy virtualizado.


1.1 Objetivo geral


       Realizar um estudo sobre o desempenho de um Servidor Proxy Virtualizado através da
análise de desempenho do mesmo na rede de computadores.


1.2 Objetivos específicos


       - Compreender os conceitos de máquina virtual, Servidor Proxy e análise de
desempenho das redes de computadores bem como a usabilidade dos mesmos;
       - Elencar se comprovado for, as vantagens existentes para as empresas em virtualizar
um servidor;
       - Elucidar os benefícios do Servidor Proxy;
       - Montar um ambiente virtualizado visando o estudo de caso;
       - Analisar e quantificar o desempenho do serviço Proxy em uma máquina nativa e em
uma máquina virtual;
       - Oferecer um material de apoio a acadêmicos e a profissionais de redes de
computadores.
21


1.3 Justificativa

       Na atualidade, o crescimento das redes de computadores é sempre colocado em
questionamento. É comum nos depararmos com empresas que pretendem ter um excelente
parque tecnológico e oferecerem os mais diferentes tipos de serviços, e mesmo não dispondo
de um gasto excessivo, acabam por atingir esses objetivos, após se depararem com algumas
soluções, como é o caso da virtualização.
       Quando uma empresa possui um grande número de servidores físicos, a virtualização é
bem aceita, apesar de trazer consigo problemas antes não existentes, como por exemplo, a
necessidade de um maior monitoramento nestes equipamentos, tanto física quanto
logicamente, haja vista que, um mesmo equipamento, oferece dois ou até mais serviços. Outro
exemplo são os servidores que não podem trabalhar compartilhando os mesmos recursos, pois
necessitam de um alto poder de processamento, armazenamento, largura de banda, memória
entre outros recursos. Além desses exemplos, existe um em particular, em torno do qual muito
se especula, mas sem comprovação ate o momento, que é a não virtualização do Servidor
Proxy devido a uma possível perda de desempenho.
       Devido ao contexto desta questão de não se virtualizar um Servidor Proxy devido a
diminuição do desempenho, justifica-se a criação do ambiente virtualizado para análise de
desempenho da máquina nativa, da máquina virtual e da rede de computadores, ou seja, o
estudo de caso a fim de que, tenhamos elementos concretos que subsidiem nossas conclusões
a cerca da problemática exposta. Ao término deste projeto, pretende-se esclarecer,
compreender, e/ou comprovar, a questão sobre a perda de desempenho de um Servidor Proxy
virtualizado é real ou não.


1.4 Metodologia

       A metodologia adotada para a realização deste Trabalho de Conclusão de Curso consta
de parte teórica fundamentada em pesquisas de livros, artigos, revistas, jornais, vídeos e
páginas web e outra parte prática, visando gerar novos conhecimentos e o êxito do projeto,
para tanto será explorado, além dos itens citados, um estudo de caso real. O estudo de caso
real será feito com base na implantação, pelos próprios acadêmicos, de um Servidor Proxy em
uma máquina virtualizada, no intuito de analisar o desempenho deste serviço na rede de
computadores e assim através de elementos concretos comprovar a perda ou não do
desempenho supracitado.
22


                            2 FUNDAMENTAÇÃO TEÓRICA


2.1 Máquina Virtual


           Um dos primeiros conceitos de máquina virtual foi elaborado pela IBM. Segundo este
conceito, uma máquina virtual era considerada como uma cópia isolada de um sistema físico,
sendo que esta cópia estaria totalmente protegida. Em uma perspectiva mais atual, como
afirma LAUREANO (2006, p. 17), esta definição pode ser entendida como “uma duplicata
eficiente e isolada de uma máquina real”. No pensar de SILVA (2011), máquina virtual pode
ser considerada como um software que simula todas as condições de um computador real. Em
suma, máquinas virtuais são programas que permitem que em uma mesma máquina, sejam
executadas simultaneamente dois ou mais ambientes distintos e isolados, no qual trabalham
exatamente iguais a uma máquina física sendo controladas por um monitor de máquina
virtual.

           A definição de máquina virtual não é um conceito recente, pois sua origem se remete
ao final da década de 50 e inicio de 1960. Inicialmente, elas foram criadas com o intuito de
concentrar todos os sistemas disponíveis em um só computador, sendo que cada maquina
virtual tinha as mesmas configurações da máquina física.

           Na década de 1980, a virtualização perdeu importância com a popularização de
plataformas de hardware baratas, como o computador pessoal, pois se apresentava a um custo
menor, tornando simples o fornecimento de um computador completo a cada usuário do que
investir em sistemas de grande porte, caros e complexos. “Além disso, o hardware do PC
tinha desempenho modesto e não provia suporte adequado à virtualização, o que inibiu o uso
de ambientes virtuais nessas plataformas.” (LAUREANO; MAZEIRO 2006, p. 139).
23


2.1.1 Monitor de máquina virtual

       Segundo LAUREANO (2006, p. 19) uma máquina virtual é um ambiente criado por
um monitor de máquina virtual (Virtual Machine Monitor – VMM), também denominado
“sistema operacional para sistemas operacionais”. O monitor de máquina virtual - MMV ou
Virtual Machine Monitor – VMM pode ser entendido como uma camada de software
introduzida entre o hardware e as máquinas virtuais, cuja finalidade é abstrair a máquina
virtual do sistema operacional visitante. Essa camada realiza uma interface entre os sistemas
virtualizados e o hardware que é compartilhado por eles, sendo assim responsável pelo
gerenciamento de todas as estruturas de hardware, fornecendo então, um ambiente completo
no qual os sistemas virtualizados irão funcionar.
       Na computação o VMM também é conhecido como Hypervisor, uma plataforma de
virtualização, que possibilita a execução simultânea, porém independente de vários sistemas
operacionais em um único hardware. Existem duas maneiras distintas de atuação do
Hypervisor para realizar a virtualização: monitor nativo e monitor convidado.


2.1.2 Técnicas de Virtualização


       Para o processo de virtualização podemos utilizar métodos, sendo que os mais
utilizados são a virtualização completa, paravirtualização e recompilação dinâmica. De um
modo geral vale destacar o que diz WILLIAMS e GARCIA (2007) que, para criar partições
virtuais em um servidor, uma fina camada de software chamada de Virtual Machine Monitor
(VMM), é executado diretamente sobre a plataforma do hardware físico. Sendo que um ou
mais sistemas operacionais hospedeiros podem executar as aplicações sobre do VMM.


2.1.2.1 Virtualização Completa


       O método da virtualização completa, é utilizado para que qualquer software possa ser
executado sem alterações. Para isso um software de baixo nível é executado diretamente sobre
o hardware, carregado no computador antes de qualquer sistema operacional. Esta simulação
representa o conjunto de instruções do processador, a memória principal, interrupções,
exceções e acesso aos diversos dispositivos existentes. Um ponto que deve ser considerado
relevante, é que este tipo de virtualização, precisa de um hardware com características
específicas, para que seja possível atender instruções de execução privilegiada. Esse método
24


de simulação é realizado com maior eficácia, pois não necessita representar os estados de
execução do hardware.


2.1.2.2 Paravirtualização


       O segundo método é chamado de paravirtualização, no qual a máquina virtual é
executada sobre um sistema operacional nativo, sendo reconhecido apenas como um processo.
Na paravirtualização o sistema que será virtualizado sofre algumas alterações no kernel para
garantir a eficácia na interação com o monitor de máquinas virtuais. Apesar de se perder em
portabilidade devido a essas alterações, ele tem permissão de acessar diretamente os recursos
do hardware, sendo que esse acesso é monitorado pelo monitor de máquinas virtuais, que
fornece ao sistema convidado, os limites do sistema.

       A paravirtualização reduz a complexidade existente no desenvolvimento de máquinas
virtuais. Como afirma LAUREANO - 2006, historicamente os processadores não suportam a
virtualização nativa, sendo que a principal razão para utilizar a paravirtualização é o
desempenho obtido, que compensa as modificações que deverão ser implementadas nos
sistemas convidados Entre os softwares que realizam a paravirtualização, citamos como citar
exemplos o VMware Workstation, Virtual Box, Microsoft Virtual Server, Xen.


2.1.2.3 Recompilação Dinâmica


       A técnica da Recompilação Dinâmica, também recebe o nome de tradução dinâmica e
seu funcionamento se faz, traduzindo durante a execução de um programa, as instruções de
um formato para outro. Segundo (LAUREANO, 2006) com a compilação durante a execução,
o sistema pode adequar o código gerado de forma a refletir o ambiente original do programa,
onde informações que normalmente não estão disponíveis para um compilador estático
tradicional são exploradas, para que o código gerado seja mais eficiente.
       Uma de suas aplicações pode ser notada em compiladores JIT (just-in-time), que
traduzem de uma linguagem Bytecode para o código nativo da CPU onde o compilador
executa-o. A recompilação segue determinados passos:


        Primeiro: O código binário é escaneado para que seja identificada uma sequência de
          bits correspondentes à seção de código do programa em execução.
25




        Segundo: Os bits agrupados anteriormente são divididos em instruções, juntamente
           com os parâmetros delas.


        Terceiro: As instruções são transformadas para uma representação mais próxima do
           sistema operacional Host.


        Quarto: Um código em uma linguagem de alto nível é gerado a partir da
           representação anterior, sendo que esse código que é compilado e reescrito na
           linguagem nativa.


        Quinto: Temos uma sequência de bits agora executáveis no sistema operacional
           Host. O VMWare Workstation utiliza essa técnica, recompilando apenas parte do
           código, uma vez que boa parte dele pode executar nativamente (a arquitetura de
           hardware subjacente é a mesma da VM). No VMWare Workstation apenas
           instruções que não podem ser executadas diretamente são recompiladas.


       Um exemplo desse tipo de técnica é a JVM (Java Virtual Machine), uma máquina
virtual desenvolvida especialmente para aplicações Java, sendo esta capaz de carregar e
executar aplicativos, convertendo os Bytecodes em um código executável.


2.1.3 Vantagens de se utilizar a virtualização


   A virtualização traz consigo uma larga escala de vantagens, dentre as quais poderão ser
citadas:


      Segurança: Cada máquina virtual é isolada das demais devido à estrutura da camada
       de software do Hypervisor, portanto, a vulnerabilidade de um sistema que opera em
       uma máquina virtual não afeta as outras máquinas virtuais. Segundo MATTOS (2008),
       através das máquinas virtuais pode ser definido quais são os melhores ambientes para
       executar cada serviço, com diferentes ferramentas, requerimentos de segurança e até
       sistemas operacionais.
26


      Manutenção de Equipamentos: A manutenção é facilitada, pois os serviços estarão
       centralizados em uma mesma maquina física, também sendo possível espelhar a
       máquina virtual a fim de realizar manutenções de hardware, o que se traduz na não
       paralisação dos serviços.


      Redução de Gastos: Procurando cada vez mais manter o mesmo nível de serviço com
       menor custo, as empresas encontraram na virtualização um modo de economizar com
       gastos de equipamentos, espaço físico, refrigeração, entre outros. De acordo com
       MATTOS (2008), essa redução pode variar de 29% até 64%.


      Confiança e Disponibilidade: Como as máquinas virtuais funcionam independentes
       umas das outras, se ocorrerem falhas de software, estas não prejudicarão os demais
       serviços das outras máquinas virtuais.


      Escalabilidade: Todas as máquinas virtuais estão encapsuladas no VMM,
       possibilitando assim a mudança da plataforma de configuração da máquina virtual
       para aumentar ou diminuir seu desempenho, de acordo com as necessidades.


      Suporte a aplicações legadas: Caso ocorram mudanças de sistema operacional em uma
       empresa, a virtualização pode ser utilizada com a finalidade de manter vários tipos de
       sistemas operacionais em um mesmo hardware, ou seja, “é possível manter o sistema
       operacional antigo sendo executado em uma máquina virtual, o que reduz os custos
       com a migração” (MATTOS, 2008).


      Tecnologia Verde: A virtualização já deixou de ser uma tendência e se tornou no
       mundo corporativo, trazendo inúmeras vantagens a todos já que, pela economia de
       recursos e equipamentos, também se trata de uma tecnologia verde.


   E conforme WILLIAMS e GARCIA (2007), a virtualização juntamente com a
consolidação de servidores, contribuirá para aumentar a utilização do poder computacional
dos servidores, enquanto diminui o número de plataformas físicas necessárias. Esta técnica
fornece elevado isolamento entre a execução das máquinas virtuais. Uma falha em um sistema
da máquina virtual ou partição, não irá afetar as outras partições sendo executadas na mesma
27


plataforma de hardware. Este isolamento lógico é o escudo que protege as máquinas virtuais
no nível mais baixo devido que, elas se desconhecem, e, portanto não sofrem impactos, por
condições de alocações. “É uma chave da virtualização, tornar cada partição como se fosse
executar em um hardware dedicado” (WILLIAMS & GARCIA, 2007).


2.1.4 Desvantagens


   Porém, como toda tecnologia não tem apenas pontos positivos, pode-se citar como os
pontos negativos mais relevantes:


      Segurança: Todos os softwares estão sujeitos a apresentar falhas. Se o sistema
       operacional hospedeiro apresentar vulnerabilidades, todas as demais máquinas virtuais
       hospedadas na mesma máquina física apresentarão vulnerabilidade, já que o VMM é
       uma camada de software.


      Gerenciamento: Segundo MATTOS (2008), as máquinas virtuais precisam ser
       monitoradas, instanciadas, configuradas e salvas constantemente. Existem ferramentas
       das quais facilitam tais serviços, mas este é o campo de maior investimento na área da
       virtualização, pois tais contratempos precisam ser resolvidos.


      Poder de processamento: Por ser uma camada extra de software, a máquina
       virtualizada necessita de uma maior quantidade de processamento do que se teria sem
       a virtualização, aumentando assim o custo final do equipamento. Isto porque ele
       necessitará de mais ou de melhores processadores e uma quantidade maior de
       memória RAM, que são periféricos responsáveis pelo aumento do poder de
       processamento.



      Limitações do hardware: Também é muito importante ter consciência sobre as
       limitações dos equipamentos físicos do computador, pois o processamento, a
       capacidade de armazenamento da memória virtual e o espaço em disco do
       equipamento são compartilhados pelos ambientes virtuais, e, com isso, o hardware
       pode se tornar o maior problema da virtualização.
28


2.1.5 Utilização


       Define-se a virtualização como uma maneira de se executar vários serviços, programas
e sistemas operacionais em um único equipamento físico, possibilitando também simular
vários tipos de hardwares em um único equipamento, como servidores, switches, entre outros.
Um dos maiores exemplos de serviços virtualizados é o cloud computing (computação em
nuvem) no qual a maioria dos servidores são virtualizados e formam uma grande rede
fisicamente distribuída, elaborada para oferecer serviços específicos.
       Algumas empresas utilizam a virtualização em seus projetos tanto para simular
cenários diferentes de redes ou até mesmo simular plataformas diferentes como diversos tipos
de serviços.
       Para cada serviço de virtualização pode ser encontrado um ou mais virtualizadores. No
caso de servidores voltados para testes em sistemas desktops podemos utilizar os softwares,
Virtual Box, VMware, Microsoft Virtual PC. Já no caso da virtualização de servidores em
ambiente de produção pode-se usar Xen, VMware, KVM entre outros.


2.1.6 Segurança


       Usando máquinas virtuais, pode ser definido qual é o melhor ambiente para executar
cada tipo de ocupação, com diferentes requerimentos de segurança, ferramentas e o sistema
operacional mais adequado para cada serviço. Além disso, cada máquina virtual é isolada das
demais, logo, usando uma máquina virtual para cada serviço, a vulnerabilidade de um serviço
não prejudica os demais. As máquinas virtuais podem ficar isoladas e independentes umas das
outras, inclusive independente da máquina hospedeira.
       Correm-se riscos neste momento, das máquinas virtuais se tornarem menos seguras
que as máquinas físicas, justamente por causa do seu host. Este ponto é interessante, pois, se o
sistema operacional hospedeiro tiver alguma vulnerabilidade, todas as máquinas virtuais que
estão hospedadas nessa máquina física também estarão vulneráveis.
29


2.1.7 Ferramenta Escolhida

       De acordo com as necessidades apresentadas durante a execução desta pesquisa, foi
escolhido uma ferramenta que será útil para alcançar os objetivos propostos. Referimo-nos ao
VMware vSphere ESXi 5. Ela é um software modelo para criação de infraestruturas
virtualizadas.
       O uso do VMware vSphere ESXi 5 é voltado para servidores de grande porte. Essa
ferramenta é um sistema operacional dedicado, que usa um núcleo proprietário conhecido
como VMkernel baseado em uma kernel Linux. O Red Hat Linux é usado para prover os
diversos serviços, como gerenciamento remoto. Por rodar em um nível mais próximo do
hardware, elimina-se o overhead, que é o termo utilizado para descrever ou identificar um
processamento e/ou armazenamento excessivos, além de aumentar a segurança.
       Com a utilização dessa ferramenta, temos um kernel Linux chamado VMkernel, que é
responsável por realizar todo o controle do hardware e também tornar possível, a criação de
máquinas virtuais devido aos módulos que gerencia.
       Duas das principais vantagens dessa ferramenta são:


      Custos reduzidos: o VMware vSphere é um auxílio para as organizações fornecerem
       os serviços necessários com mais eficiência, eliminando os gastos desnecessários além
       de eliminar a complexidade do gerenciamento e da manutenção da infraestrutura de
       TI.
      Melhor eficiência: Ganho de desempenho, que se deve principalmente a ausência de
       um Sistema Operacional propriamente dito, instalado na máquina hospedeira. Desta
       maneira, diminui-se uma camada de software, reduzindo os possíveis gargalos e
       garantindo uma maior eficiência do servidor.
30


2.1.7.1 Diferenças entre VMware ESX e VMware ESXi


       Na arquitetura original do VMware ESX vSphere, o kernel de virtualização ou
VMkernel, existe uma partição adicionada de gestão conhecido como Service Console ou
Console de Serviço. O objetivo principal desse sistema é fornecer uma interface de gestão do
hospedeiro. Vários agentes da VMware foram implantados juntamente com essa console,
como por exemplo serviço de nome, tempo de serviço, registro. Entretanto, nessa arquitetura,
essa interface é considerada como uma camada extra de software que serve de apoio para o
VMkernel, o que além de aumentar o tamanho final da ferramenta, pode ocasionar gargalos
devido ao incremento dessa camada.
       Na nova arquitetura do VMware ESXi vSphere, essa Console de Serviço foi removida
e todos os agentes da VMware são executados diretamente no VMkernel. Com isso, além da
ferramenta final ser mais leve e robusta do que na arquitetura ESX, a configuração e o
monitoramento das máquinas virtuais são feitas por agentes externos e acessados via interface
de rede, através da instalação de aplicativos como o vClient para a execução destas tarefas.
31


2.2 Servidor Proxy


       O Proxy pode ser entendido como “um software que atua como gateway de aplicação
entre o cliente e o serviço a ser acessado, interpretando as requisições e repassando-as ao
servidor de destino” (RICCI; MENDONÇA 2006, p. 1). Já para LUNARDI (2005, p. 1), o
termo “servidor Proxy” ou “serviço Proxy” é um software que tem a “procuração” de um ou
mais hosts para buscar na Internet uma informação solicitada. Em outras palavras, Servidor
Proxy é um computador intermediário, localizado entre os usuários da rede de computadores e
a Internet, e que atende as requisições realizadas pelos mesmos.
       Devido fatores como a segurança em redes privadas e a limitação de quantidade de
endereços IP válidos na Internet, as máquinas da rede possuem endereços inválidos e,
portanto, não se conectam diretamente com Internet. O Servidor Proxy surgiu então da
necessidade de se conectar a rede local na Internet através de um computador que
compartilhasse a conexão com as outras máquinas da rede. Desta maneira, toda solicitação
originada em uma das máquinas localizadas na mesma seguem para o Proxy e este realiza o
contato com o destino da requisição, repassando assim a resposta ao solicitante.
       O Servidor Proxy é capaz de analisar os pacotes na camada 7 ou camada de aplicação
do modelo OSI. Segundo RICCI e MENDONÇA (2006, p. 2), “isto oferece uma flexibilidade
muito maior, porque permite que o tráfego dentro de um serviço, como o tráfego da porta 80
(HTTP) possa ser filtrado”. É devido a esse fato que o Proxy consegue analisar e determinar
se um trafego HTTP ou FTP, por exemplo, deve ou não passar da Internet para a rede local.


2.2.1 Características do Servidor Proxy


       Um Servidor Proxy pode ser usado com basicamente quatro objetivos:

      Aumento na velocidade de resposta das requisições: O serviço Proxy também fornece
       a funcionalidade de armazenamento de cache. Para RICCI e MENDONÇA (2006, p.
       2), o cache “significa a capacidade de um sistema armazenar em memória (ou em
       áreas reservadas do disco rígido) o conteúdo mais frequentemente acessado”. Os
       objetivos deste recurso é disponibilizar esse conteúdo salvo de forma mais rápida e
       eficiente ao solicitante e economizar, assim, a largura da banda, pois não será
       necessário ir à Internet novamente para responder a requisição;
32


      Compartilhamento de conexão de Internet: As máquinas da rele local possuem
       endereços inválidos e, por causa disso, não se conectam na Internet diretamente.
       Então, todas as requisições feitas por estas são direcionadas ao Servidor Proxy, que
       acessa a Internet com um endereço de IP válido e atende estas solicitações;

      Controle de acesso: Através do procedimento de interpretação das requisições pela
       análise do seu conteúdo, é possível ao Proxy fazer um controle de acesso dos usuários
       da rede de computadores. Além de registrar cada acesso feito, o sistema permite a
       criação de ACLs (Access Control List) ou Listas de Controle de Acesso que gerenciam
       as permissões de acesso de cada usuário;


      Relatório de acesso: todos os acessos são armazenados em forma de log, permitindo,
       assim, a possibilidade de criação de relatórios dos acessos realizados através do
       servidor pelos clientes.


2.2.2 Tipos de Proxy


       Devido a grande flexibilidade que o serviço Proxy possui, muitos administradores de
redes de computadores e outros utilizadores deste tipo de sistema começaram a descobrir
maneiras diferentes de se aproveitar deste recurso. Com isso, diferentes tipos de Proxy foram
sendo criados e estes podem ser encontrados em diferentes lugares na atualidade, como na
Internet, nas redes locais empresariais e até mesmo nas redes domésticas. Dentre eles, os
principais são: Proxy Transparente, Proxy Controlado, Proxy Anônimo e Proxy Reverso.


2.2.2.1 Transparente


       Neste tipo de Proxy, não é necessário configurar os serviços da máquina do usuário,
como o navegador Internet Explorer, Mozilla Firefox ou Google Chrome por exemplo, para as
solicitações serem direcionadas para o servidor. Resumidamente, esta técnica “consiste no
administrador criar um redirecionamento de portas utilizando regras de firewall”. Em outras
palavras, todo o tráfego da rede de computadores de acesso à web será redirecionado
transparentemente para a porta em que o serviço Proxy é oferecido, tornando, assim, a
passagem obrigatória pelo Servidor Proxy.
33


2.2.2.2 Controlado


       Diferentemente do Proxy Transparente, este tipo de serviço exige uma configuração
nos navegadores para que estes direcionem suas requisições para o Servidor Proxy. Segundo
REIS; RAIMUNDO; CARMO (2006, p. 10) o Proxy Controlado possui certas opções que o
Proxy Transparente não tem para facilitar o controle de quem pode ou não utilizar o Proxy, e
a sua configuração deve estar como padrão em todos os browsers com o IP do servidor.


2.2.2.3 Proxy Transparente x Controlado


       A escolha do tipo de Proxy a ser utilizado depende da situação em que ele será
aplicado. Se, por exemplo, em uma empresa os administradores preferirem colocar o IP do
servidor em cada máquina ou se desejarem não colocar nenhuma informação nos navegadores
do usuário.


2.2.2.3.1 Vantagens do Proxy Transparente


      É mais simples de ser configurado do que o Proxy Controlado quando está habilitado
       no Kernel;


      Programas como o ICQ funcionam plenamente com ele, ao contrário do servidor
       Proxy Controlado, que possui certa instabilidade quanto a este tipo de programa e a
       protocolos como o SMTP;


      Não precisa que as máquinas clientes sejam configuradas para direcionar as
       requisições ao Servidor Proxy, evitando assim que os usuários removam as definições
       do Proxy de dentro do navegador;


      No Proxy Transparente, o cliente é forçado a passar pelo Proxy e com a configuração
       deste serviço, todos os serviços oferecidos por ele ficam disponíveis aos usuários,
       como SSH, Telnet, E-mail, entre outros;
34


2.2.2.3.2 Vantagens do Proxy Controlado


       Possui mais recursos que um Proxy Transparente, como por exemplo, algumas listas
        de controles de acesso (ACL’s) que controlam quem pode e quem não pode utilizar o
        Servidor Proxy;


       Não precisa de configurações no Kernel, ao contrário do Proxy Transparente, que
        necessita dessas configurações e que leva, em determinados casos, a necessidade de
        recompilação do mesmo;


       Pode servir para liberar a Internet através de autenticação do usuário, o que não é
        possível através do Servidor Proxy Transparente.


       Possui um melhor controle das portas que utilizam SSL, uma camada do protocolo de
        rede, responsável por gerenciar um canal de comunicação seguro entre o cliente e o
        servidor.


2.2.2.4 Proxy Anônimo


        O acesso à Internet pode expor dados do usuário, possibilitando sua identificação
através de endereço IP, localização geográfica, informações sobre o Sistema Operacional e o
navegar utilizado. Proxy anônimo é uma ferramenta que tem por objetivo geral realizar
atividades na Internet sem deixar vestígios, provendo assim ao usuário anonimidade e
privacidade. Ele também pode ser utilizado para contornar restrições de acesso que existam na
rede.
        Este tipo de Servidor Proxy é, muitas das vezes, disponibilizado livremente na
Internet. O usuário digita no navegador o site de um Proxy anônimo e, ao acessar esse site,
basta digitar no campo oferecido pelo mesmo o endereço que deseja acessar. Desta maneira, o
Proxy mascara algumas informações da pessoa, como o endereço IP, e, consequentemente,
torna mais difícil sua possível identificação.
        Entretanto, este tipo de técnica traz consigo algumas problemáticas. Dentre elas, está a
lentidão e instabilidade desses sites de Proxy Anônimo, isso porque os mesmos podem
receber centenas e até milhares de conexões simultâneas, além do anonimato em si, que
35


proporciona, a usuários mal intencionados, mais uma ferramenta para cometer crimes
cibernéticos e acessar conteúdo proibido, desrespeitando os direitos autorais.


2.2.2.5 Proxy Reverso


       Um Proxy Reverso é um servidor de rede que fica localizado entre a Internet e os
Servidores Web. Com isso, todas as conexões provindas da rede externa são endereçadas para
um dos servidores Web através de um roteamento feito pelo Proxy. Esse tipo de serviço tem
como objetivo principal prover segurança aos Servidores Web, evitando que os clientes
tenham contato direto com ele. Além do roteamento e da segurança proporcionada por ele, o
Proxy Reverso possui mais algumas características, como:


      Criptografia: a criptografia SSL pode ser transmitida ao Servidor Proxy ao invés dos
       servidores internos. Para um melhor desempenho nessa função específica, podem ser
       acrescentados ao Proxy aceleradores criptográficos;


      Balanceamento de carga: o Proxy Reverso pode distribuir a carga para vários
       servidores da rede, sendo cada servidor responsável por sua aplicação;


      Cache: esse tipo de Proxy também pode manter em cache o conteúdo estático e
       dinâmico das requisições realizadas, ajudando assim a diminuir a carga dos Servidores
       Web;


      Compressão: Através da compressão do conteúdo, ele pode otimizar o acesso,
       tornando-o mais rápido.


       Dentre as desvantagens da utilização deste tipo de técnica, podemos citar um refino
nas regras de bloqueio, pois uma requisição válida pode ser confundida com uma inválida e
ser bloqueada pelo Proxy, além da necessidade de um equipamento com alta disponibilidade,
pois como ele centraliza os acessos aos servidores Web, uma falha pode indisponibilizar todo
o acesso ao ambiente.
36


2.2.3 Squid


         O Squid é um Servidor WebProxy que tem suporte para protocolos como HTTP,
HTTPS, FTP e outros. “O Squid é um Proxy com cache de alta performance para clientes
web, resumindo, ele é um servidor Proxy utilizado para acelerar a navegação dos usuários de
sua rede pela web” (LUNARDI 2005, p. 3). Ele caracteriza-se por ser um software
especializado, que faz operação de Proxy de Web e FTP, livre e com um ótimo suporte para
servidores Linux.
         Dentre todos os seus recursos, o que mais atrai a atenção desta ferramenta é o cache de
páginas. Devido a característica das redes de computadores de terem alta velocidade na parte
interna (máquinas clientes e servidores locais) e um acesso mais lento na parte dos servidores
até a Internet, torna mais atrativa a função de cache do Squid, de forma que ele salva as
páginas mais visitadas localmente, não precisando acessá-las externamente a todo momento.


2.2.3.1 Breve história do Squid


         O Squid é baseado no projeto Harvest desenvolvido no início da década de 1990. Esse
projeto era um conjunto de ferramentas integradas para coletar, extrair, organizar, localizar,
fazer cache e replicar informações da Internet. O cache Harvest forneceu três melhorias
importantes em relação ao cache CERN, que foi o primeiro servidor HTTP de Proxy e cache:
maior velocidade no uso do sistema de arquivos, design de processo único e hierarquias de
cache.
         No final do ano de 1995, muitos membros da equipe do Harvest abandonaram o
projeto e os autores originais do código de cache desse projeto tornaram-no um produto
comercial. Em 1996, ao Duane Wessels começar a trabalhar no Projeto IRCache, o código do
cacher do projeto Harvest foi renomeado para Squid, liberado sob a licença GNU GPL.
         Mesmo com o fim do financiamento ao projeto IRCache em julho de 2000, voluntários
de todo o mundo continuaram a desenvolver o Squid, o que fez esta ferramenta crescer muito
em tamanho e funcionalidades. Atualmente, ele suporta funções como controles de acesso
sofisticados, diversos módulos de autenticação, armazenamento avançado, entre outras
funções.
37


2.2.3.2 Características do Squid


       O Squid possui as seguintes características:


      Políticas de controle de acesso flexíveis: O controle de acesso é uma das
       características do Squid que administradores de redes utilizam com muita frequência.
       Nessa ferramenta, essas políticas são escritas através de ACL’s ou Listas de Controle
       de Acesso no arquivo de configuração do Squid e podem ser feitas baseando-se em
       fatores como: conteúdo do endereço da requisição, origem desta e o destino da
       solicitação.


      Suporte para Proxy Transparente e Controlado: Através de sua configuração, um
       administrador de rede, por exemplo, pode configurar o Squid para trabalhar de modo
       transparente, no qual todos os usuários obrigatoriamente passam por ele para acessar a
       Internet ou de modo controlado, que exige a configuração nos navegadores.


      Logs Avançados: O Squid registra em seu log uma linha para cada objeto requisitado
       pelos clientes. Nessa linha, podem ser encontradas informações como: hora, duração
       do uso do cache, endereço IP do cliente, códigos de resultados, tamanho dos dados,
       método de requisição, URL, código de hierarquia, tipo de conteúdo, entre outros.


      Suporte a HTTP, FTP, ICP, entre outros: Essa ferramenta suporta aplicações como
       páginas web, criando cache dos arquivos dinâmicos e estáticos delas, como figuras e
       textos, transferência de arquivos, salvando uma cópia do arquivo baixado por um
       usuário e retransmitindo o conteúdo quando este for solicitado novamente, consulta
       em outros servidores de caches sobre determinado conteúdo.
38


2.2.3.3 Requisitos Específicos para o Squid


        Em comparação com algumas ferramentas oferecidas pelo sistema, é possível perceber
que o Squid utiliza mais recursos específicos do que outros aplicativos. Segundo RICCI e
MENDONÇA (2006, p. 2), “os dois principais subsistemas de hardware que o Squid utiliza, e
que deve ter um bom desempenho, é o tempo de busca aleatória e a quantidade de memória
no sistema”.


       Tempo de busca aleatória em disco: O tempo de busca de um arquivo no cache do
        Squid deve ser o mais baixo possível. Isto porque quanto mais rápido ele encontrar a
        informação no cache, mais rápido ele responderá a solicitação feita pelo usuário.


       Quantidade de memória no sistema: A memória RAM é muito importante para a
        utilização do cache. O Squid mantém apenas uma tabela dos objetos do cache na
        memória RAM. Como ele é um processo no Sistema Operacional, então qualquer
        processo de swapping, que é uma técnica de gerência de memória que leva dados do
        programa desta para o disco rígido, tornará o programa mais lento.


        Ainda segundo RICCI e MENDONÇA (2006, p. 2), outros requisitos do sistema,
como velocidade de CPU, são menos importantes, pois a velocidade do processador somente
será notada durante a inicialização do Squid.


2.2.3.4 Estrutura do Squid


        Como descrito anteriormente, o Servidor WebProxy Squid é utilizado em larga escala
por sua facilidade e flexibilidade de configuração, além de uma exigência mínima de
requisitos para que este entre em funcionamento. As estruturas deste serviço que justificam
estes itens são:
39


2.2.3.4.1 Arquivo de Configuração


       Toda a configuração do Squid é feita em um único arquivo chamado squid.conf, que
geralmente fica localizado no diretório /etc/squid/squid.conf, podendo variar de acordo com a
versão do Squid, do sistema operacional utilizado e da escolha do usuário que for instalar esse
tipo de serviço.
       O arquivo original que é instalado junto com o software é muito grande, pois contém
comentários e exemplos para praticamente todas as opções que o Squid disponibiliza. No
interior do arquivo squid.conf será o local onde toda as configurações do serviço de Proxy-
cache serão criadas. Dentre elas estão as políticas de acesso, a ocupação de memória e
também a localização e a validade dos arquivos do cache, sendo que estas são escritas em
formato de linhas e estas são lidas de cima para baixo. Caso estas linhas entrem em algum
tipo de conflito, a linha posterior sobrepõe a linha anterior.


2.2.3.4.2 Restrições de acessos


       O controle de acesso é uma das características mais úteis para administradores de
redes de computadores que lidam com grandes acessos públicos de usuários, pois isto acaba
saturando o link da Internet com acessos a sites que não estão relacionados as atividades
diárias da empresa. Através de regras e arquivos textos simples, pode-se restringir o acesso de
cada usuário da rede de computadores, permitindo ou negando, assim, o acesso a determinado
site ou conteúdo da Internet.


2.2.3.4.3 Lista de Controle de Acesso


       As ACL – Access Control List – ou Lista de Controle de Acesso “são regras de acesso
oferecidas pelo sistema que devem ser utilizadas pelo administrador da rede como meio de
liberar ou bloquear acesso a determinado conteúdo web” (RICCI; MENDONÇA 2006, p. 22).
       É através dela, por exemplo, que é possível manter os usuários da rede de
computadores sob controle, otimizar o desempenho da banda e facilitar a administração. Isto
porque, ao restringir os usuários a um mínimo de permissões na web, estes não irão perder o
foco do trabalho facilmente com sites que não tenham nada a acrescentar a seu trabalho,
tornando-os assim mais produtivos.
40


       As Listas de Controle de Acesso são escritas, de uma maneira geral, em forma de
linhas dentro do arquivo de configuração squid.conf e lidas pelo Squid de cima para baixo.
“Com isso, elas permitem especificar endereços de origem ou destino, domínios, horários,
usuários, portas ou métodos de conexão ao Proxy, que servirão de base para permitir ou negar
acesso baseando-se em conjunto dessas ACL’s.” (LUNARDI 2005, p. 31). Isto permite uma
grande flexibilidade na configuração do Squid, pois podemos especificar, por exemplo, quais
endereços podem e quais não podem ser acessados, qual horário que determinado endereço
pode ser acessado, além de permitir ou bloquear o uso de determinado tipo de protocolo e
delimitar um usuário a acessar a Web somente a partir de uma máquina especifica.
       A sintaxe de uma linha de controle de acesso pode ser feita, basicamente, da seguinte
maneira: “acl nome tipo argumentos”, no qual “acl” é o comando de criação da ACL, “nome”
será o nome escolhido para a identificação da mesma, “tipo” diz a respeito a qual objeto que
será referido na linha e “argumentos”, que diz a respeito do domínio e as opções da ACL.
       Um    exemplo    prático   de   um    ACL seria      a   linha   “acl   MinhaRede   src
192.168.1.0/255.255.255.0”, no qual cria a lista de acesso chamada “MinhaRede” do tipo
“src” (que significa a origem da requisição) e especifica o domínio da rede e seu endereço
MAC “192.168.1.0/255.255.255.0”, de modo que o Squid responda as requisições dos
computadores que tenham faixa de IP entre 192.168.1.1 e 192.168.1.254.
       Os tipos de ACL mais conhecidas e comumente utilizadas são:


      SCR: Classe de acesso que se baseia no endereço IP da origem da requisição, ou seja,
       do cliente que solicitou a requisição de acesso;


      DST: Ao contrário da classe de acesso SCR, esta se baseia no endereço IP do destino
       da requisição, ou seja, do IP do servidor solicitado na requisição;


      SRCDOMAIN: Classe de acesso que se baseia no domínio DNS do computador
       cliente que solicita a requisição de acesso, sendo que este domínio é obtido por
       resolução reversa de IP. O uso excessivo desta regra pode prejudicar a performance do
       WebProxy devido a constante resolução do endereço IP no Servidor DNS;


      DSTDOMAIN: Semelhante ao srcdomain, com a diferença de que esta se refere ao
       endereço de destino;
41




   SRCDOM_REGEX: Avalia e classifica o domínio da origem da requisição usando
    expressões regulares;


   DSTDOM_REGEX: Avalia e classifica o domínio de destino da requisição usando
    expressões regulares;


   TIME: Classe que permite ao administrador da rede determinar o dia da semana e o
    horário da requisição de acesso e permitir ou negar o acesso a Internet baseando-se
    nessas informações;


   URL_REGEX: Classe de acesso na qual é possível analisar uma URL a procura de
    determinadas expressões e assim bloquear ou liberar o acesso do usuário. Utiliza-se
    nesse tipo a opção –i, que desativa o uso do case-sensitive;


   URLPATH_REGEX: Este tipo é semelhante à url_regex, sendo que sua procura as
    expressões descartam nome do servidor e o protocolo utilizado. Utiliza-se também
    nesse tipo a opção –i, que desativa o uso do case-sensitive;


   PORT: Realiza o controle pela porta de destino do servidor solicitado pelo cliente ao
    WebProxy. Neste tipo deve ser especificado o número da porta ou a série de portas;


   PROTO: Classe na qual é possível especificar o protocolo utilizado na conexão
    (HTTP, FTP entre outros);


   METHOD: Especifica o tipo de método usado na requisição, ou seja, Get ou Post. O
    método Get utiliza a URL para enviar dados ao servidor e o método Post envia as
    informações no corpo da mensagem.


   BROWSER: Classe que permite, através de expressões regulares, determinar o
    navegador web de onde foi enviada a solicitação de acesso web;
42




   IDENT: Permite classificar o acesso de acordo com o usuário logado no computador
    do cliente. Esta classe exige um servidor Ident na máquina cliente, o que atualmente é
    pouco comum. Com isso, utiliza-se mais a identificação de um usuário através da
    autenticação;


   IDENT_REGEX: Similar a classe Ident, mas utilizando-se de expressões regulares;


   SRC_AS: Classe de acesso responsável por liberar ou bloquear o acesso baseado no
    sistema autônomo do computador de origem da solicitação;


   DST_AS: Classe de acesso responsável por liberar ou bloquear o acesso baseado no
    sistema autônomo do computador de destino da solicitação;


   PROXY_AUTH: Classe de acesso que permite utilizar a autenticação de usuários
    através de suas credenciais, sendo geralmente nome de usuário (username) e a
    respectiva senha. Esta regra necessita de um recurso externo de autenticação,
    responsável por validar as informações, ela não pode ser usada em um Proxy
    Transparente;


   PROXY_AUTH_REGEX: Classe de acesso na qual é possível classificar os usuários
    autenticados através da combinação de expressões regulares;


   SNMP_COMMUNITY: Classifica os acessos de acordo com a comunidade SNMP.
    Faz-se necessário que o WebProxy Squid tenha sido instalado e compilado com
    suporte a este tipo de protocolo;


   MAXCONN: Especifica um limite máximo de conexões originadas de um
    determinado cliente através de seu endereço IP. Utilizado principalmente para fazer
    controle de banda;
43


      REQ_MIME_TYPE: Classe de acesso que classifica o tipo de conteúdo solicitado
       através de seu cabeçalho content-type.


   Analisando as principais possibilidades de criação de ACL’s citadas anteriormente, “fica
claro que o WebProxy Squid oferece uma diversidade de opções para classificar o acesso de
seus usuários.” (RICCI; MENDONÇA 2006, p. 32). Após a criação e configuração de todas
as listas de acesso que serão utilizadas no WebProxy Squid, faz-se necessário definir a ação
tomada pelo Servidor Proxy ao encontrar uma solicitação que se adeque à determinada classe,
ou seja, deve-se definir se o Squid irá permitir ou bloquear o acesso baseado em determinada
regra de acesso. Dentre as opções mais utilizadas, podemos citar:


      HTTP_ACCESS: Após definidas as listas de acesso, pode-se definir as restrições
       propriamente ditas, permitindo ou proibindo o acesso ao serviço http baseado nas
       ACL’s criadas anteriormente. Sua estrutura básica é constituída de 3 partes:
       “http_access acl allow/deny”, no qual “http_access” é o comando de permissão, “acl”
       é o nome da lista de controle de acesso criada anteriormente e “allow/deny” que é o
       comando que permite (allow) ou nega (deny) o acesso da acl citada. Após a
       configuração de todo o arquivo de configuração do Squid, é aconselhável definir uma
       última regra que negue todas as solicitações de acesso que não forem previamente
       liberadas, através da regra “http_access deny all”. De acordo com RICCI,
       MENDONCA (2006, p. 32), esta diretiva define para o WebProxy Squid que todas as
       solicitações não liberadas anteriormente devem ser explicitamente bloqueadas;


      ICP_ACCESS: Este recurso é utilizado quando se trabalha com múltiplos webproxies
       em um ambiente de árvores-cache hierárquica. Esta função força que outros servidores
       webproxies utilizem este servidor Proxy como um filho ao invés de um pai, ou seja,
       ela faz com que este WebProxy Squid verifique, através de mensagens ICP, quais
       caches de servidores ele poderá se comunicar;


      MISS_ACCESS: Limita os domínios que podem fazer requisições ao cache do
       servidor utilizando os recursos de regras de acesso;
44


      IDENT_LOOKUP_ACCESS: Uma lista de elementos em uma ACL, os quais, se
       encontrados, irão gerar uma requisição IDENT;


      HTTP_REPLY_ACCESS: Permite ou nega que clientes recebam a resposta das suas
       solicitações de acesso. É utilizado em conjunto à regra de acesso criada em
       req_mime_type;


      NO_CACHE: Define respostas que não devem ser armazenadas em cache.


2.2.3.4.4 Parâmetros administrativos


       Além das regras de controle de acesso criadas com a finalidade de permitir ou
bloquear determinadas requisições e acesso a Internet, o Squid permite a criação de regras e
parâmetros destinados a uma melhor administração do Servidor de WebProxy, como por
exemplo: controle de cache, local de armazenamento do cache, mensagens de erros, entre
outros. Dentre as mais comuns, podemos citar:


      HTTP_PORT: Diretiva responsável por especificar a porta na qual o servidor de
       WebProxy Squid deve oferecer o serviço. O valor padrão é 3128, mas caso precise
       alterar, basta alterar este valor e trocar por uma porta que não esteja sendo utilizada.


      CACHE_MEM: Regra responsável por especificar a quantidade de memória RAM a
       ser disponibilizada para o WebProxy Squid, sendo que o valor a ser utilizado deverá
       ter como unidade de medida Megabytes.


      CACHE_DIR: Diretório onde serão armazenados os objetos que comporão o cache do
       Squid. A regra possui uma estrutura com basicamente: “cache_dir tipo diretório MB
       L1 L2”, no qual “cache_dir” é o comando de criação do cache, “tipo” será o tipo de
       sistema de armazenamento do cache, “diretório” no qual será definido o caminho
       absoluto para o diretório que armazenará o cache, “MB” que definirá o tamanho do
       espaço utilizado em disco para os objetos do cache e “L1” e “L2” que definem,
45


    respectivamente, os diretórios de primeiro nível e segundo nível que devem ser
    criados.


   CACHE_ACCESS_LOG: Determina a localização exata do arquivo onde o Squid
    deve armazenar os logs detalhados de acessos a conteúdos web. Através dele é
    possível responder perguntas como: quem acessou o que em determinado dia?


   CACHE_LOG: Especifica o arquivo responsável pelo log de informações relacionadas
    ao cache do WebProxy. Este arquivo é muito útil na fase de implementação do sistema
    como meio de depuração de eventuais erros que possam impedir a inicialização
    correta do serviço.
   CACHE_STORE_LOG: Faz log detalhado de todo objeto web armazenado. Este
    detalha quais objetos web saírem e quais entraram no cache e quanto tempo eles
    permaneceram armazenados.


   PID_FILENAME: É responsável por obter o número do processo Squid em execução
    no sistema.


   VISIBLE_HOSTNAME: Define o nome do servidor e seu domínio. Este nome
    aparecerá nas telas de erro, ou seja, quando o usuário solicitar uma página web e a
    solicitação dele for negado pelo Squid.


   CACHE_MGR: E-mail do administrador ou do webmaster que aparecerá nas
    mensagens de erro. Isto é importante para que os usuários tenham informações do
    responsável pelo servidor caso de problemas com um acesso bloqueado de forma
    errada.


   LOGFILE_ROTATE: Especifica o número de rotações executadas quando se digita o
    comando “squid -k rotate”. O padrão são 10 arquivos de log, sendo armazenado o
    atual e mais 9 logs antigos. Quando o comando é executado novamente, o arquivo de
    log mais antigo é apagado, o atual fica em seu lugar e um novo arquivo desse tipo é
    gerado.
46


2.2.4 Microsoft ISA Server


       O Microsoft ISA Server é uma solução de segurança de borda que inclui firewall de
múltiplas camadas, Web Proxy e VPN, garantindo segurança contra as ameaças oriundas da
Internet e facilidade de gerenciamento através de sua integração com o Windows Server.
       Atualmente, o ISA Server 2006 é a última versão lançada pela Microsoft, mantendo
sempre o esquema de edições padrão (standard) e Enterprise.
       A partir de fevereiro de 2007, a Microsoft liberou uma edição especial do ISA Server
chamada Intelligent Application Gateway 2007. IAG 2007 é um serviço de VPN através de
SSL, que também incorpora políticas de segurança como zonas restritas, verificações de
segurança nas conexões acessando a rede, e definição de perfis de uso dos programas
publicados. IAG 2007 é o produto da compra realizada pela Microsoft da empresa Whale
Communications em Junho de 2006.


2.2.5 Escolha da ferramenta


       No contexto atual da área da informática, existem centenas de softwares que fornecem
a função de Proxy. Dentre elas, a escolhida para o desenvolvimento do projeto é o Servidor de
WebProxy Squid. Isto porque essa ferramenta, além de ser OpenSource (Código Aberto ou
Software Livre) e gratuita, ela é simples de manusear, é a mais conhecida e utilizada na área
de T.I., possui um excelente suporte para operação em servidores Linux e oferece uma grande
variedade de recursos, o que permite uma maior modelagem e flexibilidade nas suas
configurações.


2.2.6 Firewall Iptables



       O iptables é uma ferramenta de software livre, baseado em GNU/Linux, que permite a
criação de regras de firewall e NATs. O Iptables é uma ferramenta que vem integrada ao
Kernel Linux, além de frequentemente ser utilizado como referência ao conjunto completo de
funcionalidades do netfilter, é parte de todas as distribuições modernas do Linux e trabalha
em nível de pacotes.
47


   As principais características dessa ferramenta são:


      Especificação de portas/endereço de origem/destino;


      Manipula serviços de proxy na rede;


      Tratamento de tráfego dividido em regras ou chains;


      Muito rápido, estável e seguro;


      Suporte a módulos externos para expansão das funcionalidades padrões oferecidas
       pelo código de firewall;


      Limitação de passagem de pacotes/conferência de regra;


       Neste trabalho será feito a integração do Serviço de Proxy Squid com o Firewall
Iptables, pois é através desta segunda ferramenta que será realizado o redirecionamento das
requisições feitas pelos usuário na porta 80 para a porta que o Squid irá trabalhar.
48


2.3 Sistema Operacional


       De acordo com Tanenbaum, Woodhull (2000) o sistema operacional controla todos os
recursos do computador e fornece a base sobre a qual os programas e aplicativos podem ser
escritos. Segundo Silberschatz, (2001) Sistemas operacionais foram desenvolvidos nos
últimos 40 anos para alcançar dois objetivos principais, escalonar as atividades
computacionais para garantir um bom desempenho e fornecer um ambiente conveniente para
o desenvolvimento e a execução de programas.
       Pode ser entendido como um sistema operacional (SO) uma coleção de programas que
inicializam o hardware do computador. Essa coleção de programas fornece rotinas básicas
para controle de dispositivos, também gerência, realiza escalonamento e interação de tarefas e
mantém a integridade de sistema.
       No início da computação os primeiros sistemas operacionais eram únicos, pois cada
mainframe vendido necessitava de um sistema operacional específico. Esse problema era
resultado de arquiteturas diferentes e da linguagem que cada máquina utilizava. Após essa
fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de tarefas
(jobs), pois os sistemas eram monousuários e tinham cartões perfurados como entrada, assim
o computador não necessitava da operação humana.


2.3.1 Arquitetura


       Procurando melhorar o desempenho geral dos sistemas de computação, os
desenvolvedores introduziram o conceito de multiprogramação onde vários jobs são mantidos
na memória e a CPU alterna entre eles para aumentar a sua utilização e diminuir o tempo de
execução dos jobs, também permitindo o compartilhamento de tempo o que possibilitou que
muitos usuários utilizem um sistema de computação ao mesmo tempo. As principais
arquiteturas existentes são:


      Sistema Batch: também conhecido por sistemas em lote, foram os primeiros sistemas
       multiprogramáveis a serem implementados. Eles se caracterizam por terem seus
       programas, quando submetidos, armazenados em disco ou fita, onde esperam para ser
       executados sequencialmente;
49


   Sistema de Tempo Compartilhado: também denominado multitasking, é uma extensão
    lógica da multiprogramação. Consiste basicamente em alternar entre diferentes
    processos de forma que o usuário tenha a percepção que todos os processos estão
    sendo executados simultaneamente, permitindo a interação com múltiplos processos
    em execução. Esta percepção é dada pela velocidade em que as trocas de tempos de
    execução em CPU ocorrem, sendo tão frequentes que se tornam não perceptíveis do
    ponto de vista do usuário;


   Sistemas Mainframe: Os sistemas operacionais desenvolvidos para mainframe são
    criados especialmente para a finalidade de cada modelo, por exemplo: para processar
    textos, bancos de dados, efetuar cálculos ou gerenciar dispositivos. Podemos citar
    sistemas baseados em sistemas próprios: z/OS, z/VSE, z/VM, z/TPF (da IBM),
    OS2200, MCP (da Unisys), GCOS (da Bull), e outros de empresas como Fujitsu,
    Hitachi e Amdhal;


   Sistema Desktop: Um sistema que oferece soluções com interface gráfica com o
    usuário (GUI) para operar um computador. O nome é derivado da metáfora de
    desktop, ou "tampo de mesa", hoje usado por essas interfaces. Um ambiente de
    desktop fornece ícones, pastas, barra de ferramentas, papéis de parede e habilidades
    como arrastar e soltar;


   Sistema Distribuído: Um sistema distribuído é aquele que é definido como um
    conjunto de unidades de processamento independentes, que através da troca de
    comunicação e gerenciamento de sincronização pode processar uma aplicação em
    diferentes localidades em sistemas com características próprias diferentes, dando a
    impressão ao usuário que toda a aplicação é gerenciada por um sistema único;


   Sistemas Handheld: Os sistemas handheld são adaptados para dispositivos móveis,
    como PDAs – Personal Digital Assistants e telefones celulares. Sua memória é
    limitada, processador mais lento e contém display de pequenas dimensões. O S.O e as
    aplicações são projetados para minimizar o uso do processador (redução do consumo
    da bateria). Podem utilizar tecnologias wireless, como Bluetooth, para acesso remoto a
50


       e-mail e navegação Web. Câmeras e MP3 players, são exemplos de acessórios que
       expandem a sua funcionalidade;


      Sistemas Paralelos: São os sistemas que têm mais de uma CPU em comunicação
       direta, tais CPUS compartilham barramentos, memória e dispositivos periféricos assim
       podem fornecer maior produtividade e melhor confiabilidade;


      Sistema de Tempo Real Crítico: Este sistema geralmente é utilizado em uma aplicação
       dedicada, pois tem limitações de tempo fixas, ou seja, o processamento precisa ser
       feito no dentro dos limites definidos ou o sistema falhará, já os sistemas de tempo real
       não crítico tem limitações de tempo menos rigorosas e não suportam escalonamento
       de prazos;


      Sistema Embarcado: Este tipo de sistema da capacidade computacional dentro de um
       circuito integrado, equipamento ou sistema. É um sistema completo e independente,
       mas preparado para realizar apenas uma determinada tarefa. O usuário final não terá
       acesso ao programa que foi embutido no dispositivo, mas poderão interagir com o
       equipamento através de interfaces como teclado, displays, desde que o sistema tenha
       sido projetado para tanto;


2.3.2 Tipos de Sistemas Operacionais


       Existem muitos tipos de Sistemas Operacionais, cuja complexidade varia e depende de
que tipo de funções é provido, e para que computador esteja sendo usado. Alguns sistemas são
responsáveis pela gerência de muitos usuários, outros controlam dispositivos de hardware.
       Em um grande computador multiusuário, com muitos terminais, o Sistema
Operacional é muito mais complexo. Tem que administrar e executar todos os pedidos de
usuários e assegurar que eles não interferiram entre si. Tem que compartilhar todos os
dispositivos que são seriais por natureza (dispositivos que só podem ser usados por um
usuário de cada vez, como impressoras e discos) entre todos os usuários que pedem esse tipo
de serviço. O S.O poderia ser armazenado em disco, e partes dele serem carregadas na
memória do computador (RAM) quando necessário. Utilitários são fornecidos para:
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado
TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado

Contenu connexe

Similaire à TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado

A aplicação de boas práticas de governança de ti no gerenciamento de ativos d...
A aplicação de boas práticas de governança de ti no gerenciamento de ativos d...A aplicação de boas práticas de governança de ti no gerenciamento de ativos d...
A aplicação de boas práticas de governança de ti no gerenciamento de ativos d...Marcelo Ariatti
 
Demonstrador Virtual Web com Recursos de Realidade Aumentada
Demonstrador Virtual Web com Recursos de Realidade AumentadaDemonstrador Virtual Web com Recursos de Realidade Aumentada
Demonstrador Virtual Web com Recursos de Realidade AumentadaLeonardo Pereira Santos
 
A Certificação Digital na sociedade Brasileira
A Certificação Digital na sociedade BrasileiraA Certificação Digital na sociedade Brasileira
A Certificação Digital na sociedade Brasileiradanilogmoreira
 
Desenvolvimento de um portal para assinatura digital de arquivos
Desenvolvimento de um portal para assinatura digital de arquivosDesenvolvimento de um portal para assinatura digital de arquivos
Desenvolvimento de um portal para assinatura digital de arquivosJhonatas Lima
 
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...Marcelo Dieder
 
Projeto de Interfaces Gráficas para Web
Projeto de Interfaces Gráficas para WebProjeto de Interfaces Gráficas para Web
Projeto de Interfaces Gráficas para WebAna Martins
 
Automação de testes de desempenho para sistemas web utilizando a ferramenta j...
Automação de testes de desempenho para sistemas web utilizando a ferramenta j...Automação de testes de desempenho para sistemas web utilizando a ferramenta j...
Automação de testes de desempenho para sistemas web utilizando a ferramenta j...Leandro Ugioni
 
Aplicação de um modelo simplificado das metodologias do pentesting
Aplicação de um modelo simplificado das metodologias do pentestingAplicação de um modelo simplificado das metodologias do pentesting
Aplicação de um modelo simplificado das metodologias do pentestingVitor Melo
 
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos MunicipaisUsabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos MunicipaisMarcelo Ramos
 
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.Douglas Scriptore
 
Certificação Digital : Uma Nova Era de Segurança Eletrônica
Certificação Digital : Uma Nova Era de Segurança EletrônicaCertificação Digital : Uma Nova Era de Segurança Eletrônica
Certificação Digital : Uma Nova Era de Segurança Eletrônicaluizrbs
 
TCC: Internet Via Rede Elétrica
TCC: Internet Via Rede ElétricaTCC: Internet Via Rede Elétrica
TCC: Internet Via Rede ElétricaJoão Sérgio
 
Arca Sistema Gerencial
Arca Sistema GerencialArca Sistema Gerencial
Arca Sistema GerencialRicardo Júlio
 

Similaire à TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado (20)

A aplicação de boas práticas de governança de ti no gerenciamento de ativos d...
A aplicação de boas práticas de governança de ti no gerenciamento de ativos d...A aplicação de boas práticas de governança de ti no gerenciamento de ativos d...
A aplicação de boas práticas de governança de ti no gerenciamento de ativos d...
 
Demonstrador Virtual Web com Recursos de Realidade Aumentada
Demonstrador Virtual Web com Recursos de Realidade AumentadaDemonstrador Virtual Web com Recursos de Realidade Aumentada
Demonstrador Virtual Web com Recursos de Realidade Aumentada
 
A Certificação Digital na sociedade Brasileira
A Certificação Digital na sociedade BrasileiraA Certificação Digital na sociedade Brasileira
A Certificação Digital na sociedade Brasileira
 
Desenvolvimento de um portal para assinatura digital de arquivos
Desenvolvimento de um portal para assinatura digital de arquivosDesenvolvimento de um portal para assinatura digital de arquivos
Desenvolvimento de um portal para assinatura digital de arquivos
 
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
 
Projeto de Interfaces Gráficas para Web
Projeto de Interfaces Gráficas para WebProjeto de Interfaces Gráficas para Web
Projeto de Interfaces Gráficas para Web
 
Custeio VariáVel Lavanderia Industrial
Custeio VariáVel Lavanderia IndustrialCusteio VariáVel Lavanderia Industrial
Custeio VariáVel Lavanderia Industrial
 
Relatório de fim de curso
Relatório de fim de cursoRelatório de fim de curso
Relatório de fim de curso
 
Automação de testes de desempenho para sistemas web utilizando a ferramenta j...
Automação de testes de desempenho para sistemas web utilizando a ferramenta j...Automação de testes de desempenho para sistemas web utilizando a ferramenta j...
Automação de testes de desempenho para sistemas web utilizando a ferramenta j...
 
1144
11441144
1144
 
Aplicação de um modelo simplificado das metodologias do pentesting
Aplicação de um modelo simplificado das metodologias do pentestingAplicação de um modelo simplificado das metodologias do pentesting
Aplicação de um modelo simplificado das metodologias do pentesting
 
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos MunicipaisUsabilidade e Arquitetura de Informação de Websites de Governos Municipais
Usabilidade e Arquitetura de Informação de Websites de Governos Municipais
 
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUXARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
 
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
 
Projeto GET
Projeto GETProjeto GET
Projeto GET
 
Certificação Digital : Uma Nova Era de Segurança Eletrônica
Certificação Digital : Uma Nova Era de Segurança EletrônicaCertificação Digital : Uma Nova Era de Segurança Eletrônica
Certificação Digital : Uma Nova Era de Segurança Eletrônica
 
 
TCC: Internet Via Rede Elétrica
TCC: Internet Via Rede ElétricaTCC: Internet Via Rede Elétrica
TCC: Internet Via Rede Elétrica
 
Bd web dist
Bd web distBd web dist
Bd web dist
 
Arca Sistema Gerencial
Arca Sistema GerencialArca Sistema Gerencial
Arca Sistema Gerencial
 

TCC Marcus Winicius e Rayner Max - Analise de Desempenho de um Servidor Proxy Virtualizado

  • 1. UNIVERSIDADE ESTADUAL DE GOIAS UNIDADE UNIVERSITARIA DE TRINDADE MARCUS WINICIUS OLIVEIRA COSTA RAYNER MAX FERNANDES LIMA ANÁLISE DE DESEMPENHO DE UM SERVIDOR PROXY VIRTUALIZADO Trindade - GO 2012
  • 2. MARCUS WINICIUS OLIVEIRA COSTA RAYNER MAX FERNANDES LIMA ANÁLISE DE DESEMPENHO DE UM SERVIDOR PROXY VIRTUALIZADO Trabalho de Conclusão de Curso apresentado como parte dos requisitos básicos para a obtenção do Título de Tecnólogo em Redes de Computadores ao Curso Superior de Tecnologia em Redes de Computadores da Universidade Estadual de Goiás. Orientador: Prof. Esp. Antônio Cruvinel Borges Neto Trindade - GO 2012
  • 3. Costa, Marcus Winicius Oliveira; Lima, Rayner Max Fernandes Análise de Desempenho de um Servidor Proxy Virtualizado/ Marcus Winicius Oliveira Costa, Rayner Max Fernandes Lima. – Trindade: 2012. XX p. :il. Orientador Esp. Professor Antônio Cruvinel Borges Neto. Trabalho de Conclusão de Curso Superior de Tecnologia em Redes de Computadores UEG (Universidade Estadual de Goiás), Trindade, 2012. Inclui bibliografia.
  • 4. MARCUS WINICIUS OLIVEIRA COSTA RAYNER MAX FERNANDES LIMA ANÁLISE DE DESEMPENHO DE UM SERVIDOR PROXY VIRTUALIZADO Trabalho submetido à Banca Examinadora como parte dos requisitos para Conclusão do Curso de Tecnologia em Redes de Computadores. BANCA EXAMINADORA: ___________________________________________ Prof. Esp. Antônio Cruvinel Borges Neto ___________________________________________ Prof. Esp. Pabllo Borges Cardoso ___________________________________________ Prof. Esp. George Mendes Marra Trindade - GO 2012
  • 5. DEDICATÓRIA Este trabalho é dedicado aos nossos pais, que acreditaram em nós desde o início. São eles, os principais responsáveis pela construção de nosso caráter. Aos nossos amigos e as pessoas próximas a nós, que estiveram ao nosso lado, sempre à disposição para nos ajudar e apoiar nos momentos difíceis. E por último, mas não menos importante, aos nossos professores, seres humanos formidáveis, detentores do saber e, que fizeram, fazem e farão toda a diferença em nossas vidas, tanto profissional, quanto pessoal.
  • 6. AGRADECIMENTOS É de Jean Cocteau a frase: “Não sabendo que era impossível, foi lá e fez”. E é com ela, que iniciamos nossos agradecimentos. Primeiramente a Deus, pois sabemos que, sem Ele, nada somos e nenhuma conquista é possível. Aos nossos pais os mais sinceros e profundos agradecimentos. Agradecemos também aos nossos familiares e amigos, que apoiaram e foram pacientes conosco nos momentos mais difíceis e desafiantes. Ao corpo docente e demais profissionais da UEG - Unidade Universitária de Trindade, que nos acolheu com tanto carinho, nosso reconhecimento. Ao Professor George Marra que acompanhou de perto nossa trajetória e, em especial, ao Professor Antônio Cruvinel, que não só nos orientou, mas, acreditou em nós e neste projeto desde o início.
  • 7. “Que os vossos esforços desafiem as impossibilidades, lembrai- vos de que as grandes coisas do homem foram conquistadas do que parecia impossível.” Charles Chaplin
  • 8. SUMÁRIO RESUMO ................................................................................................................................................ 11 ABSTRACT .............................................................................................................................................. 12 LISTA DE ILUSTRAÇÃO ........................................................................................................................... 13 LISTA DE TABELAS.................................................................................................................................. 15 LISTA DE SÍMBOLOS E ABREVIATURAS .................................................................................................. 16 1 INTRODUÇÃO...................................................................................................................................... 18 1.1 Objetivo geral .............................................................................................................................. 20 1.2 Objetivos específicos ................................................................................................................... 20 1.3 Justificativa .................................................................................................................................. 21 1.4 Metodologia ................................................................................................................................ 21 2 FUNDAMENTAÇÃO TEÓRICA .............................................................................................................. 22 2.1 Máquina Virtual ........................................................................................................................... 22 2.1.1 Monitor de máquina virtual ................................................................................................. 23 2.1.2 Técnicas de Virtualização ..................................................................................................... 23 2.1.2.1 Virtualização Completa ................................................................................................. 23 2.1.2.2 Paravirtualização ........................................................................................................... 24 2.1.2.3 Recompilação Dinâmica ................................................................................................ 24 2.1.3 Vantagens de se utilizar a virtualização ............................................................................... 25 2.1.4 Desvantagens ....................................................................................................................... 27 2.1.5 Utilização .............................................................................................................................. 28 2.1.6 Segurança ............................................................................................................................. 28 2.1.7 Ferramenta Escolhida ........................................................................................................... 29 2.1.7.1 Diferenças entre VMware ESX e VMware ESXi ............................................................. 30 2.2 Servidor Proxy ............................................................................................................................. 31 2.2.1 Características do Servidor Proxy ......................................................................................... 31 2.2.2 Tipos de Proxy ...................................................................................................................... 32 2.2.2.1 Transparente ................................................................................................................. 32 2.2.2.2 Controlado ..................................................................................................................... 33 2.2.2.3 Proxy Transparente x Controlado.................................................................................. 33 2.2.2.3.1 Vantagens do Proxy Transparente ......................................................................... 33 2.2.2.3.2 Vantagens do Proxy Controlado ............................................................................. 34 2.2.2.4 Proxy Anônimo .............................................................................................................. 34 2.2.2.5 Proxy Reverso ................................................................................................................ 35
  • 9. 2.2.3 Squid ..................................................................................................................................... 36 2.2.3.1 Breve história do Squid ................................................................................................. 36 2.2.3.2 Características do Squid ................................................................................................ 37 2.2.3.3 Requisitos Específicos para o Squid .............................................................................. 38 2.2.3.4 Estrutura do Squid ......................................................................................................... 38 2.2.3.4.1 Arquivo de Configuração ........................................................................................ 39 2.2.3.4.2 Restrições de acessos ............................................................................................. 39 2.2.3.4.3 Lista de Controle de Acesso ................................................................................... 39 2.2.3.4.4 Parâmetros administrativos ................................................................................... 44 2.2.4 Microsoft ISA Server ............................................................................................................. 46 2.2.5 Escolha da ferramenta ......................................................................................................... 46 2.2.6 Firewall Iptables ................................................................................................................... 46 2.3 Sistema Operacional.................................................................................................................... 48 2.3.1 Arquitetura ........................................................................................................................... 48 2.3.2 Tipos de Sistemas Operacionais ........................................................................................... 50 2.3.3 Principais finalidades de um S.O. ......................................................................................... 51 2.3.4 Red Hat Enterprise Linux 6 ................................................................................................... 54 2.4 Software de Benchmark .............................................................................................................. 57 2.4.1 Definição............................................................................................................................... 57 2.4.2 Características ...................................................................................................................... 58 2.4.3 Tipos de Benchmark ............................................................................................................. 59 2.4.4 Utilização dos Benchmarks ................................................................................................... 59 2.4.5 Estratégias do Benchmark .................................................................................................... 60 2.4.6 Erros do processo de Benchmarking .................................................................................... 61 2.4.7 Análise dos dados ................................................................................................................. 62 2.4.8 Benchmarking do Servidor Proxy ......................................................................................... 62 2.4.9 WebPolygraph ...................................................................................................................... 63 2.4.9.1 Metas da ferramenta WebPolygraph ............................................................................ 63 2.4.9.2 Visão geral sobre a arquitetura ..................................................................................... 64 3 INSTALAÇÃO DAS FERRAMENTAS ...................................................................................................... 66 3.1 VMware vSphere ESXi 5.0 ........................................................................................................... 66 3.1.1 Primeiros passos ................................................................................................................... 67 3.1.2 Instalando o VMware vSphere ESXi 5.0 ............................................................................... 68 3.1.3 Instalação do VMware vSphere Client ................................................................................. 74
  • 10. 3.2 Red Hat Enterprise Linux 6 .......................................................................................................... 82 3.2.1 Instalação ............................................................................................................................. 82 3.2.2 Configuração ........................................................................................................................ 88 3.2.3 Registro do Red Hat Enterprise Linux 6 ................................................................................ 91 3.3 Squid ............................................................................................................................................ 94 3.4 WebPolygraph ............................................................................................................................. 95 4 ESTUDO DE CASO ............................................................................................................................... 98 4.1 Projeção do estudo de caso ........................................................................................................ 99 4.2 Maquina 1 – Servidor Proxy Nativo ............................................................................................. 99 4.3 Maquina 2 – Servidor Proxy Virtualizado .................................................................................. 107 4.4 Configuração física e lógica da Rede de Computadores ........................................................... 108 4.5 Utilizando o WebPolygraph ....................................................................................................... 112 4.6 Problemas encontrados ............................................................................................................ 124 4.7 Resultados obtidos .................................................................................................................... 125 5 CONCLUSÃO ..................................................................................................................................... 131 6 TRABALHOS FUTUROS ...................................................................................................................... 133 7 REFERÊNCIAS BIBLIOGRÁFICAS ........................................................................................................ 134
  • 11. 11 RESUMO A área de Tecnologia da Informação – TI, é uma das que mais têm apresentado crescimento no mundo moderno. A informatização nos diversos setores é uma realidade que vivenciamos cotidianamente. As inúmeras economias de mercado buscam hoje uma otimização no sentido de garantir eficiência e eficácia na produção e prestação de serviço. No intuito de garantir estes requisitos, as empresas vêm buscando a implementação de técnicas e tecnologias que garantam economia de tempo e custos, melhorando assim a produtividade sem perder a qualidade dos serviços prestados. Dentre as várias técnicas e ferramentas empregadas neste sentido, está a virtualização. Com o emprego da virtualização, podem-se criar várias máquinas virtuais em uma mesma máquina física, o que torna possível oferecer os mais distintos serviços, em sistemas operacionais e servidores diferentes, de forma concomitante. Entretanto a utilização dessa técnica vem gerando uma série de discussões no que se refere ao desempenho ou ausência dele, como é o caso da virtualização do Servidor Proxy. Este trabalho objetiva, portanto, analisar o desempenho de um Servidor Proxy Virtualizado. O conhecimento necessário para realizar esse procedimento, será adquirido através de consultas e pesquisas a fontes diversas como livros, artigos, web sites, revistas e outros. A análise se efetivará, através de ferramentas que verifiquem o tráfego da rede de computadores, mediante a comparação dos dados obtidos, levando-se em conta, o comportamento de um Servidor Proxy na máquina física e o desempenho do mesmo em um ambiente virtualizado. Palavras-chave: Virtualização, máquina virtual, análise, Servidor Proxy, desempenho.
  • 12. 12 ABSTRACT The area of Information Technology - IT is one of the fastest growth are presented in the modern world. Computerization in various sectors is a reality that we experience daily. The many market economies have now sought an optimization to ensure efficiency and effectiveness in production and service delivery. To ensure these requirements, companies have been seeking the implementation of techniques and technologies to ensure saving time and costs, improving productivity without losing the quality of services provided. Among the various techniques and tools used in this sense, is virtualization. With the use of virtualization, you can create multiple virtual machines on a single physical machine, which makes it possible to offer the most distinguished services in different operating systems and servers, concomitantly. However the use of this technique has generated a lot of discussions regarding the performance or lack of it, as is the case of the Proxy Server virtualization. This paper aims, therefore, to analyze the performance of a Virtualized Server Proxy. The knowledge required to perform this procedure, will be acquired through consultations and surveys to various sources such as books, articles, web sites, magazines and other. The analysis become effective, using tools that check the network traffic from computers, by comparing the data, taking into account the behavior of a proxy server on the physical machine and the same performance in a virtualized environment. Keywords: Virtualization, Virtual Machine, analysis, Proxy Server, performance.
  • 13. 13 LISTA DE ILUSTRAÇÃO FIGURA: 1 – INFORMAÇÕES DE DOWNLOAD E LICENCIAMENTO .......................... 67 FIGURA: 2 – ESCOLHA DO BOOT ...................................................................................... 68 FIGURA: 3 – TELA DE INSTALAÇÃO DO VMWARE VSPHERE ESXI 5 ...................... 69 FIGURA: 4 – CONFIRMAÇÃO DE ESCOLHA DE DISCO ................................................ 70 FIGURA: 5 – DEFINIÇÃO DA SENHA DO ROOT.............................................................. 70 FIGURA: 6 – TELA DE REINICIO DO SERVIDOR APÓS INSTALAÇÃO DA FERRAMENTA ....................................................................................................................... 71 FIGURA: 7 – TELA DE LOGIN DO VMWARE VSPHERE ESXI 5 ................................... 72 FIGURA: 8 – DEFINIÇÃO DO ENDEREÇO IP .................................................................... 73 FIGURA: 9 – DEFINIÇÃO DO SERVIDOR DNS................................................................. 73 FIGURA: 10 – TELA DE INÍCIO DE INSTALAÇÃO DO VMWARE VSPHERE CLIENT 5.0 ............................................................................................................................................. 74 FIGURA: 11 – TERMOS DE CONTRATO E LICENÇA ...................................................... 75 FIGURA: 12 – ESCOLHA DA PASTA DE INSTALAÇÃO ................................................. 76 FIGURA: 13 – TELA DE FINALIZAÇÃO DE INSTALAÇÃO DO VMWARE VCLIENT 76 FIGURA: 14 – CONEXÃO COM O VMWARE VSPHERE ESXI 5 .................................... 77 FIGURA: 15 – TELA INICIAL DO VCLIENT ...................................................................... 78 FIGURA: 16 – CRIAÇÃO DE UMA MÁQUINA VIRTUAL ............................................... 78 FIGURA: 17 – ESCOLHA DA VERSÃO DA MÁQUINA VIRTUAL ................................. 79 FIGURA: 18 – DEFINIÇÃO DAS PLACAS DE REDE DA NOVA MÁQUINA VIRTUAL .................................................................................................................................................. 80 FIGURA: 19 – FINALIZAÇÃO DA CRIAÇÃO DA NOVA MÁQUINA VIRTUAL .......... 80 FIGURA: 20 – INICIANDO A MÁQUINA VIRTUAL CRIADA ......................................... 81 FIGURA: 21 – TELA INICIAL DE INSTALAÇÃO DO RED HAT ENTERPRISE LINUX 6 .................................................................................................................................................. 82 FIGURA: 22 – ESCOLHA DO IDIOMA PADRÃO .............................................................. 83 FIGURA: 23 – ESCOLHA DO NOME DA MÁQUINA ........................................................ 84 FIGURA: 24 – ESCOLHA DO PARTICIONAMENTO DE DISCO ..................................... 85 FIGURA: 25 – PERSONALIZAÇÃO DA INSTALAÇÃO DO RED HAT ENTERPRISE LINUX 6 .................................................................................................................................. 86 FIGURA: 26 – DEFINIÇÃO DE INSTALAÇÃO DOS PACOTES ADICIONAIS .............. 87 FIGURA: 27 – TELA DE REINICIO DO SERVIDOR .......................................................... 87
  • 14. 14 FIGURA: 28 – REGISTRO DO RED HAT ENTERPRISE LINUX 6 ................................... 88 FIGURA: 29 – CRIAÇÃO DE NOVOS USUÁRIOS ............................................................. 89 FIGURA: 30 – TELA INICIAL DE LOGIN ........................................................................... 90 FIGURA: 31 – REGISTRO DO RED HAT ENTERPRISE LINUX 6 ................................... 91 FIGURA: 32 – LOGIN E SENHA PARA REGISTRAR O S.O. ............................................ 92 FIGURA: 33 – CONCLUSÃO DO REGISTRO ..................................................................... 93 FIGURA: 34 – TERMINAL CONTENDO AS INFORMAÇÕES DE INSTALAÇÃO DO SQUID 3.1 ................................................................................................................................ 94 FIGURA: 35 – PÁGINA DE DOWNLOAD DO PACOTE DA FERRAMENTA WEBPOLYGRAPH ................................................................................................................. 96 FIGURA: 36 – TERMINAL CONTENDO O PROCESSO DE INSTALAÇÃO DO WEBPOLYGRAPH ................................................................................................................. 97 FIGURA: 37 – ESTRUTURA INICIAL ............................................................................... 109 FIGURA: 38 – ESTRUTURA DESEJADA .......................................................................... 110 FIGURA: 39 – ESTRUTURA OBTIDA ............................................................................... 111 FIGURA: 40 – EXEMPLIFICAÇÃO DO WEBPOLYGRAPH ........................................... 123 FIGURA: 41 – REPRESENTAÇÃO MÉDIA DE TEMPO DE RESPOSTA DE 1 CLIENTE ................................................................................................................................................ 129 FIGURA: 42 – REPRESENTAÇÃO MÉDIA DE TEMPO DE RESPOSTA DE 200 CLIENTES ............................................................................................................................. 130
  • 15. 15 LISTA DE TABELAS TABELA 1 – COMPARAÇÃO ENTRE OS PRODUTOS RED HAT ENTERPRISE LINUX - RED HAT INC. ..................................................................................................................... 56 TABELA 2 – RESULTADOS DO SERVIDOR PROXY NATIVO .................................... 125 TABELA 3 – RESULTADOS DO SERVIDOR PROXY VIRTUALIZADO ...................... 126 TABELA 4 – COMPARAÇÃO DE RESULTADOS............................................................ 127 TABELA 5 – RESULTADOS DO ACESSO DE 200 CLIENTES AO SERVIDOR PROXY NATIVO................................................................................................................................. 128 TABELA 6 – RESULTADOS DO ACESSO DE 200 CLIENTES AO SERVIDOR PROXY VIRTUALIZADO .................................................................................................................. 128 TABELA 7 – COMPARAÇÃO DE RESULTADOS DA SIMULAÇÃO DE 200 CLIENTES ................................................................................................................................................ 128
  • 16. 16 LISTA DE SÍMBOLOS E ABREVIATURAS ABNT: Associação Brasileira de Normas Técnicas ACL: (Access Control List) Listas de Controle de Acesso BIOS: (Basic Input/Output System) Sistema Básico de Entrada/Saída CD: Disco Compacto CPU: (Central Processing Unit) Unidade Central de Processamento DHCP: (Dynamic Host Configuration Protocol) Protocolo de configuração dinâmica de host DNS: (Domain Name System) Sistema de Nomes de Domínio DVD: Disco Versátil Digital FTP: (File Transfer Protocol) Protocolo de Transferência de Arquivos) GB: GigaByte GUI: (Graphical User Interface)- Interface gráfica com o usuário HD: (Hard Disk) Disco Rígido HTTP: (HyperText Transfer Protocol) - Protocolo de Transferência de Hipertexto HTTPS: (HyperText Transfer Protocol Secure) Protocolo de Transferência de Hipertexto Seguro I/O: (Input/Output) Entrada/Saída ICP: (Public Key Infrastructure) Infra-estrutura de Chaves Públicas ICQ: A sigla “ICQ” é um acrônimo feito com base na pronúncia das letras em inglês: I Seek You, que traduzido para o português: eu procuro você IP: (Internet Protocol) Protocolo de Internet ISO: Organização Internacional para Padronização JVM: (Java Virtual Machine) Máquina Virtual Java KB: KiloByte KDE: (K Desktop Environment) Ambiente de Desktop Especial KVM: (Kernel-based Virtual Machine) Máquina Virtual de Kernel baseado MB: MegaBytes
  • 17. 17 MMV: Monitor de Máquina Virtual NAT: (Network Address Translation) Tradutor de Endereços de Rede NIC: (Network Information Center) Centro de Informação de Redes NTLM: (New Technology Local Area Network Manager) Novo Gerente de Tecnologia de Rede de Área Local OSI: (Open Systems Interconnection) Sistema Aberto de Interconexão PC: (Personal Computer) Computador Pessoal PDA: (Personal Digital Assistants) Assistentes Pessoais Digitais RAM: (Random-Access Memory) Memória de Acesso Aleatório RAS: (Reliability, Availability and Serviceability) Confiabilidade, Disponibilidade e Utilidade S.O.: Sistema Operacional SELinux: (Security-Enhanced Linux) Segurança Linux Aprimorada SGBDs: Sistema de Gerenciamento de Banco de Dados SMTP: (Simple Mail Transfer Protocol) Protocolo Simples de Transferência de Email SNMP: (Simple Network Management Protocol) Protocolo simples de gestão de rede SPEC: (Standard Performance Evaluation Corporation) Corporação Padrão de Avaliação de Desempenho SSH: Secure Shell SSL: (Security Sockets Layer) Segurança da Camada de Transporte TI: Tecnologia da Informação TPC: (Transaction Processing Performance Council) Conselho de Desempenho de Processamento de Transações TSL: Segurança da Camada de Transporte. UEG: - UnU: Universidade Estadual de Goiás - Unidade Universitária URL: (Uniform Resource Locator) Localizador-Padrão de Recursos VMM – (Virtual Machine Monitor) Monitor de Máquina Virtual VMM: (Virtual Machine Monitor) Monitor de Máquina Virtual VPN: (Virtual Private Network) Rede Privativa Virtual
  • 18. 18 1 INTRODUÇÃO A evolução tecnológica aliada ao aumento da utilização da internet vem obrigando as empresas a se adequarem a um novo contexto no que se refere à área da informática: a necessidade de maquinas cada vez mais potente. Naturalmente, os servidores utilizados nas empresas, necessitam a cada dia, de maior poder de processamento, memória, espaço e outros requisitos, que os faça cada vez mais eficientes, capacitando assim as empresas a atuarem em um mercado altamente competitivo. De acordo com MIGUEL (2009), em seu artigo, publicado no site Tecnologia do Globo, intitulado “O que é um servidor, um servidor dedicado e um mainframe?”, um servidor pode ser entendido como um sistema ou equipamento que disponibiliza serviços específicos à outras máquinas na rede de computadores. Uma das principais funções de um servidor é centralizar o acesso a estes serviços, tornando uma informação disponível em um maior tempo possível, em vários lugares diferentes, de maneira segura e íntegra. Em contrapartida ao uso deste tipo de equipamento, as empresas, na maioria dos casos, tem como meta, oferecer o mesmo serviço, com a menor despesa possível. Embora os custos atuais dos equipamentos necessários aos servidores terem diminuindo, se comparado há alguns anos atrás, as controvérsias do lucro e gastos, acabam levando estas mesmas empresas a adotarem medidas específicas no intuito de resolverem este tipo de questão. Dentre as medidas adotadas para aumentar a disponibilidade lógica, diminuindo os custos físicos, está a virtualização. Segundo LAUREANO (2006), o conceito de máquina virtual não é novo. Suas origens remetem ao início da história dos computadores, no final dos anos 50 e inicio dos anos 60. A virtualização pode ser definida, como a capacidade de repartir diferentes estações lógicas ou virtuais em uma mesma máquina hospedeira, com isso é possível instalar diferentes Sistemas Operacionais em uma mesma máquina física, estando estes funcionando ao mesmo tempo e paralelamente. “Virtualizar virou sinônimo de abstrair e, portanto, praticamente tudo que tem um conceito de abstração leva virtualização em seu nome” (SCHAFFER, 2008). Todas essas máquinas virtuais são gerenciados por um midlleware, uma camada mediana que fica entre o sistema nativo e o hardware. Esta camada, que também é conhecida como Hypervisor, MMV - Monitor de Máquina Virtual - ou VMM – Virtual Machine Monitor-, tem o controle sobre os recursos do hardware e permite criar várias maquinas virtuais sobre uma maquina real (LAUREANO, 2006, p. 19).
  • 19. 19 A virtualização traz uma série de vantagens sólidas. Dentre elas podemos destacar a redução do consumo de energia, facilidade para exercícios de teste e desenvolvimento, maior segurança e disponibilidade, melhor aproveitamento do espaço físico e do hardware, flexibilidade para migrar ambientes dentre outras importantes características, o que acabam por fazer com que esta tecnologia caminhe a passos largos. Com o processo acima citado, as empresas podem implantar um ou mais servidores em uma mesma máquina, satisfazendo assim o seu objetivo de redução de custos, além de maximizar o uso das máquinas físicas, diminuir a ociosidade do servidor e reduzir gastos com infraestrutura, refrigeração e energia, vantagens descritas por MOREIRA (2008). Para exemplificar, em um mesmo computador, pode-se implantar um Servidor de Fax e um Servidor de Impressão virtualizados em um Servidor Web devido a pouca demanda de execução que estes exigem do hardware. Mas este procedimento, de virtualização de máquinas, acabou por gerar algumas discussões a respeito do desempenho dos servidores, principalmente devido às limitações que este tipo de técnica possui. A virtualização de um Servidor Proxy, é um tópico importante dessas discussões. Um Servidor Proxy nada mais é do que um computador que fica localizado na rede de computadores, entre o usuário e a Internet, e que segundo MARCELO (2006), pode ser utilizado para armazenar um cache das páginas Web, controlar e registrar o acesso do usuário à Internet, além de providenciar anonimato e também bloquear o acesso a determinados sites. Este tipo de servidor atua da seguinte maneira: um cliente ou usuário conecta-se a um Servidor Proxy, requisitando um serviço - como uma conexão, um arquivo, entre outros - o servidor avalia a solicitação e a atende de acordo com as políticas estabelecidas. Dentre as vantagens de se utilizar esse Servidor podemos citar: o aumento na velocidade de resposta de uma requisição feita por um cliente e economia de banda larga, pois, com o cache armazenado, o servidor não precisará buscar todas as informações novamente na Internet, sendo necessária apenas uma atualização das informações locais (MARCELO, 2006). A maior problemática gerada sobre esse conceito e a virtualização deste tipo de serviço está na perda de desempenho. Isto porque uma máquina virtual, de acordo com LAUREANO (2008, p. 34), não possui o mesmo desempenho que uma máquina nativa devido à introdução de uma camada extra de software, além de que um simples gargalo nessa camada extra ou até mesmo na máquina física pode atrapalhar o normal funcionamento da máquina virtual.
  • 20. 20 Até o presente momento, não constatamos um estudo aprofundado visando uma solução para a problemática apresentada, sendo assim, será proposto, neste trabalho, a criação de um Servidor Proxy que funcionará em uma máquina virtualizada para que possamos fazer a análise de desempenho do mesmo. A análise dos resultados pode vir a ser, uma contribuição a aos profissionais da área de Tecnologia da Informação, como tecnólogos e administradores de rede, no que se refere à comprovação ou não da provável perda de desempenho de um Servidor Proxy virtualizado. 1.1 Objetivo geral Realizar um estudo sobre o desempenho de um Servidor Proxy Virtualizado através da análise de desempenho do mesmo na rede de computadores. 1.2 Objetivos específicos - Compreender os conceitos de máquina virtual, Servidor Proxy e análise de desempenho das redes de computadores bem como a usabilidade dos mesmos; - Elencar se comprovado for, as vantagens existentes para as empresas em virtualizar um servidor; - Elucidar os benefícios do Servidor Proxy; - Montar um ambiente virtualizado visando o estudo de caso; - Analisar e quantificar o desempenho do serviço Proxy em uma máquina nativa e em uma máquina virtual; - Oferecer um material de apoio a acadêmicos e a profissionais de redes de computadores.
  • 21. 21 1.3 Justificativa Na atualidade, o crescimento das redes de computadores é sempre colocado em questionamento. É comum nos depararmos com empresas que pretendem ter um excelente parque tecnológico e oferecerem os mais diferentes tipos de serviços, e mesmo não dispondo de um gasto excessivo, acabam por atingir esses objetivos, após se depararem com algumas soluções, como é o caso da virtualização. Quando uma empresa possui um grande número de servidores físicos, a virtualização é bem aceita, apesar de trazer consigo problemas antes não existentes, como por exemplo, a necessidade de um maior monitoramento nestes equipamentos, tanto física quanto logicamente, haja vista que, um mesmo equipamento, oferece dois ou até mais serviços. Outro exemplo são os servidores que não podem trabalhar compartilhando os mesmos recursos, pois necessitam de um alto poder de processamento, armazenamento, largura de banda, memória entre outros recursos. Além desses exemplos, existe um em particular, em torno do qual muito se especula, mas sem comprovação ate o momento, que é a não virtualização do Servidor Proxy devido a uma possível perda de desempenho. Devido ao contexto desta questão de não se virtualizar um Servidor Proxy devido a diminuição do desempenho, justifica-se a criação do ambiente virtualizado para análise de desempenho da máquina nativa, da máquina virtual e da rede de computadores, ou seja, o estudo de caso a fim de que, tenhamos elementos concretos que subsidiem nossas conclusões a cerca da problemática exposta. Ao término deste projeto, pretende-se esclarecer, compreender, e/ou comprovar, a questão sobre a perda de desempenho de um Servidor Proxy virtualizado é real ou não. 1.4 Metodologia A metodologia adotada para a realização deste Trabalho de Conclusão de Curso consta de parte teórica fundamentada em pesquisas de livros, artigos, revistas, jornais, vídeos e páginas web e outra parte prática, visando gerar novos conhecimentos e o êxito do projeto, para tanto será explorado, além dos itens citados, um estudo de caso real. O estudo de caso real será feito com base na implantação, pelos próprios acadêmicos, de um Servidor Proxy em uma máquina virtualizada, no intuito de analisar o desempenho deste serviço na rede de computadores e assim através de elementos concretos comprovar a perda ou não do desempenho supracitado.
  • 22. 22 2 FUNDAMENTAÇÃO TEÓRICA 2.1 Máquina Virtual Um dos primeiros conceitos de máquina virtual foi elaborado pela IBM. Segundo este conceito, uma máquina virtual era considerada como uma cópia isolada de um sistema físico, sendo que esta cópia estaria totalmente protegida. Em uma perspectiva mais atual, como afirma LAUREANO (2006, p. 17), esta definição pode ser entendida como “uma duplicata eficiente e isolada de uma máquina real”. No pensar de SILVA (2011), máquina virtual pode ser considerada como um software que simula todas as condições de um computador real. Em suma, máquinas virtuais são programas que permitem que em uma mesma máquina, sejam executadas simultaneamente dois ou mais ambientes distintos e isolados, no qual trabalham exatamente iguais a uma máquina física sendo controladas por um monitor de máquina virtual. A definição de máquina virtual não é um conceito recente, pois sua origem se remete ao final da década de 50 e inicio de 1960. Inicialmente, elas foram criadas com o intuito de concentrar todos os sistemas disponíveis em um só computador, sendo que cada maquina virtual tinha as mesmas configurações da máquina física. Na década de 1980, a virtualização perdeu importância com a popularização de plataformas de hardware baratas, como o computador pessoal, pois se apresentava a um custo menor, tornando simples o fornecimento de um computador completo a cada usuário do que investir em sistemas de grande porte, caros e complexos. “Além disso, o hardware do PC tinha desempenho modesto e não provia suporte adequado à virtualização, o que inibiu o uso de ambientes virtuais nessas plataformas.” (LAUREANO; MAZEIRO 2006, p. 139).
  • 23. 23 2.1.1 Monitor de máquina virtual Segundo LAUREANO (2006, p. 19) uma máquina virtual é um ambiente criado por um monitor de máquina virtual (Virtual Machine Monitor – VMM), também denominado “sistema operacional para sistemas operacionais”. O monitor de máquina virtual - MMV ou Virtual Machine Monitor – VMM pode ser entendido como uma camada de software introduzida entre o hardware e as máquinas virtuais, cuja finalidade é abstrair a máquina virtual do sistema operacional visitante. Essa camada realiza uma interface entre os sistemas virtualizados e o hardware que é compartilhado por eles, sendo assim responsável pelo gerenciamento de todas as estruturas de hardware, fornecendo então, um ambiente completo no qual os sistemas virtualizados irão funcionar. Na computação o VMM também é conhecido como Hypervisor, uma plataforma de virtualização, que possibilita a execução simultânea, porém independente de vários sistemas operacionais em um único hardware. Existem duas maneiras distintas de atuação do Hypervisor para realizar a virtualização: monitor nativo e monitor convidado. 2.1.2 Técnicas de Virtualização Para o processo de virtualização podemos utilizar métodos, sendo que os mais utilizados são a virtualização completa, paravirtualização e recompilação dinâmica. De um modo geral vale destacar o que diz WILLIAMS e GARCIA (2007) que, para criar partições virtuais em um servidor, uma fina camada de software chamada de Virtual Machine Monitor (VMM), é executado diretamente sobre a plataforma do hardware físico. Sendo que um ou mais sistemas operacionais hospedeiros podem executar as aplicações sobre do VMM. 2.1.2.1 Virtualização Completa O método da virtualização completa, é utilizado para que qualquer software possa ser executado sem alterações. Para isso um software de baixo nível é executado diretamente sobre o hardware, carregado no computador antes de qualquer sistema operacional. Esta simulação representa o conjunto de instruções do processador, a memória principal, interrupções, exceções e acesso aos diversos dispositivos existentes. Um ponto que deve ser considerado relevante, é que este tipo de virtualização, precisa de um hardware com características específicas, para que seja possível atender instruções de execução privilegiada. Esse método
  • 24. 24 de simulação é realizado com maior eficácia, pois não necessita representar os estados de execução do hardware. 2.1.2.2 Paravirtualização O segundo método é chamado de paravirtualização, no qual a máquina virtual é executada sobre um sistema operacional nativo, sendo reconhecido apenas como um processo. Na paravirtualização o sistema que será virtualizado sofre algumas alterações no kernel para garantir a eficácia na interação com o monitor de máquinas virtuais. Apesar de se perder em portabilidade devido a essas alterações, ele tem permissão de acessar diretamente os recursos do hardware, sendo que esse acesso é monitorado pelo monitor de máquinas virtuais, que fornece ao sistema convidado, os limites do sistema. A paravirtualização reduz a complexidade existente no desenvolvimento de máquinas virtuais. Como afirma LAUREANO - 2006, historicamente os processadores não suportam a virtualização nativa, sendo que a principal razão para utilizar a paravirtualização é o desempenho obtido, que compensa as modificações que deverão ser implementadas nos sistemas convidados Entre os softwares que realizam a paravirtualização, citamos como citar exemplos o VMware Workstation, Virtual Box, Microsoft Virtual Server, Xen. 2.1.2.3 Recompilação Dinâmica A técnica da Recompilação Dinâmica, também recebe o nome de tradução dinâmica e seu funcionamento se faz, traduzindo durante a execução de um programa, as instruções de um formato para outro. Segundo (LAUREANO, 2006) com a compilação durante a execução, o sistema pode adequar o código gerado de forma a refletir o ambiente original do programa, onde informações que normalmente não estão disponíveis para um compilador estático tradicional são exploradas, para que o código gerado seja mais eficiente. Uma de suas aplicações pode ser notada em compiladores JIT (just-in-time), que traduzem de uma linguagem Bytecode para o código nativo da CPU onde o compilador executa-o. A recompilação segue determinados passos:  Primeiro: O código binário é escaneado para que seja identificada uma sequência de bits correspondentes à seção de código do programa em execução.
  • 25. 25  Segundo: Os bits agrupados anteriormente são divididos em instruções, juntamente com os parâmetros delas.  Terceiro: As instruções são transformadas para uma representação mais próxima do sistema operacional Host.  Quarto: Um código em uma linguagem de alto nível é gerado a partir da representação anterior, sendo que esse código que é compilado e reescrito na linguagem nativa.  Quinto: Temos uma sequência de bits agora executáveis no sistema operacional Host. O VMWare Workstation utiliza essa técnica, recompilando apenas parte do código, uma vez que boa parte dele pode executar nativamente (a arquitetura de hardware subjacente é a mesma da VM). No VMWare Workstation apenas instruções que não podem ser executadas diretamente são recompiladas. Um exemplo desse tipo de técnica é a JVM (Java Virtual Machine), uma máquina virtual desenvolvida especialmente para aplicações Java, sendo esta capaz de carregar e executar aplicativos, convertendo os Bytecodes em um código executável. 2.1.3 Vantagens de se utilizar a virtualização A virtualização traz consigo uma larga escala de vantagens, dentre as quais poderão ser citadas:  Segurança: Cada máquina virtual é isolada das demais devido à estrutura da camada de software do Hypervisor, portanto, a vulnerabilidade de um sistema que opera em uma máquina virtual não afeta as outras máquinas virtuais. Segundo MATTOS (2008), através das máquinas virtuais pode ser definido quais são os melhores ambientes para executar cada serviço, com diferentes ferramentas, requerimentos de segurança e até sistemas operacionais.
  • 26. 26  Manutenção de Equipamentos: A manutenção é facilitada, pois os serviços estarão centralizados em uma mesma maquina física, também sendo possível espelhar a máquina virtual a fim de realizar manutenções de hardware, o que se traduz na não paralisação dos serviços.  Redução de Gastos: Procurando cada vez mais manter o mesmo nível de serviço com menor custo, as empresas encontraram na virtualização um modo de economizar com gastos de equipamentos, espaço físico, refrigeração, entre outros. De acordo com MATTOS (2008), essa redução pode variar de 29% até 64%.  Confiança e Disponibilidade: Como as máquinas virtuais funcionam independentes umas das outras, se ocorrerem falhas de software, estas não prejudicarão os demais serviços das outras máquinas virtuais.  Escalabilidade: Todas as máquinas virtuais estão encapsuladas no VMM, possibilitando assim a mudança da plataforma de configuração da máquina virtual para aumentar ou diminuir seu desempenho, de acordo com as necessidades.  Suporte a aplicações legadas: Caso ocorram mudanças de sistema operacional em uma empresa, a virtualização pode ser utilizada com a finalidade de manter vários tipos de sistemas operacionais em um mesmo hardware, ou seja, “é possível manter o sistema operacional antigo sendo executado em uma máquina virtual, o que reduz os custos com a migração” (MATTOS, 2008).  Tecnologia Verde: A virtualização já deixou de ser uma tendência e se tornou no mundo corporativo, trazendo inúmeras vantagens a todos já que, pela economia de recursos e equipamentos, também se trata de uma tecnologia verde. E conforme WILLIAMS e GARCIA (2007), a virtualização juntamente com a consolidação de servidores, contribuirá para aumentar a utilização do poder computacional dos servidores, enquanto diminui o número de plataformas físicas necessárias. Esta técnica fornece elevado isolamento entre a execução das máquinas virtuais. Uma falha em um sistema da máquina virtual ou partição, não irá afetar as outras partições sendo executadas na mesma
  • 27. 27 plataforma de hardware. Este isolamento lógico é o escudo que protege as máquinas virtuais no nível mais baixo devido que, elas se desconhecem, e, portanto não sofrem impactos, por condições de alocações. “É uma chave da virtualização, tornar cada partição como se fosse executar em um hardware dedicado” (WILLIAMS & GARCIA, 2007). 2.1.4 Desvantagens Porém, como toda tecnologia não tem apenas pontos positivos, pode-se citar como os pontos negativos mais relevantes:  Segurança: Todos os softwares estão sujeitos a apresentar falhas. Se o sistema operacional hospedeiro apresentar vulnerabilidades, todas as demais máquinas virtuais hospedadas na mesma máquina física apresentarão vulnerabilidade, já que o VMM é uma camada de software.  Gerenciamento: Segundo MATTOS (2008), as máquinas virtuais precisam ser monitoradas, instanciadas, configuradas e salvas constantemente. Existem ferramentas das quais facilitam tais serviços, mas este é o campo de maior investimento na área da virtualização, pois tais contratempos precisam ser resolvidos.  Poder de processamento: Por ser uma camada extra de software, a máquina virtualizada necessita de uma maior quantidade de processamento do que se teria sem a virtualização, aumentando assim o custo final do equipamento. Isto porque ele necessitará de mais ou de melhores processadores e uma quantidade maior de memória RAM, que são periféricos responsáveis pelo aumento do poder de processamento.  Limitações do hardware: Também é muito importante ter consciência sobre as limitações dos equipamentos físicos do computador, pois o processamento, a capacidade de armazenamento da memória virtual e o espaço em disco do equipamento são compartilhados pelos ambientes virtuais, e, com isso, o hardware pode se tornar o maior problema da virtualização.
  • 28. 28 2.1.5 Utilização Define-se a virtualização como uma maneira de se executar vários serviços, programas e sistemas operacionais em um único equipamento físico, possibilitando também simular vários tipos de hardwares em um único equipamento, como servidores, switches, entre outros. Um dos maiores exemplos de serviços virtualizados é o cloud computing (computação em nuvem) no qual a maioria dos servidores são virtualizados e formam uma grande rede fisicamente distribuída, elaborada para oferecer serviços específicos. Algumas empresas utilizam a virtualização em seus projetos tanto para simular cenários diferentes de redes ou até mesmo simular plataformas diferentes como diversos tipos de serviços. Para cada serviço de virtualização pode ser encontrado um ou mais virtualizadores. No caso de servidores voltados para testes em sistemas desktops podemos utilizar os softwares, Virtual Box, VMware, Microsoft Virtual PC. Já no caso da virtualização de servidores em ambiente de produção pode-se usar Xen, VMware, KVM entre outros. 2.1.6 Segurança Usando máquinas virtuais, pode ser definido qual é o melhor ambiente para executar cada tipo de ocupação, com diferentes requerimentos de segurança, ferramentas e o sistema operacional mais adequado para cada serviço. Além disso, cada máquina virtual é isolada das demais, logo, usando uma máquina virtual para cada serviço, a vulnerabilidade de um serviço não prejudica os demais. As máquinas virtuais podem ficar isoladas e independentes umas das outras, inclusive independente da máquina hospedeira. Correm-se riscos neste momento, das máquinas virtuais se tornarem menos seguras que as máquinas físicas, justamente por causa do seu host. Este ponto é interessante, pois, se o sistema operacional hospedeiro tiver alguma vulnerabilidade, todas as máquinas virtuais que estão hospedadas nessa máquina física também estarão vulneráveis.
  • 29. 29 2.1.7 Ferramenta Escolhida De acordo com as necessidades apresentadas durante a execução desta pesquisa, foi escolhido uma ferramenta que será útil para alcançar os objetivos propostos. Referimo-nos ao VMware vSphere ESXi 5. Ela é um software modelo para criação de infraestruturas virtualizadas. O uso do VMware vSphere ESXi 5 é voltado para servidores de grande porte. Essa ferramenta é um sistema operacional dedicado, que usa um núcleo proprietário conhecido como VMkernel baseado em uma kernel Linux. O Red Hat Linux é usado para prover os diversos serviços, como gerenciamento remoto. Por rodar em um nível mais próximo do hardware, elimina-se o overhead, que é o termo utilizado para descrever ou identificar um processamento e/ou armazenamento excessivos, além de aumentar a segurança. Com a utilização dessa ferramenta, temos um kernel Linux chamado VMkernel, que é responsável por realizar todo o controle do hardware e também tornar possível, a criação de máquinas virtuais devido aos módulos que gerencia. Duas das principais vantagens dessa ferramenta são:  Custos reduzidos: o VMware vSphere é um auxílio para as organizações fornecerem os serviços necessários com mais eficiência, eliminando os gastos desnecessários além de eliminar a complexidade do gerenciamento e da manutenção da infraestrutura de TI.  Melhor eficiência: Ganho de desempenho, que se deve principalmente a ausência de um Sistema Operacional propriamente dito, instalado na máquina hospedeira. Desta maneira, diminui-se uma camada de software, reduzindo os possíveis gargalos e garantindo uma maior eficiência do servidor.
  • 30. 30 2.1.7.1 Diferenças entre VMware ESX e VMware ESXi Na arquitetura original do VMware ESX vSphere, o kernel de virtualização ou VMkernel, existe uma partição adicionada de gestão conhecido como Service Console ou Console de Serviço. O objetivo principal desse sistema é fornecer uma interface de gestão do hospedeiro. Vários agentes da VMware foram implantados juntamente com essa console, como por exemplo serviço de nome, tempo de serviço, registro. Entretanto, nessa arquitetura, essa interface é considerada como uma camada extra de software que serve de apoio para o VMkernel, o que além de aumentar o tamanho final da ferramenta, pode ocasionar gargalos devido ao incremento dessa camada. Na nova arquitetura do VMware ESXi vSphere, essa Console de Serviço foi removida e todos os agentes da VMware são executados diretamente no VMkernel. Com isso, além da ferramenta final ser mais leve e robusta do que na arquitetura ESX, a configuração e o monitoramento das máquinas virtuais são feitas por agentes externos e acessados via interface de rede, através da instalação de aplicativos como o vClient para a execução destas tarefas.
  • 31. 31 2.2 Servidor Proxy O Proxy pode ser entendido como “um software que atua como gateway de aplicação entre o cliente e o serviço a ser acessado, interpretando as requisições e repassando-as ao servidor de destino” (RICCI; MENDONÇA 2006, p. 1). Já para LUNARDI (2005, p. 1), o termo “servidor Proxy” ou “serviço Proxy” é um software que tem a “procuração” de um ou mais hosts para buscar na Internet uma informação solicitada. Em outras palavras, Servidor Proxy é um computador intermediário, localizado entre os usuários da rede de computadores e a Internet, e que atende as requisições realizadas pelos mesmos. Devido fatores como a segurança em redes privadas e a limitação de quantidade de endereços IP válidos na Internet, as máquinas da rede possuem endereços inválidos e, portanto, não se conectam diretamente com Internet. O Servidor Proxy surgiu então da necessidade de se conectar a rede local na Internet através de um computador que compartilhasse a conexão com as outras máquinas da rede. Desta maneira, toda solicitação originada em uma das máquinas localizadas na mesma seguem para o Proxy e este realiza o contato com o destino da requisição, repassando assim a resposta ao solicitante. O Servidor Proxy é capaz de analisar os pacotes na camada 7 ou camada de aplicação do modelo OSI. Segundo RICCI e MENDONÇA (2006, p. 2), “isto oferece uma flexibilidade muito maior, porque permite que o tráfego dentro de um serviço, como o tráfego da porta 80 (HTTP) possa ser filtrado”. É devido a esse fato que o Proxy consegue analisar e determinar se um trafego HTTP ou FTP, por exemplo, deve ou não passar da Internet para a rede local. 2.2.1 Características do Servidor Proxy Um Servidor Proxy pode ser usado com basicamente quatro objetivos:  Aumento na velocidade de resposta das requisições: O serviço Proxy também fornece a funcionalidade de armazenamento de cache. Para RICCI e MENDONÇA (2006, p. 2), o cache “significa a capacidade de um sistema armazenar em memória (ou em áreas reservadas do disco rígido) o conteúdo mais frequentemente acessado”. Os objetivos deste recurso é disponibilizar esse conteúdo salvo de forma mais rápida e eficiente ao solicitante e economizar, assim, a largura da banda, pois não será necessário ir à Internet novamente para responder a requisição;
  • 32. 32  Compartilhamento de conexão de Internet: As máquinas da rele local possuem endereços inválidos e, por causa disso, não se conectam na Internet diretamente. Então, todas as requisições feitas por estas são direcionadas ao Servidor Proxy, que acessa a Internet com um endereço de IP válido e atende estas solicitações;  Controle de acesso: Através do procedimento de interpretação das requisições pela análise do seu conteúdo, é possível ao Proxy fazer um controle de acesso dos usuários da rede de computadores. Além de registrar cada acesso feito, o sistema permite a criação de ACLs (Access Control List) ou Listas de Controle de Acesso que gerenciam as permissões de acesso de cada usuário;  Relatório de acesso: todos os acessos são armazenados em forma de log, permitindo, assim, a possibilidade de criação de relatórios dos acessos realizados através do servidor pelos clientes. 2.2.2 Tipos de Proxy Devido a grande flexibilidade que o serviço Proxy possui, muitos administradores de redes de computadores e outros utilizadores deste tipo de sistema começaram a descobrir maneiras diferentes de se aproveitar deste recurso. Com isso, diferentes tipos de Proxy foram sendo criados e estes podem ser encontrados em diferentes lugares na atualidade, como na Internet, nas redes locais empresariais e até mesmo nas redes domésticas. Dentre eles, os principais são: Proxy Transparente, Proxy Controlado, Proxy Anônimo e Proxy Reverso. 2.2.2.1 Transparente Neste tipo de Proxy, não é necessário configurar os serviços da máquina do usuário, como o navegador Internet Explorer, Mozilla Firefox ou Google Chrome por exemplo, para as solicitações serem direcionadas para o servidor. Resumidamente, esta técnica “consiste no administrador criar um redirecionamento de portas utilizando regras de firewall”. Em outras palavras, todo o tráfego da rede de computadores de acesso à web será redirecionado transparentemente para a porta em que o serviço Proxy é oferecido, tornando, assim, a passagem obrigatória pelo Servidor Proxy.
  • 33. 33 2.2.2.2 Controlado Diferentemente do Proxy Transparente, este tipo de serviço exige uma configuração nos navegadores para que estes direcionem suas requisições para o Servidor Proxy. Segundo REIS; RAIMUNDO; CARMO (2006, p. 10) o Proxy Controlado possui certas opções que o Proxy Transparente não tem para facilitar o controle de quem pode ou não utilizar o Proxy, e a sua configuração deve estar como padrão em todos os browsers com o IP do servidor. 2.2.2.3 Proxy Transparente x Controlado A escolha do tipo de Proxy a ser utilizado depende da situação em que ele será aplicado. Se, por exemplo, em uma empresa os administradores preferirem colocar o IP do servidor em cada máquina ou se desejarem não colocar nenhuma informação nos navegadores do usuário. 2.2.2.3.1 Vantagens do Proxy Transparente  É mais simples de ser configurado do que o Proxy Controlado quando está habilitado no Kernel;  Programas como o ICQ funcionam plenamente com ele, ao contrário do servidor Proxy Controlado, que possui certa instabilidade quanto a este tipo de programa e a protocolos como o SMTP;  Não precisa que as máquinas clientes sejam configuradas para direcionar as requisições ao Servidor Proxy, evitando assim que os usuários removam as definições do Proxy de dentro do navegador;  No Proxy Transparente, o cliente é forçado a passar pelo Proxy e com a configuração deste serviço, todos os serviços oferecidos por ele ficam disponíveis aos usuários, como SSH, Telnet, E-mail, entre outros;
  • 34. 34 2.2.2.3.2 Vantagens do Proxy Controlado  Possui mais recursos que um Proxy Transparente, como por exemplo, algumas listas de controles de acesso (ACL’s) que controlam quem pode e quem não pode utilizar o Servidor Proxy;  Não precisa de configurações no Kernel, ao contrário do Proxy Transparente, que necessita dessas configurações e que leva, em determinados casos, a necessidade de recompilação do mesmo;  Pode servir para liberar a Internet através de autenticação do usuário, o que não é possível através do Servidor Proxy Transparente.  Possui um melhor controle das portas que utilizam SSL, uma camada do protocolo de rede, responsável por gerenciar um canal de comunicação seguro entre o cliente e o servidor. 2.2.2.4 Proxy Anônimo O acesso à Internet pode expor dados do usuário, possibilitando sua identificação através de endereço IP, localização geográfica, informações sobre o Sistema Operacional e o navegar utilizado. Proxy anônimo é uma ferramenta que tem por objetivo geral realizar atividades na Internet sem deixar vestígios, provendo assim ao usuário anonimidade e privacidade. Ele também pode ser utilizado para contornar restrições de acesso que existam na rede. Este tipo de Servidor Proxy é, muitas das vezes, disponibilizado livremente na Internet. O usuário digita no navegador o site de um Proxy anônimo e, ao acessar esse site, basta digitar no campo oferecido pelo mesmo o endereço que deseja acessar. Desta maneira, o Proxy mascara algumas informações da pessoa, como o endereço IP, e, consequentemente, torna mais difícil sua possível identificação. Entretanto, este tipo de técnica traz consigo algumas problemáticas. Dentre elas, está a lentidão e instabilidade desses sites de Proxy Anônimo, isso porque os mesmos podem receber centenas e até milhares de conexões simultâneas, além do anonimato em si, que
  • 35. 35 proporciona, a usuários mal intencionados, mais uma ferramenta para cometer crimes cibernéticos e acessar conteúdo proibido, desrespeitando os direitos autorais. 2.2.2.5 Proxy Reverso Um Proxy Reverso é um servidor de rede que fica localizado entre a Internet e os Servidores Web. Com isso, todas as conexões provindas da rede externa são endereçadas para um dos servidores Web através de um roteamento feito pelo Proxy. Esse tipo de serviço tem como objetivo principal prover segurança aos Servidores Web, evitando que os clientes tenham contato direto com ele. Além do roteamento e da segurança proporcionada por ele, o Proxy Reverso possui mais algumas características, como:  Criptografia: a criptografia SSL pode ser transmitida ao Servidor Proxy ao invés dos servidores internos. Para um melhor desempenho nessa função específica, podem ser acrescentados ao Proxy aceleradores criptográficos;  Balanceamento de carga: o Proxy Reverso pode distribuir a carga para vários servidores da rede, sendo cada servidor responsável por sua aplicação;  Cache: esse tipo de Proxy também pode manter em cache o conteúdo estático e dinâmico das requisições realizadas, ajudando assim a diminuir a carga dos Servidores Web;  Compressão: Através da compressão do conteúdo, ele pode otimizar o acesso, tornando-o mais rápido. Dentre as desvantagens da utilização deste tipo de técnica, podemos citar um refino nas regras de bloqueio, pois uma requisição válida pode ser confundida com uma inválida e ser bloqueada pelo Proxy, além da necessidade de um equipamento com alta disponibilidade, pois como ele centraliza os acessos aos servidores Web, uma falha pode indisponibilizar todo o acesso ao ambiente.
  • 36. 36 2.2.3 Squid O Squid é um Servidor WebProxy que tem suporte para protocolos como HTTP, HTTPS, FTP e outros. “O Squid é um Proxy com cache de alta performance para clientes web, resumindo, ele é um servidor Proxy utilizado para acelerar a navegação dos usuários de sua rede pela web” (LUNARDI 2005, p. 3). Ele caracteriza-se por ser um software especializado, que faz operação de Proxy de Web e FTP, livre e com um ótimo suporte para servidores Linux. Dentre todos os seus recursos, o que mais atrai a atenção desta ferramenta é o cache de páginas. Devido a característica das redes de computadores de terem alta velocidade na parte interna (máquinas clientes e servidores locais) e um acesso mais lento na parte dos servidores até a Internet, torna mais atrativa a função de cache do Squid, de forma que ele salva as páginas mais visitadas localmente, não precisando acessá-las externamente a todo momento. 2.2.3.1 Breve história do Squid O Squid é baseado no projeto Harvest desenvolvido no início da década de 1990. Esse projeto era um conjunto de ferramentas integradas para coletar, extrair, organizar, localizar, fazer cache e replicar informações da Internet. O cache Harvest forneceu três melhorias importantes em relação ao cache CERN, que foi o primeiro servidor HTTP de Proxy e cache: maior velocidade no uso do sistema de arquivos, design de processo único e hierarquias de cache. No final do ano de 1995, muitos membros da equipe do Harvest abandonaram o projeto e os autores originais do código de cache desse projeto tornaram-no um produto comercial. Em 1996, ao Duane Wessels começar a trabalhar no Projeto IRCache, o código do cacher do projeto Harvest foi renomeado para Squid, liberado sob a licença GNU GPL. Mesmo com o fim do financiamento ao projeto IRCache em julho de 2000, voluntários de todo o mundo continuaram a desenvolver o Squid, o que fez esta ferramenta crescer muito em tamanho e funcionalidades. Atualmente, ele suporta funções como controles de acesso sofisticados, diversos módulos de autenticação, armazenamento avançado, entre outras funções.
  • 37. 37 2.2.3.2 Características do Squid O Squid possui as seguintes características:  Políticas de controle de acesso flexíveis: O controle de acesso é uma das características do Squid que administradores de redes utilizam com muita frequência. Nessa ferramenta, essas políticas são escritas através de ACL’s ou Listas de Controle de Acesso no arquivo de configuração do Squid e podem ser feitas baseando-se em fatores como: conteúdo do endereço da requisição, origem desta e o destino da solicitação.  Suporte para Proxy Transparente e Controlado: Através de sua configuração, um administrador de rede, por exemplo, pode configurar o Squid para trabalhar de modo transparente, no qual todos os usuários obrigatoriamente passam por ele para acessar a Internet ou de modo controlado, que exige a configuração nos navegadores.  Logs Avançados: O Squid registra em seu log uma linha para cada objeto requisitado pelos clientes. Nessa linha, podem ser encontradas informações como: hora, duração do uso do cache, endereço IP do cliente, códigos de resultados, tamanho dos dados, método de requisição, URL, código de hierarquia, tipo de conteúdo, entre outros.  Suporte a HTTP, FTP, ICP, entre outros: Essa ferramenta suporta aplicações como páginas web, criando cache dos arquivos dinâmicos e estáticos delas, como figuras e textos, transferência de arquivos, salvando uma cópia do arquivo baixado por um usuário e retransmitindo o conteúdo quando este for solicitado novamente, consulta em outros servidores de caches sobre determinado conteúdo.
  • 38. 38 2.2.3.3 Requisitos Específicos para o Squid Em comparação com algumas ferramentas oferecidas pelo sistema, é possível perceber que o Squid utiliza mais recursos específicos do que outros aplicativos. Segundo RICCI e MENDONÇA (2006, p. 2), “os dois principais subsistemas de hardware que o Squid utiliza, e que deve ter um bom desempenho, é o tempo de busca aleatória e a quantidade de memória no sistema”.  Tempo de busca aleatória em disco: O tempo de busca de um arquivo no cache do Squid deve ser o mais baixo possível. Isto porque quanto mais rápido ele encontrar a informação no cache, mais rápido ele responderá a solicitação feita pelo usuário.  Quantidade de memória no sistema: A memória RAM é muito importante para a utilização do cache. O Squid mantém apenas uma tabela dos objetos do cache na memória RAM. Como ele é um processo no Sistema Operacional, então qualquer processo de swapping, que é uma técnica de gerência de memória que leva dados do programa desta para o disco rígido, tornará o programa mais lento. Ainda segundo RICCI e MENDONÇA (2006, p. 2), outros requisitos do sistema, como velocidade de CPU, são menos importantes, pois a velocidade do processador somente será notada durante a inicialização do Squid. 2.2.3.4 Estrutura do Squid Como descrito anteriormente, o Servidor WebProxy Squid é utilizado em larga escala por sua facilidade e flexibilidade de configuração, além de uma exigência mínima de requisitos para que este entre em funcionamento. As estruturas deste serviço que justificam estes itens são:
  • 39. 39 2.2.3.4.1 Arquivo de Configuração Toda a configuração do Squid é feita em um único arquivo chamado squid.conf, que geralmente fica localizado no diretório /etc/squid/squid.conf, podendo variar de acordo com a versão do Squid, do sistema operacional utilizado e da escolha do usuário que for instalar esse tipo de serviço. O arquivo original que é instalado junto com o software é muito grande, pois contém comentários e exemplos para praticamente todas as opções que o Squid disponibiliza. No interior do arquivo squid.conf será o local onde toda as configurações do serviço de Proxy- cache serão criadas. Dentre elas estão as políticas de acesso, a ocupação de memória e também a localização e a validade dos arquivos do cache, sendo que estas são escritas em formato de linhas e estas são lidas de cima para baixo. Caso estas linhas entrem em algum tipo de conflito, a linha posterior sobrepõe a linha anterior. 2.2.3.4.2 Restrições de acessos O controle de acesso é uma das características mais úteis para administradores de redes de computadores que lidam com grandes acessos públicos de usuários, pois isto acaba saturando o link da Internet com acessos a sites que não estão relacionados as atividades diárias da empresa. Através de regras e arquivos textos simples, pode-se restringir o acesso de cada usuário da rede de computadores, permitindo ou negando, assim, o acesso a determinado site ou conteúdo da Internet. 2.2.3.4.3 Lista de Controle de Acesso As ACL – Access Control List – ou Lista de Controle de Acesso “são regras de acesso oferecidas pelo sistema que devem ser utilizadas pelo administrador da rede como meio de liberar ou bloquear acesso a determinado conteúdo web” (RICCI; MENDONÇA 2006, p. 22). É através dela, por exemplo, que é possível manter os usuários da rede de computadores sob controle, otimizar o desempenho da banda e facilitar a administração. Isto porque, ao restringir os usuários a um mínimo de permissões na web, estes não irão perder o foco do trabalho facilmente com sites que não tenham nada a acrescentar a seu trabalho, tornando-os assim mais produtivos.
  • 40. 40 As Listas de Controle de Acesso são escritas, de uma maneira geral, em forma de linhas dentro do arquivo de configuração squid.conf e lidas pelo Squid de cima para baixo. “Com isso, elas permitem especificar endereços de origem ou destino, domínios, horários, usuários, portas ou métodos de conexão ao Proxy, que servirão de base para permitir ou negar acesso baseando-se em conjunto dessas ACL’s.” (LUNARDI 2005, p. 31). Isto permite uma grande flexibilidade na configuração do Squid, pois podemos especificar, por exemplo, quais endereços podem e quais não podem ser acessados, qual horário que determinado endereço pode ser acessado, além de permitir ou bloquear o uso de determinado tipo de protocolo e delimitar um usuário a acessar a Web somente a partir de uma máquina especifica. A sintaxe de uma linha de controle de acesso pode ser feita, basicamente, da seguinte maneira: “acl nome tipo argumentos”, no qual “acl” é o comando de criação da ACL, “nome” será o nome escolhido para a identificação da mesma, “tipo” diz a respeito a qual objeto que será referido na linha e “argumentos”, que diz a respeito do domínio e as opções da ACL. Um exemplo prático de um ACL seria a linha “acl MinhaRede src 192.168.1.0/255.255.255.0”, no qual cria a lista de acesso chamada “MinhaRede” do tipo “src” (que significa a origem da requisição) e especifica o domínio da rede e seu endereço MAC “192.168.1.0/255.255.255.0”, de modo que o Squid responda as requisições dos computadores que tenham faixa de IP entre 192.168.1.1 e 192.168.1.254. Os tipos de ACL mais conhecidas e comumente utilizadas são:  SCR: Classe de acesso que se baseia no endereço IP da origem da requisição, ou seja, do cliente que solicitou a requisição de acesso;  DST: Ao contrário da classe de acesso SCR, esta se baseia no endereço IP do destino da requisição, ou seja, do IP do servidor solicitado na requisição;  SRCDOMAIN: Classe de acesso que se baseia no domínio DNS do computador cliente que solicita a requisição de acesso, sendo que este domínio é obtido por resolução reversa de IP. O uso excessivo desta regra pode prejudicar a performance do WebProxy devido a constante resolução do endereço IP no Servidor DNS;  DSTDOMAIN: Semelhante ao srcdomain, com a diferença de que esta se refere ao endereço de destino;
  • 41. 41  SRCDOM_REGEX: Avalia e classifica o domínio da origem da requisição usando expressões regulares;  DSTDOM_REGEX: Avalia e classifica o domínio de destino da requisição usando expressões regulares;  TIME: Classe que permite ao administrador da rede determinar o dia da semana e o horário da requisição de acesso e permitir ou negar o acesso a Internet baseando-se nessas informações;  URL_REGEX: Classe de acesso na qual é possível analisar uma URL a procura de determinadas expressões e assim bloquear ou liberar o acesso do usuário. Utiliza-se nesse tipo a opção –i, que desativa o uso do case-sensitive;  URLPATH_REGEX: Este tipo é semelhante à url_regex, sendo que sua procura as expressões descartam nome do servidor e o protocolo utilizado. Utiliza-se também nesse tipo a opção –i, que desativa o uso do case-sensitive;  PORT: Realiza o controle pela porta de destino do servidor solicitado pelo cliente ao WebProxy. Neste tipo deve ser especificado o número da porta ou a série de portas;  PROTO: Classe na qual é possível especificar o protocolo utilizado na conexão (HTTP, FTP entre outros);  METHOD: Especifica o tipo de método usado na requisição, ou seja, Get ou Post. O método Get utiliza a URL para enviar dados ao servidor e o método Post envia as informações no corpo da mensagem.  BROWSER: Classe que permite, através de expressões regulares, determinar o navegador web de onde foi enviada a solicitação de acesso web;
  • 42. 42  IDENT: Permite classificar o acesso de acordo com o usuário logado no computador do cliente. Esta classe exige um servidor Ident na máquina cliente, o que atualmente é pouco comum. Com isso, utiliza-se mais a identificação de um usuário através da autenticação;  IDENT_REGEX: Similar a classe Ident, mas utilizando-se de expressões regulares;  SRC_AS: Classe de acesso responsável por liberar ou bloquear o acesso baseado no sistema autônomo do computador de origem da solicitação;  DST_AS: Classe de acesso responsável por liberar ou bloquear o acesso baseado no sistema autônomo do computador de destino da solicitação;  PROXY_AUTH: Classe de acesso que permite utilizar a autenticação de usuários através de suas credenciais, sendo geralmente nome de usuário (username) e a respectiva senha. Esta regra necessita de um recurso externo de autenticação, responsável por validar as informações, ela não pode ser usada em um Proxy Transparente;  PROXY_AUTH_REGEX: Classe de acesso na qual é possível classificar os usuários autenticados através da combinação de expressões regulares;  SNMP_COMMUNITY: Classifica os acessos de acordo com a comunidade SNMP. Faz-se necessário que o WebProxy Squid tenha sido instalado e compilado com suporte a este tipo de protocolo;  MAXCONN: Especifica um limite máximo de conexões originadas de um determinado cliente através de seu endereço IP. Utilizado principalmente para fazer controle de banda;
  • 43. 43  REQ_MIME_TYPE: Classe de acesso que classifica o tipo de conteúdo solicitado através de seu cabeçalho content-type. Analisando as principais possibilidades de criação de ACL’s citadas anteriormente, “fica claro que o WebProxy Squid oferece uma diversidade de opções para classificar o acesso de seus usuários.” (RICCI; MENDONÇA 2006, p. 32). Após a criação e configuração de todas as listas de acesso que serão utilizadas no WebProxy Squid, faz-se necessário definir a ação tomada pelo Servidor Proxy ao encontrar uma solicitação que se adeque à determinada classe, ou seja, deve-se definir se o Squid irá permitir ou bloquear o acesso baseado em determinada regra de acesso. Dentre as opções mais utilizadas, podemos citar:  HTTP_ACCESS: Após definidas as listas de acesso, pode-se definir as restrições propriamente ditas, permitindo ou proibindo o acesso ao serviço http baseado nas ACL’s criadas anteriormente. Sua estrutura básica é constituída de 3 partes: “http_access acl allow/deny”, no qual “http_access” é o comando de permissão, “acl” é o nome da lista de controle de acesso criada anteriormente e “allow/deny” que é o comando que permite (allow) ou nega (deny) o acesso da acl citada. Após a configuração de todo o arquivo de configuração do Squid, é aconselhável definir uma última regra que negue todas as solicitações de acesso que não forem previamente liberadas, através da regra “http_access deny all”. De acordo com RICCI, MENDONCA (2006, p. 32), esta diretiva define para o WebProxy Squid que todas as solicitações não liberadas anteriormente devem ser explicitamente bloqueadas;  ICP_ACCESS: Este recurso é utilizado quando se trabalha com múltiplos webproxies em um ambiente de árvores-cache hierárquica. Esta função força que outros servidores webproxies utilizem este servidor Proxy como um filho ao invés de um pai, ou seja, ela faz com que este WebProxy Squid verifique, através de mensagens ICP, quais caches de servidores ele poderá se comunicar;  MISS_ACCESS: Limita os domínios que podem fazer requisições ao cache do servidor utilizando os recursos de regras de acesso;
  • 44. 44  IDENT_LOOKUP_ACCESS: Uma lista de elementos em uma ACL, os quais, se encontrados, irão gerar uma requisição IDENT;  HTTP_REPLY_ACCESS: Permite ou nega que clientes recebam a resposta das suas solicitações de acesso. É utilizado em conjunto à regra de acesso criada em req_mime_type;  NO_CACHE: Define respostas que não devem ser armazenadas em cache. 2.2.3.4.4 Parâmetros administrativos Além das regras de controle de acesso criadas com a finalidade de permitir ou bloquear determinadas requisições e acesso a Internet, o Squid permite a criação de regras e parâmetros destinados a uma melhor administração do Servidor de WebProxy, como por exemplo: controle de cache, local de armazenamento do cache, mensagens de erros, entre outros. Dentre as mais comuns, podemos citar:  HTTP_PORT: Diretiva responsável por especificar a porta na qual o servidor de WebProxy Squid deve oferecer o serviço. O valor padrão é 3128, mas caso precise alterar, basta alterar este valor e trocar por uma porta que não esteja sendo utilizada.  CACHE_MEM: Regra responsável por especificar a quantidade de memória RAM a ser disponibilizada para o WebProxy Squid, sendo que o valor a ser utilizado deverá ter como unidade de medida Megabytes.  CACHE_DIR: Diretório onde serão armazenados os objetos que comporão o cache do Squid. A regra possui uma estrutura com basicamente: “cache_dir tipo diretório MB L1 L2”, no qual “cache_dir” é o comando de criação do cache, “tipo” será o tipo de sistema de armazenamento do cache, “diretório” no qual será definido o caminho absoluto para o diretório que armazenará o cache, “MB” que definirá o tamanho do espaço utilizado em disco para os objetos do cache e “L1” e “L2” que definem,
  • 45. 45 respectivamente, os diretórios de primeiro nível e segundo nível que devem ser criados.  CACHE_ACCESS_LOG: Determina a localização exata do arquivo onde o Squid deve armazenar os logs detalhados de acessos a conteúdos web. Através dele é possível responder perguntas como: quem acessou o que em determinado dia?  CACHE_LOG: Especifica o arquivo responsável pelo log de informações relacionadas ao cache do WebProxy. Este arquivo é muito útil na fase de implementação do sistema como meio de depuração de eventuais erros que possam impedir a inicialização correta do serviço.  CACHE_STORE_LOG: Faz log detalhado de todo objeto web armazenado. Este detalha quais objetos web saírem e quais entraram no cache e quanto tempo eles permaneceram armazenados.  PID_FILENAME: É responsável por obter o número do processo Squid em execução no sistema.  VISIBLE_HOSTNAME: Define o nome do servidor e seu domínio. Este nome aparecerá nas telas de erro, ou seja, quando o usuário solicitar uma página web e a solicitação dele for negado pelo Squid.  CACHE_MGR: E-mail do administrador ou do webmaster que aparecerá nas mensagens de erro. Isto é importante para que os usuários tenham informações do responsável pelo servidor caso de problemas com um acesso bloqueado de forma errada.  LOGFILE_ROTATE: Especifica o número de rotações executadas quando se digita o comando “squid -k rotate”. O padrão são 10 arquivos de log, sendo armazenado o atual e mais 9 logs antigos. Quando o comando é executado novamente, o arquivo de log mais antigo é apagado, o atual fica em seu lugar e um novo arquivo desse tipo é gerado.
  • 46. 46 2.2.4 Microsoft ISA Server O Microsoft ISA Server é uma solução de segurança de borda que inclui firewall de múltiplas camadas, Web Proxy e VPN, garantindo segurança contra as ameaças oriundas da Internet e facilidade de gerenciamento através de sua integração com o Windows Server. Atualmente, o ISA Server 2006 é a última versão lançada pela Microsoft, mantendo sempre o esquema de edições padrão (standard) e Enterprise. A partir de fevereiro de 2007, a Microsoft liberou uma edição especial do ISA Server chamada Intelligent Application Gateway 2007. IAG 2007 é um serviço de VPN através de SSL, que também incorpora políticas de segurança como zonas restritas, verificações de segurança nas conexões acessando a rede, e definição de perfis de uso dos programas publicados. IAG 2007 é o produto da compra realizada pela Microsoft da empresa Whale Communications em Junho de 2006. 2.2.5 Escolha da ferramenta No contexto atual da área da informática, existem centenas de softwares que fornecem a função de Proxy. Dentre elas, a escolhida para o desenvolvimento do projeto é o Servidor de WebProxy Squid. Isto porque essa ferramenta, além de ser OpenSource (Código Aberto ou Software Livre) e gratuita, ela é simples de manusear, é a mais conhecida e utilizada na área de T.I., possui um excelente suporte para operação em servidores Linux e oferece uma grande variedade de recursos, o que permite uma maior modelagem e flexibilidade nas suas configurações. 2.2.6 Firewall Iptables O iptables é uma ferramenta de software livre, baseado em GNU/Linux, que permite a criação de regras de firewall e NATs. O Iptables é uma ferramenta que vem integrada ao Kernel Linux, além de frequentemente ser utilizado como referência ao conjunto completo de funcionalidades do netfilter, é parte de todas as distribuições modernas do Linux e trabalha em nível de pacotes.
  • 47. 47 As principais características dessa ferramenta são:  Especificação de portas/endereço de origem/destino;  Manipula serviços de proxy na rede;  Tratamento de tráfego dividido em regras ou chains;  Muito rápido, estável e seguro;  Suporte a módulos externos para expansão das funcionalidades padrões oferecidas pelo código de firewall;  Limitação de passagem de pacotes/conferência de regra; Neste trabalho será feito a integração do Serviço de Proxy Squid com o Firewall Iptables, pois é através desta segunda ferramenta que será realizado o redirecionamento das requisições feitas pelos usuário na porta 80 para a porta que o Squid irá trabalhar.
  • 48. 48 2.3 Sistema Operacional De acordo com Tanenbaum, Woodhull (2000) o sistema operacional controla todos os recursos do computador e fornece a base sobre a qual os programas e aplicativos podem ser escritos. Segundo Silberschatz, (2001) Sistemas operacionais foram desenvolvidos nos últimos 40 anos para alcançar dois objetivos principais, escalonar as atividades computacionais para garantir um bom desempenho e fornecer um ambiente conveniente para o desenvolvimento e a execução de programas. Pode ser entendido como um sistema operacional (SO) uma coleção de programas que inicializam o hardware do computador. Essa coleção de programas fornece rotinas básicas para controle de dispositivos, também gerência, realiza escalonamento e interação de tarefas e mantém a integridade de sistema. No início da computação os primeiros sistemas operacionais eram únicos, pois cada mainframe vendido necessitava de um sistema operacional específico. Esse problema era resultado de arquiteturas diferentes e da linguagem que cada máquina utilizava. Após essa fase, iniciou-se a pesquisa de sistemas operacionais que automatizassem a troca de tarefas (jobs), pois os sistemas eram monousuários e tinham cartões perfurados como entrada, assim o computador não necessitava da operação humana. 2.3.1 Arquitetura Procurando melhorar o desempenho geral dos sistemas de computação, os desenvolvedores introduziram o conceito de multiprogramação onde vários jobs são mantidos na memória e a CPU alterna entre eles para aumentar a sua utilização e diminuir o tempo de execução dos jobs, também permitindo o compartilhamento de tempo o que possibilitou que muitos usuários utilizem um sistema de computação ao mesmo tempo. As principais arquiteturas existentes são:  Sistema Batch: também conhecido por sistemas em lote, foram os primeiros sistemas multiprogramáveis a serem implementados. Eles se caracterizam por terem seus programas, quando submetidos, armazenados em disco ou fita, onde esperam para ser executados sequencialmente;
  • 49. 49  Sistema de Tempo Compartilhado: também denominado multitasking, é uma extensão lógica da multiprogramação. Consiste basicamente em alternar entre diferentes processos de forma que o usuário tenha a percepção que todos os processos estão sendo executados simultaneamente, permitindo a interação com múltiplos processos em execução. Esta percepção é dada pela velocidade em que as trocas de tempos de execução em CPU ocorrem, sendo tão frequentes que se tornam não perceptíveis do ponto de vista do usuário;  Sistemas Mainframe: Os sistemas operacionais desenvolvidos para mainframe são criados especialmente para a finalidade de cada modelo, por exemplo: para processar textos, bancos de dados, efetuar cálculos ou gerenciar dispositivos. Podemos citar sistemas baseados em sistemas próprios: z/OS, z/VSE, z/VM, z/TPF (da IBM), OS2200, MCP (da Unisys), GCOS (da Bull), e outros de empresas como Fujitsu, Hitachi e Amdhal;  Sistema Desktop: Um sistema que oferece soluções com interface gráfica com o usuário (GUI) para operar um computador. O nome é derivado da metáfora de desktop, ou "tampo de mesa", hoje usado por essas interfaces. Um ambiente de desktop fornece ícones, pastas, barra de ferramentas, papéis de parede e habilidades como arrastar e soltar;  Sistema Distribuído: Um sistema distribuído é aquele que é definido como um conjunto de unidades de processamento independentes, que através da troca de comunicação e gerenciamento de sincronização pode processar uma aplicação em diferentes localidades em sistemas com características próprias diferentes, dando a impressão ao usuário que toda a aplicação é gerenciada por um sistema único;  Sistemas Handheld: Os sistemas handheld são adaptados para dispositivos móveis, como PDAs – Personal Digital Assistants e telefones celulares. Sua memória é limitada, processador mais lento e contém display de pequenas dimensões. O S.O e as aplicações são projetados para minimizar o uso do processador (redução do consumo da bateria). Podem utilizar tecnologias wireless, como Bluetooth, para acesso remoto a
  • 50. 50 e-mail e navegação Web. Câmeras e MP3 players, são exemplos de acessórios que expandem a sua funcionalidade;  Sistemas Paralelos: São os sistemas que têm mais de uma CPU em comunicação direta, tais CPUS compartilham barramentos, memória e dispositivos periféricos assim podem fornecer maior produtividade e melhor confiabilidade;  Sistema de Tempo Real Crítico: Este sistema geralmente é utilizado em uma aplicação dedicada, pois tem limitações de tempo fixas, ou seja, o processamento precisa ser feito no dentro dos limites definidos ou o sistema falhará, já os sistemas de tempo real não crítico tem limitações de tempo menos rigorosas e não suportam escalonamento de prazos;  Sistema Embarcado: Este tipo de sistema da capacidade computacional dentro de um circuito integrado, equipamento ou sistema. É um sistema completo e independente, mas preparado para realizar apenas uma determinada tarefa. O usuário final não terá acesso ao programa que foi embutido no dispositivo, mas poderão interagir com o equipamento através de interfaces como teclado, displays, desde que o sistema tenha sido projetado para tanto; 2.3.2 Tipos de Sistemas Operacionais Existem muitos tipos de Sistemas Operacionais, cuja complexidade varia e depende de que tipo de funções é provido, e para que computador esteja sendo usado. Alguns sistemas são responsáveis pela gerência de muitos usuários, outros controlam dispositivos de hardware. Em um grande computador multiusuário, com muitos terminais, o Sistema Operacional é muito mais complexo. Tem que administrar e executar todos os pedidos de usuários e assegurar que eles não interferiram entre si. Tem que compartilhar todos os dispositivos que são seriais por natureza (dispositivos que só podem ser usados por um usuário de cada vez, como impressoras e discos) entre todos os usuários que pedem esse tipo de serviço. O S.O poderia ser armazenado em disco, e partes dele serem carregadas na memória do computador (RAM) quando necessário. Utilitários são fornecidos para: