Skip to content

Maarckz/Inventory

Repository files navigation

1. Apresentação

O INVENTORY é uma solução 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.

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.

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 evoluída para um modelo de três camadas robusto: coleta, armazenamento relacional e apresentação. Este desacoplamento permite que o coletor e a aplicação web sejam mantidos e escalados de forma independente. A adoção de um banco de dados PostgreSQL (containerizado via Docker) como camada de persistência provê um repositório de dados confiável, estruturado e escalável, superando as limitações de performance e integridade do modelo anterior baseado em arquivos JSON.

  1. 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.

  2. Armazenamento (PostgreSQL Database): Diferente da versão anterior, os dados coletados não são mais salvos em arquivos locais. Eles são processados, estruturados e persistidos em um banco de dados relacional PostgreSQL. Essa migração permite transações mais seguras, consultas complexas mais rápidas e uma base sólida para as novas funcionalidades de dashboard em tempo real e multi-usuário.

  3. Apresentação e Análise (Flask App): A aplicação web, desenvolvida em Flask, conecta-se ao banco de dados PostgreSQL para recuperar e exibir as informações em uma interface interativa. Os dados são apresentados em dashboards estatísticos (com atualização automática), 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 e eficiente.

3. Componentes Principais

A arquitetura é materializada por três componentes principais que trabalham em conjunto: o Módulo Coletor, o Banco de Dados PostgreSQL e a Aplicação Web. A solução mantém 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 (agora gerida pelo banco 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.

**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
    - Endereço MAC 
    - Endereço IP
    - 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.
Listagem de Agentes: Recupera a lista de todos os dispositivos monitorados via API.
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 O coletor insere e atualiza os registros diretamente no banco de dados relacional PostgreSQL, garantindo integridade, consistência e suporte a múltiplas sessões simultâneas da aplicação web.

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. Atualmente integrada ao banco de dados PostgreSQL, a aplicação oferece maior performance, estabilidade e resposta rápida nas requisições, eliminando a dependência de leitura de arquivos estáticos.

Acessível via navegador, a plataforma conta com as seguintes funcionalidades:

  • Autenticação e Gestão de Identidade

    • Senhas protegidas com hash bcrypt.
    • Gerenciador de Contas e funcionalidade de Troca de Senha.
    • Bloqueio de IP após tentativas falhas configuráveis.
    • Expiração automática da sessão (ex: 30 minutos).
    • Autenticação Multifator (MFA TOTP).
  • Dashboard Estatístico (Tempo Real)

    • Atualização automática a cada 2 minutos sem necessidade de recarregar a página.
    • Total de máquinas cadastradas, ativas e inativas.
    • Distribuição de Sistemas Operacionais, Arquiteturas e Hardware.
    • Análise de Portas de Rede, Serviços e Processos.
  • Painel e Busca de Ativos

    • Lista completa de dispositivos com filtros avançados.
    • Sistema de Busca Avançada com sintaxe de tags (ex: ports:445, os:Windows).
    • Controle de Máquinas Legadas para gestão de ativos antigos ou específicos.
  • Internacionalização

    • Suporte Multi-idioma completo para Inglês, Espanhol e Hindi.
  • Detalhes e Relatórios

    • Visão detalhada dos dados coletados para cada host (Hardware, Rede, Software).
    • Exportação de relatórios em formato PDF.
Função Detalhamento
Framework A aplicação é construída sobre o micro-framework Flask, utilizando a linguagem Python. A integração com PostgreSQL substitui o uso de arquivos JSON locais, garantindo consultas mais rápidas e integridade de dados.
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 moderna e responsiva.
Funcionalidades Oferece um dashboard estatístico com atualização em tempo real (2 min), suporte a múltiplos idiomas (Inglês, Espanhol, Hindi), gestão de contas, controle de máquinas legadas, busca avançada e exportação de relatórios em PDF.
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 evoluiu para suportar a nova arquitetura baseada em banco de dados relacional, mantendo pastas locais para configurações, logs e suporte a máquinas legadas. A separação entre a aplicação web, o container do banco de dados e os utilitários facilita a manutenção e o deployment.

4.1. Estrutura Simplificada

Diretório/Arquivo Função
app.py Aplicação principal Flask.
models.py Definição dos modelos/tabelas do banco de dados (SQLAlchemy).
postgres/ Configuração do Docker Compose para o banco PostgreSQL.
migrate_db.py Script para migrar dados antigos (JSON) para o PostgreSQL.
utils/collector.py Novo módulo responsável pela coleta de dados na API do Wazuh.
data/ Contém dados de autenticação local, grupos e cache/inventário legado.
logs/ Logs de operação, auditoria e sessões de usuário.
ssl/ Certificados TLS/SSL para conexões HTTPS.

A estrutura do projeto separa a aplicação, os dados e os utilitários de gestão:

Categoria Função
Núcleo da Aplicação Contém a lógica principal da interface web (Flask).
Dados Diretórios para armazenar os arquivos JSON do inventário, credenciais de usuários e dados de grupos do Wazuh.
Recursos Estáticos Arquivos de estilo (CSS), scripts de interação (JS) e imagens/ícones.
Templates Arquivos HTML da interface do usuário.
Utilitários Scripts para coleta de dados, gerenciamento de usuários e exportação de relatórios.
Certificados Arquivos para configuração de segurança HTTPS (TLS/SSL).

4.2. Estrutura Completa

INVENTORY/                        # Diretório raiz do projeto
├── app.py                        # Ponto de entrada principal da aplicação Flask
├── models.py                     # Definição das tabelas do Banco de Dados
├── migrate_db.py                 # Script de migração (JSON -> PostgreSQL)
├── reset_db.py                   # Script para limpar/resetar o banco de dados
├── requirements.txt              # Dependências Python
├── .env                          # Variáveis de ambiente (Senhas, IPs, Configurações)
├── data/                         # Dados persistentes e configurações locais
│   ├── auth/
│   │   └── logins.json           # Credenciais de usuários (configuração local)
│   ├── groups/
│   │   └── groups.json           # Cache de grupos do Wazuh
│   └── inventory/                # Armazenamento local (ex: máquinas legadas ou cache)
│       ├── hosts_antigos/        # Diretório para máquinas legadas
│       └── [arquivos JSON...]    # Dados de hosts (quando aplicável)
├── logs/                         # Logs de execução e segurança
│   ├── audit.log                 # Log de auditoria
│   ├── error.log                 # Log de erros
│   ├── info.log                  # Log de informações gerais
│   ├── security.log              # Log de eventos de segurança
│   ├── warning.log               # Log de alertas
│   └── flask_sessions/           # Sessões ativas dos usuários
├── postgres/                     # Configuração do Banco de Dados (Docker)
│   └── docker-compose.yml        # Orquestração do container PostgreSQL
├── ssl/                          # Certificados TLS/SSL
│   ├── cert.pem
│   └── key.pem
├── static/                       # Arquivos estáticos
│   ├── css/                      # Estilos da interface
│   ├── js/                       # Scripts JavaScript (Dashboard, Gráficos, Tema)
│   └── [images/icons]            # Logos e favicons
├── templates/                    # Templates HTML (Jinja2)
│   ├── admin_users.html          # Gestão de contas de usuários
│   ├── legacy_machines.html      # Controle de máquinas legadas
│   ├── dashboard.html            # Dashboard principal
│   ├── painel.html               # Listagem de máquinas
│   ├── search.html               # Busca avançada
│   ├── machine_details.html      # Detalhes do ativo
│   ├── settings.html             # Configurações do sistema
│   ├── login.html                # Tela de login
│   ├── verify_mfa.html           # Verificação de dois fatores
│   ├── error.html                # Página de erro
│   └── base.html                 # Template base (layout)
└── utils/                        # Scripts utilitários e lógica de negócio
    ├── collector.py              # Coletor de dados (substitui o antigo get_data.py)
    ├── machine_handler.py        # Manipulação lógica de máquinas
    ├── language.py               # Suporte a internacionalização (Inglês, Espanhol, Hindi)
    ├── mfa_utils.py              # Funções auxiliares para MFA
    └── pdf_export.py             # Exportação de relatórios PDF

5. Funcionalidades Detalhadas da Aplicação

A interface web do INVENTORY foi desenvolvida para transformar os dados brutos coletados em inteligência acionável, fornecendo ferramentas poderosas para as equipes de TI e segurança.

5.1. Dashboard

O dashboard é a visão centralizada e estatística do inventário, projetado para oferecer uma compreensão imediata do ambiente de TI.

Métricas (KPIs): Apresenta indicadores chave de desempenho, como o número total de máquinas, a quantidade de ativos online (ativos) e offline (inativos).

Gráficos Interativos: Exibe visualizações gráficas da distribuição de sistemas operacionais, tipos de processadores, faixas de memória RAM, portas de rede mais comuns e processos com maior recorrência, além da evolução temporal do status dos agentes, permitindo a análise de tendências. O clique em um gráfico redireciona para a busca avançada com o filtro correspondente aplicado.

5.2. Painel de Máquinas e Detalhes de Ativos

Este painel fornece uma listagem de todos os dispositivos inventariados, exibindo informações resumidas e o status de atividade em tempo real. A partir desta lista, é possível navegar para uma página de detalhes completa para cada ativo, que consolida todas as informações extraídas do Wazuh, incluindo hardware, rede, software instalado e processos em execução.

5.3. Sistema de Busca Avançada

A funcionalidade de busca avançada é uma ferramenta para atividades de threat hunting, auditoria, ou até mesmo uma simples pesquisa, permitindo consultas precisas com uma sintaxe baseada em tags.

Exemplos de Sintaxe de Busca:

ports:445 - Localiza máquinas com uma porta específica aberta.

inventory:os:Windows - Filtra dispositivos por sistema operacional.

inventory:packages:chrome - Busca por máquinas com um pacote de software específico instalado.

agent_info:10.7.6.20 - Pesquisa por hostname, IP, status ou ID do agente.

inventory:processes:python - Busca por processos em execução em um ativo.

ram_gb:9-12gb - Filtra ativos por uma faixa específica de memória RAM.

groups:Home - Busca pelo grupo pesquisado.

5.4. Geração de Relatórios e Sincronização

O sistema permite a exportação de relatórios completos do inventário em formatos PDF e CSV, facilitando a criação de documentação para auditorias de conformidade. Adicionalmente, oferece uma funcionalidade de_ sincronização manual_, que aciona o coletor para atualizar os dados do inventário diretamente do Wazuh, garantindo que as informações estejam sempre atualizadas.

Note

Devido a uma restrição de segurança da própria API do Wazuh, a sincronização pode ser lenta de acordo com a quantidade de hosts a serem sincronizados.

5.5. Sincronização automatica e manual

Com a intenção de facilitar a utilização do sistema, foi desenvolvido uma area de configuração de sincronização com o API WAZUH, com ingestao dos dados em periodos especificos.

6. Arquitetura de Segurança

A segurança é uma prioridade no design do sistema INVENTORY. A arquitetura emprega uma estratégia de "defesa em profundidade", com controles implementados nas camadas de autenticação, sessão, rede e transporte para proteger de forma abrangente o acesso aos dados centralizados de inventário.

6.1. Autenticação e Gestão de Sessões

A proteção de credenciais e o controle de acesso são realizados por meio de um conjunto robusto de medidas:

Hash bcrypt: As senhas dos usuários são armazenadas utilizando o algoritmo bcrypt, um padrão forte que protege contra ataques de quebra de senha offline, como rainbow table e força bruta. • Controle de Força Bruta: O sistema implementa um mecanismo de bloqueio de IP após um número configurável de tentativas de login falhas. • Verificação de IP de Origem: Cada login é validado contra o endereço IP de origem para mitigar o risco de sequestro de sessão ou uso de credenciais roubadas de locais não autorizados. • Timeout Automático: As sessões de usuário expiram automaticamente após um período de inatividade (padrão de 15 minutos), mitigando o risco de acesso não autorizado a estações de trabalho desatendidas.

6.2. Autenticação Multifator (MFA)

Para reforçar a segurança do login, o sistema suporta Autenticação Multifator (MFA) baseada no padrão TOTP (Time-based One-Time Password). Esta funcionalidade é compatível com aplicativos autenticadores populares, como o Google Authenticator, pode ser configurada de forma simples através da leitura de um QR code e oferece suporte a backup de códigos de recuperação.

6.3. Gerenciamento de Contas

Para ajudar a controlar e descentrazar as atividades dos analistas, foi desenvolvido a area de contas de usuários, podendo ser definido um usuario comum, para ser observador, ou outros administradores.

6.4. Controle de Acesso à Rede

O acesso à interface web pode ser restrito a faixas de rede específicas. Essa configuração é controlada pela variável de ambiente ALLOWED_IP_RANGES, permitindo que apenas usuários de redes confiáveis (como a rede corporativa interna) possam acessar a aplicação.

6.5. Segurança da Camada de Transporte e Auditoria

A comunicação entre o cliente e o servidor é protegida com TLS/SSL, garantindo a criptografia de todo o tráfego via HTTPS. A aplicação também implementa Headers de Segurança HTTP para mitigar ataques comuns a aplicações web. Além disso, o sistema mantém logs detalhados de segurança (security.log) e auditoria (audit.log), registrando eventos relevantes para garantir a rastreabilidade completa das ações.

07 - Preparação

OBS: Esta configuração foi realizada em um UBUNTU 24.04

O sistema realiza o inventário dos dispositivos com agentes Wazuh em duas camadas principais:

  • Coletor de Dados: Responsável por se conectar à API do Wazuh e coletar informações detalhadas de cada agente monitorado, incluindo dados de hardware, sistema operacional, rede e portas abertas. As informações são processadas e armazenadas em arquivos JSON, organizados por hostname, de forma estruturada e padronizada para consumo posterior pela interface web.
  • Aplicação Web (Flask): Consome os arquivos JSON gerados pelo coletor e apresenta os dados por meio de uma interface web segura e interativa. A aplicação disponibiliza dashboards estatísticos, visualizações individuais por máquina, filtros dinâmicos, busca avançada e consultas personalizadas. Essa interface facilita a análise, inspeção e auditoria do inventário de forma eficiente e centralizada.

Operation Flow:

Wazuh Manager (API REST / SysCollector)
       │
       └─ Coleta de dados: hardware, SO, rede, portas, pacotes, processos
               │
               ▼
Coletor Python
       │
       └─ Consome API do Wazuh e normaliza os dados
               │
               ▼
Parser
       │
       └─ Estrutura e organiza os dados (JSON → modelo relacional)
               │
               ▼
PostgreSQL (Docker)
       │
       └─ Armazenamento estruturado por hostname / grupos / atributos
               │
               ▼
Flask Web App
       │
       └─ Consultas SQL + regras de negócio
               │
               ▼
Dashboard do Usuário
       └─ Visualização centralizada, busca e análise por máquina

Criar usuário:

sudo useradd -r -s /usr/sbin/nologin inventory

Instalar dependências:

sudo apt install -y docker.io docker-compose-v2 python3-pip python3-venv

8 - Instalação do Inventory

O inventory serve como uma solução para centralizar os dados de OSCollector do WAZUH. Ao invés de acessar maquina por maquina, é possivel ter uma visão geral e abrangente dos ativos.

Criar e configurar a pasta:

cd /opt
sudo mkdir Inventory
sudo chown -R inventory:inventory ./Inventory

Clonar o repositório:

sudo -u inventory git clone https://github.com/Maarckz/Inventory.git

Criar o .env dentro de Inventory e colar o conteúdo abaixo

sudo -u inventory cd Inventory
sudo -u inventory nano .env

Environment (.env)

# Configurações de segurança
SECRET_KEY=MINHACHAVE
SESSION_SALT=supersecreta_altere_esta_chave_salt!
INVENTORY_DIR=data/inventory
GROUPS_DIR=data/groups
AUTH_FILE=data/auth/logins.json
LOG_DIR=logs

# Configurações de rede
HOST=0.0.0.0
PORT=8000
DEBUG=False

# Configurações de HTTPS
USE_HTTPS=True
SSL_CERT_PATH=ssl/cert.pem
SSL_KEY_PATH=ssl/key.pem

# Permitir apenas IPs de uma faixa específica
ALLOWED_IP_RANGES=0.0.0.0/0

WAZUH_PROTOCOL=https
WAZUH_HOST=192.168.0.26
WAZUH_PORT=55000
WAZUH_USER=wazuh-wui
WAZUH_PASSWORD=senha_do_wazuh-wui

# Banco de Dados PostgreSQL
DB_USER=inventorydb
DB_PASS=senhadoinventorydb
DB_HOST=localhost
DB_PORT=5432
DB_NAME=inventory_db

As credenciais de API, devem ser consultadas dentro da pasta de instalaçao do WAZUH

sudo tar -O -xvf wazuh-install-files.tar wazuh-install-files/wazuh-passwords.txt

Criar o ambiente virtual e de permissões novamente

sudo -u inventory python3 -m venv /opt/Inventory/venv
sudo chown -R inventory:inventory ./Inventory

Criar o ambiente .venv:

sudo -u inventory python3 -m venv /opt/Inventory/.venv

Dentro do shell:

sudo -u inventory bash -c "source /opt/Inventory/.venv/bin/activate && exec bash"

Instalar dependências com o usuário Inventory:

pip3 install -r requirements.txt

Criar TLS/SSL Cert:

openssl req -x509 -newkey rsa:4096 -nodes -out ssl/cert.pem -keyout ssl/key.pem -days 365 

Criação do Banco de Dados:

exit       #VOLTAR AO USUARIO DO SISTEMA

cd postgres/

#EDITAR AS CREDENCIAS SE FORAM ALTERADAS NO .env

sudo docker compose up -d 

Teste da aplicação WEB:

sudo -u inventory -s

cd .. && source .venv/bin/activate && python3 app.py

Login e Password padrão:

Login: admin
Password: Meuadmin123

Se for necessário migrar o banco anterior para o atual:

exit       # VOLTAR AO USUARIO DO SISTEMA
cp -a <diretorio_inventory_antigo>/data/. /opt/Inventory/data/
sudo chown -R inventory:inventory ./Inventory
sudo -u inventory -s      # VOLTAR PARA USUARIO INVENTORY
source .venv/bin/activate
python3 migrate_db.py 

# REINICIAR A APLICAÇÃO OU SINCRONIZAR

9 - Criação do serviço utilitário

Para manter os serviço disponivel mesmo após o reboot, sugiro a criação abaixo no diretório:

sudo nano /etc/systemd/system/inventory.service
[Unit]
Description=Inventory Application
After=network.target
Wants=network-online.target

[Service]
# Exec
Type=simple
WorkingDirectory=/opt/Inventory
ExecStart=/opt/Inventory/.venv/bin/python3 /opt/Inventory/app.py

# Run as unprivileged account (or use DynamicUser=yes, ver abaixo)
User=inventory
Group=inventory

# Restart policy
Restart=always
RestartSec=5

# Basic sandboxing
NoNewPrivileges=yes          # impede elevação de privilégios
PrivateTmp=yes               # /tmp isolado
PrivateDevices=yes           # sem acesso direto a /dev
ProtectSystem=full           # /usr e /boot readonly; 'full' protege /etc também
ProtectHome=yes              # /home e /root inacessíveis
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectKernelLogs=yes
ProtectControlGroups=yes

# Filesystem allowlist: deixa somente o que precisa escrever
ReadOnlyPaths=/
ReadWritePaths=/opt/Inventory

# Network restrictions: permita só famílias necessárias (web usa AF_INET/AF_INET6)
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6

# Capabilities: remove tudo por padrão (adicione só o que for imprescindível)
CapabilityBoundingSet=
AmbientCapabilities=

# Limits
LimitNOFILE=65536
LimitNPROC=1024

# Memory exec protections
MemoryDenyWriteExecute=yes
LockPersonality=yes

# Logging
StandardOutput=journal
StandardError=journal

# Extra: make sure service cannot create new users/suid escalation
RestrictSUIDSGID=yes

[Install]
WantedBy=multi-user.target

Recarregue o daemon do sistema:

sudo systemctl daemon-reload

Habilite e inicie o Inventory.service:

sudo systemctl enable inventory.service && sudo systemctl start inventory.service

Para verificar o usuário do serviço / processo:

systemctl show -p MainPID --value inventory.service 
ps -o user,pid,cmd -p <PID>

10. Operação e Manutenção

Rotinas de manutenção e monitoramento são essenciais para garantir a integridade, a atualização e a segurança contínua dos dados gerenciados pelo INVENTORY.

10.1 Rotinas de Manutenção Recomendadas

Diária: Verificação dos logs em logs/ audit.log error.log flask_sessions info.log security.log warning.log, ele pode indicar anomalias na aplicação. • Semanal: Realizar o backup do banco de dados POSTGRESQL (DOCKER) docker exec -t inventory_postgres pg_dump -U inventorydb inventory_db > backup_inventario_$(date +%Y%m%d).sql. • Mensal: Conduzir uma auditoria dos usuários e acessos registrados para garantir a conformidade com as políticas de segurança. • Anual: Renovar os certificados TLS/SSL para manter a segurança da comunicação HTTPS.

10.2 Logs do Sistema

Os logs são ferramentas críticas para o monitoramento da saúde do sistema e para a solução de problemas.

info.log: Registra informações gerais sobre a execução da aplicação. • warning.log: Armazena alertas e avisos que não são erros críticos, mas que podem requerer atenção. • error.log: Armazena erros e exceções que ocorrem durante a operação. • security.log: Registra eventos de segurança, como tentativas de login (bem-sucedidas e falhas), ativação de MFA e bloqueios de IP. • audit.log: Fornece uma trilha de auditoria de acessos e atividades realizadas pelos usuários na plataforma.

10.3 Solução de Problemas Comuns

Problema Comum Ação Recomendada
Dados não atualizam Verifique se o coletor de dados (get_data.py) está sendo executado corretamente. Execute-o manualmente para forçar uma sincronização.
Erro de certificado Confirme se os caminhos SSL_CERT_PATH e SSL_KEY_PATH no arquivo .env estão corretos e se os arquivos de certificado existem.
Acesso negado Verifique se o endereço IP de origem do acesso está incluído nas faixas permitidas pela variável ALLOWED_IP_RANGES.

11. Melhorias Futuras

O INVENTORY é um projeto em desenvolvimento ativo, com um roadmap claro para aprimoramentos focados em escalabilidade, integração e segurança, garantindo sua relevância e robustez a longo prazo.

Projeto Descrição
Containerização - Criação de uma imagem Docker oficial e uso de Docker Compose para simplificar a orquestração e a implantação do ambiente.
Backend e Performance - Implementação de Redis para cache de dados, visando melhorar a velocidade da interface.
- Criação de uma API REST para facilitar integrações com sistemas externos.
- Suporte a bancos de dados relacionais (SQL) para maior escalabilidade.
Frontend e UX - Implementação de WebSockets para a atualização de dashboards em tempo real.
- Melhoria da responsividade da interface para dispositivos móveis.
Segurança e Integração: - Implementação de criptografia para os arquivos JSON de inventário em repouso.
- Integração com serviços de diretório (LDAP/Active Directory) para autenticação centralizada.
- Integração com sistemas de tickets (Jira, ServiceNow, etc.).
Essas melhorias planejadas reforçam o compromisso do projeto com a evolução contínua.

12. Conclusão

O sistema INVENTORY preenche uma lacuna estratégica ao eliminar a cegueira sobre os ativos de TI, transformando os dados brutos de telemetria coletados pelo Wazuh em uma plataforma centralizada de visualização, busca e auditoria. Ele oferece uma solução leve e segura que se integra de forma transparente a infraestruturas existentes, sem a necessidade de agentes adicionais.

About

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.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors