UNIVERSIDADE FEDERAL FLUMINENSE
FÁBIO DE PAULA JUNIOR
DMZ VIRTUAL
Niterói
2008
FÁBIO DE PAULA JUNIOR
DMZ VIRTUAL
Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade
Federal Fluminense como requisito parcial para obtenção do Tecnólogo em Sistemas de Computação.
Orientador:
Leandro Soares de Sousa
NITERÓI
2008
FÁBIO DE PAULA JUNIOR
DMZ VIRTUAL
Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade
Federal Fluminense como requisito parcial para obtenção do Tecnólogo em Sistemas de Computação.
Niterói, ___ de _______________ de 2008.
Banca Examinadora:
_________________________________________
Prof. Leandro Soares de Sousa, Msc. – Tutor Orientador
UFF - Universidade Federal Fluminense
_________________________________________
Prof. Alexandre Domingues Gonçalves, Msc. – Avaliador
UFF - Universidade Federal Fluminense
Dedico este trabalho a todos os meus familiares, em especial meus pais e meu irmão,
meu tio José Luiz, e as minhas tias Marly e
Regina.
AGRADECIMENTOS
Gostaria de agradecer primeiramente a todos
os funcionários do pólo do CEDERJ de Itaperuna em especial a Jonatas, Penha, Leandro
(Coordenador do Curso) e Rita (Diretora do
pólo), que sempre me atenderam com muita
dedicação.
Ao meu orientador Leandro Soares de Sousa,
pela atenção concedida durante a construção
deste trabalho.
A todos os meus familiares e amigos pelo
apoio e colaboração.
“É fazendo que se aprende a fazer aquilo
que se deve aprender a fazer."
Aristóteles (Criador do pensamento lógico)
RESUMO
Este trabalho tenta demonstrar o uso da virtualização de servidores aplicada na
construção de um ambiente comum nas empresas que precisam publicar recursos
na Internet, o ambiente DMZ. De forma a alinhar o conhecimento do leitor apresento
uma visão teórica e as vantagens e desvantagens da utilização desta tecnologia. Na
seqüência um ambiente DMZ foi definido, implementado e validado, através de uma
série de experimentos. Finalmente, exponho as conclusões obtidas durante a elaboração do trabalho.
Palavras-chaves: virtualização, DMZ, servidores, Internet, segurança.
LISTA DE ILUSTRAÇÕES
Figura 2-1: Diagrama da trihomed DMZ.....................................................................18
Figura 2-2: Diagrama da DMZ Back to Back..............................................................19
Figura 2-3: Diagrama da DMZ proposta neste trabalho.............................................21
Figura 4-4: Redes virtuais VMnet0, VMnet1 e VMnet2...............................................44
Figura 4-5: Tela de configuração das redes virtuais...................................................45
Figura 4-6 Diagrama físico da rede com o SVFW01 em destaque............................48
Figura 4-7 Diagrama físico da rede com o SVFW02 em destaque............................51
Figura 4-8 Diagrama físico da rede com o SVMAIL01 em destaque.........................54
Figura 4-9 Diagrama físico da rede com o SVWEB01 em destaque..........................57
Figura 4-10 Diagrama físico da rede com o SVWEB01 em destaque........................60
Figura 4-11 - Diagrama físico da rede com o SVFW01 em destaque........................63
Figura 4-12 - Diagrama de conexão com a Internet...................................................68
Figura 4-13 Diagrama físico da rede com o SVFW02 em destaque..........................77
Figura 5-14 - Visão geral da montagem física do experimento..................................88
Figura 5-15 Origem Internet (área verde) com destino a DMZ...................................90
Figura 5-16 - Evidência de acesso HTTP...................................................................91
Figura 5-17 - Evidência de acesso FTP......................................................................92
Figura 5-18 - Evidência de acesso SMTP...................................................................93
Figura 5-19 - Evidência de acesso POP3...................................................................94
Figura 5-20 - Evidências de bloqueio (Internet para DMZ).........................................95
Figura 5-21 Origem SVMAIL01 (área verde) com destino a Internet.........................95
Figura 5-22 Evidência de acesso DNS.......................................................................97
Figura 5-23 - Evidência de acesso SMTP...................................................................98
Figura 5-24 Origem LAN (área verde) com destino a Internet...................................99
Figura 5-25 - Evidência LAN acessando HTTP........................................................100
Figura 5-26 - Evidência LAN acessando HTTPS......................................................101
Figura 5-27 - Evidência LAN acessando FTP...........................................................102
Figura 5-28 - Origem estação do administrador (área verde) com destino ao
SVFW01....................................................................................................................103
Figura 5-29 - Evidência estação do administrador acessando SVFW01 via SSH...104
Figura 5-30 - Evidência estação do administrador testando conectividade com
SVFW01 utilizando ferramentas ICMP.....................................................................105
Figura 5-31 - Evidência de bloqueio do protocolo ICMP..........................................106
Figura 5-32 - Origem LAN (área verde) com destino a DMZ e Internet...................108
Figura 5-33 - Evidência LAN acessando HTTP localizado na DMZ.........................109
Figura 5-34 - Evidência LAN acessando FTP localizado na DMZ............................110
Figura 5-35 - Evidência LAN acessando SMTP localizado na DMZ........................111
Figura 5-36 - Evidência LAN acessando POP3 localizado na DMZ.........................112
Figura 5-37 - Evidência LAN consultando DNS localizado na DMZ.........................113
Figura 5-38 - Evidência LAN acessando o MySQL localizado na DMZ...................114
Figura 5-39 - Origem estação do administrador (área verde) com destino a DMZ e
SVFW02....................................................................................................................115
Figura 5-40 - Evidência estação do administrador acessando o SVFW02 via SSH 116
Figura 5-41 - Evidência estação do administrador testando conectividade com
SVFW02 utilizando ferramentas ICMP.....................................................................117
Figura 5-42 - Evidência estação do administrador acessando servidor na DMZ via
SSH...........................................................................................................................118
Figura 5-43 - Evidência estação do administrador acessando servidor na DMZ via
RDP...........................................................................................................................120
Figura 5-44 - Evidência estação do administrador acessando servidor na DMZ via
VNC...........................................................................................................................122
Figura 5-45 - Localização da origem dos experimentos (área verde)......................124
Figura 5-46 - Portscan na interface eth1 do SVFW02..............................................125
Figura 5-47 - Localização da origem dos experimentos (área verde) - estação do administrador.................................................................................................................126
Figura 5-48 - Portscan na interface eth1 do SVFW02 a partir da estação do administrador.........................................................................................................................126
Figura 5-49 - Localização da origem dos experimentos DMZ (área verde).............127
Figura 5-50 - Portscan na interface eth0 do SVFW02 a partir da DMZ....................127
Figura 5-51 - Localização da origem dos experimentos DMZ (área verde).............128
Figura 5-52 - Portscan na interface em1 do SVFW01 a partir da DMZ....................128
Figura 5-53 - Localização da origem dos experimentos Internet "simulada" (área
verde).........................................................................................................................129
Figura 5-54 - Internet simulada.................................................................................130
Figura 5-55 - Portscan na interface em0 do SVFW01 a partir da Internet "simulada"
...................................................................................................................................131
LISTA DE TABELAS
Tabela 1: Custo de servidores (Fonte: www.dell.com.br em 30/10/2008)..................27
Tabela 2 Comparação de desempenho (Físico vs. Virtual)........................................35
Tabela 3: Quantidade de memória por servidor.........................................................39
Tabela 4: Fatores de decisão para escolha do software e virtualização....................42
Tabela 5 - Regras do firewall SVFW01.......................................................................65
Tabela 6 - Configuração do PF (/etc/pf.conf)..............................................................69
Tabela 7 - Regras do firewall SVFW02.......................................................................78
Tabela 8 - Configuração do iptables (/etc/rc.d/init.d/myfirewall).................................82
Tabela 9 - Regras do firewall SVFW01.......................................................................89
Tabela 10 - Regras do firewall SVFW02...................................................................107
LISTA DE ABREVIATURAS E SIGLAS
DMZ – Demilitarized Zone (Zona Desmilitarizada).
DNS – Domain Name Service (Serviço de Nomes de Domínio).
FreeBSD - é um sistema operacional livre do tipo Unix, descendente do BSD desenvolvido pela Universidade de Berkeley.
FTP – File Transfer Protocol (Protocolo de Transferência de Arquivos).
IPTABLES – ferramenta que faz parte de praticamente todas as atuais distribuições
do Lunix.
FIREWALL - Quer dizer parede corta-fogo, utilizada em edifícios para evitar que um
incêndio se alastre por todo o prédio, em termos de informática significa um serviço
que controla a segurança entre duas ou mais redes.
HCL – Hardware Compatibility List (Lista de Compatibilidade de Hardware).
HTTP - Hypertext Transfer Protocol, é um protocolo de aplicação responsável pelo
tratamento de pedidos/respostas entre cliente e servidor na World Wide Web.
HTTPS - Hypertext Transfer Protocol Secure, é normalmente utilizado quando se deseja evitar que a informação transmitida entre o cliente e o servidor seja visualizada
por terceiros, como por exemplo no caso de compras via Internet.
LAN – Local Area Network (Rede Local).
Linux – Termo utilizado para designar sistemas operacionais que utilizam o núcleo
do Linux, criado por Linus Torwalds.
NAS - Network-Attached Storage - Dispositivo dedicado à armazenagem de arquivos
em uma rede, os dados podem ser acessados através de uma rede TCP/IP.
NAT – Network Address Translation (Tradução de Endereços de Rede).
MFLOPS - Millions of Floating Point Operations per Second (Milhões de Operações
de Ponto Flutuante por Segundo).
MIPS - Millions of Instruction per Second (Milhões de Instruções por Segundo).
P2V – Phisical to Virtual (Físico para Virtual).
PF – Packet Filter (Filtro de Pacote) subsistema do firewall dos sistemas operacionais BSD.
PPP - Point-to-Point Protocol, é um protocolo para transmissão de pacotes através
de linhas seriais.
SAN - Storage Area Network (rede de armazenamento de dados) - é uma rede de
alta velocidade, dedicada a fornecer benefícios diversos relacionados ao acesso a
dados, normalmente acessados por via fibras ópticas.
SMTP - Simple Mail Transfer Protocol (Protocolo Simples de Transferência de Mensagens).
SSH – Secure Shell Protocol (Protocolo de Shell Seguro).
SUMÁRIO
RESUMO......................................................................................................................7
LISTA DE ILUSTRAÇÕES..........................................................................................8
LISTA DE TABELAS.................................................................................................. 11
...................................................................................................................................11
LISTA DE ABREVIATURAS E SIGLAS..................................................................... 12
1 INTRODUÇÃO......................................................................................................... 15
2 DMZ VIRTUAL: CONCEITOS..................................................................................17
3 DMZ VIRTUAL: VANTAGENS E DESVANTAGENS...............................................22
4 APLICANDO A TECNOLOGIA.................................................................................38
5 EXPERIMENTOS.....................................................................................................86
CONCLUSÕES........................................................................................................ 132
CONCLUSÕES........................................................................................................ 132
REFERÊNCIAS BIBLIOGRÁFICAS.........................................................................134
REFERÊNCIAS BIBLIOGRÁFICAS.........................................................................134
ANEXOS...................................................................................................................137
ANEXO A – COMANDOS ÚTEIS.............................................................................138
ANEXO B – SISTEMAS OPERACIONAIS UTILIZADOS NO TRABALHO.............141
ANEXO C – ARQUIVOS DE CONFIGURAÇÃO..................................................... 144
15
1 INTRODUÇÃO
Neste trabalho aborda o que considero uma das grandes tecnologias que
despontaram nos últimos tempos: a virtualização. Apesar de já existir desde a década de sessenta, apenas recentemente esta tecnologia tomou conta das empresas.
Imagine ter dez servidores com apenas um hardware, esta é apenas uma das possibilidades disponibilizadas por esta tecnologia. A virtualização oferece um melhor
aproveitamento do hardware e outros benefícios que introduzo no decorrer deste trabalho.
Com o objetivo de demonstrar as principais virtudes da virtualização decidi
criar um ambiente comum em empresas que possuem máquinas acessadas através
da Internet, a DMZ. Normalmente, uma DMZ é formada por diversos servidores físicos, neste trabalho utilizo um único servidor físico e cinco virtuais, isto não é um limitador visto que o ambiente virtual é escalável.
Trabalho há quatro anos com sistemas de virtualização (criando ambientes
novos, migrando ambientes físicos para virtuais e operações do dia-a-dia) e oito com
os ambientes Microsoft1 (desde programação em Visual Basic 2, passando por Windows Server, Active Directory3, SQL Server4 e ISA Server5). Vi neste trabalho uma
oportunidade de mostrar o que venho realizando com virtualização e, também, de
aprofundar meus estudos sobre outros sistemas operacionais tais como, por exem plo, o Linux e o FreeBSD.
1
Microsoft, empresa multinacional americana sendo a maior do mundo no ramo de software.
2
Visual Basic, linguagem de programação muito popular produzida pela Microsoft.
3
Active Directory, serviço de diretório (LDAP) da Microsoft, armazena informações sobre a rede como
contas de usuários.
4
SQL Server é o serviço de banco de dados produzido pela Microsoft
5
ISA Server (Internet Security and Acceleration) é um serviço de firewall e proxy produzido pela Mi-
crosoft
16
Este estudo introduz conceitos que podem auxiliar administradores de sistemas que queiram disponibilizar algum conteúdo na Internet e não dispõem de muitos recursos para aquisição de hardware.
O trabalho foi organizado da seguinte forma, primeiro apresento os conceitos de Virtualização e DMZ (o que são), depois introduzo as vantagens e desvantagens destas arquiteturas (o porque utilizar ou não), em seguida a montagem do ambiente (como fazer) e finalmente avalio, através de experimentos, o ambiente de forma a validar os conceitos introduzidos nas seções anteriores.
17
2 DMZ VIRTUAL: CONCEITOS
Neste capítulo introduzo os conceitos, nesta ordem: DMZ, virtualização e
a união dos dois.
2.1
DMZ
DMZ é a sigla para De-Militarized Zone (Zona Desmilitarizada), que tem
origem militar, e é utilizada para designar uma área que fica entre dois países na
qual é proibido qualquer tipo de atividade militar. Uma DMZ famosa, por exemplo, é
a que está entre a Coréia do Sul e Coréia do Norte.
Em termos de informática, DMZ também é conhecida como “Rede de Perímetro” e é utilizada para designar uma pequena rede situada entre uma rede não
confiável (Internet) e outra rede confiável (LAN). Nela ficam localizados os serviços
disponíveis para a Internet, tais como: sites, FTP, servidores de DNS, etc.
Uma peça fundamental na DMZ são os Firewalls6, pois são eles que determinam quem entra ou quem sai da DMZ, no caso os pacotes. Como software de firewall, utilizo neste trabalho o iptables (Linux) e o PF (FreeBSD).
Existem dois tipos mais comuns de configurações para DMZ: Trihomed e
Back to Back [9].
6
Firewall – Quer dizer parede corta-fogo, utilizada em edifícios para evitar que um incêndio se alastre
por todo o prédio, em termos de informática significa um serviço que controla a segurança entre duas
ou mais redes.
18
O tipo trihomed possui um firewall que está ligado a três redes (por isso o
tri do trihomed), que são: Internet, rede local e DMZ. A Figura 2.1 ilustra esta configuração.
Figura 2-1: Diagrama da trihomed DMZ
O tipo Back to Back foi selecionada para este trabalho (Figura 2.2). Neste
tipo temos dois firewalls e a DMZ fica exatamente entre eles, um dos firewalls fica ligado à Internet e o outro à rede local.
19
Figura 2-2: Diagrama da DMZ Back to Back
A configuração Back to Back foi escolhida porque acredito ser a mais segura, pois utilizei firewalls diferentes nas duas pontas da rede. Para ilustrar esta
questão, imagine o seguinte cenário: é descoberta uma falha no iptables e se ambos
forem iptables, o que impediria um hacker que passou pelo primeiro também passasse pelo segundo. Por este motivo decidi utilizar um Linux com iptables e o outro
com o FreeBSD, executando o PF, assim posso evitar que eventuais falhas, nos firewalls e nos sistemas operacionais, possam ser utilizadas por hackers para ultrapassar as duas barreiras e alcançar a rede local.
2.2
VIRTUALIZAÇÃO
A virtualização pode ser definida como uma camada que divide recurso do
hardware de um computador em vários ambientes (sistemas operacionais) de execução, aplicando um ou mais conceitos ou tecnologias, tais como: como partições de
20
hardware e software, tempo compartilhado, parcial ou simulação completa de uma
máquina, emulação, qualidade de serviço, entre muitas outras [4].
A virtualização já existe desde os anos sessenta, mas estava restrita às
grandes e ricas empresas. O computador Atlas, do departamento de engenharia elétrica de Manchester, e o projeto M44/44X da IBM são considerados os precursores
desta tecnologia.
Por volta do final dos anos noventa, passou a estar acessível a todos.
Hoje temos grandes empresas como Microsoft, VMWARE, IBM, SUN e Citrix investindo em virtualização bem como muitos projetos em open-source7.
Algumas definições sobre a tecnologia de virtualização são importantes e
devem ser introduzidas neste momento, pois serão muito citadas ao longo do texto,
e são elas:
•
Máquina Host: é o servidor físico que possui um sistema de virtualização instalado;
•
Máquina Guest: é uma máquina virtual propriamente dita, todos os
seus recursos, tais como: CPU, memória e disco são providos pela
máquina host.
•
Disco Virtual: é um arquivo que funciona como um Hard Drive para
a máquina guest. Existem sistemas de virtualização nos quais várias máquinas guests acessam o mesmo disco virtual, mas estão fora
do escopo deste trabalho.
7
Open-Source, quer dizer Código livre, termo criado pela OSI (Open Source Initiative), se refere aos
softwares que respeitam as definições da OSI como por exemplo: distribuição livre, código fonte disponível, não discriminação entre grupos e pessoas, entre outras.
21
2.3
DMZ VIRTUAL
Existem DMZs de diversos tamanhos, que podem variar de apenas um
servidor físico até DMZs com mais de cem servidores, mas o meu objetivo foi de colocar uma DMZ em uma “caixa” e mostrar que podemos ter as mesmas funcionalidades de um ambiente físico tradicional.
Figura 2-3: Diagrama da DMZ proposta neste trabalho
Na Figura 2.3 é apresentada, através de um esquema, uma síntese do
objetivo deste trabalho. A máquina host (nome SVVM01), delimitada na figura pela
área em amarelo, abrigará cinco máquinas guests (SVFW01, SVFW02, SVWEB01,
SVMAIL01 e SVDB01). Estas máquinas terão distintos sistemas operacionais e serviços, mas utilizei softwares que normalmente estão disponíveis em uma DMZ
(como sites, FTP e DNS). Este estudo se concentrou na montagem do ambiente virtual e nas suas entradas e saídas, ou seja, nos firewalls.
A DMZ selecionada foi do tipo Back to Back e teve uma interface ligada à
Internet (através do SVFW01) e outra a rede local (através do SVFW02). Antes de
passarmos à implementação desta arquitetura, no próximo capítulo, coloquei os as pectos relevantes na decisão de utilizar ou não uma DMZ virtual.
22
3 DMZ VIRTUAL: VANTAGENS E DESVANTAGENS
Neste capitulo coloquei algumas vantagens e desvantagens, principalmente no tocante a virtualização. Nas subseções de segurança enfatizei a DMZ. Algumas vantagens podem ser consideradas desvantagens, tais como custo e segurança, mas as considerei como vantagens pelos aspectos positivos que se sobressaem
aos negativos.
3.1
VANTAGENS
Algumas das principais vantagens de ter um ambiente virtualizado, tais
vantagens servem como justificativas para que uma empresa utilize esta tecnologia.
Em sua maioria são tópicos técnicos, mas, certamente, o tópico que introduz os custos desperta maior interesse para os gestores de TI.
3.1.1 Flexibilidade
A virtualização se mostra muito flexível, sob vários aspectos, vejamos alguns:
•
Redução no tempo na instalação dos sistemas operacionais: a instalação de um servidor, por exemplo, que em alguns casos pode levar até uma hora, em ambientes virtualizados pode ser apenas uma
questão de copiar arquivos. Podemos criar máquinas virtuais mode-
23
lo, por exemplo, uma máquina com o Windows 2003 instalado,
quando surgir à necessidade de disponibilizar um servidor virtual
com Windows 2003 teremos apenas fazer uma cópia da máquina
modelo, alterar o nome da nova máquina e executar um processo
chamado sysprep, que altera um identificador único contido em máquinas que rodam sistemas Windows (em máquinas com Linux e
FreeBSD isto não se faz necessário). Este processo leva menos de
dez minutos, em média, comparado com até uma hora que pode levar uma instalação completa.
•
Movimentação de local simplificada: em empresas que possuem
duas salas com servidores pode-se mover um servidor virtual de
uma sala para outra apenas copiando arquivos. Este tipo de operação faz-se necessária nas empresas, geralmente, por motivos de
contingência. Evidentemente se faz necessário pelo menos um servidor host em cada uma das salas.
•
Montagem rápida de ambientes de desenvolvimento e testes: Em
operações críticas como atualização de softwares, sistemas operacionais ou testes com novos softwares, podemos criar ambientes
virtuais parecidos com o ambiente de produção, sem a necessidade
de investir na aquisição de hardware, que seria utilizado apenas
para testes.
•
Precaução nas mudanças: um exemplo prático são as atualizações
de sistemas operacionais Windows, que acontecem em todas as
segundas terças-feiras de cada mês, estas atualizações podem ser
incompatíveis com algum software em execução no servidor. Se o
servidor for virtual pode-se fazer uma cópia do servidor antes da
atualização, caso venha a ocorrer algum problema com o servidor
após a atualização somente precisamos voltar à cópia anterior a
atualização.
24
3.1.2 Consolidação de servidores
Dos casos que conheço, o primeiro passo para a virtualização é a consolidação de servidores. Isto significa selecionar os servidores candidatos, que tem uma
taxa de utilização baixa, e colocá-los em um mesmo hardware, em outras palavras,
eliminar máquinas físicas e assim diminuir o desperdício (o que é uma grande vantagem).
A análise para a seleção dos candidatos não deve observar apenas a taxa
de utilização do processador, mas devemos verificar também utilização de memória,
arquivo de paginação e utilização de disco (espaço, leitura e escrita). Um servidor
pode ter uma taxa de processamento baixa, mas com alta taxa de acesso aos discos, devemos lembrar que este servidor compartilhará recursos com outros servidores, então ele poderia se tornar um gargalo de acesso ao disco no servidor de má quina virtual (host).
Um caso interessante de consolidação foi o da Caixa Econômica Federal,
que migrou 2123 servidores físicos para 244 servidores de máquinas virtuais, praticamente nove servidores virtuais por servidor host [18].
3.1.3 Redução no consumo de energia
Estamos em uma época na qual o mundo está cada vez mais preocupado
com a ecologia. Diversos relatórios dos cientistas, prevendo um futuro próximo catastrófico, fazem aumentar a responsabilidade de governos e empresas sobre o futuro do nosso planeta. Neste cenário, o setor de TI das empresas tem um importante
papel, já que dispõem de uma ferramenta valiosa para ajudar a economizar recursos: a virtualização.
25
Vejamos um cenário, no qual um servidor de máquinas virtuais suporta
dez máquinas virtuais, mesmo que o consumo de energia seja maior, pois a utilização do servidor é maior, mas é inegável que teremos pelo menos nove servidores a
menos, ainda devemos considerar a diminuição na emissão de calor, que conseqüentemente economizará também a energia despendida no ar-condicionado.
Segundo reportagem da revista Computer World “A redução de custos
com a eliminação de servidores físicos pode ser sentida rapidamente: mais de 1,2
mil dólares de economia com eletricidade por servidor em um ano. Para um servidor,
você vai economizar de 300 dólares a 600 dólares diretamente em eletricidade. Esse
valor será o dobro em sistemas de refrigeração”, defende Mark Bramfitt, gerente sênior em gestão de energia da PG&E. "A empresa oferece um ‘incentivo a virtualização’ e paga de 150 dólares a 300 dólares por servidor removido como resultado da
consolidação” [3].
3.1.4 Suporte aos softwares legados
Os softwares legados são sistemas antigos, que são vitais para as empresas, mas funcionam com tecnologias ultrapassadas. Vejamos como a virtualização
pode dar uma sobrevida a estes softwares.
Em 2007 vivi uma experiência desafiadora, na qual um servidor passou a
apresentar problemas de hardware. Esse servidor funcionava com o Windows NT e
em um hardware antigo, de um fabricante que não oferece mais suporte no Brasil
(Bull Computadores), e executava um software que ninguém na empresa sabia
como instalar e que não tinha mais contrato de suporte com o fabricante. O software
continha informações de contabilidade e que devem ser guardadas por um período
de tempo, para efeito de auditorias, neste caso encontrei a solução através da virtualização.
26
A VMWare disponibiliza um software, chamado VMWARE Converter [22],
que é especializado em fazer migrações P2V, que significa Physical to Virtual (Físico
para Virtual). O VMWARE Converter faz a cópia de todos os arquivos do servidor físico para um servidor virtual, já alterando as configurações de drivers e sistema operacional para o novo hardware (virtual). Resolvi dois problemas de uma só vez, não
precisei reinstalar nada e ainda me livrei de um equipamento, que já estava obsoleto.
Os softwares P2V são de grande valia no caso da consolidação de servidores, pois estes evitam os riscos envolvidos na reinstalação de todo um sistema.
Novamente, o caso da Caixa Econômica Federal serve como exemplo, no
qual as máquinas executavam Windows NT. A Microsoft tinha parado de oferecer
suporte ao sistema e o hardware estava dando sinais de fadiga. A saída foi consolidar as máquinas, não tenho informações se foi utilizada a migração P2V, mas o que
quero com isto é oferecer um caso real de software legado que ganhou sobrevida
através da virtualização.
3.1.5 Custo
Dividimos esta seção em hardware e software, de forma a observarmos
esta questão sob estes dois pontos de vista.
a) Hardware
A diferença no custo entre um ambiente tradicional e um virtual depende
muito dos tipos de serviços que serão empregados no ambiente. A comparação que
fizemos, de forma a ilustrar esta questão, é apresentada na Tabela 1: Custo de servidores (Fonte: www.dell.com.br em 30/10/2008) e utiliza como base o ambiente definido para este trabalho. A comparação foi efetuada a partir dos computadores
27
PowerEdge T105 e o PowerEdge 2900 geração lll. O T105 é um modelo de servidor,
no caso o mais simples que encontrei no site da Dell (Brasil) na ocasião da pesquisa, do qual seriam compradas cinco unidades, no caso da montagem da DMZ no
modo tradicional. O modelo 2900 é um servidor com mais recursos (necessários,
pois será a base para cinco servidores guest), com quatro vezes mais memória e
discos mais rápidos, 10.000 rpms contra 7200 rpms do T105, e também procuramos
diminuir uma desvantagem, que será vista mais adiante, que é a disponibilidade. O
servidor 2900 possui recursos que aumentam sua disponibilidade, tais como: RAID-1
, fontes de energia redundantes9 e placas de rede com suporte a Nic teaming.10
8
Tabela 1: Custo de servidores (Fonte: www.dell.com.br em 30/10/2008)
Modelo
PowerEdge T105 (5 servidores)
PowerEdge 2900 lll
Processador Intel® Xeon®
Processador AMD Opteron™ DualQuad-Core E5410 (2.33 GHz,
Processador
Core 1210 (1.80 GHz, 2X1 MB L2
2x6 MB L2 cache, 1333 MHz
cache)
FSB)
Memória
Memória de 1GB DDR2, 800MHz
4GB 667MHZ
2 x Discos Rígidos SAS de
Disco Rígido de 250GB 7.2K RPM
Discos Rígidos
400GB, 3,5 polegadas,
SATA
10K RPM, Hot Plug
RAID
Não
RAID 1 (Espelhamento)
Suporte
3 anos (5x10)
3 anos (5x10)
(Garantia)
Placa de Rede On-Board Single Gigabit
Broadcom Dual Gigabit
Fonte
Não
Sim (2 fontes)
Redundante
Total (R$)
8.180,00 (1.636,00 cada um)
8.662,00
O custo de aquisição no ambiente tradicional ficou menor do que no ambiente virtual, cada T105 custaria R$ 1.636,00 como precisaríamos de cinco então o
8
RAID-1 (Mirroring) é um sistema que permite usar dois HDs, sendo que o segundo armazenará uma
imagem idêntica do primeiro, obviamente perdemos 50% do espaço (se você utilizar dois discos de
100Gb, não terá disponível 200Gb mas sim 100Gb), mas caso o disco titular falhe o outro assume
seu lugar, sem interromper os serviços.
9
Fontes Redundantes, um servidor pode ter duas fontes de energia, preferencialmente cada uma li -
gada a um circuito de energia diferente da outra, assim caso ocorra uma falha em um dos circuitos ou
em uma das fontes o servidor não terá interrupção de energia.
10
NIC Teaming faz-se duas placas de redes funcionarem como uma, assim se uma falha a outra as -
sume o seu lugar automaticamente.
28
total ficou em R$ 8.180,00 contra R$ 8.662,00. Agora vamos aprofundar mais este
estudo, vejamos alguns pontos:
•
Aumento no preço do 2900 para diminuir riscos de falha total do
ambiente: o ambiente virtual teria um ponto de falha, ou seja, caso
o servidor 2900 falhasse então cinco servidores ficariam indisponíveis. Devido a esta questão adicionamos componentes para que
esta condição tivesse uma menor probabilidade de ocorrer (isto aumentou o preço do 2900, por exemplo, teríamos que comprar dois
discos ao invés de um), já nas T105, que não possuem estes componentes, o risco de todos os servidores ficarem indisponíveis é
menor.
•
Consumo de Energia: A diferença de R$ 482,00 seria recuperada
facilmente com o menor consumo de energia do 2900 (Consumo
de um servidor 2900 contra cinco T105), lembre-se servidores normalmente ficam 24 horas ligados e além do seu consumo também
necessitam de ar-condicionado, menos servidores é igual a um menor calor gerado que é igual redução no consumo de ar-condicionado.
•
Suporte: Quando o contrato de suporte terminasse teríamos que
pagar cinco contratos de suporte do T105 contra apenas um do
2900 (obviamente o valor da manutenção do 2900 será maior que
a de um T105, mas certamente inferior a cinco máquinas T105).
Considerando todos os pontos abordados o menor custo seria de um servidor base para máquinas virtuais, o que compensaria o maior investimento inicial.
29
b) Software
Subdividimos este tópico entre licenças de software, manutenção e
software de virtualização:
b-1) Licenças de software
O ambiente utilizado neste trabalho não é um bom exemplo de ganho em
termos do custo das licenças, comparado a um ambiente físico tradicional, pois fiz
muito uso de software livre e utilizei apenas duas licenças de Windows, uma para a
máquina virtual SVMAIL01 e outra para a máquina host SVVM01. No ambiente tradicional só utilizaría no servidor que faria o papel do SVMAIL01. Muitos acreditam que
por instalar o Windows em uma máquina virtual não necessitam de licença, apenas
a licença da máquina host, mas na verdade a Microsoft cobra a licença por máquina,
não faz diferença se física ou virtual, mas há exceções, que serão vistas a seguir.
Os ganhos com custo em termos de software acontecem nos seguintes cenários:
•
Ambiente focado na plataforma Microsoft e utilizando software de virtualização Microsoft: quem compra a versão Enterprise do Windows
pode criar até quatro máquinas virtuais sem pagar licença adicional. O
preço da versão Enterprise é de aproximadamente R$ 5.000,00 e a
Standard R$ 1.550,00 (fonte: www.dell.com.br em 30/09/2008), isto se
utilizar o software de virtualização da Microsoft, o Virtual Server, se utilizar algum outro, como o VMWare, então se paga uma licença por
cada máquina virtual.
•
Economia no caso de softwares que cobram licenças por processador:
alguns softwares da Oracle, Symantec e Microsoft cobram licenças por
processador, isto é, se o software for instalado em uma máquina com
dois processadores serão cobradas duas licenças. O servidor host
pode ter vários processadores, mas a máquina virtual pode ser induzida a “enxergar” apenas um. Alguns softwares de virtualização podem
30
até mesmo fazer com que a máquina guest “enxergue” apenas um processador mas se beneficie do processamento de todos os processadores da máquina host. É importante verificar o contrato do software, pois
a virtualização não é uma tecnologia tão nova e os fabricantes de
software já podem estar se precavendo destas possíveis “artimanhas”
na economia com licenças.
Em resumo, nos ambientes que utilizam fortemente o software livre a redução dos custos para aquisição de software são raramente percebidos, o que funciona de forma diferente nos ambientes de softwares proprietários, mas ainda podemos ter economia em ambientes com softwares que cobram licenças por processador e nos custos com tempo de suporte técnico na hora de fazer um upgrade.
b-2) Manutenção
Neste ponto destaco a economia no momento do upgrade do hardware da
máquina host. A cada ano que passa os softwares oferecem novos serviços e isso
demanda uma maior capacidade de processamento e memória. Devido a estes fatores, em apenas três anos, pode ser necessário adicionar mais memória à máquina
host ou até mesmo substituí-la. No caso do ambiente tradicional seria necessário
reinstalar todos os softwares nas máquinas novas, já no caso das virtuais seria necessário apenas instalar o sistema de virtualização na máquina nova e depois copiar
os arquivos das máquinas virtuais. Tais operações economizam tempo, dinheiro e
reduzem riscos de configurações inadequadas no caso de uma reinstalação.
b-3) Software de Virtualização
O software escolhido para este trabalho foi o VMWare Server, por ser gratuito, mas para alguns tipos de negócios, que demandam alta disponibilidade, seria
interessante investir em softwares como o VMWare ESX (a versão mais barata custa
R$ 7.612,00, fonte: www.dell.com.br). O custo do mesmo seria justificado pelo melhor desempenho e possibilidade de montar uma solução de alta disponibilidade.
31
3.1.6 Segurança
Uma das principais dúvidas relacionadas às máquinas virtuais é a seguinte: Se meu servidor host for invadido, as máquinas guests também serão comprometidas? No caso da máquina host, o invasor poderia ter acesso ao software de virtualização e, conseqüentemente, poderia apagar as máquinas virtuais, mas quanto a
comprometer os dados contidos nas guest a resposta é não. Os dados das máquinas guest estão tão seguros quanto os de uma máquina física tradicional. Isto porque os softwares de virtualização trabalham com a seguinte premissa: o que quer
que esteja executando em uma máquina virtual, não pode comprometer a segurança
do sistema host. O isolamento também existe entre as máquinas guest, por exemplo, se uma máquina guest for contaminada por um vírus, a chance de outra máquina guest ser contaminada é a mesma chance de um servidor físico ser contaminado
por um vírus que esteja em outra máquina física, ou seja, ser virtual não deixa a máquina mais vulnerável, aliás, os mesmo cuidados tomados com uma máquina física
devem ser tomados em uma máquina virtual (antivírus, manter o sistema operacional atualizado, etc.).
A virtualização favorece um aspecto de segurança, que é a divisão de serviços por servidor, isto é, ao invés de manter em apenas um servidor físico contendo
vários serviços, podemos criar várias máquinas virtuais cada uma com um serviço.
Por exemplo, ao invés de ter uma máquina física suportando o serviço de e-mail,
FTP e banco de dados, posso utilizar três máquinas virtuais, cada qual com um dos
serviços. Normalmente, estes três serviços são mantidos por diferentes profissionais, principalmente o banco de dados (mantido por um DBA 11), no que tange o fator
humano ao dividir em três máquinas, estou ajudando a separar as responsabilidades, isto é, cada administrador cuida da sua máquina. Esta separação, no fator tecnologia, pode evitar problemas de incompatibilidade entre dois softwares diferentes
na mesma máquina e diminuir a “superfície de ataque” a uma máquina. Imagine a si 11
DBA – Database Administrator (Administrador de Banco de Dados), é o profissional que cuida dos
bancos de dados, tem como principais atividades manter a segurança dos bancos, analisar perfor mance, suporte a equipe de desenvolvimento, manter planos de recuperação, entre outras.
32
tuação, na qual, uma máquina contendo dois serviços, um deles poderia sofrer com
uma falha de segurança que levasse a indisponibilidade do servidor (ser vulnerável a
ataques do tipo DoS12), o outro ficaria indisponível por causa da falha do primeiro.
3.2
DESVANTAGENS
Vejamos algumas desvantagens e possíveis soluções, que visam minimizar as mesmas.
3.2.1 Vários sistemas com um único ponto de falha
Diferente dos sistemas tradicionais, distribuídos entre vários servidores físicos, quando temos apenas um servidor físico suportando várias máquinas virtuais,
este se torna um ponto único de falha.
Existem maneiras de amenizar esta desvantagem, vejamos algumas delas:
•
Utilizar um servidor com recursos de alta disponibilidade, como o
proposto na seção anterior referente aos custos, no qual a máquina
a ser utilizada como servidor host possui recursos como RAID-1 e
fontes redundantes.
•
Utilizar softwares de virtualização com suporte para alta disponibilidade, o VMWARE ESX pode ser utilizado neste tipo de solução,
mas seriam necessárias pelo menos duas máquinas host e um sto-
12
DoS – Denial of Service (Ataque de Negação de Serviço), são técnicas de ataque que podem so-
brecarregar uma rede a tal ponto os usuários dela não consigam usá-la, por exemplo, fazer tantas requisições a um site até que este não consiga mais ser acessado.
33
rage NAS13 ou SAN14. Neste caso, os arquivos das máquinas virtuais ficam alocados em discos fora das máquinas host, mas acessíveis por todos os hosts participantes da solução. Vejamos um
exemplo prático: duas máquinas host acessam o mesmo disco em
um storage, no qual estão os arquivos das máquinas virtuais e apenas um host gerencia as máquinas virtuais, caso esta falhar a máquina host que estava desocupada assume o gerenciamento das
máquinas virtuais. Esta solução teria um de downtime
15
pequeno,
mas com custo maior.
•
Manter um plano de recuperação de desastres, que é um documento contendo informações de backup do ambiente e, também,
um passo a passo para a recuperação do ambiente em caso de falhas. Esta solução teria um downtime grande e que alguns negócios não suportariam por ter um prejuízo grande decorrente da parada do sistema.
As melhores soluções são caras, o que devemos avaliar é o impacto da
indisponibilidade dos serviços sobre o negócio para avaliar se vale à pena o investimento.
3.2.2 Desempenho
Como vimos anteriormente, os sistemas de virtualização acrescentam
mais uma camada, que cuida da separação dos recursos para as máquinas virtuais
guest. Esta camada adicional acaba por deteriorar o desempenho das máquinas
13
NAS - Network-Attached Storage - Dispositivo dedicado à armazenagem de arquivos em uma rede,
os dados podem ser acessados por outro servidor através de uma rede TCP/IP.
14
SAN - Storage Area Network (rede de armazenamento de dados) é uma rede de alta velocidade de-
dicada a fornecer benefícios diversos relacionados ao acesso a dados, normalmente acessados via fibras ópticas.
15
Downtime, tempo de indisponibilidade de um servidor.
34
guest, pois a cada interação entre a máquina guest e a máquina host esta camada
tem que ser acionada.
Os sistemas que fazem intenso uso de disco (tais como: banco de dados e
serviços de impressão) são os mais comprometidos e que mais comprometem, pois
além de ter seu desempenho degradado pelo “passo a mais”, que é a camada de
virtualização, eles também comprometem o desempenho das outras máquinas
guest, pois concorrem com elas pelos recursos da máquina física.
Para este trabalho realizei testes simples de desempenho, de forma a
comparar uma máquina física com uma virtual e, com este objetivo, utilizei os
softwares Sisoftware Sandra Lite [20] e Super PI [21], efetuando somente o cálculo
do valor de PI.
A máquina física é o servidor utilizado neste trabalho, este foi detalhado no
Capítulo 4, e a máquina virtual foi criada, somente para esta avaliação, com sistema
operacional Windows 2003 (similar ao do host), 2048Mb de memória e disco de
4Gb.
35
Na Tabela 2 colocamos os resultados dos testes de desempenho realizados.
Tabela 2 Comparação de desempenho (Físico vs. Virtual)
Teste
CPU
 MIPS16
 MFLOPS17
 Cálculo do PI (4Mb)
Disco
 Driver Index
 Random Access
Memória
 Latency (Random Access)
 Speed Factor
Físico
Virtual
Software
5.7
5.97
3m 35s
3.41
3.55
3m 43s
Sandra
Sandra
Super PI
66,82 Mb/s
12 ms
54,11 Mb/s
17 ms
Sandra
Sandra
138 ns
91,5
180 ns
171,5
Sandra
Sandra
De forma a facilitar o entendimento dos dados contidos na Tabela 2 foram
utilizadas setas ao lado de cada teste. Estas indicam a melhor tendência, isto é, a
seta para cima () indica que quanto maior o valor melhor é o resultado e a seta
para baixo () indica que quanto menor o valor melhor é o resultado. Os resultados
foram descritos na seqüência.
a) CPU – MIPS
A avaliação de MIPS foi realizada com o software Sisoftware Sandra. O
experimento consiste em medir a quantidade de instruções realizadas pelo proces sador por segundo, quanto maior o valor indicado no teste melhor foi o desempenho.
A máquina física realizou 5,7 milhões de instruções por segundo contra 3,41 da máquina virtual (desempenho aproximadamente 40% inferior).
b) CPU – MFLOPS
16
MIPS (Milhões de Instruções por segundo) é um índice simples utilizado para medir a velocidade de
um processador.
17
MFLOPS (Milhões de Operações de Ponto Flutuante), parecido com MIPS, mede a velocidade das
operações de Ponto Flutuante.
36
Neste experimento, semelhante ao MIPS, mas focado nas instruções de
ponto flutuante, também utilizamos o Sisosftware Sandra. Novamente a máquina virtual foi inferior. Enquanto a máquina física realizou 5,97 milhões de instruções por
segundo a virtual realizou 3.55 milhões (aproximadamente 40% inferior).
c) CPU – Cálculo do PI (π)
O programa Super PI realiza o cálculo do PI 18 com a quantidade de casas
decimais solicitadas, quanto menor for o tempo melhor é o resultado. Para o teste
solicitei o cálculo o PI com quatro milhões de dígitos. Na máquina física demorou
3:35 (3 minutos e 35 segundos) contra 3:43 da virtual.
d) Disco - Driver Index
O Index representa o desempenho de leitura e gravação em todo o disco,
utilizado o SiSoftware Sandra, quanto maior for a quantidade de MBytes gravados
por segundo melhor é o resultado. Obtive 66,82 Mb/s para a máquina física contra
54,11 da virtual (20% de redução de desempenho).
e) Disco - Random Access
Este teste feito pelo Sisoftware Sandra, que avalia o tempo médio em que
o disco necessita para encontrar um setor em um local aleatório no disco, quanto
menor for o tempo melhor. A máquina física teve resultado de 12 ms e a virtual 17
ms, ou seja, 40 % mais lenta.
18
Pi (π) é o valor da razão entre a circunferência de qualquer círculo e seu diâmetro, é a mais antiga
constante matemática que se conhece( 3,1408...).
37
f) Memória - Latência (Random Access)
A latência é o tempo decorrido do inicio de uma requisição até o tempo de
retorno da informação solicitada, o experimento foi feito com o software Sisoftware
Sandra. A máquina física registrou a marca de 138ns contra 180ns da máquina virtual (desempenho 30% inferior).
g) Memória - Speed Factor
O Speed factor é a razão entre a velocidade do cachê da CPU e a velocidade da memória (indica a diferença de velocidade entre os dois, a velocidade da
memória é mais lenta, quanto menor esta diferença melhor), utilizado o Sisoftware
Sandra. A máquina física foi muito superior com 91,5 contra 171,5, ou seja, a máqui na virtual foi 87% inferior.
h) Conclusão
Como esperado, devido à adição de uma camada de software, em todos
os testes realizados a máquina física teve um desempenho superior ao da máquina
virtual. Somente como um registro, estes experimentos podem ter resultados diferentes se utilizarmos outros softwares de virtualização e avaliações desta natureza
podem não refletir o desempenho das operações do dia-a-dia dos servidores. De
fato existe uma degradação no desempenho, mas isto pode ou não ser um problema
que depende fundamentalmente do correto dimensionamento do servidor host para
as aplicações que este atenderá.
38
4 APLICANDO A TECNOLOGIA
Neste capítulo veremos a montagem e configuração do servidor host, do
software de virtualização e das máquinas virtuais que fazem parte da DMZ Virtual.
4.1
SERVIDOR HOST
Dividimos esta seção em hardware e software. A primeira descreve os
componentes físicos, utilizados no servidor host, e na segunda, mais extensa, detalho a montagem do ambiente virtual.
4.1.1 Hardware
Utilizei um computador com os seguintes componentes: placa mãe ASUS
M2NPV-VM/S (som, placa de rede e vídeo on-board), processador AMD Athlon 64
X2 Dual Processor 4000+ (2.10 GHz), 4 Gb de memória RAM, 1 HD IDE de 40 Gb, 1
HD SATA de 250 Gb, placa de rede adicional Via de 100Mbps.
Estes componentes foram todos escolhidos por alguma razão específica, a
placa-mãe foi por questões de custo, pois possui componentes on-board, e, também, por oferecer suporte ao processador Athlon 64 X2 4000+. Este processador
por sua vez foi selecionado, porque possui instruções necessárias por algumas aplicações de Virtualização como o XEN [25], isto garantiu mais opções de escolha do
software de virtualização. A utilização de memória é um ponto crítico na virtualização, na Tabela 3 temos o cálculo da quantidade de memória por máquina, observe
39
que utilizei uma quantidade maior para os sistemas operacionais com interfaces gráficas na sua operação (Windows e OpenSolaris) e para os demais 256 Mb foram suficientes. Com um total de 3328Mb chegamos à conclusão que 4 Gb (4096 Mb) seriam mais que suficientes, permitindo até mesmo o acréscimo de mais uma máquina
virtual.
Tabela 3: Quantidade de memória por servidor
Nome
Sistema Operacional
SVFW01
SVFW02
SVDB01
SVWEB01
SVMAIL01
FreeBSD 7
CentOS 5
OpenSolaris
Ubuntu 8
Windows 2003
Windows 2003 (reserva para o servidor físico)
Total
SVVM01
Memória (em Mb)
256
256
1024
256
512
1024
3328
Dois HDs foram incluídos procurando aumentar desempenho de
leitura/gravação dos mesmos (fator crítico em virtualização). O disco menor (HD
IDE) ficou reservado para o sistema operacional host e o HD SATA para os arquivos
dos sistemas Guest, assim garanti um fluxo separado entre os dados do host e das
guest. Por fim, uma placa de rede adicional para funcionar como porta de um dos lados da DMZ, pois já tinha uma placa de rede on-board. O nome lógico deste computador será SVVM01.
4.1.2 Software
Existem várias opções de software de virtualização disponíveis, analisei
quatro dos principais softwares disponíveis: VMWARE ESXi, VMWARE Server, Microsoft Virtual Server e XEN. As características principais que levaram a escolha do
software foram: fabricantes de renome, custo, compatibilidade de hardware e siste-
40
mas guest, disponibilidade de instalação nos sistemas Windows e Linux. Vejamos a
análise de cada um dos itens.
4.1.2.1 Fabricante
A VMWare fabricante do ESXi e VMWARE Server é a empresa líder em
virtualização [2], “É líder incontestável, com mais da metade ou 80% do mercado utilizando seu hipervisor, dependendo de quem está contando”.
A Citrix empresa conhecida pelo software Metaframe, adquiriu em 2007 o
software de virtualização XEN [1], além de produzir uma versão Enterprise, a empresa se comprometeu a continuar com uma versão Open.
Por último a Microsoft, que dispensa maiores comentários, líder mundial
no mercado de software, entrou no mercado de virtualização com uma estratégia parecida com que utilizou para vencer o Netscape com seu produto Internet Explorer.
Ela está oferecendo seus produtos de virtualização a um preço muito baixo ou até
mesmo gratuitamente, que foi o caso do Virtual Server e Virtual PC, mais recentemente lançou uma versão do Windows 2008 exclusivamente para utilização do Hyper-V, novo sistema de virtualização da Microsoft.
4.1.2.2 Custo
Em termos de custo as quatro opções são iguais, visto que todas possuem versões gratuitas.
41
4.1.2.3 Compatibilidade de hardware
Quanto à compatibilidade de hardware o VMWARE ESX e o XEN perderam para as outras duas opções. O VMWARE ESX é um sistema de alto desempenho e possui uma HCL (Hardware Compatibility List – Lista de compatibilidade de
hardware) menos flexível que os demais (alguns discos SATA, comuns nos computadores atuais não são homologados), é inegável que o VMWARE ESX é o melhor
software de virtualização do mercado, mas para este experimento o hardware não
atenderia, então o mesmo foi descartado.
O XEN também depende de instruções especificas do processador para
conseguir virtualizar o Windows, a máquina do nosso projeto atende ao requisito,
mas na escolha decidi utilizar um software que conseguisse suportar uma gama maior de equipamentos. O objetivo desta escolha foi para que este trabalho pudesse
oferecer uma utilização mais ampla por parte de terceiros.
Neste quesito o MS Virtual Server e o VMWare Server atendem perfeitamente.
4.1.2.4 Suporte aos sistemas operacionais guest
O XEN só consegue virtualizar servidores com sistema operacional Windows se o processador do Servidor Host possuir suporte para a virtualização e no
caso do Linux e do FreeBSD se faz necessário utilizar um Kernel19 diferente. O
hardware do experimento possui as características necessárias, mas no âmbito geral isto deixou o XEN menos flexível que o VMWARE Server e o Microsoft Virtual
Server. Todos conseguem virtualizar os principais sistemas operacionais, feita uma
19
O Kernel de um sistema operacional é entendido como o núcleo deste ou, numa tradução literal,
cerne. Ele representa a camada de software mais próxima do hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo
42
ressalva ao XEN, que depende do processador para Windows ou do Kernel modificado para Linux.
4.1.2.5 Disponibilidade de instalação no Windows ou Linux
Quanto à disponibilidade de instalação tanto em Windows quanto em
Linux, o XEN possui instalação apenas para Linux (existe uma a instalação para
Linux, mas é uma versão Linux otimizada que já instala o XEN). O Microsoft Virtual
Server funciona apenas para Windows. A versão ESXi do VMWARE tem seu próprio
sistema customizado e a versão Server é o único dos softwares avaliados que possui versão tanto para Windows quanto para Linux. Isto é importante, pois o conhecimento da equipe de informática, que irá implantar um sistema de virtualização, deixa
de ser um fator comprometedor para o projeto.
4.1.2.6 Resumo
Na Tabela 4 sintetizei a análise feita dos sistemas de virtualização.
Tabela 4: Fatores de decisão para escolha do software e virtualização
Fabricante
Reconhecido
Custo
Citrix XEN
√
Gratuito
MS Virtual Server
VMWare ESXi
VMWare Server
√
√
√
Gratuito
Gratuito
Gratuito
Nome
Compatibilidade Sistema Operacional
Hard/Soft
Host
Linux e
Restrições
Sistema Próprio
√
Apenas Windows
Restrições
Sistema Próprio
√
Windows e Linux
43
Dados os fatores apresentados, minha opção foi pelo VMWARE Server,
pois atende a todas as características necessárias: fabricado pela VMWARE (número um em virtualização), gratuito, boa compatibilidade de hardware e software e
pode ser instalado tanto no Windows quanto no Linux.
O software pode ser baixado no site do fabricante [23] e, após um registro, você receberá a chave de ativação do software por e-mail. A instalação é simples, com manual disponível no site do VMWARE [24].
4.2
INSTALAÇÃO E CONFIGURAÇÃO DO SOFTWARE
Para a instalação foi necessário alterar as configurações do Host e do
VMWARE Server.
Na máquina Host foram desabilitados os serviços de TCP/IP 20 nas duas
placas de rede, isto serve para evitar que algum trafego de rede faça um bypass21
em nossa DMZ. O tráfego do trabalho requer que os pacotes, que passem pelo servidor, sejam inspecionados pelos dois firewalls, presentes na nossa DMZ. Caso o
TCP/IP estivesse habilitado no servidor Host, teria o risco de que este tráfego passasse somente através do Host. A configuração efetuada é uma precaução e pode,
até mesmo, ser considerada como uma medida de segurança.
No VMWARE precisei configurar as redes virtuais. Isto se deve ao fato de
que quando associamos uma placa de rede virtual a uma máquina guest ela pode
ser configurada de três formas diferentes: Bridge22, NAT23 e Host-only24, nos interessam a Bridge e a Host-only, pois a configuração NAT depende do TCP/IP habilitado
20
TCP/IP é um conjunto de protocolos de comunicação entre computadores em rede. Seu nome vem
dos dois protocolos mais importantes do conjunto: o TCP (Transmission Control Protocol - Protocolo
de Controle de Transmissão) e o IP (Internet Protocol - Protocolo de Interconexão).
21
Bypass em inglês quer dizer "desvio", onde em um sistema você consegue ser alimentado por ca -
minhos diferentes.
44
no Host (este fora desabilitado anteriormente). No caso de Bridge a placa virtual fica
associada a uma placa física, é como se a placa física ganhasse uma nova porta
acessível somente através da guest, isto é, se transforma em um switch25, se por
exemplo, à placa física está ligada a uma rede 10.0.0.0/8 a placa virtual também terá
acesso à mesma, independente da máquina host. No caso da configuração Hostonly a máquina guest tem acesso apenas às máquinas guest dentro da mesma rede
virtual sem qualquer contato com o mundo exterior.
Figura 4-4: Redes virtuais VMnet0, VMnet1 e VMnet2.
Na Figura 4.1 temos as três redes utilizadas neste trabalho:
22
Bridge (Ponte) configuração em que a máquina virtual tem acesso às redes externas através da
placa de rede da máquina host.
23
NAT (Network Address Translation), sistema que possibilita uma rede privada ter acesso a uma
rede pública.
24
Host-only (somente host) neste modo de configuração a placa de rede virtual tem acesso limitado
ao host.
25
Switch é um dispositivo que tem a função de interligar os computadores de uma rede local.
45
•
VMnet0 em modo bridge ligada à placa de rede física que é conectada a Internet;
•
VMnet1 no modo Host-only que não tem acesso ao mundo externo.
•
VMnet2 em modo bridge ligada à placa de rede física conectada a rede local;
Na Figura 4.2 apresentamos a tela de configuração do software.
Figura 4-5: Tela de configuração das redes virtuais.
Repare ainda na Figura 4.2, que VMnet0, VMnet2 estão ligadas às placas
físicas do Host, NVIDIA nForce e VIA VT6105 Rhine lll respectivamente.
46
4.3
SERVIDORES GUEST
Neste trabalho utilizei cinco servidores guest, cada um executando um
sistema operacional diferente bem como disponibilizando deferentes serviços. Isto
teve o objetivo de demonstrar a flexibilidade dos sistemas de virtualização.
Para uma identificação rápida das máquinas guest, foram atribuídos nomes padrão para as mesmas, sendo que cada nome é formado por “SV” para indicar
que é um servidor. Para a função primordial de cada um juntei ao nome as siglas
FW para firewall, DB para Banco de Dados, WEB para serviços de Internet e MAIL
para serviços de correio eletrônico. Além destas siglas adicionei uma numeração.
Em todas as máquinas virtuais fiz duas customizações nas suas configurações, a primeira diz respeito ao usuário que executa o processo da máquina virtual,
para isso na opção “Settings”, abra “Options”, opção “Startup/Shutdown” foi configurada para utilizar “Local system account”, ao invés da opção padrão “User that
powers on the virtual machine”, com a opção padrão as máquinas virtuais desligam
caso o usuário, que ligar a máquina virtual, não mantenha uma sessão aberta na
máquina host. Já a segunda customização foi efetuada no arquivo “.vmx” 26 de cada
máquina virtual, editamos este arquivo adicionando ao final a opção “Ethernet0.virtualDev = "e1000"”. Isto significa que a máquina virtual irá emular uma placa de rede
Intel ao invés da AMD (que não é compatível com alguns sistemas operacionais),
caso a máquina virtual tenha mais de uma placa de rede devemos adicionar uma linha para cada placa, alterando somente a numeração do atributo. Por exemplo, se
forem duas placas, além de adicionar o atributo que já citado, também dever ser incluído “Ethernet1.virtualDev ="e1000"”, repare que a outra era Ethernet0 – zero.
A seguir veremos informações sobre a montagem de cada uma das máquinas guest, as informações compreendem:
26
.vmx é a extensão que identifica arquivos com a configuração das máquinas virtuais do VMWARE,
este tipo de arquivo guarda informações como quantidade de memória que a guest utiliza, caminho
dos discos virtuais, etc.
47
•
Sistema operacional utilizado: observe que a instalação dos sistemas operacionais seguiu uma linha padrão, isto é, sem alterar as
configurações sugeridas pelos programas de instalação dos mesmos. Em um ambiente de produção real, que normalmente não utilizam tantos sistemas operacionais quanto neste projeto, devemos
observar as melhores práticas de instalação e configuração para
obtenção de desempenho e segurança.
•
Recursos virtuais: são os recursos disponibilizados pelo VMWARE
Server, tais como: discos, placas de rede, etc.
•
Configurações de rede: são os endereços IP das placas de rede,
gateways27 e rotas28 necessárias.
•
Serviços: são os sistemas instalados no servidor, é a razão do servidor existir, não será dada ênfase nos detalhes destes serviços,
pois alguns destes, como o SMTP, merecem um trabalho à parte.
4.3.1 SVFW01
Este servidor é o responsável por controlar o tráfego de comunicação entre o ambiente interno (DMZ e LAN) e o ambiente externo (Internet), como destacado na Figura 4-3.
27
Gateway equipamento responsável por transferir dados de uma rede para outra.
28
Rota é um par definido de endereços: um “destino” e um “gateway”. Para uma máquina ser capaz
de encontrar outra através de uma rede, é necessário um mecanismo que descreva como ir de uma
para a outra. Isto é chamado roteamento.
48
Figura 4-6 Diagrama físico da rede com o SVFW01 em destaque
4.3.1.1 SVFW01: Sistema operacional
Foi utilizado o sistema operacional FreeBSD 7 (ver Anexo B), que é um
sistema operacional robusto, como apresentado em [7], e é adequado ao tipo de ser viço que estará ativo nele, ou seja, o firewall.
O sistema operacional foi instalado com as opções Standard, que é um
tipo de instalação que inclui apenas os pacotes básicos para o seu funcionamento.
49
4.3.1.2 SVFW01: Recursos virtuais
Os seguintes recursos foram disponibilizados na máquina virtual:
•
256 Mb de memória RAM, o FreeBSD é um sistema que necessita de
pouca memória, durante os experimentos ele não chegou a utilizar 150
Mb. Vale lembrar utilizei um usuário no sistema, portanto 256Mb é um
bom começo para um ambiente com vários usuários.
•
Dois discos virtuais, um para os arquivos do sistema e dos usuários e
outro exclusivo para swap29. O primeiro foi definido com 4 Gb e o segundo com 600 Mb (mais de duas vezes o tamanho da memória RAM,
o que é o indicado para swap).
•
Duas placas de redes, uma para conexão com a Internet (Vmnet0) e
outra conectada a DMZ (Vmnet1).
•
Um processador.
•
Um drive de DVD, necessário para instalação do SO.
4.3.1.3 SVFW01: Configurações de rede
Este servidor tem uma placa ligada a VMNet0 (Internet) e outra VMNet1
(DMZ), ilustradas na Figura 4-3, com as seguintes configurações:
29
Swap ou arquivo de troca, é um espaço utilizado em disco para gravar dados da memória RAM
quando esta já não tem mais espaço, quanto menos utilizada melhor pois a velocidade de gravação e
leitura em disco é menor do que o acesso a RAM.
50
•
Placa um, identificada pelo sistema operacional como em0 está ligada
a Internet via VMNet0, suas configurações de rede estarão no modo
automático.
•
Placa dois, identificada como em1, está ligada a DMZ via VMNet1 e
seu endereço IP é 192.168.0.100 com máscara 255.255.255.0.
No FreeBSD, a configuração de rede pode ser feita pelo programa sysinstall ou alterando o arquivo /etc/rc.conf (ver Anexo C).
Por padrão, o computador conhece as rotas para as redes das placas conectadas a ele, como este computador não está conectado a rede LAN então foi necessário adicionar a rota para a rede 10.0.0.0/8 utilizando como gateway o endereço
192.168.0.200 do servidor SVFW02. Esta configuração foi feita no arquivo /etc/rc.conf (ver anexo C), no qual introduzi as linhas abaixo:
static_routes = “rlan”
route_rlan = “-net 10.0.0./8 192.168.0.200”
4.3.1.4 SVFW01: Serviços
Os seguintes serviços estão foram habilitados no SVFW01:
•
PF: é o firewall, principal função deste servidor. Este serviço será mais
detalhado na seção de segurança deste capítulo.
•
Gateway: este servidor encaminhará pacotes entre os ambientes interno e externo.
•
FTP-Proxy: serviço necessário para publicar o serviço de FTP.
•
SSH: serviço que disponibiliza acesso remoto ao servidor.
51
•
PPP: serviço que efetua a discagem para Internet através de um modem ADSL30, configurado via o arquivo /etc/ppp/ppp.conf (ver anexo
C).
Todos estes serviços já estavam instalados no FreeBSD sendo necessária apenas a sua habilitação no arquivo /etc/rc.conf (ver anexo C).
4.3.2 SVFW02
Este servidor é o responsável por controlar o tráfego de comunicação entre a DMZ e a LAN, conforme destaquei na Figura 4-4.
Figura 4-7 Diagrama físico da rede com o SVFW02 em destaque
30
ADSL (Assymmetric Digital Subscriber Line) tecnologia que permite a transferência digital de dados
em alta velocidade por meio de linhas telefônicas comuns.
52
4.3.2.1 SVFW02: Sistema operacional
O sistema operacional utilizado foi o CentOS 5 (ver Anexo B), escolhido
por ser tratar de uma distribuição derivada do Red Hat Enterprise, que é uma distribuição Linux voltada para o mundo corporativo.
4.3.2.2 SVFW02: Recursos virtuais
Os seguintes recursos foram disponibilizados para a máquina virtual:
•
256 Mb de memória RAM, assim como o FreeBSD, também não utiliza
muita memória.
•
Dois discos virtuais, um para os arquivos de sistema e dos usuários e
um exclusivo para swap, o primeiro com 8 Gb e o segundo com 1 Gb.
•
Duas placas de redes, uma para conexão com a DMZ (Vmnet1) e outra conectada a LAN (Vmnet2).
•
Um processador.
•
Um drive de DVD, necessário para instalação do SO.
4.3.2.3 SVFW02: Configurações de rede
Este servidor tem uma placa ligada a VMNet0 (Internet) e outra VMNet1
(DMZ), conforme demonstrado na Figura 4-4, com as seguintes configurações:
•
Placa um: identificada pelo sistema operacional como eth0 será ligada
a DMZ via VMNet1, e seu endereço IP é 192.168.0.200 com máscara
255.255.255.0 e DNS 192.168.0.10 (SVMAIL01).
53
•
Placa dois, identificada como eth1, está ligada a LAN via VMNet2 e
seu endereço IP é 10.0.0.1 com máscara 255.0.0.0 e DNS
192.168.0.10 (SVMAIL01)
No CentOS, a configuração de rede pode ser feita pelo programa systemconfig-network.
O SVFW02 conhece as redes DMZ e LAN, para que ele tenha acesso a
Internet foi configurado via system-config-network o default gateway para
192.168.0.100 que é o endereço do SVFW01.
4.3.2.4 SVFW02: Serviços
Os seguintes serviços foram instalados ou habilitados no SVFW02:
•
Iptables v1.3.5: é o serviço de Firewall, maiores detalhes de sua configuração serão visto na seção de segurança deste capítulo, ele foi habilitado utilizando o programa ntsysv.
•
Gateway: este servidor encaminhará pacotes entre as redes DMZ e
LAN, este serviço foi habilitado configurando o arquivo /etc/sysctl.conf,
foi alterado o valor do atributo “net.ipv4.ip_forward” para “1” (Ferreira,
Rubens, 2003) [5].
•
SSH: serviço que disponibiliza acesso remoto ao servidor.
54
4.3.3 SVMAIL01
Este contempla os serviços de e-mail e resolução de nomes. Está localizado na DMZ, conforme destacado na Figura 4-5.
Figura 4-8 Diagrama físico da rede com o SVMAIL01 em destaque
4.3.3.1 SVMAIL01: Sistema operacional
Foi instalado o Windows Server 2003 Standard (ver Anexo B), sistema
operacional da Microsoft. Utilizamos as opções padrão para a instalação.
55
4.3.3.2
SVMAIL01: Recursos virtuais
Os seguintes recursos foram disponibilizados para a máquina virtual:
•
Com 512 Mb de memória RAM, que corresponde ao dobro da memória adicionada às máquinas anteriores já que este sistema operacional
utiliza interface gráfica.
•
Um disco virtual com 10 Gb, já que o sistema operacional ocupa pouco mais de 3 Gb, mas por ter o serviço de e-mail ele pode precisar de
mais espaço em disco necessário para as caixas de correio dos usuários.
•
Uma placa de rede, para se conectar a DMZ (Vmnet1).
•
Um processador.
•
Um drive de DVD, necessário para instalação do SO.
4.3.3.3 SVMAIL01: Configurações de rede
Este servidor tem apenas uma placa ligada a VMNet1 (DMZ), ela tem o IP
192.168.0.10, máscara 255.255.255.0, default gateway 192.168.0.100 e DNS
192.168.0.10 (SVMAIL01). Na Figura 4-5 represento as conexões do servidor SVMAIL01.
No Windows, a configuração de rede pode ser feita através da interface
gráfica, acessando ”Network Connections” do painel de controle ou utilizando o comando netsh.
56
O SVMAIL01 conhece apenas a rede DMZ e tem acesso à Internet por ter
o default gateway apontando para o SVFW01, foi necessário adicionar uma rota estática para a LAN, isto foi feito com o comando “route add 10.0.0.0 mask
255.255.255.0 192.168.0.200 –p”, isto significa que para se comunicar com a rede
10.0.0.0/8 (LAN) os pacotes de rede devem ser encaminhados para o SVFW02
(192.168.0.200).
4.3.3.4 SVMAIL01: Serviços
Os seguintes serviços foram habilitados ou instalados no SVMAIL01:
•
DNS (Domain Name System): é o serviço responsável por traduzir nomes em endereços IP (e vice-versa) de um determinado domínio Internet (Ferreira, Rubens, 2003). É um serviço nativo do Windows, é adicionado utilizando o programa “Add/Remove Programs” no painel de
controle do Windows. Foram feitas as seguintes configurações:
o Criada uma zona DNS chamada cederj.tcc.
o Criado os registros dos cinco servidores que fazem parte do trabalho.
o Configurado o DNS 200.184.23.6 (Intelig) como DNS Forward31.
•
Mercury/32 [8]: disponibiliza os serviços de SMTP (envio de e-mail) e
POP3 (recebimento de e-mail), escolhido por ser simples e ter as funcionalidades mínimas requeridas para testes do ambiente. Não recomendamos para um ambiente de produção, para estes seria uma melhor opção utilizar os softwares comerciais Microsoft Exchange ou Lo-
31
DNS Forward, quando um servidor DNS encaminha uma consulta para outro servidor DNS pois ele
não possui o registro solicitado.
57
tus Notes (Para Windows) ou, mesmo, os softwares gratuitos como
Postfix ou Sendmail (Para Linux).
•
Remote Desktop: serviço que disponibiliza acesso remoto ao servidor
e foi utilizado para realizar as instalações dos serviços citados.
4.3.4 SVWEB01
Servidor com HTTP e FTP. Localizado na rede DMZ, conforme destacado
na Figura 4-6.
Figura 4-9 Diagrama físico da rede com o SVWEB01 em destaque
4.3.4.1 SVWEB01: Sistema operacional
Utilizamos o sistema operacional Ubuntu 8 (ver Anexo B), na sua instalação, que é a distribuição Linux mais popular atualmente.
58
4.3.4.2 SVWEB01: Recursos virtuais
Os seguintes recursos foram disponibilizados para a máquina virtual:
•
256 Mb de memória RAM, não foi instalada a interface gráfica o que
economiza no uso de RAM.
•
Um disco virtual com 8 Gb, os aplicativos Web (http) não ocupam muito espaço (100 Mb são mais que suficientes), neste caso a maior preocupação reside na quantidade de arquivos que serão colocados no
FTP, mas em nosso caso alocamos apenas o necessário para as avaliações.
•
Uma placa de rede, para se conectar a DMZ (Vmnet1).
•
Um processador.
•
Um drive de DVD, necessário para instalação do SO.
4.3.4.3 SVWEB01: Configurações de rede
Na Figura 4-9 podemos identificar as conexões do servidor SVWEB01,
ele tem apenas a placa virtual identificada com eth0 ligada a DMZ através da Vmnet1, a placa eth0 tem o IP 192.168.0.20, máscara 255.255.255.0, default gateway
192.168.0.100 e DNS 192.168.0.10 (SVMAIL01).
As configurações de rede podem ser alteradas no arquivo /etc/network/interfaces (ver anexo C).
O SVWEB01 conhece apenas a rede DMZ e tem acesso à Internet por ter
o default gateway apontando para o SVFW01, foi necessário adicionar uma rota estática para a LAN, isto foi feito adicionando a seguinte opção no arquivo
/etc/network/interfaces:
59
post-up route add -net 10.0.0.0/8 gw 192.168.0.200
4.3.4.4 SVWEB01: Serviços
Os seguintes serviços foram habilitados e instalados no SVWEB01:
•
VSFTP: programa que implementa o serviço de FTP (File Transfer
Protocol), foi instalado utilizando os comandos “apt-get update” (para
atualizar a lista de versões dos programas) e “apt-get install vsftpd”
(para instalar o vsftp).
•
APACHE: é o mais utilizado servidor WEB (serviço HTTP) do mundo,
já vem instalado e nada foi alterado em sua configuração padrão.
•
SSH: serviço que disponibiliza acesso remoto ao servidor.
Estes serviços não tiveram suas configurações padrão alteradas, pois somente foram utilizados nas avaliações de acesso.
60
4.3.5 SVDB01
Servidor de banco de dados. Localizado na DMZ, conforme destacado na
Figura 4-7.
Figura 4-10 Diagrama físico da rede com o SVWEB01 em destaque
4.3.5.1 SVDB01: Sistema operacional
Utilizamos o sistema operacional OpenSolaris 2008.05 (ver Anexo B), sistema da SUN utilizado principalmente por desenvolvedores. O CD de instalação é
um LiveCD32, que oferece a opção de instalar o sistema no disco.
32
LiveCD é um CD ou DVD que contém um sistema operacional que não precisa ser instalado no dis-
co rígido, um exemplo são os DVDs do curso de Tecnologia em Sistemas da Computação do CE DERJ.
61
4.3.5.2 SVDB01: Recursos virtuais
Os seguintes recursos foram disponibilizados para a máquina virtual:
•
1024 Mb de memória RAM, sistema utiliza interface gráfica, sem nenhum serviço adicional já consome mais de 512 Mb.
•
Definimos um disco virtual com 8 Gb, mas dependendo do tamanho da
base de dados, pode ser necessário mais espaço. Cabe ressaltar que
em um ambiente de produção recomendo um disco exclusivo para o
banco de dados.
•
Uma placa de rede, para se conectar a DMZ (Vmnet1).
•
Um processador.
•
Um drive de DVD, necessário para instalação do SO.
4.3.5.3 SVDB01: Configurações de rede
Este servidor terá apenas uma placa ligada a VMNet1 (DMZ), é identificada pelo sistema operacional como e1000g0 (como pode ser visto na Figura 4-7), ele
tem o IP 192.168.0.30, máscara 255.255.255.0, default gateway 192.168.0.100 e
DNS 192.168.0.10 (SVMAIL01).
Para configurar a rede devemos fazer os seguintes passos:
1. Abrir um terminal e executar o comando “su” para habilitar o acesso
administrativo;
2. Executar “svcadm enable physical:default“ para habilitar a placa de
rede;
3. Executar “svcadm disable physical:nwam” para desabilitar a configuração automática da placa de rede.
62
4. Configurar a placa com o programa “Network” no menu “System->Administration”.
O SVDB01 conhece apenas a rede DMZ e tem acesso à Internet por ter o
default gateway apontando para o SVFW01, foi necessário adicionar uma rota estática para a LAN, isto foi feito executando o seguinte comando:
route –p add 10.0.0.0 192.168.0.200
4.3.5.4 SVDB01: Serviços
O SVDB01 tem os seguintes serviços:
•
MYSQL 5: Serviço gerenciador de banco de dados muito popular, instalado através do programa “Package Manager”, após habilitar o serviço o programa fez o download do MySql e o instalou.
•
VNC: Serviço de acesso remoto disponível para várias plataformas, já
vem instalado no OpenSolaris sendo necessária apenas sua habilitação no menu “System -> Preferences -> Remote Desktop”.
63
4.4
SEGURANÇA
Nesta seção veremos como foram configurados os dois firewalls do trabalho, que dividi em duas subseções (firewall externo e interno) e em cada uma explanarei sobre a função, premissas, uma breve introdução ao software do firewall e, finalmente, a implantação.
4.4.1 Firewall externo (SVFW01)
O Firewall configurado no SVFW01 é o responsável por controlar o tráfego entre a Internet (ambiente externo) e a DMZ (ambiente interno) e vice-versa, conforme destacado na Figura 4-8. Através dele são providos serviços para usuários externos (Internet) bem como oferecer uma barreira para impedir acesso a protocolos
não autorizados aos usuários internos.
Figura 4-11 - Diagrama físico da rede com o SVFW01 em destaque
64
4.4.1.1 Premissas (Regras)
As regras criadas no firewall devem atender as seguintes expectativas:
1. Todo o tráfego que tenha origem na Internet é bloqueado, com exceção aos serviços disponibilizados pela DMZ, através do redirecionamento das portas. Os serviços oferecidos serão HTTP, FTP,
SMTP e POP3.
2. Será permitido o tráfego com origem na LAN e com destino para a
Internet dos seguintes protocolos: HTTP, HTTPS e FTP.
3. O servidor SVMAIL poderá consultar servidores de DNS externos e
enviar e-mail para outros servidores SMTP.
4. A estação do administrador localizado na LAN poderá acessar o
servidor SVFW01 via ssh e também poderá utilizar testes que utilizem o protocolo ICMP (por exemplo, ping33).
5. Serão guardados, através de um arquivo, todos os acessos negados e acessos via SSH ao firewall.
33
Ping é um comando usado pelo protocolo ICMP para testar a conectividade entre equipamentos.
65
Na Erro: Origem da referência não encontrada estão listadas as regras
que foram definidas para o SVFW01.
Tabela 5 - Regras do firewall SVFW01
Destino
Origem
Servidor /
Rede
Protocolo
INTERNET
DMZ
TCP
SVMAIL01
INTERNET
UDP
TCP
LAN
INTERNET
TCP
DMZ
TCP
ICMP
Estação do
Admin
Redirecionar para
Porta
Servidor
IP
80 (HTTP)
21 (FTP)
25 (SMTP)
110 (POP3)
53 (DNS)
25 (SMTP)
80 (HTTP)
443
(HTTPS)
21(FTP)
22 (SSH)
SVWEB01
SVWEB01
SVMAIL01
SVMAIL01
192.168.0.20
192.168.0.20
192.168.0.10
192.168.0.10
4.4.1.2 Software utilizado
O software de firewall utilizado no servidor SVFW01 é o PF (Packet Filter),
oriundo do sistema operacional OpenBSD, é utilizado para fazer NAT e filtragem de
pacotes, desenvolvido por Daniel Hartmeier, e hoje é mantido por ele e a equipe de
desenvolvimento do OpenBSD.
O PF já é instalado automaticamente no FreeBSD sendo necessária apenas sua habilitação no arquivo /etc/rc.conf (ver anexo C).
As configurações do PF são feitas no arquivo /etc/pf.conf, conforme informado no site do projeto [17]. Este arquivo está dividido em sete partes, listadas na
seqüência:
66
1. Macros: São variáveis definidas pelo usuário, que podem armazenar endereços IP, nomes de interface, etc.
2. Tabelas: Uma estrutura usada para armazenar listas de endereços IP.
3. Opções: Várias opções de controle do funcionamento do PF.
4. Scrub: Reprocessamento de pacotes para normalização 34 e desfragmentação35.
5. Filas: Fornece controle de banda e priorização de pacotes.
6. Tradução: Controla NAT (Tradução do Endereço de Rede) e redirecionamentos dos pacotes.
7. Regras de Filtragem: Permite selecionar pacotes para filtragem ou bloqueálos conforme chegam nas interfaces. Quando um pacote é verificado pelo PF
todas as regras são verificadas a última que coincidir com o pacote é a regra
que será aplicada (a exceção é quando a regra contém a opção quick que interrompe imediatamente o processamento do pacote fazendo valer esta última que foi processada).
Com exceção das macros e tabelas, cada seção deve aparecer nesta ordem no arquivo de configuração, contudo nem todas as seções precisam existir para
determinadas aplicações. Linhas em branco são ignoradas, e linhas iniciadas com o
caractere “#” são tratadas como comentários [17].
O PF oferece o utilitário de linha de comando pfctl, algumas de suas opções podem ser vistas no Anexo C.
34
Normalização de pacotes, é o processo que inspeciona os pacotes para que não haja ambigüida -
des na interpretação pelo destino final do pacote.
35
Desfragmentação de pacotes, remontagem de pacotes fragmentados, protege alguns sistemas
operacionais de algumas formas de ataque, e descarta pacotes TCP que possuam combinações de
flag (ou opções) inválidas
67
4.4.1.3 Implantação
A implantação do firewall externo teve os seguintes passos: configuração
da inicialização do sistema operacional, configuração de conexão com a Internet,
configuração do firewall e processo de inicialização do firewall. Veremos agora alguns dos detalhes de cada um dos passos.
4.4.1.3.1 Inicialização do sistema operacional
O sistema FreeBSD possui o arquivo /etc/rc.conf, ver no Anexo 3, no qual
são definidas as configurações, tais como as do IP e dos serviços que serão iniciados junto com o sistema operacional. No que diz respeito ao firewall, as configurações mais importantes foram a habilitação na inicialização do PF (pf_enable=”YES”),
do
arquivo
de
Log
(pflog_enable=”YES”)
e,
por
fim,
do
gateway
(gateway_enable=”YES”), que é o serviço que faz o encaminhamento dos pacotes
entre as interfaces [6].
68
4.4.1.3.2 Conexão com a Internet
Existem várias formas de se conectar a Internet: discagem (dialup), links
dedicados, celulares, ADSL, cabo, etc. Neste trabalho utilizai um modem ADSL para
conexão com a Internet através da operadora Oi. Na Figura 4-12 - Diagrama de conexão com a Internet destaco os componentes envolvidos no processo de conexão
com a Internet.
Figura 4-12 - Diagrama de conexão com a Internet
Iniciamos pelas conexões físicas, neste caso o servidor host (SVVM01)
está conectado diretamente ao modem ADSL (marca Thomson modelo ST510v6)
através de sua interface on-board, via um cabo de rede, e o modem se conecta a Internet utilizando uma linha telefônica.
Para iniciar a conexão precisamos configurar um cliente PPP 36 no servidor
SVFW01 (que está conectado ao modem, pois está utilizando a interface Vmnet0
como sua porta de saída para o mundo exterior). A configuração é feita no arquivo
36
PPP (Point-to-Point Protocol) é um protocolo para transmissão de pacotes através de linhas seriais.
O protocolo PPP suporta linhas síncronas e assíncronas. Normalmente, ele tem sido utilizado para a
transmissão de pacotes IP na Internet, em seu primeiro “salto”, ou seja, até o roteador de borda.
69
/etc/ppp/ppp.conf (ver anexo C), que contém as informações do usuário, senha e outras informações técnicas necessárias para acessar o serviço da Oi [19].
Depois de configurado, basta digitar o comando “ppp –b default” em um
terminal do servidor e, se tudo correr bem, será exibida a mensagem “PPP enabled”,
isto significa que o servidor SVFW01 já está conectado a Internet. Durante o processo de conexão é criada uma interface da rede virtual chamada tun0, toda entrada e
saída de dados entre o SVFW01 e a Internet passa por esta interface, que utiliza a
interface em0 de forma trasparente para se comunicar com o modem ADSL.
4.4.1.3.3 Configuração das regras do firewall
As regras do firewall são lidas pelo software PF no arquivo /etc/pf.conf, listado na Tabela 6, que contém todas as linhas do arquivo. A seguir comento as configurações feitas no arquivo /etc/pf.conf.
Tabela 6 - Configuração do PF (/etc/pf.conf)
L Código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# MACROS
ext_if = "tun0"
int_if = "em1"
rede_dmz = $int_if:network
rede_lan = "10.0.0.0/8"
est_admin = "10.0.0.10"
client_out = "{ http, https, ftp, ftp-data }"
proxy = "127.0.0.1" # ftp proxy IP
proxyport = "8021" # ftp proxy port
proxy2 = "127.0.0.1"
proxyport2 = "2121"
icmp_types = { echorep, echoreq, timex, unreach }
web_server =
dns_server =
ftp_server =
pop3_server=
smtp_server=
"192.168.0.20"
"192.168.0.10"
"192.168.0.20"
"192.168.0.10"
"192.168.0.10"
# TABLES
# OPTIONS
set loginterface $ext_if
set block-policy return
set skip on lo
70
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# SCRUB - Mata pacotes fragmentados que chegam a interface externa
scrub in on $ext_if
# QUEUING
# TRANSLATION
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
nat on $ext_if from $rede_lan to any -> $ext_if
nat on $ext_if from $rede_dmz to any -> $ext_if
rdr on $ext_if proto tcp from any to $ext_if port www -> $web_server port www
rdr on $ext_if proto tcp from any to $ext_if port smtp -> $smtp_server port smtp
rdr on $ext_if proto tcp from any to $ext_if port pop3 -> $pop3_server port pop3
# - Proxy ftp
rdr pass on $int_if proto tcp from any to any port ftp -> $proxy port $proxyport
rdr pass on $ext_if proto tcp from any to any port ftp -> $proxy2 port $proxyport2
# FILTERS
block in log
pass out keep state
anchor "ftp-proxy/*"
pass
pass
pass
pass
pass
in
in
in
in
in
on
on
on
on
on
$ext_if
$ext_if
$ext_if
$ext_if
$ext_if
inet
inet
inet
inet
inet
proto
proto
proto
proto
proto
tcp
tcp
tcp
tcp
tcp
from
from
from
from
from
any
any
any
any
any
to
to
to
to
to
$web_server port www flags S/SA synproxy state
$smtp_server port smtp flags S/SA keep state
$pop3_server port pop3 flags S/SA keep state
$ftp_server port ftp flags S/SA keep state
$ftp_server port ftp-data flags S/SA keep state
pass in on $int_if inet proto udp from $dns_server to any port 53
pass in quick on $int_if from $rede_dmz to $rede_lan
# - Regras para a estacao do Admin
pass in quick on $int_if inet proto icmp from $est_admin to any icmp-type $icmp_types
pass in log on $int_if inet proto tcp from $est_admin to any port ssh label "SSH - Admin"
# - Regras de saidas para os clientes
pass inet proto tcp from $rede_lan to
pass inet proto tcp from $pop3_server
pass inet proto tcp from $smtp_server
da rede
any port $client_out
to any port pop3
to any port smtp
# - Saida do Proxy FTP
pass out proto tcp from $proxy to any port 21 keep state
Entre as linhas 1 e 19 temos as “macros”, que são variáveis que nos ajudam a simplificar a configuração do arquivo, por exemplo, a macro “est_admin” armazena o IP da estação do administrador, ela é referenciada duas vezes no código
(mas poderiam ser mais). Se, por ventura, o IP da estação do administrador for alterado precisaríamos alterar apenas o valor desta variável ao invés de procurar em
todo o arquivo os locais onde é feita referência ao IP da estação. Agora descreverei
cada uma das macros:
•
ext_if: representa a interface ligada a Internet que é a tun0.
•
int_if: é a interface interna que está ligada a DMZ que é a em1.
71
•
rede_dmz: utilizando a variável “int_if” com a opção “:network”, recuperamos
para está variável o valor “192.168.0.0/24”, que é o endereço da rede DMZ.
•
rede_lan: é o endereço da nossa rede LAN (10.0.0.0/8).
•
est_admin: endereço IP da estação utilizada pelo administrador da rede.
•
client_out: representa os protocolos que serão permitidos sua saída para Internet com origem na LAN, repare que está macro funciona como um vetor
pois armazena vários valores, sendo http, https, ftp e ftp-data. Para utilizar
uma macro como um vetor deve-se atribuir os valores entre os caracteres “{“
e “}”.
•
proxy: é o endereço do proxy FTP que funciona no SVFW01, no caso o endereço 127.0.0.1 que é um endereço utilizado como loopback37.
•
proxyport: é a porta do proxy FTP que funciona no SVFW01, no caso a porta
8021.
•
proxy2: é o endereço do segundo proxy FTP que funciona no SVFW01, no
caso o endereço 127.0.0.1 que é um endereço utilizado como loopback.
•
proxyport2: é a porta do segundo proxy FTP que funciona no SVFW01, no
caso a porta 2121.
•
icmp_types: macro que contém os tipos de ICMP que serão permitidos, no
nosso caso: echorep, echoreq, timex e unreach.
•
web_server:
contém
o
endereço
do
servidor
HTTP
SVWEB01
(192.168.0.20).
•
dns_server: contém o endereço do servidor DNS SVMAIL01 (192.168.0.10).
•
ftp_server: contém o endereço do servidor de FTP SVWEB01(192.168.0.20).
O servidor de HTTP e FTP são os mesmos, porque não utilizar a mesma macro? Utilizar macros diferentes para protocolos diferentes que estão no mesmo servidor cria flexibilidade na manutenção do firewall, caso no futuro desmembrarmos o servidor de FTP do servidor HTTP precisaríamos apenas alterar o endereço de uma das macros ao invés de conferir todo o script.
•
37
pop3_server: endereço do servidor de POP3 SVMAIL01 (192.168.0.10).
Loopback é um canal de comunicação com apenas um ponto final. Qualquer mensagem transmitida
por meio de tal canal é imediatamente recebida pelo mesmo canal, em redes IP o endereço 127.0.0.1
é utilizado como endereço de loopback segundo a RFC 2606.
72
•
smtp_server: endereço do servidor de SMTP SVMAIL01 (192,168.0.10).
Uma observação a ser feita é que para recuperar os valores das macros
deve-se utilizar o caractere “$” antes do nome da macro, como veremos em várias
exemplos a seguir.
Nas linhas 25 a 28 estão as opções do PF, sendo:
•
set logininterface: define a interface que o PF recolherá estatísticas (como
por exemplo, quantidade de bytes entrando e saindo), foi definida a interface
externa em0 representada pela macro “$ext_if”.
•
set block-policy: a mais interessante, foi configurada como “return”, isto faz
com que certos tipos de pacotes bloqueados retornem ao remetente com
uma mensagem avisando sobre o bloqueio, poderia ter sido configurado
como “block” assim nenhuma mensagem seria enviada, o pacote seria apenas descartado.
•
set skip on: define que determinada interface não sofrerá processamentos
por parte do PF, no caso foi definida a “lo” que é o nome da interface de loopback, isto significa que pacotes gerados pelo próprio firewall não serão avaliados.
Na linha 31 é utilizado o SCRUB na interface externa, representada pela
macro “$ext_if”, isto faz com que os pacotes fragmentados (pacotes fragmentados
podem ser ataques) com origem na Internet sejam descartados.
Na seção intitulada TRANSLATION temos três partes distintas: a configuração do ftp-proxy (linhas 36-37), o NAT (linhas 39-40) e os redirecionamentos (linhas 42 a 49), estas partes estão detalhadas na seqüência:
•
Configuração do ftp-proxy: os comandos “nat-anchor “ftp-proxy/*”” e “rdr-anchor “ftp-proxy/*””, são âncoras que funcionam como chamadas as regras que
estão fora do arquivo atual, no caso estas duas linhas chamam regras que
73
são utilizadas pelo ftp-proxy (que controlam estados de conexões do ftpproxy), por exemplo.
•
NAT: faz com que os computadores da LAN e DMZ possam acessar a Internet utilizando o IP público do servidor SVFW01. Na linha 39 é feito o NAT
para a rede LAN e na 40 para a rede DMZ.
•
Redirecionamentos: faz praticamente o inverso do NAT, eles possibilitam
aos usuários externos (que estão em casa, em outra empresa, ou seja, em
um lugar qualquer da Internet) o acesso aos servidores da DMZ, mesmo que
estes (servidores da DMZ) não tenham IP público. Na linha 57 podemos descrever o comando como sendo: redirecione o tráfego da interface externa (“rdr
on $ext_if) se o protocolo for o tcp (“proto tcp”) vindo de qualquer lugar (“from
any”) para a porta 80 (“port www”) então redirecione para (“->”) o endereço do
servidor web (“web_server”) na porta 80 (“port www”). O mesmo raciocínio é
utilizado para nas linhas 58 e 59 para os protocolos SMTP e POP3 sendo redirecionados para seus devidos servidores na DMZ. Nas linhas 47 e 48 são
feitos redirecionamentos dos proxy-ftp, o da linha 47 redireciona o tráfego de
saída (é, o tráfego dos computadores da LAN que estão acessando servidores FTP que estão na Internet) para o serviço de proxy-ftp que está ativo na
porta 8021 (macro $proxyport), já a linha 48 redireciona o tráfego de entrada
(usuários da Internet acessando nosso FTP localizado na DMZ) para o segundo ftp-proxy que está ativo na porta 2121 (macro $proxyport2).
Da linha 51 em diante temos a seção “FILTERS” que diz respeito às auto-
rizações, ou seja, que tipo de pacotes podem entrar ou sair pelas interfaces do
SVFW01. No PF a última regra tem precedência sobre a primeira, ou seja, se duas
regras se contradizerem a regra que estiver por último vai prevalecer (exceto se a
primeira estiver com a opção quick, que faz com que ela regra seja comparada e se
for positiva não passa adiante).
74
Primeiro são definidos os comportamentos padrões de entrada e saída,
sendo:
•
Padrão de entrada: no caso foi definido na linha 52 bloquear o que estiver entrando (“block in log”, a opção log faz com que sempre que esta regra seja uti lizada gere um log38)
•
Padrão de saída: na linha 53 permiti o que estiver saindo (“pass out keep state”), a opção keep state serve para guardar o estado da conexão, é importante manter o estado de uma conexão que sai pelo firewall porque, normalmente, esta conexão terá um retorno e caso o firewall identifique que o pacote que
está tentando entrar veio porque foi requisitado de dentro ele deixará o pacote
entrar, isto só é possível porque o PF é um firewall stateful39.
.
Na linha 55 novamente devemos evocar a ancora do ftp-proxy para adicionar nesta seção de filtros as opções requeridas pelo ftp-proxy.
Entre as linhas 57 e 61 estão às liberações para que os pacotes vindos da
Internet possam chegar aos servidores da DMZ. Evidentemente, apenas as portas
que foram redirecionadas na seção TRANSLATION estão liberadas.
A linha 57 pode ser traduzida como: liberação para acesso (“pass”) de entrada (“in”) pela interface externa (“on $ext_if”) sendo o protocolo tcp ( “inet proto
tcp”) a partir de qualquer lugar ( “from any”) com destino ao servidor
SVWEB01(“$web_server”) pela porta 80 (“port www”). As linhas 58 a 61 utilizam o
mesmo raciocínio para os protocolos SMTP, POP3, FTP e FTP-DATA.
38
Log são eventos importantes que são guardados em arquivos ou banco de dados para posterior
análise ou evidência de modificações no sistema. Por exemplo no sistema operacional Windows é gerado um Log quando o usuário ou um sistema pára ou inicia ou service, o log contém o nome do service, hora que ocorreu a alteração e o nome do usuário que executou a ação.
39
Stateful inspection é a habilidate do PF em registrar o estado, ou progresso de uma conexão de
rede. Armazenando informações sobre o estado de cada conexão numa tabela, o PF pode rapida mente determinar se um pacote passando pelo firewall pertence a uma conexão já estabelecida.
Caso afirmativo, ele passa direto pelo firewall sem ser avaliado pelas regras
75
Na linha 63 temos a liberação para que o servidor SVMAIL01 possa consultar outros servidores de DNS, que estejam na Internet, lendo o comando temos:
permita (“pass in”) na interface interna (“on $int_if”) sendo o protocolo udp (udp) vindo do servidor SVMAIL01 (“from $dns_server”) para qualquer servidor (“to any”) pela
porta 53 (“port 53”).
A linha 64 permite todo o tráfego da interface interna(“$int_if”) vindos da
DMZ (“$rede_dmz”) para a rede LAN (“$rede_lan”).
As linhas 67 e 68, liberam os testes de conectividade (ping, por exemplo)
e acesso remoto (SSH) a partir da estação do administrador (é gerado um Log deste
acesso).
Na linha 71 temos a liberação para as portas listadas na macro
“$client_out” ( HTTP, HTTPS, FTP e FTP-data), isto para acessos a partir da LAN
(“$rede_lan”).
Nas linhas 72 e 73 são liberados os acessos para os protocolos POP3 e
SMTP a partir de qualquer lugar.
Por fim é liberada a saída do ftp-proxy na linha 76. A liberação do FTP foi
a parte que causou maior transtorno. O serviço de FTP não funciona de uma forma
trivial como o HTTP, o POP3 e o SMTP, estes protocolos são acessados através de
uma única porta (80 para o http, 110 para o POP3 e 25 para o SMTP), já o FTP utili za a 20, 21 e depois escolhe uma porta aleatoriamente, desde que acima de 1024,
para onde são enviados os arquivos durante a transferência. Abrir todas as portas
acima de 1024 pode causar problemas, pois se pode dar acesso indevido a algum
outro sistema que utilize estas portas. Para contornar esta situação utiliza-se um sistema de proxy40 (no nosso caso é um software chamado ftp-proxy), ao invés do servidor mandar o arquivo para uma porta alta de um cliente ele enviará para o proxy e
este enviará para o cliente. Na linha 76 é feita à liberação da porta 21 para o endere 40
Proxy é um tipo de servidor que atende a requisições repassando os dados a outros servidores. O
termo proxy, a propósito, vem do inglês e pode ser traduzido como "procurador". O usuário conectase a um servidor proxy, requisitando algum serviço, como um arquivo, conexão, website, ou outro recurso disponível em outro servidor.
76
ço do proxy e este mantém as conexões (keep state) para que, caso receba uma requisição a uma porta alta, ele consiga relacionar com a conexão criada anteriormente.
4.4.1.3.4 Inicialização do firewall
Para que o firewall fosse ativado foi feito o seguinte procedimento:
1. Inicialização do servidor: neste ponto é carregado o arquivo /etc/rc.conf e iniciado o PF.
2. Conectar a Internet: com o comando “ppp –b default”.
3. Iniciar uma segunda instância do ftp-proxy: Executado o comando
“/usr/sbin/ftp-proxy –R 192.168.0.20 –p 2121”, este faz com que um processo
do ftp-proxy fique “escutando na porta 2121 (poderia se qualquer outra porta,
mas escolhi 2121, pois lembra a porta do ftp que é a 21) e redireciona as requisições para o servidor 192.168.0.20 (SVWEB01)”.
4. Recarregar regras do firewall: com o comando “pfctl –ef /etc/pf.conf”.
77
4.4.2 Firewall interno (SVFW02)
O firewall configurado no SVFW02 é o responsável por controlar o tráfego
entre a rede local (LAN) e a DMZ (as duas redes são internas), conforme destacado
na Figura 4-13. Ele não executa o serviço NAT, pois fará apenas bloqueio de portas,
não sendo necessário qualquer tipo de tradução de endereços.
Figura 4-13 Diagrama físico da rede com o SVFW02 em destaque
4.4.2.1 Premissas (Regras)
As regras que foram criadas no firewall interno devem atender as seguintes expectativas:
1. Todo tráfego de entrada é bloqueado, com exceção das regras a
seguir.
78
2. O firewall permitirá a passagem dos protocolos HTTP, HTTPS e
FTP com origem na LAN para qualquer destino.
3. As portas 80 (HTTP), 110 (POP3), 25 (SMTP) e 3306 (MySQL) serão liberadas para pacotes com origem na LAN e destino aos respectivos servidores da DMZ que suportam os serviços que utilizam
estas portas.
4. As portas 22 (SSH), 3389 (RDP), 5800 (VNC-WEB), 5900 (VNC) e
o protocolo ICMP serão liberados para pacotes com origem na estação do administrador com destino a servidores da DMZ.
5. O firewall terá a porta 22 (SSH) aberta para pacotes com origem na
estação do administrador.
6. O protocolo ICMP será aberto para pacotes com origem na estação
do administrador para testes de conectividade (ping).
Na Erro: Origem da referência não encontrada estão listadas as regras do
SVFW02.
Tabela 7 - Regras do firewall SVFW02
Origem
Servidor / Rede
DMZ
INTERNET
LAN
SVMAIL01
SVDB01
SVFW02
Estação do
Admin
DMZ
Destino
Protocolo
TCP
TCP
TCP
TCP
TCP
TCP
TCP
TCP
ICMP
TCP
TCP
TCP
TCP
ICMP
Porta
80 (http)
443 (https)
21 (ftp)
53 (dns)
25 (smtp)
110 (pop3)
3306 (mysql)
22 (ssh)
22 (ssh)
3389 (rdp)
5800 (vnc-web)
5900 (vnc)
79
4.4.2.2 Software utilizado
O software do firewall utilizado no servidor SVFW02 é o iptables [13] que
é uma ferramenta para configuração do módulo NETFILTER [14], responsável pela
implementação do firewall no nível do kernel.
O iptables está presente em todas as distribuições modernas do Linux,
sendo necessário, conforme o caso, apenas de sua habilitação, que foi o caso.
O iptables não tem um arquivo de configuração como o PF, normalmente
o administrador cria um script41 que limpa a configuração e adiciona todas as regras.
Farei uma breve explicação sobre a sintaxe para inserção de regras:
iptables -t TABELA -A CADEIA REGRAS -j ALVO
Descrevendo cada uma das opções:
•
TABELA: o iptables funciona com quatro tabelas: raw (faz alterações
de baixo nível nos pacotes), filter (filtro de pacotes), Nat (tradução de
endereços) e mangle (alterações específicas). Neste trabalho utilizei
apenas as opções de filter, pois é a única função utilizada neste firewall, isto é, filtrar pacotes. Filter é a tabela padrão, caso não for informada a tabela a filter será utilizada.
•
CADEIA: é o tipo de tráfego, podem ser: OUTPUT (saída com origem
no firewall), INPUT (entrada com destino o firewall), FORWARD (passa pelo firewall), PREROUTING (todo tráfego que "sai" da máquina, incluindo o gerado localmente com destino local), POSTROUTING (tráfego que sai, inclusive o gerado localmente com destino local).
41
Scripts são arquivos do tipo texto, que contém linhas de comandos. No Unix/Linux são conhecidos
como Shell script e no Windows são conhecidos como arquivos em lote.
80
•
REGRAS: são os parâmetros que serão comparados com o pacote
como IP, porta, protocolo e interface. As regras podem ser simples
como comparar apenas o IP de origem como também podem fazer diversas comparações, como por exemplo, o pacote tem que ser de um
determinado IP com destino a determinado IP e a determinada porta.
•
ALVO: é a ação que será tomada caso o pacote se enquadre nas regras, pode ser ACCEPT (aceita o pacote), DROP (descarta o pacote e
não avisa a origem), REJECT (descarta o pacote mas avisa a origem),
LOG (gravam em arquivo dados sobre o pacote).
Quando houver um impasse entre as regras, por exemplo, é inserida uma
regra que libera a porta 80 e depois outra regra que bloqueia a porta 80, valerá a
que foi incluída em primeiro lugar.
Uma listagem contendo os principais comandos do iptables pode ser encontrada no Anexo C.
4.4.2.3 Implantação
O firewall interno é bem mais simples que o externo, pois não é conectado a Internet, evitando os passos de discagem para a Internet. A implantação do firewall interno teve os seguintes passos: habilitação do iptables, habilitação do gateway e configuração do firewall. Veremos alguns detalhes de cada um dos passos.
81
4.4.2.3.1 Habilitação do iptables
Para habilitar o serviço do iptables durante a inicialização do sistema o
CentOS oferece o utilitário designado ntsysv, que contém uma lista dos serviços instalados no sistema, é necessário apenas marcar a opção “iptables”.
4.4.2.3.2 Habilitação do gateway
Para habilitar o gateway foi necessário editar o arquivo /etc/sysctl.conf e
configurar a opção “net.ipv4.ip_forward” com o valor 1 [5].
4.4.2.3.3 Configuração do firewall
Para a configuração do firewall foi criado o arquivo /etc/rc.d/init.d/myfirewall, cuja listagem é apresentada na Tabela 8, que inclui as regras para o seu funcionamento. O conteúdo deste arquivo substitui todas as configurações do iptables
pelas nossas regras e, ao final, este conteúdo é salvo [12]. O iptables mantém suas
configurações no arquivo /etc/sysconfig/iptables, não há necessidade de executar
este script toda vez que o sistema é inicializado, pois o iptables lê as regras do seu
arquivo de configuração, sua execução só é necessária quando forem incluídas novas regras, pois assim ele limpa todas as regras e adiciona as novas. A seguir farei
comentários sobre o conteúdo do arquivo myfirewall.
82
Tabela 8 - Configuração do iptables (/etc/rc.d/init.d/myfirewall)
L Código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
#
# /etc/rc.d/init.d/myfirewall
# Flush all current rules from iptablew
iptables -F
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# VARIAVEIS
EST_ADMIN_IP="10.0.0.10"
SRV_DNS_IP="192.168.0.10"
SRV_HTTP_IP="192.168.0.20"
SRV_FTP_IP="192.168.0.20"
SRV_SMTP_IP="192.168.0.10"
SRV_POP3_IP="192.168.0.10"
SRV_MYSQL_IP="192.168.0.30"
LAN_IP_RANGE="10.0.0.0/8"
IF_LAN="eth1"
IF_DMZ="eth0"
# Set default policies for INPUT, FORWARD and OUTPUT chains
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Set access for localhost
iptables -A INPUT -i lo -j ACCEPT
# Aceitar pacotes com conexoes ja estabelecidas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# ################################################################
#
# Liberar acessos para a estacao de Administracao
#
(mantendo log de acessos)
#
# ################################################################
# - Acesso Remoto ao Firewall
iptables -A INPUT -p tcp -s $EST_ADMIN_IP --dport 22 -j LOG --log-prefix "ADMIN - SSH"
iptables -A INPUT -p tcp ! -s $EST_ADMIN_IP --dport 22 -j LOG --log-prefix "NEGADO - SSH"
iptables -A INPUT -p tcp -s $EST_ADMIN_IP --dport 22 -j ACCEPT
# - Acesso Remoto (ssh,rdp,vnc) aos Servidores da DMZ
iptables -A FORWARD -p tcp -s $EST_ADMIN_IP --dport 22 -j LOG --log-prefix "ADMIN - SSH "
iptables -A FORWARD -p tcp ! -s $EST_ADMIN_IP --dport 22 -j LOG --log-prefix "NEGADO - SSH "
iptables -A FORWARD -p tcp -s $EST_ADMIN_IP --dport 22 -j ACCEPT
iptables -A FORWARD -p tcp -s $EST_ADMIN_IP --dport 3389 -j LOG --log-prefix "ADMIN - RDP "
iptables -A FORWARD -p tcp ! -s $EST_ADMIN_IP --dport 3389 -j LOG --log-prefix "NEGADO -RDP "
iptables -A FORWARD -p tcp -s $EST_ADMIN_IP --dport 3389 -j ACCEPT
iptables -A FORWARD -p tcp -s $EST_ADMIN_IP --dport 5800 -j LOG --log-prefix "ADMIN-VNCWEB"
iptables -A FORWARD -p tcp ! -s $EST_ADMIN_IP --dport 5800 -j LOG--log-prefix"NEGADO-VNCWEB"
iptables -A FORWARD -p tcp -s $EST_ADMIN_IP --dport 5800 -j ACCEPT
iptables -A FORWARD -p tcp -s $EST_ADMIN_IP --dport 5900 -j LOG --log-prefix "ADMIN - VNC "
iptables -A FORWARD -p tcp ! -s $EST_ADMIN_IP --dport 5900 -j LOG --log-prefix "NEGADO- VNC "
iptables -A FORWARD -p tcp -s $EST_ADMIN_IP --dport 5900 -j ACCEPT
# - Permitir Ping ao Firewall e a Servidores da DMZ
iptables -A INPUT -p icmp -s $EST_ADMIN_IP --j ACCEPT
iptables -A FORWARD -p icmp -s $EST_ADMIN_IP --j ACCEPT
# #######################################################
83
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#
#
Liberar portas Rede Interna -> DMZ
#
# #######################################################
# - DNS
iptables -A FORWARD -p udp -s $LAN_IP_RANGE -d $SRV_DNS_IP --dport 53 -j ACCEPT
# - SMTP (E-mail)
iptables -A FORWARD -p tcp -s $LAN_IP_RANGE -d $SRV_SMTP_IP --dport 25 -j ACCEPT
# - POP (E-mail)
iptables -A FORWARD -p tcp -s $LAN_IP_RANGE -d $SRV_POP3_IP --dport 110 -j ACCEPT
# - HTTP (Paginas WEB)
iptables -A FORWARD -p tcp -s $LAN_IP_RANGE -d $SRV_HTTP_IP --dport 80 -j ACCEPT
# - FTP
iptables -A
iptables -A
iptables -A
iptables -A
iptables -A
iptables -A
-j ACCEPT
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
FORWARD
FORWARD
FORWARD
FORWARD
FORWARD
FORWARD
-p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-p tcp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT
-p tcp --sport 20:21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-p tcp --dport 20:21 -m state --state ESTABLISHED -j ACCEPT
-p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT
-p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED
# - MySQL
iptables -A FORWARD -p tcp -s $LAN_IP_RANGE -d $SRV_MYSQL_IP --dport 3306 -j ACCEPT
# ####################################################
#
#
Liberar Porta para acessar internet
#
# ####################################################
iptables -A FORWARD -p tcp -s $LAN_IP_RANGE --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -s $LAN_IP_RANGE --dport 443 -j ACCEPT
# Save Settings
/sbin/service iptables save
Na linha 6 é feito um flush nas regras, isto é, as regras são todas excluídas.
Nas linhas 8 e 9 são habilitados os módulos que dão suporte ao Connection Tracking42 [10].
Entre as linhas 11 e 21, são definidas variáveis que simplificam a reconfiguração do arquivo, por exemplo, a variável “EST_ADMIN_IP” é utilizada várias vezes no arquivo, caso o IP da estação do administrador mude basta alterar somente a
variável ao invés de localizar o IP por todo o texto.
Nas linhas 24,25 e 26 são definidos os comportamentos padrão, no caso
foram negados (DROP) para os pacotes que entram (INPUT) ou que atravessam o
42
Connection Tracking é um módulo do Linux utilizado para acompanhar estas conexões "ajudando"
o IPTABLES a saber que um determinado pacote é relacionado a uma conexão já existente.
84
firewall (FORWARD) e permitidos (ACCEPT) os pacotes que estão saindo (OUTPUT) do firewall.
Na linha 29 é concedia permissão para pacotes gerados pelo próprio firewall, isto é, pela interface de loopback.
Nas linhas 32 e 33 é permita a passagem de pacotes que já tem uma conexão estabelecida. Este tipo de regra contribui com a velocidade de processamento
do firewall, pois quanto ao processamento das regras, o iptables funciona de forma
diferente a do PF. O PF analisa todas as regras e utiliza a última, que coincida com
o pacote, já o iptables utiliza a primeira regra que ele encontra e coincide com o pa cote. Para exemplificar esta questão, imagine que já tenha sido estabelecida uma
conexão com a porta 80 e que esta regra é a ultima conferida pelo iptables, da próxima vez que o iptables for validar uma regra para esta mesma conexão ele não terá
que conferir todas as regras até chegar à última, ele vai utilizar as regras para a co nexão já estabelecida (as primeiras no nosso caso) agilizando a liberação do pacote.
Entre as linhas 36 e 58 estão as regras que permitem acesso diferenciado
para a estação do administrador, repare que para cada porta existe um bloco de 3 linhas, analisemos as linhas 43 a 45 que liberam o acesso ao SSH:
•
Linha 43: a linha 43 gera um Log caso seja um acesso feito a partir
da estação do administrador, o início do Log terá o texto “Admin –
SSH”.
•
Linha 44: gera um Log caso o acesso não venha da estação do
administrador e insere o texto “Negado – SSH”.
•
Linha 45: faz a liberação de acesso caso o acesso venha da estação do administrador.
Repare que diferente do PF o iptables não libera e gera log ao mesmo
tempo, primeiro é gerado o Log e depois feita a liberação, quando a linha com a regra de Log coincide com o pacote analisado o log é gerado e depois segue para outras regras, se colocasse a regra que libera a porta antes da linha que gera o log en -
85
tão o log não seria gerado, pois quando coincide o pacote com a regra de liberação
então é feita a liberação e não continua nas próximas regras.
Uma exceção aos blocos citados acima são as linhas 66 e 67 que liberam
testes de conectividade a partir da estação do administrador, não são gerados logs
para estas regras porque são simples testes de conectividade (ping por exemplo).
Nas linhas 70 a 97 são feitas às liberações de portas que passarão da
rede LAN para a DMZ, novamente o FTP foi um pouco mais trabalhoso (linhas 87 a
93) [10]. Cada liberação permite uma porta somente para o servidor da DMZ que
possui a porta em funcionamento, assim a porta 80 (HTTP) é liberada para o servidor SVWEB01, a porta 53 (DNS) para o SVMAIL01, e assim por diante, com exceção do FTP que foi configurado para permitir a passagem a todos os servidores inclusive servidores da Internet. No caso de servidores que estejam na Internet a requisição ainda terá que passar pelo crivo do firewall do SVFW01 que é a nossa porta
de saída para a Internet.
Entre as linhas 100 a 106 estão os protocolos que terão acesso a Internet
a partir da LAN, que são os protocolos HTTP, HTTPS e o FTP.
Por fim a linha 109 que salva as configurações.
86
5 EXPERIMENTOS
Neste capítulo valido e evidencio que as premissas propostas para os firewalls foram implementadas com sucesso. Dividi este capítulo em três seções sendo:
•
5.1) Regras do SVFW01: onde fiz avaliações das regras implementadas neste firewall, isto é, se está definido nas regras que a porta
HTTP está liberada então verifiquei se esta porta está realmente liberada.
•
5.2) Regras do SVFW02: avaliações das regras, como na anterior,
mas voltadas para as regras do firewall SVFW02.
•
5.3) Portscans: neste caso avalio tanto o SVFW01 como o
SVFW02. Se nos experimentos anteriores tive um alvo bem definido
neste avalio todas as portas TCP sem distinção, verificando se cada
uma está aberta ou fechada.
Para avaliação das regras utilizei ferramentas de conectividade como ping
ou clientes dos serviços avaliados como, por exemplo, o Internet Explorer para o
HTTP e o MySQL Administrator para o MySQL. No caso do portscan foi utilizada
uma ferramenta especializada o NMAP.
Todas as avaliações levaram em conta a origem do experimento, pois as
regras implementadas nos firewalls levam em conta a origem.
Para cada experimento também foram recolhidas evidências, que no caso
foram às telas das ferramentas, com informações de sucesso ou fracasso de cada
um dos experimentos. A captura das telas foi feita através da tecla Print Screen, que
captura para a memória a imagem da tela do computador, em seguida “colei” as
87
imagens capturadas na ferramenta MSPaint e as editei, com o objetivo de destacar
os pontos de interesse e sinalizar as transições entre os passos dos experimentos,
obviamente quanto isto for relevante.
Quanto à montagem física para os experimentos utilizei os seguintes
equipamentos, ilustrados na Figura 5-1:
•
Modem ADSL Thomson ST510v6: através do qual nos conectamos a Internet.
Ele tem sua interface WAN conectada à linha telefônica e uma interface de
LAN conectada a placa on-board do servidor SVVM01. Esta interface é utilizada pelo servidor virtual SVFW01.
•
Servidor SVVM01: é principal componente do trabalho, é o servidor onde está
instalado o VMWARE e abriga as cinco máquinas virtuais. Esta máquina possui uma interface de rede on-board, conectada ao modem ADSL, e uma interface off-board, conectada ao hub que suporta a LAN.
•
Hub 10BASE-T 8 portas Intel: é através dele que os computadores da LAN se
conectam ao SVVM01, que neste caso o SVFW02 que é quem realmente faz
uso da interface. Sem este dispositivo só teria como ligar um computador no
SVVM01 (ponto a ponto), com ele pude ligar até oito computadores, pois ele
possui oito portas. Destas oito portas utilizei três, sendo uma para o SVVM01,
uma para a estação do administrador e uma para a estação normal.
•
Estação do administrador: computador configurado com o IP 10.0.0.10, os firewalls possuem regras mais flexíveis para este computador, pois é através
dele que o administrador do ambiente monitora e configura os firewalls. Foi ligado à LAN através de sua interface de rede ligada ao hub.
•
Estação normal: representa um micro qualquer ligado a LAN. Configurado
com o IP 10.0.0.101, foi um número escolhido aleatoriamente, poderia ser
qualquer um na faixa entre 10.0.0.1 e 10.0.0.255, exceto os números 10.0.0.1
(utilizado pelo SVFW02) e 10.0.0.10 (utilizado pela estação do administrador).
•
Computador Remoto: Computador com acesso Internet localizado em outra
residência.
88
A Erro: Origem da referência não encontradaErro: Origem da referência não
encontrada nos apresenta uma visão geral da montagem física do ambiente.
Figura 5-14 - Visão geral da montagem física do experimento
5.1
REGRAS DO SVFW01
Nesta seção vamos validar as premissas propostas para o SVFW01, que
foram listadas na Tabela 9. Dividi as seções com base na origem do acesso (Internet, SVMAIL01, LAN e estação do administrador) e avaliei os serviços necessários a
cada uma das origens.
89
Tabela 9 - Regras do firewall SVFW01
Destino
Origem
Servidor /
Rede
Protocolo
INTERNET
DMZ
TCP
SVMAIL01
INTERNET
UDP
TCP
LAN
INTERNET
TCP
DMZ
TCP
ICMP
Estação do
Admin
Redirecionar para
Porta
Servidor
IP
80 (HTTP)
21 (FTP)
25 (SMTP)
110 (pop3)
53 (DNS)
25 (SMTP)
80 (HTTP)
443
(HTTPS)
21(FTP)
22 (SSH)
SVWEB01
SVWEB01
SVMAIL01
SVMAIL01
192.168.0.20
192.168.0.20
192.168.0.10
192.168.0.10
5.1.1 Origem na Internet e com destino para os serviços localizados na DMZ
Primeiramente, avalio com a origem das requisições na Internet (ver Figura 5-15). A partir de um outro local, utilizando um computador com Windows XP e
com acesso a Internet via Velox, acessei os serviços de HTTP, FTP, SMTP e POP3.
A partir deste ponto utilizarei o termo “computador remoto” quando estiver me refe rindo a este computador.
Os experimentos consistem em tentar acessar os serviços utilizando o IP
válido, atribuído à conexão ADSL no SVFW01, com o software correspondente a tal
serviço ou fazendo apenas um teste de conectividade com a ferramenta “telnet”.
O serviço do Velox atribui o endereço IP dinamicamente aos seus usuários, isso significa que cada vez que o usuário iniciar uma conexão com o Velox ele
recebe, possivelmente, um IP diferente ao da última conexão. Desta forma, para sa-
90
ber qual o IP deveríamos utilizar para acessar os serviços da nossa DMZ, executei o
comando “ifconfig” no servidor SVFW01, que é o servidor que se conecta ao Velox e
verificamos qual o IP foi atribuído à interface virtual. Durante os experimentos o IP
foi o 189.105.8.42.
Figura 5-15 Origem Internet (área verde) com destino a DMZ
Foram requeridas liberações para as portas HTTP (80) e FTP (21), que
foram redirecionandas para SVWEB01, 25 (SMTP) e 110 (POP3), que por sua vez
foram redirecionandas para SVMAIL01. Na seqüência apresento as evidências dos
experimentos realizados para cada serviço.
5.1.1.1 HTTP redirecionando para SVWEB01
A partir do computador remoto abri o browser, que no caso utilizei o Internet Explorer da Microsoft, e digitei o IP válido atribuído ao ambiente. O resultado foi
abertura da página de testes do Apache, que foi instalado no servidor SVWEB01, indicando que o acesso funcionou corretamente, conforme ilustrado na Figura 5-16.
91
Figura 5-16 - Evidência de acesso HTTP
5.1.1.2 FTP redirecionando para SVWEB01
Para verificar o funcionamento da regra que redireciona o tráfego de FTP,
com origem na Internet com destino ao servidor SVWEB01, executei a partir do computador remoto um prompt de comandos e utilizei o programa cliente “FTP”. Na Figura 5-17 são demonstrados os comandos que foram executados para avaliar o funcionamento do serviço FTP, que seguiram os passos:
1. Conectando:
Início
da
conexão
com
o
nosso
FTP
(ftp
189.105.8.42).
2. Autenticação: foram solicitados usuário e senha do qual obtivemos
como retorno a mensagem “230 Login successful”, indicando que
já estávamos conectados e devidamente autenticados.
3. Um comando para confirmar o estabelecimento da conexão: efetuado o comando “ls”, que lista os arquivos do diretório atual do FTP,
este retornou apenas o arquivo cederj.txt, conforme esperado.
4. Final da conexão: foi enviado o comando “quit” para encerrar a conexão.
92
Figura 5-17 - Evidência de acesso FTP
5.1.1.3 SMTP redirecionando para SVMAIL01
Com o objetivo de avaliar o funcionamento do redirecionamento da porta
de SMTP no SVFW01 para o servidor SVMAIL01, não utilizei um cliente próprio para
este serviço (que seria um Outlook, Eudora ou Thunderbird), apenas fiz uma avaliação simples de conectividade, pois não implementei uma infra-estrutura de e-mail
apenas instalei o serviço.
A partir do computador remoto abri um prompt de comando e executei o
comando “telnet 189.105.8.42 25”, isto faz com que o telnet tente conexão com o IP
189.105.8.42 na porta 25 (SMTP).
Conforme apresentado na Figura 5-18, este experimento foi bem sucedido na abertura da conexão com o servidor. Isto é indicado pela mensagem “220 cederj.tcc ESMTP Server ready.”, então executei o comando “quit” para encerrar a conexão.
93
Figura 5-18 - Evidência de acesso SMTP
5.1.1.4 POP3 redirecionando para SVMAIL01
Neste experimento avalio o redirecionamento do POP3 do tráfego a partir
da Internet para o computador SVMAIL01. Para o serviço de POP3 também não utilizei um cliente próprio para este serviço, pelos mesmos motivos do SMTP.
A partir computador remoto abri um prompt de comandos e executei o comando “telnet 189.105.8.42 110”. Isto faz com que o telnet tente abrir uma conexão
com o IP 189.105.8.42 na porta 110 (POP3).
Como mostrado na Figura 5-19, obtive sucesso na abertura da conexão
com o servidor indicado pela mensagem "+OK ([email protected]), POP3
server ready.".
94
Figura 5-19 - Evidência de acesso POP3
5.1.1.5 Acessos bloqueados
Apenas para complementar estas avaliações, também, efetuei experimentos para verificar se o que não deveria ser liberado estava realmente bloqueado.
Com este objetivo executei a ferramenta telnet com destino ao nosso IP válido para
as portas 443 (HTTPS), 20 (FTP-data), 22 (SSH) e 3306 (MySQL). O resultado foi o
esperado, ou seja, não consegui abrir conexões para estas portas evidenciando o
bloqueio (mensagem “Connect failed.”), este procedimento se encontra na Figura 57.
95
Figura 5-20 - Evidências de bloqueio (Internet para DMZ)
5.1.2 Origem SVMAIL01 com destino à Internet
O servidor SVMAIL01 necessita de acesso à Internet para fazer consultas
ao DNS e para o envio dos e-mails (SMTP). A Figura 5-21 mostra, destacado em
verde, a localização da origem dos experimentos e com destino à Internet. O
SVFW01 está no meio do caminho do acesso e nele foram configuradas as regras
que permitem a passagem dos pacotes.
Figura 5-21 Origem SVMAIL01 (área verde) com destino a Internet
96
5.1.2.1 DNS
No SVMAIL01 existe o serviço de DNS instalado. Quando algum computador desta rede o consulta sobre algum nome, este serviço verifica em sua lista
para localizar o registro, caso ele exista. Neste caso ele possui o registro de todos
os servidores envolvidos neste trabalho, mas caso ele receba uma consulta sobre
um nome que ele não encontre em sua lista então ele pergunta a algum outro DNS.
Ele foi configurado para utilizar o servidor 200.184.26.3 para o ajudar nestes casos.
Este servidor está na Internet e por isso liberei a porta 53 com destino a Internet,
apenas para este servidor.
Executei dois experimentos com o objetivo de avaliar o funcionamento da
liberação da porta 53, primeiro desabilitei a regra no SVFW01, que permite a passagem de pacotes DNS (“pass in on $int_if inet proto udp from $dns_server to any port
53” no arquivo /etc/pf.conf), apenas para visualizar o erro de tentativa de acesso
(destacado em vermelho na Figura 5-22). Repare que utilizei o comando “nslookup
www.cederj.edu.br”. A ferramenta “nslookup” tenta resolver o IP do endereço www.cederj.edu.br e recebi um erro de “request timed out.”, o tempo esgotou porque a requisição não chegou ao servidor (foi bloqueado pelo SVFW01).
Depois reabilitar a regra e tentamos novamente, desta vez o servidor retornou o endereço IP relativo ao www.cederj.edu.br: 200.156.70.10 (destacado em verde na Figura 5-22) evidenciando o funcionamento da liberação.
97
Figura 5-22 Evidência de acesso DNS
5.1.2.2 Envio de mensagens (SMTP)
A partir do SVMAIL01 avaliei a conexão com algum servidor SMTP externo ao ambiente, no caso utilizei o servidor smtp.mail.yahoo.com.br.
Com o objetivo de efetuar uma conexão a um servidor de SMTP externo
digitei o comando “telnet smtp.mail.yahoo.com.br 25” (conectar ao host smtp.mail.yahoo.com.br na porta 25), como resultado recebi uma mensagem de sucesso “ 220
smtp128.mail.mud.yahoo.com ESMTP” (conforme pode ser visto na Figura 5-23).
Caso a conexão não fosse bem sucedida teria recebido uma mensagem de “Connect Failed”. No final apenas digitei “quit” para encerrar a conexão.
98
Figura 5-23 - Evidência de acesso SMTP
5.1.3 Origem na LAN com destino à Internet
Para validar esta parte acabei também por validar parte das regras do
SVFW02, pois para chegar a Internet os pacotes oriundos da LAN tem que passar
pelos dois firewalls, como pode ser visto na Figura 5-24.
99
Conforme a Tabela 9 a LAN deve ter acesso aos protocolos HTTP (80),
HTTPS (443) e FTP (21).
Figura 5-24 Origem LAN (área verde) com destino a Internet
5.1.3.1 HTTP
Com o objetivo de avaliar conexões entre a LAN e sites HTTP, localizados
na Internet, utilizei o browser Firefox e acessei o site www.meuip.com.br. O site foi
acessado normalmente conforme a Figura 5-25. Escolhi este site porque ele nos
mostra um fato importante, o IP que utilizei para acessar a Internet. O computador
que utilizei para acessar a Internet está localizado na LAN e possui IP privado
10.0.0.101, quando tentei acessar a Internet ele tentou sair pelo servidor SVFW01,
que faz um serviço de NAT. O NAT faz um mapeamento entre os IP privados e públicos da nossa rede, para possibilitar que um computador com IP privado acesse a
rede da Internet (na qual somente trafegam os IPs públicos), ou seja, como esperado o SVFW01 utilizou o seu IP público (189.105.8.42) para acessar a Internet.
100
Figura 5-25 - Evidência LAN acessando HTTP
5.1.3.2 HTTPS
Para a avaliação do acesso aos sites HTTPS (443) a partir da LAN acessei o site da Caixa Econômica Federal via o browser Internet Explorer. O protocolo
HTTPS é muito utilizado em sites de bancos e comércio eletrônico, pois se trata de
uma implementação segura do protocolo HTTP, repare que o endereço acessado
começa com “https://” ao invés do normal “http://”.
Digitei o endereço http://www.caixa.gov.br (este utiliza porta 80) e depois
acessei o link “Acesse a sua conta” que abriu o site seguro, conforme evidenciado
na Figura 5-26.
101
Figura 5-26 - Evidência LAN acessando HTTPS
5.1.3.3 FTP
Com o objetivo de acessar um servidor de FTP localizado na Internet, a
partir da LAN, fiz um experimento utilizando um prompt de comandos e acessei o
endereço ftp.linux.ncsu.edu, que é um FTP utilizado para fazer downloads de arquivos do sistema operacional Red Hat. Na Figura 5-27 podemos visualizar os comandos executados, que detalho a seguir:
102
1. Inicio da conexão: comando “ftp ftp.linux.ncsu.edu”.
2. Autenticação: Foram solicitados usuário e senha, como é um ftp
público é necessário apenas informar o usuário “anonymous” (anônimo) e senha em branco.
3. Um comando para confirmar o estabelecimento da conexão: efetuado o comando “ls” que lista os arquivos do diretório atual do FTP,
retornou: mirror e pub.
4. Encerrar conexão: Enviado o comando “quit” para encerrar a conexão.
O sucesso dos comandos efetuados nos garante o bom funcionamento
das regras de liberação do FTP.
Figura 5-27 - Evidência LAN acessando FTP
5.1.4 Estação do administrador
Para a estação do administrador foi liberada a porta 22 (SSH), de forma
que o administrador possa acessar o servidor remotamente, e o protocolo ICMP, que
é utilizado para testes de conectividade. Estas portas também foram liberadas no
103
SVFW02, pois, como podemos ver na Figura 5-28, o SVFW02 está no caminho da
estação do administrador até o SVFW01.
Figura 5-28 - Origem estação do administrador (área verde) com destino ao SVFW01
5.1.4.1 SSH
O SSH é utilizado para controlar remotamente o servidor, tarefa que cabe
ao administrador do servidor.
Com objetivo de avaliar a conexão SSH utilizei o software Putty [16], a
partir da estação do administrador, e nele digitei o endereço do servidor de destino
(192.168.0.100) e a porta do SSH (22), o resultado foi abertura da tela solicitando a
autenticação (isto já confirma que a porta estava aberta), utilizei o usuário “root”,
após as mensagens de boas-vindas digitei o comando “uname –a”, que mostra a
versão do sistema operacional instalado, conforme pode ser verificado na Figura 529.
104
Figura 5-29 - Evidência estação do administrador acessando SVFW01 via SSH
Conforme configurado no PF é gerado um log toda vez que o administrador utiliza o SSH. Utilizando o comando “tcpdump -n -e -ttt -r /var/log/pflog” é possível verificar os logs gerados, no caso do acesso do administrador utilizando SSH
será gerada uma linha no arquivo /var/log/pflog com o conteúdo parecido com este:
11. 222553 rule 15/0(match): pass in on em1: 10.0.0.10.1103 >
192.168.0.100.22:
S
3159589337:3159589337(0)
win
64512
<mss
1460,nop,nop,sackOK>
No exemplo aparece o IP 10.0.0.10 (estação do administrador) acessando
o IP 192.168.0.100 (IP do SVFW01) via porta 22 através da interface em1.
105
5.1.4.2 ICMP
O protocolo ICMP é utilizado para avaliar a conectividade (como ping e
tracert). Este experimento teve o objetivo de avaliar a liberação do protocolo ICMP, a
partir da estação do administrador até o SVFW01, para tal, o administrador abriu um
prompt de comandos e executou o comando “ping 192.168.0.100 –n 1” (envia pacote para o host 192.168.0.100 apenas uma vez “-n 1”) e recebeu a resposta do servidor “Reply from 192.168.0.100: bytes=32 time<1ms TTL=63”. Logo após utilizei o comando “tracert 192.168.0.100”, que obtém todo o caminho que o pacote percorre até
o destino, no nosso caso ele passou por 10.0.0.1 (SVFW02) até chegar ao
192.168.0.100 (SVFW01), conforme Figura 5-30.
Figura 5-30 - Evidência estação do administrador testando conectividade com SVFW01 utilizando ferramentas ICMP
Para demonstrar que o protocolo ICMP está bloqueado a partir de outras
estações, segue evidência do experimento realizado a partir de um micro qualquer
localizado na LAN. Utilizei o comando “ipconfig | find “.101” apenas para mostrar o IP
do computador de onde está sendo feito o experimento, digitei o comando “ping
192.168.0.100 –n 1” (envia pacote para o host 192.168.0.100 uma vez “-n 1”) e de-
106
pois utilizei o comando “tracert 192.168.0.100 –h 3” (experimenta o host
192.168.0.100 por no máximo três vezes “-h 3”). Repare na Figura 5-31 que ocorrem
erros de “Request timed out” na saída dos dois comandos. No caso tanto no
SVFW01 quanto no SVFW02 o ICMP está bloqueado.
Figura 5-31 - Evidência de bloqueio do protocolo ICMP
107
5.2
REGRAS DO SVFW02
Nesta seção valido as premissas propostas para o SVFW02 (ver Tabela
10) o firewall que separa a LAN da DMZ. Dividi as seções com base nas origens do
acesso, neste caso LAN e estação do administrador.
Tabela 10 - Regras do firewall SVFW02
Origem
Servidor / Rede
DMZ
INTERNET
LAN
SVMAIL01
SVDB01
SVFW02
Estação do
Admin
DMZ
Destino
Protocolo
TCP
TCP
TCP
TCP
TCP
TCP
TCP
TCP
ICMP
TCP
TCP
TCP
TCP
ICMP
Porta
80 (HTTP)
443 (HTTPs)
21 (FTP)
53 (DNS)
25 (SMTP)
110 (POP3)
3306 (MySql)
22 (SSH)
22 (SSH)
3389 (RDP)
5800 (VNC-web)
5900 (VNC)
5.2.1 LAN
Os protocolos HTTP (80), HTTPS (443) e FTP (21) são protocolos de uso
comum e foram liberados no SVFW02, não importando o destino, para a Internet.
Visto que já realizei estes experimentos na seção 5.1.3, então avalio estas portas
para acessar os servidores que mantém estes serviços na DMZ (Figura 5-19).
108
Sendo o destino o servidor SVMAIL01 liberei as portas 53 (DNS), 110
(POP3) e 25 (SMTP), que são os serviços específicos deste servidor. Quando o destino for o SVDB01 liberamos apenas a porta 3306, que é a porta aberta para acessar
o MySQL.
Figura 5-32 - Origem LAN (área verde) com destino a DMZ e Internet
A seguir veremos as evidências destas liberações.
5.2.1.1 DMZ - HTTP
Com o objetivo de avaliar a liberação da porta de HTTP (80) no servidor
SVFW02, fiz o seguinte experimento: a partir de uma estação qualquer na LAN, utilizei o Internet Explorer, digitei o endereço http://svweb01.cederj.tcc e acessei então o
site localizado no SVWEB01. O resultado, conforme esperado, foi o retorno do site
de teste do APACHE, como evidenciado na Figura 5-33.
109
Figura 5-33 - Evidência LAN acessando HTTP localizado na DMZ
5.2.1.2 DMZ - HTTPS
Esta porta foi liberada, mas não temos este serviço na DMZ, como é uma
porta segura já deixei liberada para futuras implementações. Esta liberação, por enquanto, só serve para o acesso a Internet (ainda passa pelo crivo do SVFW01) e foi
avaliada no item HTTPS5.1.3.2.
5.2.1.3 DMZ – FTP
Com o objetivo de avaliar a liberação do protocolo FTP no firewall do
SVFW02, para computadores localizados na LAN acessarem o FTP localizado na
DMZ, realizei o seguinte procedimento: a partir de um computador qualquer na LAN,
abri um prompt de comandos e utilizei o programa cliente “ftp” e acessei o FTP localizado no SVWEB01. Na Figura 5-34 são apresentados os comandos para avaliar a
conexão com o FTP, sendo:
1. Inicio da conexão: utilizando o comando “ftp svweb01.cederj.tcc”.
110
2. Autenticação: foram solicitados usuário e senha, que depois de informados, retornou à mensagem “230 Login successful”, indicando
que já estamos conectados e autenticados
3. Um comando para confirmar o estabelecimento da conexão: efetuado o comando “ls” que lista os arquivos do diretório atual do FTP,
retornou apenas o arquivo cederj.txt.
4. Encerramento da conexão: enviado o comando “quit” para encerrar
a conexão.
A ausência de mensagens de erro evidencia o sucesso do experimento.
Figura 5-34 - Evidência LAN acessando FTP localizado na DMZ
5.2.1.4 SVMAIL01 – SMTP
Para avaliar a liberação do protocolo SMTP no firewall do SVFW02, nas
conexões a partir dos computadores localizados na LAN tendo como destino o servidor de SMTP, localizado na DMZ, realizei o experimento descrito na seqüência.
111
A partir de um micro localizado na LAN abri um prompt de comandos e
executei o comando “ipconfig | find “.10”” (apenas para demonstrar o IP do computador da origem dos experimentos), iniciei a conexão com o comando “telnet svmail01.cederj.tcc 25” (conectar ao host svmail01.cederj.tcc na porta 25) e obtive,
como retorno, uma mensagem de sucesso “220 cederj.tcc ESMTP Server ready.,” o
que evidencia o sucesso do experimento. Caso a conexão não fosse bem sucedida
recebería uma mensagem de “Connect Failed”, depois apenas digitei quit para encerrar a conexão, conforme pode ser verificado na Figura 5-35.
Figura 5-35 - Evidência LAN acessando SMTP localizado na DMZ
5.2.1.5 SVMAIL01 – POP3
O experimento a seguir tem o objetivo avaliar a liberação da porta de
POP3 no firewall do SVFW02, para conexões com origem na LAN e com destino ao
nosso servidor POP3 localizado na DMZ.
Para efetuar esta avaliação abri um prompt de comandos e executei o comando “ipconfig | find “.10””, de forma a obter o IP do computador da origem dos experimentos, depois iniciei a conexão com o comando “telnet svmail01.cederj.tcc 110”
112
(conectar ao host svmail01.cederj.tcc na porta 110) e, como retorno, obtive uma
mensagem de sucesso “+OK ([email protected]), POP3 server read.”
Esta mensagem evidencia o sucesso do experimento, pois caso contrário recebería
uma mensagem de “Connect Failed”, por fim, apenas digitei “quit” para encerrar a
conexão, conforme fica evidenciado na Figura 5-36.
Figura 5-36 - Evidência LAN acessando POP3 localizado na DMZ
5.2.1.6 SVMAIL01 – DNS
O próximo experimento avaliou a liberação da porta 53 (DNS) no firewall
SVFW02, para conexões originadas na LAN e destino o servidor de DNS localizado
na DMZ.
Como requisito para este teste o computador de origem deve ter o endereço do servidor de destino do experimento configurado como seu servidor de DNS,
no caso o endereço é 192.168.0.10 (SVMAIL01). No experimento vamos tentar resolver o nome svdb01.cederj.tcc, isto significa receber como retorno o IP do servidor,
no caso 192.168.0.30.
113
O experimento foi realizado da seguinte forma: a partir do prompt de comandos executei “nslookup svdb01.cederj.tcc”, na saída do comando é retornado
qual o servidor foi utilizado para consultar (svmail01.cederj.tcc), e em seguida recebi
os dados requisitados (o endereço de svdb01 que é 192.168.0.30), conforme apresentado na Figura 5-37. Caso o resultado fosse negativo recebería uma mensagem
de “request time out”.
Figura 5-37 - Evidência LAN consultando DNS localizado na DMZ
5.2.1.7 SVDB01 – MYSQL
Neste experimento avalio a liberação da porta utilizada pelo MySQL no
servidor SVFW02, porta 3306, para conexões originadas na LAN e com destino ao
servidor SVDB01 localizado na DMZ. Avalei o MySQL através do software MySQL
Administrator [11], de forma a acessar o MySQL e visualizar informações do mesmo.
Executei o MySQL Administrator que , em sua tela inicial, solicita o nome
do
servidor
(Server
host),
onde
inseri
o
nome
do
servidor
MySQL
(svdb01.cederj.tcc), o usuário e a senha, onde utilizei o usuário root e sua senha.
Clicando em OK foi aberta a tela do software “Server Information”, que traz informações sobre o servidor e o cliente que está acessando o servidor, evidenciando o sucesso da conexão (destacados na Figura 5-38).
114
Figura 5-38 - Evidência LAN acessando o MySQL localizado na DMZ
5.2.2 Estação do administrador
A estação do administrador está localizada na LAN, possui todos os acessos concedidos para a LAN e alguns diferenciais necessários para a administração
dos firewalls e dos servidores localizados na DMZ. A única diferença entre a estação
do administrador e outra estação qualquer localizada na LAN é o IP 10.0.0.10, cujas
regras do firewall fazem referência quando se deseja referenciar a estação do administrador.
Para a estação do administrador foram inseridas no firewall SVFW02 regras que permitem:
115
Acesso via SSH ao servidor SVFW02: necessário para acessar remotamente o SVFW02, através deste acesso podemos configurar o firewall e administrar
o servidor.
Utilização do protocolo ICMP com destino ao SVFW02 e a todos os servidores da DMZ: este protocolo é utilizado para verificação de conectividade.
A instalação dos protocolos de acesso remoto nos servidores da DMZ
(RDP, VNC e SSH) é necessária para que remotamente possamos administrar os
serviços instalados nos servidores.
Figura 5-39 - Origem estação do administrador (área verde) com destino a DMZ e SVFW02
5.2.2.1 SVFW02 - SSH
Efetuei um experimento com o objetivo de avaliar a liberação do protocolo
SSH no servidor SVFW02, para as conexões originadas da estação do administrador e com destino o próprio SVFW02.
116
Para suportar este experimento utilizei o software Putty, no qual, a partir
da estação do administrador, inserimos o endereço do SVFW02 (10.0.0.1) e a porta
do SSH (porta: 22). Após isto, pressionando o botão “open”, foi aberta a console que
solicitou a autenticação. Caso a porta não estivesse aberta não nos seria solicitada à
autenticação e seria exibida uma janela contendo o erro “Connection time out”. Neste experimento utilizei o usuário root e, também, digitei o comando “uname –a“ apenas para confirmar o nome do servidor que esta acessando (svfw02.cederj.tcc), conforme evidenciado na Figura 5-40.
Figura 5-40 - Evidência estação do administrador acessando o SVFW02 via SSH
117
5.2.2.2 SVFW02 – ICMP
Neste experimento avalio a liberação no firewall SVFW02 do protocolo
ICMP, que é utilizado para testes de conectividade (como ping e tracert), a partir da
estação do administrador.
Na avaliação utilizei dois comandos o ping e o tracert, a partir da estação
do administrador.
No experimento abri um prompt de comandos e executei o comando “ping
10.0.0.1 –n 1” (envia pacote para o host 10.0.0.1 apenas uma vez “-n 1”) e recebi a
resposta do servidor “Reply from 10.0.0.1: bytes=32 time<1ms TTL=64”, também utilizei o comando “tracert 10.0.0.1”, que obtém todo o caminho que o pacote percorre
até o destino, no meu caso não foi preciso passar por outros servidores, pois esta vam na mesma rede, conforme pode ser verificado através da Figura 5-41. Os dois
experimentos obtiveram sucesso, caso não fossem bem sucedidos recebería mensagens “request time out”.
Figura 5-41 - Evidência estação do administrador testando conectividade com SVFW02 utilizando ferramentas ICMP
118
5.2.2.3 DMZ – SSH
Neste experimento avaliei a liberação do protocolo SSH no servidor
SVFW02, para conexões com origem na estação do administrador e destino aos servidores da DMZ. Para o experimento utilizei o software Putty tentando acessar o servidor SVWEB01 localizado na DMZ.
Executei
o
software
Putty
e
inseri
o
endereço
do
SVWEB01
(192.168.0.20) e a porta do SSH (22) clicando em “open” foi aberta a console, que
solicitou a autenticação (isto já indica o sucesso da conexão, pois caso contrário recebería uma mensagem de “Connection time out”), utilizei o usuário “fabiojr” e também digitei o comando “uname –a“, apenas para confirmar o nome do servidor que
estava acessando (svweb01.cederj.tcc), conforme apresentado na Figura 5-42.
Figura 5-42 - Evidência estação do administrador acessando servidor na DMZ via SSH
119
5.2.2.4 RDP
O RDP é um protocolo utilizado pela Microsoft para acesso remoto aos
servidores da família Windows, este experimento avalia a liberação do RDP no firewall SVFW02, para as conexões oriundas da estação do administrador com destino aos servidores da DMZ. Nesta avaliação foi utilizado o programa “mstsc.exe”, que
está incluído em toda linha de sistemas operacionais da Microsoft.
Executei o programa mstsc que solicita o nome do computador que se deseja conectar, inserimos SVMAIL01 e pressionei “Connect”, assim foi aberta a tela
de solicitação de autenticação do servidor remoto (neste ponto, já se evidencia o sucesso do experimento, pois, caso contrário, receberia uma mensagem “This computer can’t connect to the remote computer”). Neste momento, inseri o usuário “Administrator” e sua senha, clicando em “OK” foi aberta a console do servidor, conforme
evidenciado pela Figura 5-43.
120
Figura 5-43 - Evidência estação do administrador acessando servidor na DMZ via RDP
121
5.2.2.5 DMZ – VNC
Existem versões do VNC para vários sistemas operacionais, no OpenSolaris é o protocolo padrão de acesso remoto, e ele utiliza duas portas: a 5800 para o
cliente e a 5900 para o acesso remoto.
Com o objetivo de avaliar as liberações para o protocolo VNC, no firewall
SVFW02, com conexões originadas na estação do administrador com destino aos
servidores da DMZ, utilizei o browser Internet Explorer e acessando o endereço do
VNC do servidor SVDB01.
Neste experimento acessei o endereço http://svdb01.cederj.tcc:5800 que
abre um cliente Web, nele digitei o endereço do servidor svdb01.cederj.tcc, então foi
solicitada uma senha (neste ponto evidenciou-se a abertura da porta 5800) e foi efetuada a conexão com o servidor (evidência da abertura da porta 5900), conforme Figura 5-44. Repare que no SVDB01 é gerado um alerta informando que existe um outro usuário acessando remotamente o servidor, no caso com endereço IP 10.0.0.10
(estação do administrador).
122
Figura 5-44 - Evidência estação do administrador acessando servidor na DMZ via VNC
5.3
PORTSCAN (NMAP)
Nesta seção farei alguns experimentos para provar que não abrimos mais
portas que o necessário, segundo as premissas que definidas para os firewalls.
Utilizarei o software NMAP que é um portscan43 muito famoso, inclusive
ele aparece em cenas de vários filmes como em “O ultimato Bourne”, “Duro de matar
4.0” e em “Matrix Reloaded”, onde a personagem Trinity utiliza o NMAP para descobrir uma porta SSH aberta nos computadores da Matrix [15].
43
Portscan é um tipo de software geralmente utilizado por administradores de segurança de rede para
verificar portas abertas em um computador.
123
A seguir veremos os resultados dos experimentos, que foram divididos
pelas interfaces que serão testadas. Os experimentos são os seguintes:
•
Portscan na interface eth1 do servidor SVFW02
•
Portscan na interface eth0 do servidor SVFW02
•
Portscan na interface em1 do servidor SVFW01
•
Portscan na interface em0 do servidor SVFW01
5.3.1 Portscan na interface eth1 do servidor SVFW02
Realizei dois portscans, um a partir de um micro qualquer da LAN e outro
a partir da estação do administrador, porque possuem regras diferentes.
124
5.3.1.1 A partir da LAN
A partir de uma estação localizada na rede interna (qualquer uma localizada na área verde da Figura 5-45) foi executado o programa NMAP. com os seguintes parâmetros “nmap 10.0.0.1 -PN”. O NMAP verifica se o servidor está ativo disparando um “ping” contra o mesmo, mas como nos firewalls foram adicionadas regras
para não permitir ping, foi necessário adicionar a opção –PN, para que o NMAP fizesse a avaliação mesmo que o servidor não respondesse ao ping.
Figura 5-45 - Localização da origem dos experimentos (área verde)
A Figura 5-46 representa os resultados do experimento contra o endereço
10.0.0.1 (SVFW02), que é o endereço da interface eth1 deste servidor. Repare que
não existem mensagens de portas abertas evidenciando o sucesso da configuração
firewall.
125
Figura 5-46 - Portscan na interface eth1 do SVFW02
5.3.1.2
A partir da estação do administrador
O experimento foi efetuado a partir da estação do administrador, conforme representado na Figura 5-47, a estação está inserida na área de LAN, então possui todos os privilégios da LAN e também alguns privilégios necessários para administrar remotamente os servidores.
126
Figura 5-47 - Localização da origem dos experimentos (área verde) - estação do administrador
Repare que agora aparece como aberta a porta do SSH (ver Figura 5-48),
que foi liberada no firewall para a estação do administrador poder acessar remotamente o servidor.
Figura 5-48 - Portscan na interface eth1 do SVFW02 a partir da estação do administrador
127
5.3.2 Portscan na interface eth0 do servidor SVFW02
Neste experimento avaliei se existem portas abertas no SVFW02 com origem na DMZ em direção a LAN, para isto fiz um portscan a partir do servidor SVMAIL01 (IP 192.168.0.10) localizado na DMZ (ver Figura 5-49).
Figura 5-49 - Localização da origem dos experimentos DMZ (área verde)
Executando o comando “nmap 192.168.0.200 –PN”, sendo 192.168.0.200
o endereço da interface eth0 do SVFW02. O NMAP não reportou nenhuma porta
aberta conforme pode ser visto na Figura 5-50, este é o comportamento esperado.
Figura 5-50 - Portscan na interface eth0 do SVFW02 a partir da DMZ
128
5.3.3 Portscan na interface em1 do servidor SVFW01
Agora o experimento continua com origem na DMZ (ver Figura 5-51), mas
vamos focalizar a interface em1 do servidor SVFW01, que é a interface com endereço 192.168.0.100 ligada a rede DMZ.
Figura 5-51 - Localização da origem dos experimentos DMZ (área verde)
Apenas a porta 21 (FTP) está aberta, conforme pode ser visto na Figura
5-52. Neste servidor não tinha o serviço de FTP instalado, mas o motivo da porta 21
estar aberta é que foi instalado neste servidor o proxy de FTP.
Figura 5-52 - Portscan na interface em1 do SVFW01 a partir da DMZ
129
5.3.4 Portscan na interface em0 do servidor SVFW01
Finalmente, neste último experimento avalio a interface externa do servidor SVFW01, que serve como porta de entrada da Internet para o ambiente.
Figura 5-53 - Localização da origem dos experimentos Internet "simulada" (área verde)
O experimento tem como origem a Internet como destino a interface em0
do SVFW01 (ver Figura 5-53). Não obtive sucesso ao realizar o experimento a partir
da Internet, acredito que o motivo seja alguma proteção contra este tipo de procedimento na rede da Oi. A saída foi simular a Internet da seguinte forma:
1. Na interface em0 do SVFW01 onde fica ligado o modem ADSL, ligamos um computador com endereço 200.200.200.3 e máscara
255.255.255.0.
2. Configuramos a interface em0 com endereço IP 200.200.200.1 e
máscara 255.255.255.0.
130
3. Alteramos a configuração do arquivo /etc/pf.conf, substituí o valor
da macro “ext_if” de tun0 (interface virtual que acessa a ADSL) por
em0 e recarreguei as regras com o comando “pfctl –ef /etc/pf.conf”.
Figura 5-54 - Internet simulada
Montado o ambiente efetuei o experimento a partir do micro de teste e observei as seguintes portas abertas: 21 (FTP, para acesso dos usuários externos ao
FTP no SVWEB01), 25 (SMTP, acesso ao SVMAIL01), 80 (HTTP, acesso ao
SVWEB01) e 110 (pop3, acesso ao SVMAIL01), conforme pode ser visto na Figura
5-55, enfim são as portas dos serviços que deveriam ser expostas ao público externo, conforme premissas definidas para o firewall SVFW01 evidenciado o sucesso do
experimento.
131
Figura 5-55 - Portscan na interface em0 do SVFW01 a partir da Internet "simulada"
132
CONCLUSÕES
Neste trabalho demonstrei a utilização da tecnologia de virtualização através da construção de um típico ambiente de uma DMZ. Apresentei suas virtudes e
defeitos, deixando a cargo do leitor decidir se a virtualização é uma tecnologia que
pode lhe oferecer alguma vantagem ou se seus defeitos o afastam dela.
Quanto a melhorias futuras, no trabalho já concluído, divido em quatro partes distintas: virtualização, segurança, disponibilidade e serviços no núcleo da DMZ.
•
Virtualização: a utilização de outros sistemas de virtualização, para
tal recomendamos o software VMWARE ESXi, que é uma versão
gratuita do aclamado VMWARE ESX software voltado para ambientes corporativos e datacenters.
•
Segurança: implementação de um serviço de IDS (Intrusion Detect
System), que é um sistema que monitora o tráfego da rede analisando, por exemplo, o formato dos pacotes tentando identificar possíveis tentativas de invasões ou ataques, eles podem ate mesmo
reagir automaticamente a certos tipos de eventos.
•
Disponibilidade: em um ambiente virtual, no qual vários serviços ficam dependendo do mesmo equipamento, é importante ter uma forma de manter uma contingência para o caso de falha no equipamento. Ter um servidor host adicional, contendo uma réplica de todos os servidores do principal mantendo a sincronização através de
ferramentas de cluster dos sistemas operacionais guest, é uma alternativa.
133
•
Núcleo da DMZ: não tivemos muita preocupação com os sistemas
instalados no núcleo da DMZ, pois o foco era ter os serviços instalados apenas para ajudar nos testes dos firewalls. Indicamos uma
melhor implantação dos serviços de e-mail, criação de um site institucional ou de colaboração (utilizando ferramentas como Sharepoint
e Plone).
Este trabalho me serviu para conhecer outros sistemas operacionais, houve a curiosidade no passado, mas instalar um sistema operacional e utilizá-lo, sem
compromisso, é muito diferente de instalar um sistema operacional e ter o compromisso de fazer as coisas funcionarem. Esta foi uma excelente oportunidade para
aprender, principalmente sobre os sistemas FreeBSD e CentOS nos quais o trabalho
foi mais árduo.
Finalmente, pretendo utilizar esta experiência e continuar meus estudos
nas áreas abordadas. Profissionalmente, vou buscar mais conhecimentos sobre a
plataforma VMWARE ESX, fazendo cursos, experimentos e depois certificações do
fabricante. No âmbito acadêmico pretendo fazer alguma pós-graduação nas áreas
de gestão e segurança de redes.
134
REFERÊNCIAS BIBLIOGRÁFICAS
1. B2B Magazine, Redação. Citrix conclui aquisição da XenSource. Disponível
em
<http://www.b2bmagazine.com.br/web/interna.asp?
id_canais=4&id_subcanais=10&id_noticia=20770>
.
Acessado
em
30/09/2008..
2. COMPUTERWORLD, Redação. A VMWare contra o resto do mercado. Disponível em <http://computerworld.uol.com.br/mercado/2008/03/12/a-vmwarecontra-o-resto-do-mercado/ >. Arquivo acessado em 30/09/2008.
3. COMPUTERWORLD, Os seis passos para um data center verde. Disponível em <http://computerworld.uol.com.br/gestao/2007/04/25/idgnoticia.200704-25.2332178476/paginador/pagina_2> Acessado em: 10/09/2008.
4. DITTNER, Rogier; RULE, David. The Best Damn Server Virtualization Book
Period. Burlington, MA : Syngress Publishing, 2007. cap. 1, p.1-35.
5. FERREIRA, Rubens E. Linux: Guia do Administrador do Sistema. São
Paulo, SP : Novatec, 2003.
6. HANSTEEN, Peter N.M. The book of PF: a no-nonsense guide to the
OpenBSD firewall. San Francisco, CA : No Starch Press, 2008.
7. HOPE, Paco; KORFF, Yanek; POTTER, Bruce. Mastering FreeBSD and
OpenBSD Security. Sebastopol, CA : O'Reilly, 2005.
8. MERCURY/32 V4.62. Pegasus Mail. Disponível em <http://www.pmail.com>.
Acessado em 01/09/2008.
9. MICROSOFT, Perimeter network scenarios. Microsoft Technet. Disponível
em <http://technet.microsoft.com/en-us/library/cc767224.aspx>. Acessado em
02/10/2008.
10. MOTA, Mateus Ribeiro. FTP com Connection Tracking no IPTABLES. Dicas-L. (publicado em 22/03/2006). Disponível em < http://www.dicasl.com.br/dicas-l/20060322.php>. Acessado em 20/09/2008.
135
11. MySQL. MySQL GUI Tools Downloads. Disponível em < http://dev.mysql.com/downloads/gui-tools/5.0.html>. Acessado em 01/10/2008.
12. NEDSLIDER. IPTABLES HOWTO. CentoOS. Disponível em <http://wiki.centos.org/HowTos/Network/IPTables>. Acessado em 20/09/2008.
13. NETFILTER. IPTABLES. Disponível em <http://www.netfilter.org/projects/iptables/index.html>. Acessado em 01/09/2008.
14. NETFILTER. NETFILTER. Disponível em < http://www.netfilter.org/ >. Acessado em 01/09/2008.
15. NMAP, Nmap Featured in The Matrix Reloaded. Disponível em <http://insecure.org/>. Acessado em 05/10/2008.
16. PUTTY. PuTTY Download Page. Disponível em < http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html>. Acessado em 01/10/2008.
17. OpenBSD. PF: OpenBSD Packet Filter. Disponível em <http://www.openbsd.org/faq/pf/pt/index.html>. Acessado em 01/10/2008.
18. REGGIANI, Lucia. Virtualização faz milagre?. INFO Exame. São Paulo, SP, n.
249, p. 69-73.
19. SILVA, Marcos. [FUG-BR] RES: servidor freebsd + velox ppoe. FUG-BR.
Disponível em < http://www.fug.com.br/historico/html/freebsd/200511/msg00410.html> . Acessado em 20/09/2008.
20. SISOFTWARE SANDRA. SiSoftware Sandra Lite 2009. Disponível em <
http://www.sisoftware.net/> . Acessado em 06/10/2008.
21. SUPER PI. Kanada Lab. Disponível em <http://www.xtremesystems.com/pi/> .
Acessado em 06/10/2008.
22. VMWARE Converter. VMWARE Inc. Disponível em <
http://www.vmware.com/products/converter/> . Acessado em 01/08/2008.
23. VMWARE SERVER 1.0.4. VMWARE Inc. Disponível em <http://www.vmware.com> . Acessado em 01/08/2008.
24. VMWARE. Administration Guide. Disponível na Internet via URL:
http://www.vmware.com/pdf/server_admin_manual.pdf. Acessado em
30/09/2008.
25. XEN Wiki. HVM Compatible Processors. Disponível em: <http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors>. Acessado em
03/10/2008.
136
137
ANEXOS
138
ANEXO A – COMANDOS ÚTEIS
FreeBSD:
Comandos Gerais
Comando
/etc/netif {start | stop }
Descrição
Observação
Iniciar, parar interfaces de Útil para quando o IP do
sysinstall
rede.
servidor for alterado
Configurar diversos com-
df
ponentes do sistema
Verifica espaço livre nos
/etc/rc.d/PF {start | stop }
discos
Iniciar, parar o firewall(PF)
Comandos úteis do PF
Opções do pfctl
pfctl -f /etc/pf.conf
pfctl -nf /etc/pf.conf
pfctl -Nf /etc/pf.conf
pfctl -Rf /etc/pf.conf
Ação
Carrega o arquivo pf.conf
Analisa o arquivo, mas não o carrega
Carrega apenas as regras NAT do arquivo
Carrega apenas as regras de filtragem do arquivo
139
CentOS:
Comandos Gerais
Comando
Descrição
System-config-network
Configurar placas de rede.
Service serviço {start | Parar serviços
Observação
stop}
Service iptables stop
Exemplos:
Service network start
ntsysv
Diversas configurações do
sistema
Comandos úteis do IPTABLES
Opções do iptables
Iptables -L
Iptables -F
Ação
Lista as regras atuais
Remove todas as regras existentes (não altera as
Iptables -P
regras inseridas com –P – política)
Define política padrão para uma cadeia. Exemplo:
Iptables –P FORWARD DROP
Significa que todos os pacotes da cadeia
FORWARD serão negados até que seja inserida
uma regra com a opção –A.
140
Ubuntu:
Comando
post-up route
add
Descrição
Observação
-net Adicionar uma rota estáti- Editar
o
192.168.0.0/16
gw ca.
192.168.10.1
Sudo <comando>
arquivo
etc/network/interfaces e inserir o comando
Executar
comando
com
permissões do root
OpenSolaris:
Comando
svcadm disable
Descrição
Observação
svc:/net- Desabilitar NWAM (confi-
work/physical:nwam
guração
automática
su
rede)
Utilizar super usuário
de
Windows Server 2003:
Comando
Descrição
Observação
route add <destino> mask Adiciona uma rota, com a Exemplo:
<mascara> <gateway> -p
opção –p a configuração route add 10.0.0.0 mask
não se perde após um rei- 255.255.255.0
nicio
192.168.0.200 -p
141
ANEXO B – SISTEMAS OPERACIONAIS UTILIZADOS NO
TRABALHO
Microsoft Windows 2003 Standard Edition (32 bits)
É o sistema operacional mais usado do mundo, sendo em grande parte
através de cópias ilegais. Apesar de ser muito lembrado pelas suas falhas críticas de
segurança, ainda é impensável o mundo atual sem o Windows, sejam versões para
servidores ou desktops.
No trabalho foi utilizada uma cópia de avaliação disponível após registro
no site http://www.microsoft.com/windowsserver2003/evaluation/trial/default.mspx
FreeBSD 7
O FreeBSD é um sistema baseado no Unix e muito utilizado por provedores de Internet. É um descendente do sistema BSD, desenvolvido pela universidade
de Berkeley em 1979. Um dos mais famosos casos de sua utilização é a do gigante
da Internet Yahoo.
Pode ser baixado livremente no site www.freebsd.org .
CentOS 5
É um clone do Red Hat Enterprise (distribuição do tipo Enterprise) e é
uma das mais bem sucedidas distribuições Linux. A principal diferença entre as duas
é que a Red Hat cobra pelo suporte, enquanto a CentOS é gratuita. É mantida pelo
CentOS Project.
142
O download pode ser feito no site http://www.centos.org/ .
Ubuntu 8 (Server)
Distribuição Linux baseada no Debian, é patrocinada pela Canonical Ltd,
criada por Mark Richard Shuttleworth (programador sul-africano que se tornou milionário depois de vender sua empresa de segurança de Internet, a Thawte, para a Ve risign, foi o segundo turista espacial da história).
O Projeto do Ubuntu tem uma filosofia baseada nestes três ideais:
1. Todo usuário de computador deve ter a liberdade de executar, copiar, distribuir, estudar, compartilhar, alterar e melhorar seu software por qualquer motivo, sem ter que pagar taxas de licenças.
2. Todo usuário de computador deve poder usar seu software na língua de sua escolha.
3. Todo usuário de computador deve receber todas as oportunidades
para usar um software, mesmo que seja portador de deficiência.
Atualmente é a distribuição Linux mais popular, segundo o ranking do site
http://distrowatch.com/, e pode ser baixada no site www.ubuntu.com, onde também
pode ser encomendada gratuitamente, preenchendo um cadastro você recebe um
pacote com três CDs do Ubuntu.
OpenSolaris 2008.05
O OpenSolaris é baseado no código fonte do Solaris (Sistema Operacional Comercial). É um projeto criado pela Sun Microsystems para criar uma comuni dade de desenvolvedores em torno do sistema operacional Solaris.
143
No futuro a SUN espera que o OpenSolaris rivalize com o Linux e seu uso
se torne tão corriqueiro quanto o uso do Java (também da SUN).
Pode ser baixado no site: http://www.opensolaris.com/get/ .
144
ANEXO C – ARQUIVOS DE CONFIGURAÇÃO
•
SVFW01
o /etc/rc.conf
# Configuracoes de Rede
ifconfig_em0="inet 200.200.200.1 netmask 255.255.255.0"
ifconfig_em1="inet 192.168.0.100 netmask 255.255.255.0"
defaultrouter="200.200.200.1"
hostname="svfw01.cederj.tcc"
gateway_enable="YES"
static_routes="rlan"
route_rlan="-net 10.0.0.0/8 192.168.0.200"
# Teclado
keymap="us.iso"
# Habilitar SSH
sshd_enable="YES"
# Configuracoes do PF
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""
ftpproxy_enable="YES"
o /etc/ppp/ppp.conf
default:
set device PPPoE:em0:ISP
enable lqr
enable tcpmssfixup
set
set
set
set
set
lqrperiod 6
mut 1492
mru 1492
timeout 0
log Phase tun
nat enable yes
add default HISADDR
enable dns
#
#
#
#
#
#
Enable PF (load module if required)
rules definition file for pf
additional flags for pfctl startup
start pflogd(8)
where pflogd should store the logfile
additional flags for pflogd startup
145
set authname [email protected]
set authkey ddnnnnnnnn
•
SVWEB01
o /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.20
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.100
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.30
dns-search cederj.tcc
post-up route add -net 10.0.0.0/8 gw 192.168.0.200
Download

NOME DO AUTOR - UFF - Universidade Federal Fluminense