UNIVERSIDADE REGIONAL DE BLUMENAU
CENTRO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE PÓS-GRADUAÇÃO EM TECNOLOGIAS PARA O
DESENVOLVIMENTO DE APLICAÇÕES WEB
UTILIZAÇÃO DE MÁQUINAS VIRTUAIS PARA IMPLANTAR UM MECANISMO
TRANSPARENTE DE DETECÇÃO DE INTRUSÃO EM SERVIDORES WEB
LUCIANO RAITZ
BLUMENAU
2005
LUCIANO RAITZ
UTILIZAÇÃO DE MÁQUINAS VIRTUAIS PARA IMPLANTAR UM MECANISMO
TRANSPARENTE DE DETECÇÃO DE INTRUSÃO EM SERVIDORES WEB
Monografia apresentada ao Programa de PósGraduação em Informática do Centro de
Ciências Exatas e Naturais da Universidade
Regional de Blumenau, como requisito parcial
para a obtenção do grau de Especialista em
Informática.
Prof. Francisco Adell Péricas – Orientador
BLUMENAU
2005
LUCIANO RAITZ
UTILIZAÇÃO DE MÁQUINAS VIRTUAIS PARA IMPLANTAR UM MECANISMO
TRANSPARENTE DE DETECÇÃO DE IMTRUSÃO EM SERVIDORES WEB
Monografia aprovada com conceito “____”, para a obtenção do certificado de
“Especialista”, no Curso de Pós-Graduação em Nível de Especialização em Tecnologias para
o Desenvolvimento de Aplicações WEB, promovido pela Universidade Regional de
Blumenau – FURB.
Orientação:
________________________________________
Prof. Francisco Adell Péricas, Msc
Comissão Avaliadora:
________________________________________
Prof. Janes Fidélis Tomelin, MeE
________________________________________
Prof. Paulo Fernando da Silva, MsC
Blumenau
Abril, 2005
AGRADECIMENTOS
Agradeço ao meu orientador Péricas, que a cada encontro me deixava mais motivado
para a conclusão deste trabalho, e que deu atenção durante todo o processo de elaboração.
Agradeço também a minha noiva Fernanda que também estava fazendo sua
monografia, e em certos momentos me ajudava dando apoio e tendo paciência, além de ter
dado o incentivo para que eu pudesse realizar a pós-graduação.
RESUMO
Detectores de intrusão baseados em rede são vulneráveis a ataques, pois ao final de um ataque
bem sucedido pode-se apagar qualquer evidência que alguém tenha invadido o computador.
Este trabalho apresenta uma arquitetura confiável[Atenção10] para uso de detectores de
intrusão através da utilização de máquinas virtuais, que, com as vantagens de portabilidade e
custo, vêm se destacando para a criação de servidores. A arquitetura proposta faz, uso de
máquinas virtuais para deixar o sistema de detecção de intrusão invisível e inacessível, caso
haja uma invasão. Os testes apresentados, mostram que a utilização desta arquitetura é
funcional e viável para uma arquitetura de servidores.
ABSTRACT
Network based intrusion detectors are vulnerable to attacks, because at the end of a successful
attack, any evidence of an invasion may be easily erased. This work shows a reliable
architecture to use as an intrusion detector using virtual machines which, along with
portability and cost advantages, stands out for servers creation. The proposed architecture
uses virtual machines to make the intrusion detection system invisible and inaccessible, in
case of an invasion. The presented tests show that the use of this architecture is functional and
viable for a servers architecture.
LISTA DE ILUSTRAÇÕES
Figura 1 – Modelo de referência TCP/IP ................................................................................. 15
Figura 2 – Rede NIDS .............................................................................................................. 20
Figura 3 – Rede HIDS .............................................................................................................. 21
Figura 4 – Rede DIDS .............................................................................................................. 22
Figura 5 – Monitor do tipo I ..................................................................................................... 29
Figura 6 – Monitor do tipo II.................................................................................................... 29
Figura 7 – Híbrida do tipo I...................................................................................................... 30
Figura 8 – Híbrida do tipo II..................................................................................................... 30
Figura 9 – Sistemas ativos ........................................................................................................ 37
Figura 10 – Configurações de rede........................................................................................... 38
Figura 11 – ACID ..................................................................................................................... 40
Figura 12 – Capturando pacotes ............................................................................................... 41
Figura 13 – Resultados após PortScan ..................................................................................... 42
Figura 14 – Resultados no ACID ............................................................................................. 43
Figura 15 – Comando telnet capturado..................................................................................... 44
Figura 16 – Acesso MySql pelo telnet ..................................................................................... 45
Figura 17 – Resultado após ataque ........................................................................................... 46
LISTA DE ABREVIAÇÕES
DIDS Distributed IDS
HTTP Hyper Text Transfer Protocol
HIDS Host Based IDS
IDS
Intrusion Detection System (Sistema de Detecção de Intrusão)
IP
Internet Protocol
JVM Java Virtual Machine
NIDS Network Based IDS
NIC's Network Interface Cards
TCP
Transport Control Protocol
UDP User Datagram Protocol
VM
Virtual Machine
XML eXtensible Markup Language
SUMÁRIO
1
INTRODUÇÃO ...................................................................................................... 11
1.1
OBJETIVOS............................................................................................................. 12
1.2
RELEVÂNCIA......................................................................................................... 12
1.3
ORGANIZAÇÃO TEXTO....................................................................................... 12
2
INTERNET ............................................................................................................. 14
2.1
COMUNICAÇÃO .................................................................................................... 14
2.2
SEGURANÇA DE SITES WEB.............................................................................. 16
2.2.1
Ferramentas .............................................................................................................. 16
3
DETECÇÃO DE INTRUSÃO............................................................................... 18
3.1
CLASSIFICAÇÃO QUANTO À ORIGEM DOS DADOS .................................... 19
3.1.1
IDS de Rede.............................................................................................................. 19
3.1.2
IDS Baseado em Host............................................................................................... 20
3.1.3
IDS Distribuído ........................................................................................................ 21
3.2
LIMITAÇÕES .......................................................................................................... 22
3.3
CLASSIFICAÇÃO QUANTO À FORMA DE DETECÇÃO ................................. 23
3.3.1
Detecção por Assinatura........................................................................................... 23
3.3.2
Detecção por Anomalia ............................................................................................ 24
3.3.3
Detecção Híbrida ...................................................................................................... 24
3.4
FERRAMENTAS EXISTENTES ............................................................................ 24
4
MÁQUINAS VIRTUAIS ....................................................................................... 27
4.1
DEFINIÇÃO............................................................................................................. 27
4.2
TIPOS DE MÁQUINAS VIRTUAIS ...................................................................... 28
4.2.1
Tipo I ........................................................................................................................ 28
4.2.2
Tipo II ....................................................................................................................... 29
4.2.3
Tipo Híbrido ............................................................................................................. 29
4.3
ATRIBUTOS DOS MONITORES DE MÁQUINAS VIRTUAIS.......................... 30
4.4
USO DE MÁQUINAS VIRTUAIS.......................................................................... 31
4.4.1
Benefícios ................................................................................................................. 31
4.4.2
Desvantagens ............................................................................................................ 32
4.5
EXEMPLOS DE MÁQUINAS VIRTUAIS ............................................................ 33
4.5.1
Java Virtual Machine................................................................................................ 33
4.5.2
Framework DotNet (.Net) ........................................................................................ 33
4.5.3
VMware .................................................................................................................... 34
4.5.4
Microsoft Virtual PC 2004 ....................................................................................... 35
5
ARQUITETURA PARA PROTEÇÃO DE DETECTORES DE INTRUSÃO. 36
5.1
PROBLEMA ............................................................................................................ 36
5.2
PROPOSTA.............................................................................................................. 36
5.3
DESENVOLVIMENTO DA PROPOSTA .............................................................. 37
5.4
COMPROVAÇÃO DA INACESSIBILIDADE DO IDS NO HOST ...................... 41
6
CONSIDERAÇÕES FINAIS................................................................................. 47
6.1
CONCLUSÃO.......................................................................................................... 47
6.2
EXTENSÕES ........................................................................................................... 48
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 49
1
INTRODUÇÃO
A Web enfrenta diferentes ameaças desde a sua criação, que aumentam com o passar
dos tempos. Com a necessidade de criação de novas funcionalidades em um ambiente em
crescimento, projetistas podem não ter dado a devida atenção para a segurança dos sistemas
desenvolvidos.
As redes de computadores têm crescido constantemente, acompanhadas em uma
mesma proporção pela área de segurança, para manter a integridade de seus serviços
disponibilizados. As preocupações com as questões relativas à segurança são reais e não
podem ser deixadas de lado, pois existem pessoas (Cracker) com intenção de invadir,
prejudicando e bisbilhotando sites com conteúdo confidencial. No entanto, métodos para
bloquear esses intrusos estão sendo desenvolvidos, fazendo com que fique cada vez mais
difícil a ação desses intrusos.
Diversas ferramentas contribuem para aumentar a segurança de um sistema de
computação, entre as quais se destacam os Firewalls e os sistemas de detecção de intrusão
(IDS – Intrusion Detection System). Tais sistemas monitoram continuamente a atividade de
um ambiente computacional, buscando evidências de intrusões (LAUREANO, 2004). Estas
ferramentas fazem à análise automatizada das informações, automatizando auditorias do
sistema.
A utilização de máquinas virtuais, segundo Chen (2001), pode ser usada para
incrementar ainda mais a segurança de um sistema computacional contra ataques aos seus
serviços. O uso de máquinas virtuais vem se tornando interessante também em sistemas
computacionais modernos, devido a suas vantagens em termos de custo e portabilidade
(BLUNDEN, 2002). A utilização de máquinas virtuais evita a necessidade de se ter um
equipamento para cada servidor de sua rede: pode-se ter um único equipamento e neste várias
máquinas virtuais com os diversos aplicativos.
Devido à vulnerabilidade intrínseca dos sistemas de detecção de intrusão, que podem
ter seu processo interrompido sem maiores dificuldades caso haja uma invasão no servidor
onde estiver rodando, tem-se a necessidade de aumentar o nível de segurança destes sistemas.
Para que se tenha um aumento do nível de segurança serão utilizadas duas ferramentas em
conjunto: a primeira, uma máquina virtual (como um sistema hospedeiro) que será preparada
para ser o servidor; a segunda um sistema de detecção de intrusão, que deve estar configurado
de tal maneira, que o invasor não tenha acesso e não tenha como ocultar os rastos da sua
invasão.
1.1
OBJETIVOS
O trabalho tem como objetivo implantar uma arquitetura de detecção de intrusão,
utilizando os recursos de máquinas virtuais como servidores de aplicações para a internet, e
apresentar os benefícios dessa arquitetura.
Os objetivos específicos do trabalho são:
a) avaliar máquinas virtuais comerciais;
b) instalar um servidor de aplicação web em uma máquina virtual;
c) monitorar o tráfego da máquina virtual através de um sistema de detecção de
intrusão instalado na máquina real;
d) disponibilizar relatórios do sistema de detecção de intrusão na máquina real.
1.2
RELEVÂNCIA
O aumento do nível de segurança para aplicações web é uma necessidade, tendo em
vista que o crescimento da rede internet é inevitável e, portanto, sua vulnerabilidade também.
Mecanismos de monitoração do tráfego de dados de acesso a aplicativos web são
fundamentais, mas tanto ele quanto seus relatórios são suscetíveis ao acesso por parte de
hackers. Este trabalho visa criar uma arquitetura para ocultar tanto os softwares de
monitoração como os relatórios obtidos.
1.3
ORGANIZAÇÃO TEXTO
O texto a seguir organiza-se nos capítulos abaixo:
a) Capítulo 1- Introdução: o presente capítulo, descreve o trabalho de forma geral;
b) Capítulo 2 – Internet: descreve os conceitos básicos do funcionamento e como foi
criada a internet. Este capítulo fornece um conhecimento introdutório sobre a
comunicação entre computadores, além de apresentar a comunicação TCP/IP;
c) Capítulo 3 – Detecção de Intrusão: faz uma descrição do funcionamento dos
detectores de intrusão e quais são os tipos existentes, também apresenta exemplos
de detectores;
d) Capítulo 4 – Máquinas Virtuais: é apresentado a definição e o funcionamento de
máquinas virtuais. Apresentando exemplos e as vantagens da sua utilização;
e) Capítulo 5 – Arquitetura Para Proteção de Detectores de Intrusão: aqui, será
apresentada a arquitetura montada para a realização deste trabalho, os benefícios
que podem ser adquiridos alem de demonstração do seu funcionamento e a análise
dos resultados;
f) Capítulo 6 – Considerações Finais: relatam-se aqui, conclusões e sugestões para
futuros trabalhos.
2
INTERNET
A internet é uma rede de computadores que surgiu em 1969, de um projeto do
Departamento de Defesa dos Estados Unidos, que tinha como objetivo a interligação de
computadores utilizados em centros de investigação com fins militares.
A internet tem revolucionado o mundo dos computadores e das comunicações, sendo
um mecanismo de disseminação da informação e divulgação mundial e um meio para
colaboração e interação entre indivíduos e seus computadores, independentemente de suas
localizações geográficas.
Assim a internet representa um dos mais bem sucedidos exemplos dos benefícios da
manutenção do investimento e do compromisso com a pesquisa e o desenvolvimento de uma
infra-estrutura para a informação. Começando com as primeiras pesquisas em trocas de
pacotes, o governo, a indústria e o meio acadêmico têm sido parceiros na evolução e uso desta
excitante nova tecnologia (AISA, 2004).
Define-se a internet como o sistema de informação global que é logicamente ligado
por um endereço único global baseado no Internet Protocol (IP) ou suas subseqüentes
extensões; são capazes de suportar comunicações usando o Transmission Control
Protocol/Internet Protocol (TCP/IP) ou suas subseqüentes extensões e/ou outros protocolos
compatíveis ao IP; e provê, usa ou torna acessível, tanto publicamente como privadamente,
serviços de mais alto nível produzidos na infra-estrutura descrita (AISA, 2004).
2.1
COMUNICAÇÃO
O TCP/IP é um conjunto de protocolos utilizado para a interconexão de redes distintas.
Seu núcleo é formado principalmente pelo TCP (Transmission Control Protocol) e pelo IP
(Internet Protocol). O TCP/IP surgiu da necessidade de uma rede leve e que fosse
independente do tipo de hardware e software que o utilizaria. Por este motivo, é amplamente
utilizado para a interligação de muitas redes de computadores atuais, sendo a internet um
exemplo importante de sua implantação.
O TCP/IP opera através da utilização de uma pilha de protocolos. Essa pilha é a soma
total de todos os protocolos necessários para transferir os dados entre duas máquinas
(ANÔNIMO, 2000, p.50). Estas máquinas podem ou não estar na mesma rede. Esta é uma das
principais vantagens da utilização do TCP/IP, máquinas distantes umas das outras, que não
estão ligadas fisicamente na mesma rede ou redes de tipos diferentes, podem se conectar e
trocar informações ou serviços.
Segundo Péricas (2003), o modelo de referência TCP/IP, especificado pelo IETF, é
baseado em um conjunto de cinco camadas. Como está representado na Figura 1.
Figura 1 – Modelo de referência TCP/IP
Os conjuntos de camadas são:
a) Camada de Aplicativos: este é o nível mais alto, onde os usuários executam
softwares que utilizam uma interligação em redes TCP/IP. Um software interage
com um dos protocolos da camada de transporte para enviar ou receber dados. O
software define o estilo de transporte necessário, que tanto pode ser uma seqüência
de mensagens individuais ou um conjunto contínuo de bytes. Dessa forma o
software transfere para a camada de transporte, os dados de forma adequada, para
que possam ser transmitidos;
b) Camada de Transporte: a principal função da camada de transporte é permitir a
comunicação de um programa aplicativo para outro. A camada de transporte pode
regular o fluxo de informações. Ela pode fornecer transporte confiável, assegurando
que os dados cheguem sem erros e em seqüência. Para isso, o protocolo de
transporte faz com que o lado receptor envie confirmações e o lado transmissor
retransmita pacotes perdidos;
c) Camada Rede: trata das informações de uma máquina para outra. Segundo Péricas
(2003), integra toda a arquitetura. Seu objetivo é entregar pacotes emitidos a
qualquer destino independentemente das tecnologias de transmissão utilizadas.
Define um formato de pacote e um protocolo denominado IP. É responsável pelo
roteamento e pelo congestionamentos;
d) Camada Enlace: o nível mais baixo do software TCP/IP, compreende uma camada
da interface de rede responsável pela aceitação de pacotes IP e por sua transmissão
através de uma rede específica.;
e) Física: trata da transmissão de bits através de um canal de comunicação. Questões
de projeto devem levar em conta interfaces mecânicas, elétricas e o meio físico
(PERICAS, 2003).
Quando o protocolo TCP/IP foi projetado, não foi dada uma importância muito grande
com a segurança. Devido a isso, existem falhas nos protocolos que, quando exploradas,
disponibilizaram uma série de recursos para a realização de ataques. É possível observar
problemas passíveis de serem explorados em todas as camadas do protocolo TCP/IP.
2.2
SEGURANÇA DE SITES WEB
Existem várias ferramentas para a proteção de um servidor e da sua própria rede. Não
existe um único software ou hardware que realiza todo o trabalho de proteção. Normalmente
os sistemas para proteger uma rede são vários e servem para complementar um ao outro.
Exemplos de ferramentas para a proteção são o Firewall e o IDS.
As ferramentas para segurança de computadores e redes são necessárias para
proporcionar transações seguras. Geralmente, as instituições concentram suas defesas em
ferramentas preventivas como Firewalls, mas acabam ignorando as ferramentas de detecção
de intrusão.
2.2.1
Ferramentas
Dentre as ferramentas que se destacam na segurança de redes, tem-se o Firewall que é
o mecanismo de segurança interposto entre a rede interna e a rede externa com a finalidade de
liberar ou bloquear o acesso de computadores remotos aos serviços que são oferecidos em um
perímetro ou dentro da rede corporativa. Este mecanismo de segurança pode ser baseado em
hardware, software ou uma mistura dos dois.
A construção de um Firewall é raramente constituída de uma única técnica. É, ao
contrário, um conjunto balanceado de diferentes técnicas para resolver diferentes problemas.
O objetivo de qualquer Firewall é criar um perímetro de defesa projetado para proteger os
recursos internos de uma organização.
Ele é o ponto de conexão com a internet, ou seja, tudo o que chega à rede interna deve
passar pelo Firewall. Ele é também o responsável por aplicar as regras de segurança,
autenticar usuários, logar tráfego para auditoria e limitar a exposição dos hosts internos aos
hosts da internet. Entretanto, algumas tarefas não podem ser executadas, como proteger a rede
contra usuários internos mal intencionados, tratar conexões que não passam por ele, ameaças
novas em que ele não foi parametrizado para executar uma ação.
Somente possuir um Firewall não garante mais que a empresa esteja livre de sofrer
ataques. Com o aumento dos ataques a empresas, faz-se necessário uma maior atenção de
como evitar este problema. Outra ferramenta (estudada no capítulo 3) que se destaca é o
Sistema de Detecção de intrusão (IDS), o IDS é uma ferramenta que faz parte deste conjunto
de ferramentas que visam auxiliar as empresas a proteger sua rede contra ataques e invasões.
Uma forma mais avançada de segurança, combina o IDS com o Firewall, onde o IDS
detecta o intruso e interage com o Firewall para que o tráfego futuros pacotes possam ser
negados.
3
DETECÇÃO DE INTRUSÃO
O sistema de detecção de intrusão ou IDS tem como um dos objetivos principais,
detectar se alguém está tentando entrar no seu sistema ou se algum usuário real de sua rede
está fazendo mau uso do mesmo. Esta ferramenta fica ativa constantemente em background e
somente gera uma notificação quando detecta alguma coisa que seja suspeita ou ilegal. A
ferramenta IDS, aplicada junto ao Firewall, proporciona a monitoração de tráfego tanto de
entrada quanto de saída das informações.
Segundo Caswell (2003), um IDS é o equivalente high-tech de um alarme contra
ladrões, configurado para monitorar pontos de acesso, atividades hosts e invasores
conhecidos. O modo mais simples de definir um IDS poderia ser descrevendo-o como uma
ferramenta especializada que sabe como ler e interpretar o conteúdo de arquivos de log de
roteadores, firewalls, servidores e outros dispositivos da rede.
Muitas ferramentas existentes de IDS realizam suas operações a partir da análise de
padrões do sistema operacional e da rede tais como: utilização de CPU, I/O de disco, uso de
memória, atividades dos usuários, número de tentativas de login, número de conexões, entre
outros. Com a obtenção destes dados, é formada uma base de informação sobre a utilização do
sistema em vários momentos do tempo, outras ferramentas de IDS já possuem bases com
padrões de ataque previamente montadas permitindo também a configuração dos valores das
bases bem como inclusão de novos parâmetros.
Além disso, um IDS freqüentemente armazena um banco de dados de assinaturas de
ataque, conhecidos e pode comparar padrões de atividade, tráfego ou comportamento que vê
nos logs que está montando com essas assinaturas, para reconhecer quando ocorre uma
correspondência próxima entre uma assinatura e um comportamento corrente ou recente
(CASWELL, 2003). Com essa informações, o IDS pode tomar várias decisões como: emitir
alarmes, alertar, automaticamente desativar o link de internet, ativar rastreadores e fazer várias
tentativas para identificar ataques maldosos.
O IDS automatiza a tarefa de analisar os dados de uma auditoria. Com estes dados será
possível detectar o invasor e muitas vezes descobrir atividades sem autorização. Assim sendo,
segundo Caswell (2003), um IDS é projetado e usado para detectar e então desviar ou deter
(se possível) tais ataques ou uso não autorizado de sistemas, redes e recursos relacionados.
A classificação do IDS pode ser baseado na origem de seus dados e também pode ser
distinguido por suas diferentes estratégias de análise de evento.
3.1
CLASSIFICAÇÃO QUANTO À ORIGEM DOS DADOS
Existem basicamente três tipos de detecção:
a) NIDS (sistema de detecção de invasão baseado em rede);
b) HIDS (sistema de detecção de invasão baseado em host);
c) DIDS (sistema de detecção de invasão distribuído).
3.1.1
IDS de Rede
Este tipo de IDS, funciona verificando todos os quadros de um segmento da rede. As
placas de rede normalmente tem seu funcionamento no modo não-promíscuo, desse modo
apenas os pacotes destinados ao endereço da placa de rede é que são encaminhados para a
pilha de análise. Mas para que o monitoramento de um segmento de rede seja possível, é
preciso que a placa de rede esteja configurada para o modo promíscuo. Assim todos os
quadros ou frames do segmento serão capturados pela placa de rede.
Entretanto, em vista do surgimento de regulamentações quanto à privacidade, o
monitoramento das comunicações na rede é uma responsabilidade que deve ser
cuidadosamente considerada (CASWELL, 2003).
Conforme a Figura 2, os detectores de intrusão estão colocados de maneira que podem
monitor todos os dispositivos dos segmentos da rede.
Figura 2 – Rede NIDS
Segundo Caswell (2003), o uso de vários NIDS dentro de uma rede é um exemplo de
arquitetura de segurança de defesa aprofundada.
3.1.2
IDS Baseado em Host
São instalados em servidores para alertar e identificar ataques e tentativas de acesso
indevido à própria máquina, sendo mais empregados nos casos em que a segurança está
focada em informações contidas em um servidor e os usuários não precisam ser monitorados.
O HIDS protege apenas o sistema host em que ele reside e sua placa de rede opera no
modo não-promíscuo. O modo não-promíscuo de operação pode ser uma vantagem em alguns
casos, pois nem todas as NIC's (placa de interface de rede) são capazes de usar o modo
promíscuo.
Uma outra vantagem segundo Calwell (2003) é a capacidade de personalizar o
conjunto de regras para uma necessidade específica.
A Figura 3, apresenta uma HIDS em servidores específicos. Dessa maneira podem ser
especificadas regras para cada um dos tipos de servidores.
Figura 3 – Rede HIDS
3.1.3
IDS Distribuído
A arquitetura de um sistema distribuído é formada por detectores de intrusão
colocados em pontos estratégicos, sendo que os sensores de detecção ficam em locais
distantes e se reportam a uma estação de gerenciamento. A atualização de assinaturas nos IDS
podem ser feitas de maneira específica, dependendo da atividade que o IDS está monitorando.
Os alertas são encaminhados para a estação de gerenciamento e usados para avisar o
administrador da rede.
Segundo Calwell (2003), em um DIDS há muita complexidade. A abrangência e a
funcionalidade variam muito de um fabricante para outro e, de acordo com isso, a definição
torna-se indistinta. Em um DIDS, os sensores individuais podem ser NIDS, HIDS ou uma
combinação entre ambos.
A seguir, na Figura 4, tem-se um DIDS onde 4 sensores se reportam a uma única
estação. Os detectores podem estar operando de maneira diferenciada: alguns podem estar
operando no modo promíscuo e outros não.
Figura 4 – Rede DIDS
3.2
LIMITAÇÕES
Com as informações extraídas dos sistemas de computação, uma ferramenta de IDS
pode identificar as tentativas de intrusão e até mesmo registrar a técnica utilizada. Um IDS
não é perfeito, podendo ocorrer:
a) falsos positivos – ocorrem quando a ferramenta classifica uma ação como uma
possível intrusão, quando na verdade trata-se de uma ação legítima; Um bom
exemplo de falso positivo ocorre quando um servidor web recebe vários pacotes do
tipo tentativa de conexão e o IDS conclui que se trata de um ataque, devido ao
grande número de solicitações de conexão sem resposta de quem está solicitando a
comunicação;
a) falsos negativos – ocorrem quando uma intrusão real acontece, mas a ferramenta
não detecta, pois considera a ação legítima;
b) subversão – ocorre quando o intruso (através de ataques) modifica a operação da
ferramenta de IDS para forçar a ocorrência de falso negativo. Após a invasão a uma
máquina ser bem sucedida, um atacante pode enviar informações falsas como se
fossem ações legítimas da máquina invadida. Outro exemplo: um invasor pode
fornecer uma quantidade (superior a capacidade de análise) de dados para que o
IDS investigue, tornando-o inoperante permanentemente ou por um certo período
de tempo, o que bastaria para uma invasão sem alarmes.
Segundo Laureano (2004), gerar falsos positivos tende ao comprometimento da
confiança na ferramenta. Por outro lado, a quantidade de falsos negativos coloca dúvidas
sobre a eficácia do IDS.
3.3
CLASSIFICAÇÃO QUANTO À FORMA DE DETECÇÃO
Com a base de dados sobre a utilização do sistema em vários momentos do dia, com as
opções que podem vir previamente definidas e além dos sistemas permitirem novas inclusões
de parâmetros, o IDS pode o realizar suas operações. Estas técnicas de operações para
detectar a intrusão podem ser classificadas em:
a) detecção por assinatura;
b) detecção por anomalia;
c) detecção híbrida.
3.3.1
Detecção por Assinatura
A detecção por assinatura é um dos métodos mais utilizados na detecção de ataques.
Esta maneira de detecção utiliza um banco de dados com as seqüências de ações que são
indícios de uma intrusão. As seqüências são conhecidas como assinaturas, que identificam
diversas formas de ataques conhecidos e serve como base para busca de intrusos no sistema.
Este método trabalha procurando regras pré-estabelecidas no tráfego da rede. Quando
é encontrado algum código na rede que esteja descrito em alguma regra, é gerado um alerta ou
evento que permita uma ação defensiva (NORTHCUT, 2002).
As assinaturas podem estar previamente definidas na instalação do IDS, mas também
podem ser configuradas e criadas novas regras; pelo próprio administrador da rede ou
encontradas em sites especializados em segurança, neste caso, pode ser necessário adaptar a
regra para o IDS específico.
3.3.2
Detecção por Anomalia
Esta forma de detecção baseia-se no comportamento do sistema e em identificar
possíveis desvio, comparado com uma base pré-estabelecida considerada como normal. Para a
formação desta base normalmente o sistema fica somente observando o comportamento, e em
determinado dia o administrador da rede ativa o IDS e ele irá funcionar baseado nos dados
obtidos. Então irá detectar a intrusão baseado em diversidades do comportamento normal de
sua rede.
Por não estar trabalhando com assinaturas pré-definidas, este método tem a vantagem
de identificar ataques desconhecidos; ao contrário da detecção por assinatura que tem regras
estabelecidas. A desvantagem deste método está pelo fato de gerar muitos falsos positivos.
3.3.3
Detecção Híbrida
Utiliza os métodos acima de maneira combinada, baseando-se em assinaturas já
conhecidas e comportamentos anormais da rede.
3.4
FERRAMENTAS EXISTENTES
Existe uma grande diversidade de IDS disponíveis, alguns pagos e outros gratuitos e
com diversas formas de funcionamento. A seguir está sendo apresentado alguns exemplos de
IDS e suas principais características.
Emeral
a) baseado em host;
b) fácil configuração;
c) quando detecta uma varredura, executa uma função que esconde o
sistema do ataque;
d) reporta todas as violações ao syslog;
e) desenvolvido por www.psionic.com/download.
RealSecure
a) baseado numa arquitetura de três níveis: um mecanismo de
reconhecimento HIDS, outro baseado NIDS e o terceiro é um módulo
administrador;
b) um dos primeiros aplicativos IDS comerciais, exemplo de IDS
híbrido;
c) possui resposta automática para eventos encontrados incluindo log
dos eventos, envio de mensagem SNMP e-mail;
d) permite encerrar a conexão, reconfigurar o Firewall, desabilitar uma
conta, entre outras funções;
e) permite criar suas próprias regras de assinaturas e alertas;
f) possui atualizações automáticas para as assinaturas e atualizações do
produto;
g) assistência on-line para resposta de incidentes;
h) desenvolvido por internet Security Systems. www.iss.net .
PortSentry
a) baseado em host;
b) fácil configuração;
c) quando detecta uma varredura, executa uma função que esconde o
sistema do ataque;
d) reporta todas as violações ao syslog;
e) desenvolvido por www.psionic.com/download.
Prelude
a) IDS híbrido;
b) possui interface gráfica;
c) permite gerenciamento centralizado;
d) permite usar as regras do SNORT;
e) baseado em módulos;
f) armazena os alertas em modo texto ou em banco de dados MySQL ou
PostgreSQL;
g) desenvolvido por www.prelude-ids.org.
Snort
a) baseado em assinatura;
b) IDS de rede
c) roda em diversos sistemas operacionais;
d) estrutura de plugins;
e) faz análise de protocolo;
f) várias formas de registro: syslog, SQL;
g) detecta portscan, ataque UNICODE, Buffer overflows, entre outros;
h) remonta fragmentos IP e TCP;
i) normaliza requisições HTTP, RPC;
j) ativar regras dinamicamente (regras podem ser ativadas por outras
regras);
k) permite ao administrador criar suas próprias regras de assinaturas;
l) desenvolvido por www.snort.org.
Tabela 1: Exemplos de IDS
Apesar de um grande número de ferramentas IDS existirem pagas e até mesmo
gratuitas, somente esta ferramenta é insuficiente para a segurança de um sistema
computacional.
4
MÁQUINAS VIRTUAIS
As máquinas virtuais foram originalmente desenvolvidas para centralizar os sistemas
de computador utilizados no ambiente VM/370 da IBM (GOLDBERG, 1979). Naquele
sistema, cada máquina virtual simulava uma réplica física da máquina real e os usuários
tinham a ilusão de que o sistema estava disponível para seu uso exclusivo (SUGERMAN,
2001).
4.1
DEFINIÇÃO
Assim como existe uma grande variedade de máquinas virtuais, tais como o Java
Virtual Machine, o CLR do .NET, o VMware e o Virtual PC para Windows. Além deles,
também existe um sistema operacional chamado Virtual Machine (VM), que roda em
máquinas IBM mainframes; os conceitos, também são vários.
Segundo Campos (2004), pode-se definir uma máquina virtual (VM) como uma
máquina abstrata (o JVM, o .NET CLR e o VMware são máquinas abstratas, ao contrário da
emulação, que tenta ser o mais próximo possível da realidade emulada), que permite que a
máquina real seja particionada de tal modo que diversos sistemas operacionais sejam
executados ao mesmo tempo.
A IBM define uma máquina virtual como uma cópia totalmente protegida e isolada de
um sistema físico (SUGERMAN, 2001). Uma máquina real é composta por Hardwares
(processador, disco rígido, placa mãe, monitor vídeo, memória, etc.), em uma máquina real, a
BIOS ou devices drivers específicos fornecem as operações de baixo nível para que um
sistema operacional possa acessar os vários recursos da placa mãe, memória ou serviços de
E/S.
Já um emulador é um software que simula um computador real. Um emulador
"engana", fazendo com que todas as operações da máquina real sejam implementadas em um
software. Isso possibilita executar um aplicativo de uma plataforma em outra, por exemplo,
um aplicativo do Windows executando no Linux. Devido a simulação quase que total das
instruções de um computador, um emulador perde muito em eficiência ao traduzir cada
instrução da máquina real.
Segundo Laureano (2004), a funcionalidade e o nível de abstração de uma máquina
virtual encontra-se em uma posição intermediária entre uma máquina real e um emulador, na
forma em que os recursos de hardware e de controle são abstraídos e usados pelas aplicações.
O software de máquina virtual, cria um ambiente através de um monitor de máquina
virtual (Virtual Machine Monitor – VMM), que é um computador com seu próprio sistema
operacional dentro de outro sistema operacional (host). Este monitor, pode criar várias
máquinas virtuais sem que nenhuma interfira na outra e também não interfira no sistema real
onde o software de máquina virtual está instalado. A máquina virtual pode ser uma cópia do
hardware da máquina real, fazendo com que o Sistema Operacional na máquina virtual pareça
estar executando diretamente sobre um computador real.
Cada máquina virtual trabalha como um PC completo, com direito até a BIOS e
configuração do Setup. Dispositivos como o CD-ROM e unidades de disquetes podem ser
compartilhados entre as máquinas virtuais e o sistema host, em alguns casos até mesmo
simultaneamente (uma unidade de CD pode ser acessada em todos os sistemas).
4.2
TIPOS DE MÁQUINAS VIRTUAIS
Conforme em Sugerman (2001), as máquinas virtuais estão classificadas em 2 tipos: o
tipo I, no qual o monitor fica localizado entre o hardware e os sistemas operacionais, e o tipo
II, onde o monitor é implementado como um software do sistema operacional onde se localiza
o Host (máquina real).
4.2.1
Tipo I
Conforme a Figura 5, o monitor tem o controle do hardware e cria um ambiente de
máquinas virtuais onde cada máquina virtual se comporta como uma máquina física completa
que pode executar o seu próprio sistema operacional, semelhante a um sistema operacional
tradicional que está no controle da máquina (LAUREANO, 2004).
Figura 5 – Monitor do tipo I
4.2.2
Tipo II
O monitor executa sobre um sistema anfitrião, o que seria equivalente a um processo
num sistema real. O monitor de Tipo II funciona de forma análoga ao de Tipo I, sendo que
sua maior diferença é a existência de um sistema abaixo deste. Neste modelo, o monitor
simula todas as operações que o sistema anfitrião (Host) controlaria (LAUREANO, 2004).
Figura 6 – Monitor do tipo II
4.2.3
Tipo Híbrido
Segundo Laureano (2004), os monitores de tipo I e II raramente são usados em sua
forma conceitual em implementações reais. Na prática, várias otimizações são inseridas nas
arquiteturas apresentadas, com o objetivo principal de melhorar o desempenho das aplicações
nos sistemas convidados.
Em monitores do tipo I, o sistema convidado acessa diretamente o hardware conforme
Figura 7, o que só é possível devido a modificações feita no sistema convidado e no monitor
da máquina virtual.
Figura 7 – Híbrida do tipo I
Já as máquinas virtuais híbridas do tipo II se subdividem em três formas conforme
Figura 8.
Figura 8 – Híbrida do tipo II
Na sua primeira forma de implementação o sistema convidado acessa diretamente o
sistema host, devido a modificações no monitor que acessa parte das API’s existentes no
sistema host.
A segunda maneira é o sistema convidado acessar diretamente o hardware, o que é
feito através de modificações no monitor e no sistema host, através de um driver.
E por fim, o monitor acessa o hardware. Para que isso possa acontecer, é instalado um
driver no sistema host para que o monitor tenha acesso direto.
4.3
ATRIBUTOS DOS MONITORES DE MÁQUINAS VIRTUAIS
De acordo com Rosenblum (2004), embora as funcionalidades dos diversos ambientes
virtuais sejam diferentes, todos compartilham de atributos comuns como:
a) compatibilidade do software: a máquina virtual fornece uma abstração compatível
de modo que todo o software escrito para ela funcione. Por exemplo, em uma
máquina virtual com um sistema operacional de alto nível funcionarão os
programas escritos na linguagem de alto nível. A abstração da máquina virtual
freqüentemente pode mascarar diferenças nas camadas do hardware e do software
abaixo da máquina virtual. Um exemplo é escrever uma vez o software em Java e
executa-lo em qualquer outra máquina virtual Java;
b) isolamento: faz com que o software que funciona na máquina virtual e nas outras
máquinas virtuais e máquinas reais sem que um interfira no outro. Este isolamento
faz com que os erros ou os Hackers possam ser contidos dentro da máquina virtual
e assim não afetam as outras partes do sistema. Além do isolamento dos dados, a
camada de virtualização pode reduzir o desempenho de modo que os recursos
consumidos por uma máquina virtual não prejudiquem necessariamente o
desempenho de outras máquinas virtuais;
c) encapsulamento: esta camada pode ser usada para manipular e controlar a execução
do software na máquina virtual. Pode também usar esta ação indireta para dar
prioridade ao software ou fornecer um ambiente melhor para execução. Por
exemplo, máquinas virtuais para as verificações de runtime, podem ajudar a reduzir
a quantidade de erros de programas;
d) desempenho: adicionar uma camada de software a um sistema pode afetar o
desempenho do software que funciona na máquina virtual, mas os benefícios de
sistemas virtuais compensam.
4.4
USO DE MÁQUINAS VIRTUAIS
Ao longo dos anos, as máquinas virtuais vem sendo utilizadas com vários fins, como
processamento distribuído e segurança. Um uso freqüente de sistemas baseados em máquinas
virtuais é a chamada “consolidação de servidores”: em vez da utilização de vários
equipamentos com seus respectivos sistemas operacionais, utiliza-se somente um computador,
com máquinas virtuais abrigando os vários sistemas operacionais e suas respectivas
aplicações e serviços (SUGERMAN, 2001).
4.4.1
Benefícios
Muitos dos benefícios das máquinas virtuais utilizadas no ambiente dos mainframes,
também podem ser obtidos nos computadores pessoais (SUGERMAN, 2001). A seguir segue
relação de algumas vantagens para a utilização de máquinas virtuais em sistemas de
computação:
a) é capaz de simular a existência de várias placas de rede dentro da máquina virtual;
b) pode-se ter várias máquinas virtuais cada uma com um sistema operacional
diferente sem ter que particionar seu disco rígido;
c) facilita o aperfeiçoamento e testes de novos sistemas operacionais;
d) auxilia no ensino prático de sistemas operacionais e programação ao permitir a
execução de vários sistemas para comparação no mesmo equipamento;
e) simula configurações e situações diferentes do mundo real, como por exemplo, mais
memória disponível ou a presença de outros dispositivos de E/S;
f) simula alterações e falhas no hardware;
g) garante a portabilidade das aplicações;
h) desenvolvimento de novas aplicações para diversas plataformas, garantindo a
portabilidade destas aplicações;
i) diminuição de custos com hardware, através da consolidação de servidores;
j) facilidades no gerenciamento, migração e replicação de computadores, aplicações
ou sistemas operacionais;
k) provê um serviço dedicado para um cliente específico com segurança e
confiabilidade;
l) assegura a compatibilidade e a migração de sistemas;
m) facilidade para treinamentos e demonstrações de produtos.
4.4.2
Desvantagens
Uma das principais desvantagens na utilização de máquinas virtuais, fica por conta do
desempenho, pois o custo para a execução de um processo fica mais alto que em um
computador real.
Uma dificuldade na máquina virtual é a quantidade de equipamentos existentes e que
devem ser implementados nos monitores para que tenha acesso aos dispositivos existentes.
Segundo Laureano (2004), a arquitetura de processadores Intel 32 não permite
naturalmente a virtualização, e que uma arquitetura pode suportar máquinas virtuais somente
se todas as instruções que podem inspecionar ou modificar o estado privilegiado da máquina
forem executados em modo mais privilegiado e puderem ser interceptados. Situação que não é
permitida nos processadores Intel 32 atuais.
4.5
EXEMPLOS DE MÁQUINAS VIRTUAIS
A seguir segue exemplos dos diversos tipos de máquinas virtuais existentes e suas
principais características.
4.5.1
Java Virtual Machine
Tendo sido originalmente concebida para o desenvolvimento de pequenos aplicativos
e programas de controle de aparelhos eletrodomésticos e eletroeletrônicos, o Java mostrou-se
ideal para ser usada na rede internet. O que o torna tão atraente é o fato de programas escritos
em Java poderem ser executados virtualmente em qualquer plataforma, mas principalmente
em Windows, Unix e Mac.
Um programa fonte escrito em Java é traduzido pelo compilador para os bytecodes,
isto é, o código de máquina de um processador virtual, chamado Java Virtual Machine
(JVM), que é o monitor da máquina virtual Java.
A JVM é um programa capaz de interpretar os bytecodes produzidos pelo compilador.
Com isso, um programa Java pode ser executado em qualquer plataforma, desde que seja
dotada de uma JVM. É o caso dos programas navegadores mais populares, como o Netscape
Navigator e o Internet Explorer, que já vêm com uma JVM. A vantagem desta técnica é
evidente: garantir uma maior portabilidade para os programas Java em códigos-fonte e
compilados.
A JVM não conhece a linguagem Java, somente um formato binário em particular que
é o arquivo no formato calas. Este arquivo contém um conjunto de instruções (ou bytecodes) e
tabelas de símbolos para a JVM. A arquitetura dos bytecodes é neutra (independente de
hardware ou sistema operacional), existindo uma JVM portada para cada sistema operacional
ou hardware do host.
4.5.2
Framework DotNet (.Net)
O DotNet, produto da Microsoft, também é uma máquina virtual, semelhante ao
JAVA. Desenvolvido sobre os padrões de Web Services XML, o DotNet possibilita que
sistemas e aplicativos, novos ou já existentes, conectem seus dados e transações independente
do sistema operacional, tipo de computador ou de dispositivo móvel que sejam utilizados, ou
de que linguagem de programação tenha sido utilizada na sua criação.
A Common Language Infrastructure (CLI) contém a especificação dos seus principais
serviços. Ela implementa a tecnologia que permite que um aplicativo seja desenvolvido em
diversas linguagens de programação e executado num mesmo ambiente de execução. Ela é
suportada por diversos sistemas operacionais (sistemas Win32, FreeBSD, MAC OS X e em
fase de migração, o Linux), o que é de fundamental importância em aplicações distribuídas,
como os sistemas multiagentes.
Tudo isso é possível porque o Common Language Runtime (CLR) permite e fornece
sistemas de tipos comuns para todas as linguagens baseadas no DotNet Framework.
Isso acontece porque a compilação não gera um executável completo com todas as
informações binárias necessárias para sua execução. Gera na verdade um Intermediate
Language (IL) que, em tempo de execução inicial do programa, passa pelo CLR que
transforma em código nativo executável. Isso acontece não passo a passo e instrução a
instrução, como nas linguagens interpretadas, mas uma única vez, quando o programa é
executado. Isso permite que o código gerado pelos compiladores seja independente do
hardware e operável independente da linguagem de programação, além disso, possibilita que
o CLR faça adequações e otimizações para o hardware em questão.
4.5.3
VMware
O VMware é uma máquina virtual. Isto significa que ele emula um PC baseado em
Intel. Pelo fato de emular uma plataforma baseada em Intel enquanto ele executa, significa
que o VMWare consegue, de fato, passar muitas instruções diretamente para a CPU para
execução, sem tradução de intermediários, aumentando assim a velocidade de processamento.
Isto é um pouco diferente de uma JVM, onde, por exemplo, o emulador tem de traduzir o
código bytecode de Java para instruções Intel, antes de executá-las.
Os arquivos são armazenados em "discos virtuais" que aparecem como arquivos
dentro de uma pasta no sistema host e cada sistema operacional pode ter uma configuração de
rede distinta, com seu próprio endereço IP e tudo mais. As máquinas virtuais ficam acessíveis
na rede, como se fossem realmente PC's completos, permitindo que você rode um servidor
Web ou um programa P2P dentro de uma máquina virtual, sem comprometer a segurança do
seu sistema principal.
O VMWare é um produto comercial, destinado principalmente a servidores. Ele é
muito usado em provedores de acesso que podem rodar várias máquinas virtuais dentro de um
mesmo servidor e assim oferecer hosts "semi-dedicados" a um custo bem mais baixo que o de
servidores realmente exclusivos. O cliente continua tendo acesso completo a seu "servidor"
apenas o desempenho pode ser menor, de acordo com o número de máquinas virtuais por
host.
Por razões de desempenho, o monitor do VMware utiliza uma abordagem híbrida para
implementar a interface do monitor com as VM's. O controle de exceção e gerenciamento de
memória é realizado através da manipulação direta do hardware, mas para simplificar o
monitor, o controle de E/S é do sistema anfitrião. Através do uso de abstrações para suportar a
E/S, o monitor evita manter device drivers, algo que os sistemas operacionais já implementam
adequadamente.
A gerência de memória no VMware é feita diretamente pelo sistema convidado. Para
garantir que não ocorra nenhuma colisão de memória entre o Sistema Convidado e o Host, o
VMware aloca uma parte da memória para uso exclusivo, então o sistema convidado utiliza
essa memória previamente alocada.
4.5.4
Microsoft Virtual PC 2004
O Microsoft Virtual PC 2004, também conhecido como VirtualPC antes de ser
adquirido da Connectix pela Microsoft. Esta máquina virtual é muito parecida com o
VMware. Pode ser instalado e configurado na maioria dos sistemas operacionais baseados em
x86, sem a necessidade de drivers customizados.
Algumas características são: suporte para até quatro adaptadores de rede por máquina;
configuração baseada na linguagem XML (eXtensible Markup Language) para facilitar a
cópia da estação virtual; e suporte para até 4 GB de memória. Existe também a função Undo
Disks, que permite aos usuários desfazer qualquer mudança no disco rígido virtual.
5
ARQUITETURA PARA PROTEÇÃO DE DETECTORES DE INTRUSÃO
Neste capítulo será apresentada uma arquitetura proposta para garantir que ataques a
sistemas com detectores de intrusão não possam ser camuflados, apresentando os resultados
obtidos após um ataque.
5.1
PROBLEMA
Existem problemas com as informações geradas através do IDS de Rede (NIDS), já
que os registros podem ser facilmente apagados ou alterados após um ataque bem sucedido.
Essa fragilidade se dá pois, através de um ataque bem sucedido, o invasor pode conseguir uma
sessão da estação e a partir desse momento, ele pode fazer seu ataque no servidor invadido ou
apenas utilizar a máquina para atacar outros servidores, evitando fazer ataques de sua própria
estação. Porém, antes de encerrar sua sessão, ele pode ir até seu IDS e simplesmente apagar as
informações que seriam capazes de informar as atividades feitas por ele através da estação
invadida.
Outro problema é a recuperação da estação invadida, que em muitos casos tem que ser
completamente instalada e reconfigurada ou até mesmo ser recuperada uma imagem que está
em outra estação. Isso demanda tempo, e em sistemas críticos isso pode causar um prejuízo
muito grande.
5.2
PROPOSTA
A arquitetura proposta por este trabalho, cria uma maneira segura para proteger os
dados do NIDS através do uso de máquinas virtuais. O servidor a ser protegido deve ser
executado na máquina virtual com toda sua configuração como se estivesse em um Hardware
comum (inclusive com o seu NIDS). Mas, além de existir o NIDS no servidor instalado na
máquina virtual (Sistema Convidado), existe também o mesmo NIDS instalado na máquina
real (Sistema host) a qual passa a ser um host e este está protegido, pois o sistema host deve
ficar sem configurações de rede e desta forma inacessível pelo invasor e, além disso, oculto,
pois não há como se saber de sua existência.
5.3
DESENVOLVIMENTO DA PROPOSTA
Para a criação da arquitetura proposta, foi utilizado um hardware baseado na
tecnologia Intel. A arquitetura criada é formada por:
a) sistema operacional Windows XP Professional;
b) GFI LANguard N.S.S.;
c) IDS Snort;
d) MySql;
e) Apache versão 2.0.48 (Win32);
f) Analysis Console for Intrusion Detection (ACID);
g) Máquina Virtual VMware Workstation Versão 4.5.1 build-7568.
Todas as ferramentas que fazem parte da arquitetura, foram instaladas tanto no sistema
host como no sistema anfitrião.
Conforme é visto na Figura 9, tanto o sistema host quanto o sistema convidado estão
ativos. No Vmware, além do sistema convidado que será utilizado para mostrar os testes,
também existe outras duas máquinas virtuais, uma com o Windows XP Professional e outra
com o Kurumin (Linux).
Figura 9 – Sistemas ativos
A máquina virtual foi criada usando o método de utilização de discos virtuais, para
que possa ser facilitada a criação de backups. Pois desta maneira não se tem a necessidade de
particionar o disco rígido, facilitando a cópia da máquina virtual já que o disco rígido do
sistema convidado será apenas um arquivo no sistema host.
A configuração de rede para o funcionamento correto da arquitetura proposta deve
estar configurada de maneira que o sistema host não tenha protocolos (como TCP/IP, NetBios
e IPX/SPX) ativos, tornando o sistema host inacessível pela rede. Já o sistema convidado
deverá ter configuração de rede completa com TCP/IP, ou seja, configurado de tal forma
como se fosse um servidor comum. Na Figura 10 pode ser observado como fica a
configuração de rede do sistema host e do sistema convidado.
Figura 10 – Configurações de rede
Com o sistema host sem qualquer protocolo ativo, ele fica inacessível de qualquer
outra estação. Isso faz com que as atualizações do sistema host não possam ser realizadas pela
rede de computadores, pois a máquina será inexistente na rede a qual o hardware está
conectado.
Na etapa seguinte de montagem da arquitetura, foi instalado o IDS (Snort) tanto no
sistema host quanto no sistema convidado, que foi configurado de tal maneira que os pacotes
que devem ser capturados, somente sejam os que tenham endereço destino ou origem do
sistema convidado. Essa configuração que determina quais pacotes devem ser capturados é
informada no arquivo “snort.conf” que contém a configuração do Snort.
A seguir segue parte da configuração do Snort, onde foi colocado o endereço IP dos
pacotes que devem ser capturados, tanto os pacotes de entrada e saída. O endereço IP
192.168.0.10 a seguir pertence ao sistema convidado.
.
.
#var HOME_NET any
var HOME_NET 192.168.0.10/32
.
.
Essa mesma configuração foi utilizada tanto no sistema host, como no sistema
convidado, para que ambos capturem os mesmos pacotes.
O MySql foi instalado nos dois sistemas para que os pacotes capturados fossem
gravados no banco de dados, e assim disponibilizando-os para futuras consultas para análise
dessas informações. Além do MySql, o Snort também possui acesso a outros bancos de dados
como o PostgreSQL, Oracle.
O Apache foi instalado, para que possa ser usada a ferramenta ACID, já que ela
necessita estar instalada no servidor web para seu funcionamento. O Apache, assim como o
ACID podem ser substituídos por outras ferramentas, como servidor web poderia estar sendo
utilizado o IIS da Microsoft e o ACID pode ser substituído por outra ferramenta de análise do
log do IDS.
Para a administração do IDS (Snort), pode ser utilizado o IDScenter, que além de
servir como ferramenta para a análise dos dados, também pode ser utilizado para configuração
das regras do IDS, sabendo que a cada regra criada no sistema host deve obrigatoriamente ser
criada no sistema convidado e vice-versa.
O ACID foi a ferramenta utilizada para a consulta dos pacotes capturados. A Figura 11
é a tela principal do ACID, que mostra as estatísticas gerais como o número de alertas
divididas pelo protocolo e contador de portas de origem e de destino para regras disparadas.
Clicando em cada uma dessas informações é possível obter informações mais detalhadas, e
cada pacote capturado pode ser exibido em um formato decodificado. O ACID também
permite a criação de consultas com vários parâmetros no banco de dados, desde o tipo de
assinatura até o conteúdo dos pacotes.
Figura 11 – ACID
Para a realização do portscan foi utilizado o software GFI LANguard N.S.S., neste
software, basta informar o IP que se deseja realizar o portscan e dar início ao processo. Dessa
maneira, foi possível obter dados para a análise de captura do IDS para futura comparação.
5.4
COMPROVAÇÃO DA INACESSIBILIDADE DO IDS NO HOST
Com os sistemas instalados e configurados, pode-se inicializar o Snort. Na Figura 12
observa-se a captura de pacotes dos dois sistemas, através de um comando do Snort executado
no prompt, onde as duas máquinas, tanto o sistema host quanto o sistema convidado,
capturam os mesmos pacotes.
Figura 12 – Capturando pacotes
O total de pacotes processados é grande, mas apenas parte desses pacotes foram
armazenados, pois os outros pacotes foram descartados pelas regras de assinatura do Snort.
Existe a possibilidade de todos os pacotes serem armazenados, bastando configurar o IDS em
modo promíscuo, mas o volume de dados será grande, além de não ter a necessidade de
avaliar todos os pacotes, já que muitos podem não representar ataques.
O IDS é um serviço que não deve ser paralisado, uma vez que enquanto estiver
desativo pode ocorrer uma invasão que não seja percebida.
Para que possa ser demonstrada a igualdade dos conjuntos de pacotes capturados, o
Snort foi interrompido em ambos os sistemas para ser apresentado um resumo dos pacotes
capturados. Os valores processados tanto pelo sistema host quanto pelo sistema convidado
após um PortScan são os mesmos, como pode ser observado na Figura 13.
Figura 13 – Resultados após PortScan
Na Figura 13 é mostrado o total de pacotes processados. Na Figura 14, através do
ACID, pode-se observar o total de pacotes armazenados pelo Snort. Como pode ser
observado, a maioria dos pacotes foi descartada, já que o Snort processou mais de 1500
pacotes e apenas 176 pacotes foram armazenados. É de fundamental importância que o IDS
esteja configurado da mesma maneira no host como no sistema convidado (que as regras
sejam iguais), caso contrário, a comparação do total de pacotes assim como os pacotes
armazenados pelo IDS não teria funcionalidade nenhuma.
Figura 14 – Resultados no ACID
Em um processo de invasão do sistema, podem ser utilizadas diversas ferramentas,
como o uso dos scanners para detectar quais portas estão abertas, sniffers para roubar
informações como ID e senhas e programas que procuram por vulnerabilidades conhecidas
nos sistemas e que não tenham sido atualizadas.
Este trabalho não se propõe apresentar técnicas de invasão de um sistema nem
ferramentas que podem ser utilizadas para isso.
A partir do momento que o invasor consegue entrar em uma máquina, por exemplo
conseguir um prompt de comando no sistema convidado, e percebendo que neste sistema está
sendo utilizada uma ferramenta IDS, pode abandonar o sistema assim como pode querer
apagar os rastros deixados por ele e continuar tendo acesso a este sistema. Para quem sabe
mais tarde utilizar essa máquina para uma outra invasão ou até mesmo danificar a máquina
invadida.
Os pacotes capturados pelo IDS Snort podem ser completamente decodificados, um
exemplo de um pacote decodificado pode ser observado na Figura 15. O pacote demonstrado
é uma conexão de Telnet capturada pelo IDS.
Figura 15 – Comando telnet capturado
Para demonstrar a funcionalidade da arquitetura, foi simulado um ataque, através de
uma conexão Telnet conforme Figura 16, onde o Cracker invadiu o sistema convidado e
acessou o MySql listando as tabelas do Snort. A partir desse momento, qualquer informação
pode ser alterada ou até mesmo eliminada do sistema para encobrir o seu rastro.
Figura 16 – Acesso MySql pelo telnet
A vantagem da utilização de máquinas virtuais para proteção do sistema, o invasor
pode ter removido as informações sobre a sua conexão de Telnet para encobrir o rastro
deixado no sistema. Mas como o sistema estava sendo monitorado em dois lugares, o IDS do
sistema host permanece com as informações sem nenhuma alteração. Isso pode ser observado
na Figura 17 onde é mostrado o resultado dos pacotes no ACID: onde o IDS do Host
permanece com os 179 pacotes iniciais capturados e o sistema convidado, está com 178
pacotes já que o pacote Telnet mostrado na Figura 15 foi eliminado.
Figura 17 – Resultado após ataque
Após um ataque, esta máquina virtual pode ser copiada para uma outra estação para
que possa ser estudada a fim de observar as falhas em sua segurança e pode ser iniciado um
backup da máquina virtual com a posição antes do ataque para colocar o sistema no ar
novamente.
6
CONSIDERAÇÕES FINAIS
O objetivo do trabalho foi montar uma arquitetura para manter segura as informações
de um IDS. Para que a arquitetura proposta pudesse ser montada, foram estudadas as
ferramentas IDS e máquina virtual.
6.1
CONCLUSÃO
Os Crackers estão sempre desenvolvendo e procurando novas vulnerabilidades para
atacar um computador, independente do sistema operacional que esteja sendo usado. As
ferramentas de proteção acabam sendo um desafio a mais para ser quebrado pelos invasores,
isso faz com que se busque cada vez mais mecanismos para manter a integridade do sistema a
ser protegido.
A instalação da ferramenta IDS é importante devido ao número de ataques que cresce
constantemente. É importante poder detectar uma invasão a um sistema antes que se tenha
algum tipo de prejuízo, o qual pode até arranhar a própria imagem da empresa. Mas os
sistemas de detecção são vulneráveis aos invasores, pois os dados normalmente ficam
armazenados em banco de dados e arquivos de log que podem ser alterados pelo invasor.
Com a arquitetura proposta o IDS ficou protegido, pois os dados de log são
armazenados em duplicidade, pois tanto o sistema host quanto o sistema convidado guardam
as informações de log.
Com isso, a arquitetura proposta mostrou ser viável para implementação, já que
mostrou ser segura e garante a integridade dos dados de log armazenados. Essa arquitetura
não diminui a possibilidade de um Cracker invadir o sistema, mas usa esta arquitetura para
detectar uma tentativa ou até mesmo uma invasão bem sucedida. Mesmo que o Cracker
remova os vestígios de que invadiu o sistema, ele estará apenas eliminando os rastros no
sistema convidado e não no sistema host.
Com as informações armazenadas no sistema host, também poderão ser elaborados
relatórios para dados estatísticos, podendo ser utilizados para uma melhor configuração do
IDS, melhorando a detecção dos invasores devido ao aperfeiçoamento das políticas e
planejamento da segurança. As informações armazenadas também servem para a reconstrução
de um ataque ou na determinação de um ataque.
Além da detecção ter sido realizada com sucesso, tem-se o benefício da recuperação
do servidor convidado com uma configuração anterior ao ataque, bastando restaurar um
backup da máquina virtual em seu estado anterior. E a máquina atacada pode ser iniciada em
outro sistema host para análise dos dados devido a portabilidade das máquinas virtuais.
É importante salientar que as ferramentas e a arquitetura utilizadas e apresentadas
neste trabalho não dispensam a utilização de Firewall e outras ferramenta como antivírus para
a proteção da rede de computadores.
6.2
EXTENSÕES
Como extensão pode-se ser implantar uma arquitetura maior utilizando máquinas
virtuais, onde, além do sistema host, poderiam haver dois ou mais sistemas convidados, onde
cada sistema convidado teria uma função específica, um com o Firewall e outro com o IDS,
por exemplo. Com esta estrutura pode-se montar um mecanismo de comunicação seguro entre
dois sistemas convidados utilizando o Sistema Host.
Pode-se também usar esta mesma arquitetura com outras ferramentas de máquina
virtual, IDS e até mesmo com sistemas operacionais diferentes.
REFERÊNCIAS BIBLIOGRÁFICAS
ANÔNIMO. Segurança máxima: o guia de um hacker para proteger seu site na Internet e
sua rede; [tradução Edson Furmankiewicz, Joana Figueiredo]. São Paulo : Campus, 2000.
AISA. História da internet. Disponível em: <http://www.aisa.com.br>. Acesso em: 14 set.
2004.
BLUNDEN, Bill. Virtual Machine Design and Implementation in C/C++. Plano, Texas –
USA: Wordware Publishing, 2002.
CAMPOS, Vítor Rodrigues Andrade. Estudo comparativo de linguagens de programação,
Salvador,
2003.
Disponível
em:
<http://twiki.im.ufba.br/pub/MAT052/
RelacaoMonografias/monografia.doc>. Acesso em: 12 nov. 2004.
CASWELL, Brian. Snort 2: Sistema de Detecção de Intruso. Rio de Janeiro: Alta Books,
2003.
CHEN, Peter M; NOBLE, Brian D. When Virtual is Better Than Real. In: Proceedings of the
2001. Workshop on Hot Topics in Operating Systems (HOTOS), Maio 2001.
FORRISTAL, Jeff. Site seguro: aplicações web. Rio de Janeiro : Alta Books, 2002.
GOLDBERG, R. e MAGER, P. Virtual Machine Technology: A bridge from Large
Mainframes to Networks of Small Computers. IEEE Proceedings Compcon Fall 79, 1979. P.
210 – 213.
GOMES, Olavo Jose Anchieschi. Segurança total. São Paulo: Makron Books, 2000.
LAUREANO, Marcos Aurélio Pchek. Uma abordagem para a proteção de detectores de
intrusão baseada em máquinas virtuais. 2004. 103 f. Dissertação (Mestrado em Informática
Aplicada) - Centro de Ciências Exatas e de Tecnologia, Pontifícia Universidade Católica do
Paraná, Curitiba.
NORTHCUTT, Stephen; ZELTSER, Lenny et al. Desvendando segurança em redes. Rio de
Janeiro: Editora Campus, 2002.
PÉRICAS, Francisco Adell. Redes de computadores: conceitos e a arquitetura internet.
Blumenau: Edifurb, 2003.
ROSENBLUM, Mendel. The Reincarnation of Virtual Machines. Disponível em:
<http://www.acmqueue.org/modules.php?name=Content&pa=showpage&pid=168>.
ACM
Queue vol. 2, no. 5 - July/August 2004. Acesso em: Janeiro 2005.
SUGERMAN, J., GANESH, V. e BENG-Hong Lim. Virtualizing I/O Devices on Vmware
Workstation’s Hosted Virtual Machine Monitor. Proceedings of the 2001 USENIX
Annual Technical Conference. 2001. P. 1 – 14.
Download

Utilização de Máquinas Virtuais para Implantar um Mecanismo