Bro IDS

Definição e Arquitetura

O Bro é um framework open source de monitoramento de rede baseado em Unix, escrito em C++ e mantido pelo Instituto de Ciência da Computação da Universidade de Berkeley. Sua aplicação mais comum é a implementação de um NIDS passivo, porém também é capaz de realizar diversas outras análises de rede customizáveis pelo usuário, podendo até realizar atividades não relacionadas a segurança.

A arquitetura do Bro é baseada em dois grandes componentes: o motor de eventos (event engine ou core) e seu interpretador de scripts. No core, que é conectado diretamente à rede, os pacotes são filtrados e organizados em eventos (e.g. um request de acesso SSH) sem nenhuma política de ação. Este dispositivo apenas define um evento a partir do que recebe e os repassa ao segundo componente. O interpretador, por sua vez, reconhece e toma a atitude programada para o evento recebido. A política de ação é definida pelo usuário através dos scripts que escreve, e que serão usados pelo interpretador como regras. Portanto, o bom funcionamento do sistema depende de um bom conhecimento da rede, de seus parâmetros e de um bom programador. Em geral, ao ser detectado alguma atividade suspeita, escreve-se um registro (log) da ocorrência e manda-se uma notificação ao administrador da rede.

Arquitetura do framework Bro

Figura 6.1: Arquitetura do framework Bro
Fonte: https://www.bro.org/sphinx/intro/index.html - (Sob Reutilização Não Comercial)

Instalação

A instalação do Bro pode ser feita em qualquer sistema Unix, incluindo Debian, FreeBSD e OS X. O código-fonte do programa também está no github, permitindo a instalação from source. Informações detalhadas encontram na página oficial do Bro, que aparece nas referências

Funcionamento

Após instalado e configurado, podemos utilizar o BroControl, um terminal interativo do próprio Bro, para iniciar e controlar o funcionamento da instância. Ao iniciar, o Bro carrega os scripts passados como parâmetro, dispara o evento bro_init() e inicia o monitoramento da rede. Enquanto está ativo, são criados registros de eventos, conexões, atividades suspeitas, etc. em arquivos tabelados, de fácil interpretação e processamento. Ao final, podemos interromper o programa, gerando o evento bro_stop() logo antes da sua finalização. O funcionamento será mais bem detalhado na parte prática deste trabalho.

Arquitetura do framework Bro

Figura 6.2: Exemplo de funcionamento do BroControl ao iniciar uma nova configuração (comando “deploy”).