• Nenhum resultado encontrado

A Figura 4.20, mostra os casos de uso do agente de armazenamento. O caso de uso “Receber Requisição de Conhecimento” trata as solicitações do agente de análise. O caso de uso “Consultar Conhecimento” executa o processo de obtenção do conhecimento, podendo interagir com bases de dados em diversos formatos e aplicar algoritmos de data mining para extrair conhecimentos indiretos. O caso de uso “Enviar Conhecimento” faz o

envio do conhecimento adquirido para o agente de análise seguindo a taxonomia daquele grupo de agentes.

Armazenador «agent»

Receber Requisição de Conhecimento

Consultar Conhecimento

Enviar Conhecimento

todos «agent»

«includes»

Figura 4.20 - Casos de uso do agente de armazenamento

Como mostrado na Figura 4.21, o agente de coleta possui dois comportamentos: o comportamento “Recebe Requisição de Conhecimento” e o comportamento “Envia Conhecimento”. O comportamento “Recebe Requisição de Conhecimento” (a) é cíclico e faz a filtragem das mensagens adequadas e executa o processo de obtenção daquela informação. O comportamento “Envia Conhecimento” (b) envia por meio de mensagens o conhecimento para o agente de análise.

a) Recebe Requisição de Conhecimento

Consulta o conhecimento

Envia conhecimento Aguarda por mensagens

Inclui "envia conhecimento"

b) Envia Conhecimento

[Caso seja requisição de conhecimento]

A Figura 4.22 mostra a implementação física da classe do agente de armazenamento e seus respectivos serviços e comportamentos. O método específico query() é o responsável pela definição do procedimento de obtenção da informação, por exemplo, consulta a uma base de usuários válidos, checksums de arquivos do sistema ou a

configuração de uma rede neural treinada para reconhecer port scanning. Os

comportamentos são descritos em termos das classes internas ReceiveKnowledgeRequest, QueryKnowledge e SendKnowledge.

activateBasicGui() query() getAgentType() getAgentGroup() getAgentDescription() getAgentAlias() getAgent() initExtraLangs() isMyKnowledgeRequest() setupExtras() ReceiveKnowledgeRequest() action() ReceiveKnowledgeRequest QueryKnowledge() action() onStart() QueryKnowledge SendKnowledge() action() SendKnowledge BasicWarehouse Serviços específicos:

• query: realiza os procedimentos de análise definidos pelo desenvolvedor.

• isMyKnowledgeRequest: verifica se a solicitação é valida para o agente.

Comportamentos:

• ReceiveKnowledgeRequest: recebe as solicitações para busca de informações (cíclico);

• QueryKnowledge: processa a busca invocando o método

query (sob demanda);

• SendKnowledge: envia as informações para o agente de análise (sob demanda).

4.7 - ORGANIZAÇÃO DO FRAMEWORK

A intenção dessa seção é mostrar ao desenvolvedor como o framework é organizado

fisicamente para que as novas implementações possam seguir essas diretrizes. Ao ser criado um novo grupo de agentes, deverão ser adicionados novos arquivos e bibliotecas seguindo essa orientação.

As próprias convenções de código Java recomendam que um sistema seja organizado em termos de pacotes, por isso o framework define uma série desses para

agrupar as diversas funções do sistema de acordo com sua aplicação. A Tabela 4.2 mostra a organização desses pacotes e descreve o tipo de conteúdo presente nos mesmos.

Tabela 4.2 - Organização dos pacotes do framework

Endereço do pacote Conteúdo

br.unb.idsframework Recursos globais

br.unb.idsframework.agents Definição dos tipos básicos de agentes

Br.unb.idsframework.groups Definição de cada grupo de agentes especializados br.unb.idsframework.ontologies Definição das ontologias

br.unb.idsframework.share Bibliotecas de apoio e utilitários

br.unb.idsframework.ui Interfaces gráficas (GUI)

br.unb.idsframework.agents.analysts Classes dos agentes de análise br.unb.idsframework.agents.collectors Classes dos agentes de coleta br.unb.idsframework.agents.coordinators Classes dos agentes de coordenação br.unb.idsframework.agents.reactors Classes dos agentes de reação

br.unb.idsframework.agents.warehouses Classes dos agentes de armazenamento

starlight.util Utilitários de codificação e decodificação em Base64

jade.mtp.http Protocolos de interoperação entre containers baseado

em HTTP

jade.mtp.iiop Protocolos de interoperação entre containers baseado

em IIOP

jade Classes da plataforma JADE

javax.activation Classes da biblioteca de ativação de javabeans

javax.mail Classes da biblioteca de geração e recepção de e-mail

org.joone Classes da biblioteca de redes neurais artificiais

net.sourceforge.jpcap Classes da biblioteca de captura de pacotes

junit Classes da biblioteca de testes unitários

Alguns pacotes serão amplamente mantidos pelo desenvolvedor, como o br.unb.idsframework.ontologies que define as ontologias e taxonomias de cada cenário de detecção de intrusão. Outro importante pacote é o br.unb.idsframework.agents.* que define os próprios grupos de agentes especializados. A fim de oferecer alguns serviços adicionais para a implementação de

A Figura 4.23 mostra a configuração física do framework. O framework é empacotado em um Java Archive (idsframework.jar) que acessa os arquivos de

configuração (Parameters.properties), idiomas (Message_*.properties) e as bibliotecas externas necessárias. Em tempo de execução, o framework faz uso do próprio

JADE (jade.jar) e das bibliotecas de runtime do Java (rt.jar). Cada grupo de agentes poderá ser empacotado separadamente como no ids_exemplo.jar.

«framework» jade.jar «file» Parameters.properties «file» Messages_en_US.properties «file» Messages_pt_BR.properties «framework» idsframework.jar «library» joone.jar «library» mail.jar «library» net.sourceforge.jpcap.jar «library» rt.jar «class» ProtegeTools «class» ProtegeIntrospector «class» SlotHolder «class» IdsFrameworkOntology «agents» ids_exemplo.jar

4.8 - COMPONENTES DE SERVIÇOS

Essa seção visa descrever alguns dos serviços disponíveis no framework, lembrando

que mais serviços poderão ser adicionados nas futuras versões devido sua capacidade de extensão. Esses serviços deverão ser utilizados dentro das implementações dos agentes tornando maior a robustez de cada um. Aqui serão mostrados os seguintes serviços: suporte ao Protégé, rede neural artificial, capturador de pacotes e interface gráfica móvel.