Inventory
INVENTORY é um painel web que exibe dados extraídos da API do Wazuh, via SysCollector. A solução oferece acesso rápido a detalhes do sistema. Tudo é apresentado em uma interface simples para equipes de TI. Utiliza os agentes do próprio Wazuh, eliminando a necessidade de instalar softwares adicionais reduzindo a superfície de ataque.
Install / Use
/learn @Maarckz/InventoryREADME
1. Apresentação
O INVENTORY é a solução definitiva para a gestão centralizada do inventário de máquinas corporativas, desenvolvida para ambientes que exigem alta visibilidade, rastreabilidade e segurança. O sistema transforma os dados de telemetria brutos coletados pela sua plataforma Wazuh (via SysCollector) em uma Interface Web Segura e Moderna.
<div align="left"> <a href="https://github.com/maarckz/Inventory" target="_blank"><img height="260" width= "960" src="https://github.com/Maarckz/Inventory/blob/main/Images/I1_Inventory.gif?raw=true"/> </div>O objetivo principal do INVENTORY é eliminar a "cegueira" sobre os ativos de TI, fornecendo às equipes de segurança, operações e compliance uma fonte única e confiável de informação sobre o estado, hardware, software e segurança de cada dispositivo.
A principal vantagem reside na utilização dos agentes nativos do Wazuh, eliminando a necessidade de instalar softwares adicionais nos endpoints e, consequentemente, reduzindo a superfície de ataque e o overhead operacional.
<video width="600" controls> <source src=" https://www.linkedin.com/posts/marcus-dealmeida_ol%C3%A1-rede-s%C3%B3-pra-avisar-que-tem-algumas-atualiza%C3%A7%C3%B5es-activity-7377797080897011712-tYeP?utm_source=share&utm_medium=member_android&rcm=ACoAADXtQm8BWDhoje3QTZaTuswm_dJjvSClhaY" type="video/mp4"> Seu navegador não suporta vídeo. </video>1.1. Objetivos da Solução:
Os principais objetivos do sistema INVENTORY são: Centralizar informações de inventário de TI de dispositivos corporativos. • Garantir rastreabilidade e auditoria completa dos ativos. • Oferecer dashboards interativos para equipes de segurança e TI. • Permitir a integração com outros sistemas corporativos (CMDB, SIEM, DLP). • Agrupar Informações do Host como Processos, Serviços, Portas Abertas, Programas Instalados. • Suportar ambientes heterogêneos (Linux, Windows, servidores e estações de trabalho) em empresas de pequeno e médio porte.
2. Arquitetura da Solução e Fluxo de Dados
A arquitetura do INVENTORY foi concebida em um modelo de três camadas, coleta, armazenamento e apresentação. Este desacoplamento permite que o coletor e a aplicação web sejam mantidos e escalados de forma independente. Adicionalmente, o uso de arquivos JSON locais como camada de armazenamento provê um repositório de dados simples e auditável, eliminando a complexidade e as dependências associadas a um banco de dados tradicional.
-
Coleta de Dados (Wazuh Collector): O processo se inicia com o componente coletor, que se conecta de forma segura à API REST do Wazuh Manager. Utilizando o módulo SysCollector, ele extrai informações dos agentes, incluindo detalhes de hardware, sistema operacional, configurações de rede, portas abertas, pacotes de software e processos em execução.
-
Armazenamento (JSON Data): Os dados coletados são processados, estruturados e armazenados localmente em arquivos no formato JSON. Cada arquivo corresponde a um dispositivo específico, sendo nomeado pelo seu hostname, o que facilita o consumo posterior pela aplicação web e permite a fácil manutenção.
-
Apresentação e Análise (Flask App): A aplicação web, desenvolvida em Flask, consome os arquivos JSON para exibir as informações em uma interface interativa. Os dados são apresentados em dashboards estatísticos, painéis de listagem de máquinas e relatórios detalhados, permitindo que as equipes de TI e segurança analisem, inspecionem e auditem o inventário de forma centralizada.
3. Componentes Principais
A arquitetura é materializada por dois componentes de software principais que trabalham em conjunto: o Módulo Coletor e a Aplicação Web. A solução adota o padrão de arquitetura MVC (Model-View-Controller), uma prática recomendada de segurança que impõe a separação de interesses. Ao isolar a lógica de manipulação de dados da camada de apresentação, o padrão MVC reduz a superfície de ataque e facilita a manutenção e o desenvolvimento seguro.
3.1 Módulo Coletor (INVENTORY Collector)
O Coletor de Dados é o principal responsável pela extração de informações, atuando como a interface de comunicação entre o sistema INVENTORY e o ambiente WAZUH. Sua função é automatizar a coleta e a estruturação dos dados de inventário.
1. Collector Module
Interage com a API do Wazuh seguindo os passos abaixo:
- JWT Authentication: Obtém um token de acesso para requisições autenticadas.
- Listagem de Agentes: Recupera os dispositivos monitorados via API.
- Inventory Collection: Extrai especificações de hardware, detalhes do sistema operacional, informações de rede e portas abertas para cada agente.
- Classificação de Status: Marca os dispositivos de acordo com status da última sincronização, entre ativos e inativos.
- Local Storage: Grava arquivos JSON estruturados, nomeados de acordo com o hostname de cada dispositivo.
Dados Coletados:
Informações Básicas
Hostname
Agent ID
Sistema Operacional
Arquitetura
Serial da placa
Última varredura
Hardware
CPU
Núcleos
Memória RAM
Rede
Interfaces de rede
Portas de rede abertas
Configurações de rede
Software
Pacotes instalados
Processos em execução
Classificação de Atividade
Dispositivos classificados como ativos ou inativos conforme a última sincronização.
Grupos do WAZUH
| Função | Detalhamento |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Interface com a API do Wazuh | Realiza a coleta e listagem de dados dos agentes monitorados, utilizando o módulo SysCollector do Wazuh. |
| Autenticação | Utiliza um Token JWT (JSON Web Token) para garantir o acesso seguro e autenticado à API do Wazuh. |
| Dados Coletados | Extrai informações de Hardware (CPU, RAM, disco), Software (pacotes instalados), Rede (interfaces, portas abertas), Processos e detalhes do agente (status, hostname, ID). |
| Armazenamento | Organiza e armazena os dados em arquivos JSON estruturados, nomeados pelo hostname de cada dispositivo. |
| Utilitários | Inclui os scripts get_data.py (coletor principal) e get_groups.py (coletor de grupos de agentes Wazuh). |
3.2 Aplicação Web (Flask)
A Aplicação Web é a camada de processamento, gerenciamento, visualização e gestão da solução, fornecendo a interface com a qual os usuários interagem para analisar o inventário.
Acessível via navegador, com as seguintes funcionalidades:
- Autenticação Segura
- Senhas protegidas com hash bcrypt
- Bloqueio de IP após tentativas falhas configuráveis
- Expiração automática da sessão (ex: 30 minutos)
- MFA TOTP
- Statistical Dashboard
- Total de máquinas cadastradas, ativas e inativas
- Distribuição de Sistemas Operacionais
- Tipos de processadores e memória RAM
- Portas de Rede mais comun
- Serviços
- Processos com maior repetição
- Painel de Máquinas
- Lista completa de dispositivos com filtros avançados
- Busca Avançada
- Pesquisa por IP, sistema operacional, hardware ou outros critérios
- Detalhes da Máquina
- Visão detalhada dos dados coletados para cada host
| Função | Detalhamento | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Framework | A aplicação é construída sobre o micro-framework Flask, utilizando a linguagem Python, o que garante leveza e flexibilidade. | | Interface | A interface do usuário é desenvolvida com Tríade da Web, utilizando bibliotecas como Chart.js para gráficos interativos e Font Awesome para ícones, resultando em uma experiência de usuário moderna e intuitiva. | | Funcionalidades | Oferece um dashboard estatístico completo, um painel para listagem e detalhamento de máquinas, um sistema de busca avançada com filtros dinâmicos e a capacidade de exportar relatórios em formatos PDF e CSV (este último em desenvolvimento). | | Segurança | Implementa múltiplos mecanismos de segurança, incluindo armazenamento de senhas com hash bcrypt, Autenticação Multifator (MFA) baseada em TOTP, controle de acesso por faixas de IP e o uso de headers de segurança HTTP. |
4. Estrutura de Diretórios
A organização lógica do sistema se reflete em uma estrutura de diretórios clara e bem definida, projetada para separar a aplicação, os dados, os recursos estáticos e os utilitários. Essa separação facilita a manutenção, a escalabilidade e a aplicação de controles de segurança.
4.1. Estrutura simplificada
|Diretório/Arquivo|Função|
|---|---|
|app.py|Aplicação principal Flask.|
|data/inventory/|Arquiv
