◈ ProjView
← todos os projetos

mini-siem

Python Defensiva GitHub ↗

Mini-SIEM: ingestão, normalização e correlação de logs com detecção de ataques.

9 testes · 9 passou · 0 falhou · 0 skip

Entrypoints (CLI)

Módulos e funções principais

minisiem/__init__.py
minisiem/cli.py
  • main()
minisiem/parsers.py
  • parse_line()
  • parse_stream()
minisiem/store.py
  • detect_bruteforce() — Regra: N falhas de autenticação do mesmo IP => brute-force.
  • detect_web_scan() — Regra: muitos 404 do mesmo IP => varredura web.
  • run_all_rules()

Estrutura de arquivos

README

# Mini-SIEM 📊 Um SIEM caseiro (mini-Splunk) que **ingere logs**, **normaliza** em eventos estruturados, **armazena** em SQLite, permite **consultas** e roda **regras de correlação/detecção** (brute-force SSH, varredura web). > Núcleo funcional (parsers + storage + regras) pronto. Dashboard React/Grafana e backend Go estão no roadmap — ver abaixo. ## Estado atual (funcional ✅) - Parsers: **sshd** (auth_failure/success/invalid_user), **syslog**, **nginx access** - Armazenamento e consulta em **SQLite** - Regras de detecção: - `ssh_bruteforce` — N falhas do mesmo IP - `web_scan` — muitos 404 do mesmo IP - CLI de ingestão (arquivo ou stdin), consulta, stats e detecção ## Instalação ```bash git clone https://github.com/Diogo-Damasceno/mini-siem.git cd mini-siem pip install -e . ``` ## Uso ```bash # ingerir o log de exemplo (detecta brute-force + web scan) minisiem --db siem.db ingest samples/auth.log # via stdin (ex.: journald) journalctl -u sshd --no-pager | minisiem ingest # consultar e estatísticas minisiem --db siem.db query --type auth_failure minisiem --db siem.db stats minisiem --db siem.db detect ``` ### Saída de exemplo ``` [*] 18 eventos ingeridos. [!] CRITICAL ssh_bruteforce: 6 tentativas de autenticação falhas de 45.9.148.2 [!] WARNING web_scan: 11 respostas 404 de 185.100.87.1 (possível varredura) ``` ## Arquitetura ``` minisiem/ ├── parsers.py # normalização de logs -> Event [✅ funcional] ├── store.py # SQLite + regras de detecção [✅ funcional] └── cli.py # ingestão / consulta / detecção [✅ funcional] ``` ## Roadmap (expansão para SIEM completo) - [ ] Backend HTTP (FastAPI/Go) expondo consultas e alertas - [ ] Dashboard web (React) com gráficos de eventos/alertas - [ ] Coletores para Docker, firewall (nftables), auditd - [ ] Regras adicionais (impossible travel, exfil, privilege escalation) - [ ] PostgreSQL como backend para alto volume - [ ] Integração com o Threat Intelligence Platform (enriquecimento de IOCs) ## Testes ```bash pip install -e '.[dev]' pytest -q ``` ## Licença MIT
mini-siem SIM NÃO SIM NÃO Ingestão de log (arquivo/stdin) Parsers por tipo (ssh/web) Parseou? Normalizar em evento estruturado Armazenar em SQLite Regra de correlação bate? Disparar alerta (brute-force/web scan) Query/stats/alertas disponíveis

Como rodar na prática (entrada → saída):

$ mini-siem ingest auth.log
142 eventos (failed_password)
ALERTA: brute-force de 192.0.2.10 (142 tentativas)
$ mini-siem query 'SELECT * FROM alerts'
id=1 brute-force 192.0.2.10
id=2 web-scan 203.0.113.22