Do que se trata o artigo:

O presente artigo tem como objetivo principal a apresentação do conceito de Sistema de Detecção de Intrusão (Intrusion Detection System - IDS). IDSs têm em sua essência o auxílio à segurança do ambiente de computação em uma rede de computadores. Neste cenário, a cooperação deve estar presente em vários níveis. No artigo serão expostos conceitos, modelos e uma ferramenta disponível ao usuário. Esta ferramenta é o Prelude-IDS, que servirá como demonstrativo da aplicação em um ambiente real do conceito apresentado.


Para que serve:

O Sistema de Detecção de Intrusão pode ser utilizado em ambientes corporativos, assim como em redes locais, dependendo de seu modelo empregado. Basicamente tem-se um modelo baseado em host e outro baseado em rede. Sua funcionalidade principal é servir como uma segunda linha de defesa à invasão, agindo posteriormente à constatação da intrusão no sistema. Sistemas neste caso pode ser a rede, um servidor ou um computador pessoal analisando as atividades da rede ou do computador em questão.


Em que situação o tema é útil:

Registros de invasões são notados diariamente aos milhares por toda a Internet, assim como em redes locais cabeadas ou sem fio. Com a constância no crescimento e na dependência dos ambientes computacionais de produção, das mais diversas áreas, pela interligação de sistemas e acesso/armazenamento de dados de forma segura, é necessário agir de forma a evitar a invasão de intrusos à rede. Porém, esta premissa pode nem sempre ser verdadeira, o que faz do Sistema de Detecção de Intrusão uma importante ferramenta no auxílio ao escopo de segurança da rede como um todo, uma vez que age após a constatação de uma provável invasão. É preciso pensar na segurança.

Autores: Edelberto Franco Silva e Eduardo Pagani Julio

Este artigo abordará os conceitos e aplicações do Sistema de Detecção de Intrusão (IDS) a fim de que, ao final, o leitor tenha a capacidade de visualizar como este mecanismo de segurança funciona, além de como preparar um ambiente integrado de detecção de intrusão. Mecanismos de segurança são cada vez mais necessários na busca para que se tenha confiabilidade, disponibilidade e integridade em ambientes computacionais e é exatamente este o ponto em que o IDS vem a colaborar. Serão apresentados os modelos de IDS, suas principais funcionalidades e sua finalidade. Ao final será abordada uma ferramenta de IDS assim como sua aplicação em um ambiente real. Para a instalação do IDS, o sistema operacional escolhido é o Linux, porém não se faz necessário que sejam monitorados somente ambientes com este mesmo sistema operacional, uma vez que será demonstrada a interoperabilidade do IDS escolhido por meio de um padrão proposto de formato de mensagens e alertas. Os principais fatores que levaram à escolha deste Sistema Operacional para testes partem desde sua atenção à segurança do ambiente operacional como um todo, assim como a existência de inúmeras ferramentas voltadas a este fim; além de apresentar várias distribuições gratuitas o Linux é open source, ou seja, seu código-fonte é aberto, acessível e pode ser modificado pelo usuário (experiente). A ferramenta de IDS a ser apresentada neste artigo é o Prelude-IDS. Cada componente será detalhado, assim como os sensores de terceiros disponíveis e suas maiores virtudes.

Sistema de Detecção de Intrusão

Normalmente o que encontramos são mecanismos que tentam impedir o acesso indevido ao sistema. Mas quando o sistema se encontra comprometido por algum motivo, seja uma sessão ativa esquecida por um usuário, uma falha de segurança de um software desatualizado instalado no servidor que gerencia toda a rede, ou em um dos computadores da rede participantes da rede local. Neste momento nos deparamos com uma intrusão, e é aí que se faz necessária a utilização de um mecanismo que identifique e alerte ou responda à atividade maliciosa em questão.

O Sistema de Detecção de Intrusão (Intrusion Detection System - IDS) pode ser definido como um sistema automatizado de segurança e defesa detectando atividades hostis em uma rede ou em um computador (host ou nó). Além disso, o IDS tenta impedir tais atividades maliciosas ou reporta ao administrador de redes responsável pelo ambiente. Trata-se de um mecanismo de segunda linha de defesa. Isto quer dizer que, somente quando há evidências de uma intrusão/ataque é que seus mecanismos são utilizados. A primeira linha defensiva é aquela que tentará limitar ou impedir o acesso ao ambiente, o que pode ser, por exemplo, um firewall. O IDS pode apresentar uma forma de resposta a algum tipo de ataque, trabalhando em conjunto com a primeira linha de defesa, por exemplo, incluindo regras no firewall ou bloqueando a sessão em questão. Pode ainda reportar as atividades maliciosas constatadas aos outros nós da rede.

O que é IDS e como funciona

Conforme os conceitos descritos em um dos artigos-base sobre IDS (ver referências ao final), podemos conceituar a detecção de intrusão como um processo de monitoramento de eventos que ocorrem em um sistema de computação ou em uma rede e tem o intuito de analisar possíveis incidentes, possíveis violações ou iminências de violações às regras de segurança deste ambiente. Incidentes podem ter várias causas, desde a ação de malwares (worms, spywares etc.) até ataques que visam o ganho não autorizado do ambiente em questão.

A utilização de IDS como sistema de prevenção pode envolver desde alertas ao administrador da rede e exames preventivos até a obstrução de uma conexão suspeita. Ou seja, o processo de detecção de intrusão é o de identificar e responder de maneira preventiva atividades suspeitas que possam interferir nos princípios da integridade, confiabilidade e disponibilidade. Além disso, as ferramentas de IDS são capazes de distinguir de onde se originaram os ataques, de dentro ou fora da rede em questão. Os IDS geralmente analisam arquivos locais em busca de rastros de tentativas mal-sucedidas de conexão à máquina, ou até mesmo nas camadas do modelo de pilha TCP/IP abaixo da camada de aplicação, como por exemplo, alterações nos campos do cabeçalho do protocolo IP.

Considerações sobre IDS:

• Não é um software antivírus projetado para detectar softwares maliciosos tais como vírus, trojans, e outros;

• Não é usado como um sistema de registro de rede, por exemplo, para detectar total vulnerabilidade gerada por ataques DoS (Denial-of-Service) que venham a congestionar a rede. Para isso são usados sistemas de monitoramento de tráfego de rede;

• Não é uma ferramenta de avaliação de vulnerabilidades, verificando erros e falhas de sistema operacional e serviços de rede. Tal atividade é de ordem dos scanners de segurança que varrem a rede em busca destas mesmas falhas.

Em um modelo básico de IDS é possível incluir alguns elementos. Primeiramente, as decisões provenientes do IDS são baseadas sob a coleta de dados realizada. As fontes de dados podem incluir desde entradas pelo teclado, registros de comandos básicos a registros de aplicações. As decisões somente são tomadas quando se tem uma quantidade significativa de dados em sua base que confirmam a maliciosidade daquele computador. Os dados são armazenados por tempo indefinido (que podem ser apagados posteriormente), para mais tarde servirem de referência, ou então temporariamente, esperando o processamento. Os dados coletados com informações iguais (considerados, portanto, elementos homogêneos), são cruciais para o trabalho do IDS. Um ou mais algoritmos são executados, procurando evidências para que se tomem rapidamente decisões contra as atividades suspeitas.

Geralmente os IDS são controlados por configurações que especificam todas suas ações. Estas configurações ditam onde os dados serão coletados para análise, assim como qual resposta será resultado para cada tipo de intrusão. O melhor ajuste de configurações ajuda a definir uma maior proteção ao ambiente, porém, o contrário, provavelmente, será prejudicial. O IDS gera um alarme, é ele o responsável por todo o tipo de saída, desde respostas automáticas, alerta de atividades suspeitas ao administrador e notificação ao usuário.

É interessante que se tenha em mente o fato dos alertas não serem conclusivos ou que possa haver existência de erros tanto de análise como de configuração, o que pode gerar os chamados falsos positivos, que são alertas, ou ações, em resposta a evidências encontradas pelo IDS, porém de forma equivocada. A mesma frágil configuração pode gerar falsos negativos, que se conceitua pela falta de alerta ou decisão para um ataque real. Busca-se sempre que o IDS tenha o menor número de falsos positivos e falsos negativos quanto possível.

Tipos de IDS

A detecção de intrusão pode ser classificada em três categorias: detecção por assinatura ou mau uso (Misuse Detection), detecção por anomalia (Anomaly Detection) e detecção baseada em especificação (Specification-based Detection). A seguir serão explicadas de forma mais detalhada cada uma destas categorias.

Detecção por assinatura

Detectores deste tipo analisam as atividades do sistema procurando por eventos ou conjuntos de eventos que correspondam a padrões pré-definidos de ataques e outras atividades maliciosas. Estes padrões são conhecidos como assinaturas. Geralmente cada assinatura corresponde a um ataque ou outra atividade específica. É natural e simples pensar em um exemplo típico deste tipo de evidência, onde o atacante tenta se logar no sistema por meio de um acesso remoto, por exemplo o SSH (Secure Shell), e erra a senha por mais de três vezes. Por meio de uma assinatura encontrada nos logs (registros) do sistema, ou seja, a linha correspondente ao erro de autenticação, é então emitido ao administrador um alerta e bloqueado o acesso do atacante, conforme a configuração do IDS realizada pelo administrador.

A seguir listamos as vantagens e desvantagens da utilização deste tipo de detecção.

Vantagens da detecção baseada em assinaturas:

• São muito eficientes na detecção (comparando-se com a detecção baseada em anomalias) sem gerar grande número de alarmes falsos;

• Podem diagnosticar o uso de uma ferramenta ou técnica específica de ataque.

Desvantagens da detecção baseada em assinaturas:

• Estes tipos de detectores somente podem detectar ataques conhecidos, ou seja, que estão incluídos no conjunto de assinaturas que o IDS possui, necessitando-se assim de constante atualização deste conjunto (assim como os antivírus);

• A maioria destes detectores possui assinaturas muito específicas, não detectando dessa forma as variantes de um mesmo ataque.

Detecção por anomalia

Detectores baseados em anomalias identificam comportamentos não usuais (anomalias) em um computador ou na rede. Eles funcionam a partir do pressuposto que ataques são diferentes da atividade normal e assim podem ser detectados por sistemas que identificam estas diferenças. Este tipo de detecção constrói um perfil que representa o comportamento normal de usuário, nós e conexões de rede. Este perfil é construído a partir de dados coletados em um período de operação considerado normal, geralmente sob a supervisão do administrador da rede em questão. Estes detectores monitoram a rede e usam uma variedade de medidas para determinar quando os dados monitorados estão fora do normal, ou seja, desviando do perfil.

Um exemplo clássico a este tipo de detecção é quando um usuário específico utiliza sempre o acesso à Internet durante certo período do dia, no horário comercial, por exemplo. Imaginemos que este usuário é um gerente da empresa que está sendo monitorada pelo IDS baseado em anomalias. Este IDS passou toda uma semana criando o perfil deste usuário e, a partir do último dia daquela semana, emprega seu perfil como mandatário ao horário permitido de utilização da Internet. Certo dia, após a detecção estar ativa, o gerente deseja utilizar o acesso à Internet durante a madrugada para entregar um relatório de última hora, nada usual conforme o perfil criado. A resposta a esta detecção realizada pelo IDS baseado em anomalia é o bloqueio do acesso à Internet para aquele usuário/terminal, que poderia ser uma verdade se não houvesse esta exceção, porém foi tratada na verdade como um falso positivo.

Infelizmente, este tipo de detecção geralmente produzirá um grande número de alarmes falsos, pois o comportamento de usuários e sistemas pode variar amplamente. Apesar desta desvantagem, pesquisadores afirmam que a detecção baseada em anomalias pode identificar novas formas de ataques, coisa que a detecção baseada em assinatura não pode fazer. Além disso, algumas formas de detecção baseadas em anomalias produzem uma saída que pode ser usada como fonte de informações para detectores baseados em assinaturas. Por exemplo, um detector baseado em anomalias pode gerar um número que representa a quantidade normal de arquivos acessados por um usuário particular, com isso um detector baseado em assinaturas pode possuir uma assinatura que gera um alarme quando esse número excede 10%, por exemplo.

Ainda que alguns IDSs comerciais incluam formas limitadas de detecção de anomalias, poucos, se nenhum, confiam somente nesta tecnologia. As detecções de anomalias existentes em sistemas comerciais geralmente giram em torno da detecção de scans de rede ou portas. Entretanto, a detecção por anomalias continua na área de pesquisa e pode se tornar muito importante para a o desenvolvimento de IDSs no futuro de forma cada vez mais robusta.

A seguir são listadas as vantagens e desvantagens da utilização da detecção por anomalia.

Vantagens da detecção por anomalias:

• Detecta comportamentos não usuais, logo possui a capacidade de detectar sintomas de ataques sem um conhecimento prévio deles;

• Produz informações que podem ser usadas na definição de assinaturas para detectores baseados em assinaturas.

Desvantagens da detecção por anomalias:

• Geralmente produz um grande número de alarmes falsos devido ao comportamento imprevisível de usuários e sistemas;

• Requer muitas sessões para coleta de amostra de dados do sistema, de modo a caracterizar os padrões de comportamento normais.

Detecção baseada em especificação

Define um modelo muito mais complexo que os anteriores, já que sua análise pode ser realizada nas camadas abaixo da camada de aplicação da pilha de protocolos da Internet ou no nível de controle do sistema operacional. Ela se restringe à operação correta de um programa ou protocolo, e monitora a execução do programa com respeito à definição estipulada. Essa técnica pode fornecer a descoberta de ataques previamente desconhecidos, com isso potencializando sua atividade, além de apresentar taxas muito baixas de falsos positivos. Este modelo de detecção não é tão amplamente divulgado como os demais citados neste artigo especialmente por sua maior complexidade de desenvolvimento e restrição à aplicação que se destina, uma vez que ele visa, por exemplo, uma única aplicação.

Pode-se pensar em um exemplo para este modelo de detecção onde será realizada uma pré-análise das chamadas de um servidor de FTP ao núcleo do sistema operacional. Todas as chamadas e principalmente as consideradas críticas ao sistema são analisadas a fim de se observar possíveis alterações posteriores com objetivos maliciosos. Este tipo de detecção é considerada de mais baixo nível do que as demais citadas neste artigo, o que também demonstra um conhecimento muito mais profundo das ações realizadas pelo programa a ser analisado assim como do sistema operacional e das funções de rede.

IDS baseado em rede

Este tipo de IDS tem por objetivo detectar ataques pela análise dos pacotes que trafegam pela rede através de uma escuta em um segmento de rede (como um sniffer- farejador de pacotes). Com isso, um IDS tem a capacidade de monitorar o tráfego de todos os nós que estão conectados neste segmento, protegendo-os.

IDSs baseados em rede (Network Intrusion Detection System - NIDS) geralmente consistem de um conjunto de sensores colocados em vários pontos da rede que monitoram o tráfego, realizando uma análise local do mesmo e relatando ataques a um console central de gerenciamento. Como os sensores são limitados a executarem somente o IDS, eles podem ser mais facilmente protegidos contra ataques.

Este tipo de IDS garante que, com poucos IDSs instalados, mas bem posicionados, pode se monitorar uma grande rede. É geralmente simples adicionar esse tipo de IDS a uma rede e são considerados bem seguros a contra ataques. Porém, apresentam algumas desvantagens, como a dificuldade em processar todos os pacotes em uma rede grande e sobrecarregada. Assim, podem falhar no reconhecimento de um ataque lançado durante períodos de tráfego intenso, além de muitas das vantagens dos IDSs baseados em rede não se aplicarem às redes mais modernas baseadas em switches, pois estes segmentam a rede, necessitando assim de ativar portas de monitoramento nesses equipamentos para que o sensor funcione corretamente. Outra grande desvantagem do IDS baseado em rede é o de não poder analisar informações criptografadas, já que essas somente serão visualizadas na máquina de destino.

Um exemplo de colocação em uma rede de um IDS baseado em rede pode ser visto na Figura 1.

Figura 1. IDS baseado em Rede.

IDS baseado em host

Este tipo de IDS é instalado em um host que será alertado sobre ataques ocorridos contra a própria máquina. Este IDS avalia a segurança deste host como base em arquivos de log do sistema operacional, log de acesso e log de aplicação, por exemplo. Tem grande importância, pois fornece segurança a tipos de ataques em que o firewall e um IDS baseado em rede não detectam, como os baseados em protocolos criptografados, já que estão localizados no destino da informação.

Um exemplo de sua utilização pode ser visto na Figura 2, onde um IDS baseado em host avisa aos demais sistemas de IDSs dos outros nós sobre a presença de um intruso.

Figura 2. IDS baseado em Host.

O IDS baseado em host monitora as conexões de entrada no host e tenta determinar se alguma destas conexões pode ser uma ameaça. Monitora também arquivos, sistema de arquivos, logs, ou outras partes do host em particular, que podem ter atividades suspeitas representando uma tentativa de intrusão ou até mesmo uma invasão bem sucedida.

Alguns HIDS possuem a capacidade de interpretar a atividade da rede e detectar ataques em todas as camadas do protocolo, aumentando assim a sua capacidade de bloqueio a determinados ataques que não seriam notados pelo firewall ou pelo IDS de rede, tais como pacotes criptografados. Esta análise é restrita a pacotes direcionados ao host protegido pelo IDS.

Um exemplo de tentativa suspeita que é detectada pelo IDS baseado em host é o login sem sucesso em aplicações que utilizam autenticação de rede. Desta forma, o sistema IDS informará ao administrador de rede que existe um usuário tentando utilizar uma aplicação que ele não tem permissão.

Para ilustrar os conceitos, é apresentado o IDS Prelude, abordando seus componentes e método de funcionamento. Ao final estaremos aptos, de forma conceitual, a seguir o passo a passo de instalação deste IDS no Linux.

O Prelude-IDS

O Prelude-IDS é um IDS híbrido, ou seja, é um produto que permite a unificação em um sistema centralizado a vários tipos de aplicações, sejam elas de código-fonte aberto ou proprietário, além de poder interoperabilizar as funções de um NIDS com as de um HIDS, sendo em sua essência um NIDS. A fim de implementar tal tarefa, o Prelude-IDS utiliza o padrão IDMEF (Intrusion Detection Message Exchange Format) que permite que diferentes tipos de sensores gerem eventos utilizando uma mesma linguagem. Este modelo é baseado na premissa de que não se deve confiar em uma única fonte de informação para uma análise de segurança, já que métodos diferentes de análise têm vantagens diferentes. Assim, o Prelude-IDS decidiu unificar estes métodos em um único produto, produzindo uma ferramenta bastante completa de segurança.

Possui suporte às linguagens de programação C, C++, Python, Ruby, Lua e Perl, de modo que é possível converter aplicações de segurança existentes para a estrutura do Prelude-IDS. O framework do Prelude é descrito pela Figura 3. Ele fornece também sensores que funcionam como analisadores do registro, como é o caso do Prelude-LML. Um sensor de Prelude-IDS pode ser um programa que é capaz de trabalhar em conjunto com o framework Prelude-IDS.

O Prelude tem a habilidade de encontrar atividades maliciosas em conjunto com outros tipos de sensores, listados a seguir, além de mais de cem tipos de registros de sistema (syslog), entre outros, a fim de melhorar sua evidência ao apontar um ataque:

AuditD: fornece um espaço para o usuário criar suas regras de auditoria, bem como armazenar e pesquisar registros nos arquivos de auditoria a partir do kernel 2.6. Possui um plugin de detecção de intrusão que analisa os eventos em tempo real e envia por meio de alertas IDMEF ao Prelude Manager;

Nepenthes: é uma ferramenta de emulação de atividades de malwares, atuando passivamente neste tipo de emulação com a intenção de tentar explorar tais falhas;

NuFW: é uma ferramenta que funciona como uma extensão para o Netfilter (Firewall Linux), que substitui as regras comuns baseadas no gerenciamento de IPs, por informações mais detalhadas sobre os dados dos computadores e dos usuários em si. Sua intenção é agregar maior fidelidade às fontes, já que endereços IPs são trivialmente forjados;

OSSEC: é um HIDS open source desenvolvido por um brasileiro. Ele executa a análise de logs, verificação de integridade, monitoramente de registro (no caso do Windows) e detecção de rootkit, além de prover resposta ativa e alerta em tempo real;

PAM: Linux-PAM é um sistema de bibliotecas que lida com as tarefas de autenticação de aplicações no sistema. A biblioteca oferece uma interface para a concessão de privilégios de programas (como o login e su);

Samhain: é um sistema open source multiplataforma de detecção de intrusão baseado em host (HIDS) para POSIX (Unix, Linux, Cygwin/Windows) que fornece verificação de integridade de arquivos, bem como detecção de rootkits, monitoramento de portas, detecção de arquivos executáveis SUID desonestos e processos ocultos;

SanCP: é uma ferramenta de segurança de rede projetada para coletar informações estatísticas sobre o tráfego de rede, bem como, gravá-lo em um arquivo utilizando o formato pcap para fins de auditoria, análise histórica e descoberta de atividades da rede;

Snort: é um IDS de rede (NIDS) capaz de desenvolver análise de tráfego em tempo real e registro de pacote em redes IP. Executa análise de protocolos e analisa padrões de conteúdo, podendo ser considerado um IDS que trabalha tanto com o método de detecção por anomalia quanto por assinatura, por exemplo, para a detecção de ataques do tipo :

o buffer overflows: sucintamente pode ser descrito como o estouro do limite de espaço de memória para certa aplicação, o que pode gerar desde problemas na execução da aplicação até a exploração de dados por meio de acesso a endereços de memória utilizados por outras aplicações;

o stealth port scans: baseado no escaneamento de portas com a finalidade de encontrar aplicações rodando no computador de destino, e pode ter como objetivo explorar falhas e conseguir acesso por meio destas portas. Várias técnicas são utilizadas para esta verificação, sendo a baseada no three-way Handshake do TCP uma das mais eficientes;

o ataques CGI: visam a exploração de falhas que possam existir entre a aplicação e o servidor controlados pelo suporte CGI;

o SMB probes: exploração da checagem de compartilhamento que utiliza o SMB;

o OS fingerprinting: tem o intuito de descobrir o Sistema Operacional utilizado pela possível vítima;

o Além de outras.

Por padrão, oferece em torno de 20 mil regras (somando-se as regras da Vulnerability Research Team e do Emerging Threads).

Figura 3. Framework do Prelude-IDS.

Dica DevMan: IDMEF é um protocolo experimental proposto para trocas de mensagens entre sistemas de detecção de intrusão automatizados. Os sistemas de detecção podem usar o relatório de alerta sobre eventos que considerem suspeitos. O desenvolvimento deste formato padrão tem como objetivo permitir a interoperabilidade entre fontes, sejam elas comerciais ou abertas.

Componentes do Prelude-IDS

Serão apresentados os componentes que formam o framework do Prelude-IDS, desde seu sensor de coleta até sua biblioteca de conexão e armazenagem de dados.

Prelude Manager: é um servidor de alta disponibilidade que aceita conexões a partir de sensores distribuídos e/ou outros gerentes, e salva os eventos recebidos para uma mídia especificada pelo usuário (banco de dados, arquivo de log, e-mail, etc.). É um concentrador capaz de lidar com um grande número de conexões e processamento de grandes quantidades de eventos. O Prelude Manager vem com vários plugins como os de filtragem (por critérios de impacto reportados pela mensagem do IDMEF, limiares de consulta, etc.) e envio de alertas ao administrador por SMTP;

LibPrelude: é uma biblioteca que permite conexões seguras entre os sensores e o Prelude Manager, fornece, ainda, uma API (Application Programming Interface) para comunicação com os subsistemas do Prelude, que fornece as funcionalidades necessárias para a geração e emissão de alertas em IDMEF, além de garantir retransmissão de alertas para momentos de interrupção temporária. Portanto, é a biblioteca utilizada por terceiros para integração ao Prelude-IDS;

LibPreludeDB: a biblioteca em questão é uma camada de abstração sobre o tipo e o formato do banco de dados para armazenamento das mensagens, permitindo ao desenvolvedor utilizar sua base de armazenamento de mensagens IDMEF sem a necessidade de SQL, independentemente do tipo ou formato da base de dados;

Prelude-LML: é um analisador de log que permite ao Prelude coletar e analisar logs do sistema a fim de encontrar evidências de ações maliciosas; transforma-o em um alerta IDMEF e então envia ao Prelude Manager. É possível customizar a análise de logs por meio de criação de regras (assinaturas). Hoje já avalia mais de 400 regras, dentre elas aplicações conhecidas, como Squid, Sudo, Cacti, Asterisk, OpenSSH, Apache, etc.;

Prelude-Correlator: permite, por meio de criação de regras utilizando a linguagem Lua, conectar e buscar alertas em um servidor remoto do Prelude Manager e ativar correções localmente, conforme suas regras para aquele incidente. Mensagens IDMEF são geradas como alerta de correção;

Prewikka: é a interface Web com o usuário (GUI – Graphical User Interface) que provê várias facilidades na análise e administração do Prelude. Além da visualização de alertas, é possível saber o status tanto do Prelude Manager como dos sensores.

Dica DevMan: Lua é uma linguagem de programação poderosa, rápida e leve, projetada para estender aplicações, sejam elas em C, C++, Java, C#, Smalltalk, Fortran, Ada, Erlang, e outras linguagens de script, como Perl e Ruby. Suas características a fazem uma linguagem ideal para configuração, automação (scripting) e prototipagem rápida. Lua está presente em muitos jogos (e.g. World of Warcraft) e o middleware para TV Digital Ginga. Essa linguagem foi criada na PUC-Rio.

Na Figura 4 é possível visualizar uma arquitetura simples do Prelude-IDS, onde temos vários sensores, por exemplo, o Prelude-LML, se conectando a um Prelude Manager que, por sua vez, armazena os dados coletados em uma base de dados (podemos pensar aqui em um banco de dados MySQL) e as exibe ao administrador por meio da GUI, o Prewikka.

Figura 4. Arquitetura simples de um ambiente com Prelude-IDS.

Após a demonstração de toda a estrutura do Prelude-IDS, é possível iniciar a parte prática deste artigo, mostrando como instalar o Prelude IDS em uma estação com o sistema operacional Linux.

Instalação do Prelude-IDS

Para a instalação do Prelude-IDS utilizamos a versão disponível no momento da escrita do artigo, o Linux Ubuntu 9.10 de codinome Karmic, com o kernel 2.6.31 instalado por padrão. As versões dos componentes do Prelude-IDS foram instaladas de modo a facilitar este guia, todas elas estavam disponíveis no repositório universe do Ubuntu. Apesar da versão corrente do Prelude-IDS ser a 1.0 e ser suportada pela versão 10.04 do Ubuntu Linux (codinome Lucid), utilizaremos as versões a seguir, uma vez que adotamos a versão 9.10 do Ubuntu em toda a confecção deste artigo. As versões dos componentes de Prelude-IDS foram:

• Prelude Manager: 0.9.14.2-2;

• LibPrelude: 0.9.24.1-1;

• LibPreludeDB: 0.9.15.3-1;

• Prelude-LML: 0.9.14-2;

• Prelude-Correlator: 0.9.0~beta5-1;

• Prewikka: 0.9.17.1.

Baixando os pacotes necessários

A seguir, mostraremos a etapa em que se faz necessário o download dos pacotes do Prelude-IDS, assim como a de alguns outros pacotes. Utilizaremos o comando apt-get em todo este processo. Pressupomos que o usuário logado no momento é o root. É possível assumir este controle com o comando sudo –s.

Na Listagem 1 pode-se observar a instalação da base de dados MySQL, que armazenará os alertas, e o Apache, servidor web que servirá para a visualização das alertas.

Listagem 1. Instalando pacotes do MySQL e Apache.


  apt-get install mysql-server-5.1 apache2 

Conforme pode-se notar na Figura 5, será necessária a criação de uma senha para o acesso do usuário root à base de dados do MySQL. Essa senha será utilizada novamente durante a instalação do Prelude-IDS.

Figura 5. Tela de instalação do MySQL.

O próximo passo que temos a seguir é a instalação do Prelude Manager, o gerente, que é feito com o comando da Listagem 2, assim como o resultado esperado. Após a instalação do prelude-manager é necessário alterar o conteúdo do arquivo /etc/default/prelude-manager de RUN para yes, conforme exibido na última linha da Listagem 2, e rodar o comando /etc/init.d/prelude-manager start. As telas de configuração com o banco de dados são representadas pelas Figuras 6, 7 e 8.

Listagem 2. Instalação e resultado do Prelude Manager.


  apt-get install prelude-manager
   
  dbconfig-common: writing config to /etc/dbconfig-common/prelude-manager.conf
  granting access to database prelude for prelude@localhost: success.
  verifying access for prelude@localhost: success.
  creating database prelude: success.
  verifying database prelude exists: success.
  populating database via sql...  done.
  dbconfig-common: flushing administrative password
  Generating 1024 bits RSA private key... This might take a very long time.
  [Increasing system activity will speed-up the process].
  Generation in progress... X
  +++++O.+++++O
   
  Created profile 'prelude-manager' with analyzerID '1559276264123084'.
  Changed 'prelude-manager' ownership to UID:113 GID:122.
   * prelude-manager disabled, please adjust the configuration to your needs 
   * and then set RUN to 'yes' in /etc/default/prelude-manager to enable it. 

Figura 6. Tela de inicialização da configuração do Prelude-Manager com o MySQL.

Figura 7. Escolha do Banco de Dados MySQL.

Figura 8. Senha do usuário root criada na instalação do MySQL.

Feito isto, instalaremos o Prelude-LML executando o comando da Listagem 3. Porém, atenção ao erro reportado aqui. Este erro existe porque é necessário que o processo do passo da Listagem 4 seja executado a fim de registrar o sensor do Prelude-LML junto ao prelude-manager. Somente desta forma o Prelude-LML poderá se comunicar com o prelude-manager e enviar seus alertas a ele.

Listagem 3. Instalação e resultado do Prelude –LML.


  apt-get install prelude-lml
  * erro na hora de inicializar, isto porque e necessario o comando:
  prelude-admin register "prelude-lml" "idmef:w" <manager address> --uid 0 --gid 0 

Listagem 4. Passos para o registro do Prelude –LML.


  // Abra outro terminal
  ---------
  TERMINAL 2
  root@salomao-ubuntu:~# prelude-admin registration-server prelude-manager
  The "ne5mpjua" password will be requested by "prelude-admin register"
  in order to connect. Please remove the quotes before using it.
   
  Generating 1024 bits Diffie-Hellman key for anonymous authentication...
  Waiting for peers install request on 0.0.0.0:5553...
  -----------
  E insira no terminal anterior a senha gerada: ne5mpjua
   
  TERMINAL 1
  terá como resultado as linhas:
  Enter the one-shot password provided on 127.0.0.1: 
  Confirm the one-shot password provided on 127.0.0.1: 
   
  Connecting to registration server (127.0.0.1:5553)... Authentication succeeded.
  -----------
  TERMINAL 2
  e deverá confirmar "Y" na tela anterior o
  Connection from 127.0.0.1:40864...
  Registration request for analyzerID="276627230846594" permission="idmef:w".
  Approve registration? [y/n]:  y
  127.0.0.1:40864 successfully registered.
  ------------
   
  TERMINAL 1
  Successful registration to 127.0.0.1:5553.
  ------------ 

Ao final desses passos, para que o ambiente do Prelude-IDS esteja completo, precisamos apenas do Prelude-Correlator e da interface Web de administração, o Prewikka. A instalação dos pacotes é realizada pelo comando da Listagem 5.

Listagem 5. Instalação do Prelude-Correlator e Prewikka.


  apt-get install prelude-correlator prewikka
   
  Setting up prelude-correlator (0.9.0~beta5-1) ...
   * prelude-correlator disabled, please adjust the configuration to your needs 
   * and then set RUN to 'yes' in /etc/default/prelude-correlator to enable it. 

A Listagem 5, assim como a Listagem 2, pede a alteração do conteúdo de um arquivo cuja opção RUN deverá estar como ‘yes’. Esse arquivo está localizado em /etc/default/prelude-correlator e é necessária a execução do comando /etc/init.d/prelude-correlator start. Assim que a instalação do Prewikka iniciar, tem-se as telas de configuração do banco de dados para sua futura conexão e exibição na página Web, conforme as Figuras 9, 10 e 11.

Figura 9. Início da configuração do banco de dados para Prewikka.

Figura 10. Seleção do banco de dados utilizado.

Figura 11. Senha do usuário root criada na instalação do MySQL.

Para que o servidor Prewikka seja executado, é necessário rodar o seguinte comando: prewikka-httpd. Talvez seja mais interessante rodar esse comando em um script de inicialização. Pode ser criado na pasta /etc/init.d/seuscript.sh e utilizado o comando update-rc.d para adicioná-lo à inicialização. O Prewikka é acessado via browser pelo endereço, em nosso caso: HTTP://localhost:8000.

A Figura 12 mostra sua interface Web onde a aba ativa é a de alertas. Nela podemos ver os alertas gerados pelos sensores conectados ao prelude-manager. É possível visualizar alertas de sensores diferentes, como snort e prelude-lml (sshd, netfilter – firewall do Linux). A interface web dispõe de mais possibilidades para a administração do ambiente de rede. É possível, por exemplo, visualizar o status dos sensores, assim como estatísticas de todos os alertas e atividades do IDS. Fica claro que se trata de um ambiente de boa integração com as ferramentas e facilidade de visualização do ambiente de produção onde o Prelude-IDS se encontra em atividade.

Figura 12. Tela de alerta de eventos da interface web Prewikka.

Ainda é possível a integração de maneira simples do IDS Snort, citado anteriormente. A única necessidade que se tem é a de registrá-lo como um sensor, após sua instalação e configuração padrão, assim como realizado nos passos da Listagem 4 para o Prelude-LML.

Conclusão

Neste artigo foram apresentados os conceitos de IDS, assim como seus modelos básicos, baseados em rede e host, seus tipos de detecção e ainda a ferramenta Prelude-IDS, esta última sendo abordada com a finalidade de apresentar uma aplicação de código-aberto real onde é possível perceber os conceitos de IDS. O Prelude-IDS foi abordado exatamente por ser uma ferramenta integradora de IDS e não somente um único e isolado sistema.

É interessante que se procure analisar os sensores que hoje se integram a este IDS, a fim de torná-lo o mais completo possível. O OSSEC e o Snort merecem destaque neste ponto. Também é necessário dar atenção à correção de eventos por meio do Prelude-Correlator, além da estruturação e criação de bases de alertas replicados para que não haja somente um ponto de armazenamento de dados e falhas. Replicações são feitas de maneira simples, alterando apenas uma diretiva em alguns poucos arquivos de configuração do Prelude-IDS.

Links

Prelude-IDS – IDS Híbrido
http://www.prelude-technologies.com

Snort - NIDS
http://www.snort.org

Snort BR – Comunidade brasileira do Snort
http://www.snort.org.br

OSSEC - HIDS
http://www.ossec.net

ua – A linguagem de programação
http://www.lua.org

Survey sobre IDS
http://cseweb.ucsd.edu/classes/fa01/cse221/projects/group10.pdf

Pacotes do Prelude-IDS para Ubuntu
http://packages.ubuntu.com/search?keywords=prelude

Stealth TCP Port Scanning
http://hatsecurity.com/2008/05/21/stealth-tcp-port-scanning/

Guide to Intrusion Detection and Prevention Systems
http://csrc.ncsl.nist.gov/publications/nistpubs/800-94/SP800-94.pdf