Securitate

SOC

Evenimentele de la firewall, IDS, DNS, Wi-Fi și antivirus într-un singur flux, prioritizate și explicate de AI local.

Versiune
0.13.0
Stadiu
Beta
Capturi
4
Înlocuiește
Parțial, un SIEM plătit per GB ingerat (nu un MDR 24/7)
Alertele zilei într-un singur loc. Hub-ul SOC la 09:41: 14 alerte deschise, dintre care una critică, venite din pfSense, Snort, GravityZone, Active Directory și modulele Monolit. Deasupra, starea fiecărei surse de loguri; în dreapta, fluxul live al evenimentelor.
Alertele zilei într-un singur loc. Hub-ul SOC la 09:41: 14 alerte deschise, dintre care una critică, venite din pfSense, Snort, GravityZone, Active Directory și modulele Monolit. Deasupra, starea fiecărei surse de loguri; în dreapta, fluxul live al evenimentelor.

Capturi din aplicație

Cum arată în lucru

Interfața reală Monolit, cu datele unei firme fictive într-o zi obișnuită. Apăsați pe o captură ca s-o vedeți la dimensiune completă.

O alertă explicată de AI, în română. Scanarea SSH de la 203.0.113.45 către web01, blocată de firewall, cu explicația generată de modelul local: ce s-a întâmplat, de ce contează și ce trebuie verificat. Dedesubt se văd detaliile tehnice și referința către linia brută din arhivă.
Captura 2 din 4

O alertă explicată de AI, în română

Scanarea SSH de la 203.0.113.45 către web01, blocată de firewall, cu explicația generată de modelul local: ce s-a întâmplat, de ce contează și ce trebuie verificat. Dedesubt se văd detaliile tehnice și referința către linia brută din arhivă.

Evenimente pe oră și topuri. Aproximativ 41.000 de evenimente de securitate în 24 de ore, cu vârful de la ora 09:00 produs de scanare. Topurile arată imediat cine a fost blocat, ce semnături IDS s-au declanșat și ce conturi au autentificări eșuate.
Captura 3 din 4

Evenimente pe oră și topuri

Aproximativ 41.000 de evenimente de securitate în 24 de ore, cu vârful de la ora 09:00 produs de scanare. Topurile arată imediat cine a fost blocat, ce semnături IDS s-au declanșat și ce conturi au autentificări eșuate.

Sursele de loguri și starea lor. Fiecare sursă (pfSense, UniFi, GravityZone, Active Directory, colectorul și arhiva) apare cu starea, momentul ultimelor date și volumul pe oră. Wazuh și vechea integrare Suricata sunt marcate onest ca neconfigurate.
Captura 4 din 4

Sursele de loguri și starea lor

Fiecare sursă (pfSense, UniFi, GravityZone, Active Directory, colectorul și arhiva) apare cu starea, momentul ultimelor date și volumul pe oră. Wazuh și vechea integrare Suricata sunt marcate onest ca neconfigurate.

1Nivelul 1

Pentru conducere

Ce problemă rezolvă, cum se lucrează cu modulul și ce se poate măsura.

Ce problemă rezolvă

Alertele de securitate ale unei firme stau de obicei în console separate: firewall, sistemul de detecție a intruziunilor, antivirus, Active Directory, rețeaua Wi-Fi. Nimeni nu le urmărește pe toate în același timp. Modulul SOC le aduce într-o singură pagină, în același format, cu aceeași scală de severitate. Monolit nu este un SIEM: păstrează alertele, agregatele orare și referințe către logurile brute, iar logurile brute ajung într-o arhivă pe NAS.

Ce face, concret

  • Colectează și normalizează alerte din pfSense (syslog și API), Snort, pfBlockerNG, ntopng, UniFi, Bitdefender GravityZone și Active Directory.
  • Primește automat evenimentele modulelor Monolit: RMM, UPS, backup de infrastructură, rețea, sarcini și suprafața externă (EASM).
  • Afișează un flux live al evenimentelor, inclusiv al celor care nu devin alerte.
  • Arată statistici orare și topuri: IP-uri blocate, semnături IDS, conturi cu autentificări eșuate, porturi vizate, trafic pe gazdă.
  • Are o pagină dedicată pentru fiecare echipament: stare, indicatori, serii orare, topuri și panouri live (gateway-uri, servicii, endpoint-uri).
  • Permite căutarea în tot ce a sosit în ultimele 90 de zile, nu doar în alerte („am mai văzut IP-ul acesta?”).
  • Păstrează logurile brute 90 de zile pe NAS, comprimate, cu un manifest zilnic cu sume de control sha256.
  • Trimite notificări pe Teams și e-mail pentru alertele ridicate și critice.
  • Explică o alertă și produce un rezumat zilnic cu un model AI local. Modelul primește doar date agregate, niciodată loguri brute, și nu execută nicio acțiune.

Fluxuri de lucru

1. O alertă critică în timpul zilei

  1. Alerta pleacă pe Teams și pe e-mail.
  2. Tehnicianul deschide alerta din SOC și apasă „Explică cu AI”.
  3. Citește explicația și pașii de verificare sugerați.
  4. Verifică în „Explorare” dacă adresa a mai apărut în ultimele zile.
  5. Confirmă alerta, apoi o rezolvă cu o notă. Ambele acțiuni intră în audit.

2. Verificarea de dimineață

  1. La 06:30 se generează automat rezumatul AI al ultimelor 24 de ore.
  2. Managerul IT citește constatările și anomaliile față de media ultimelor 7 zile.
  3. Pașii sugerați devin sarcini pentru echipă.

3. Conectarea unei surse noi

  1. În „Surse”, butonul cheie deschide formularul cu instrucțiuni pentru furnizorul respectiv.
  2. Se completează adresa și credențialele; acestea se stochează criptat.
  3. „Test” verifică autentificarea și drepturile, „Rulează acum” face prima extragere.
  4. Sursa trece pe „funcțional”, cu momentul ultimelor date și volumul pe oră.

Indicatori urmăriți

  • Alerte deschise, critice și ridicate; alerte din ultimele 24 de ore, pe surse și pe severitate.
  • Evenimente pe oră și pe secundă.
  • Surse funcționale, degradate, indisponibile sau neconfigurate.
  • Starea arhivei: montată, spațiu liber, fișiere scrise azi.
  • Notificări: maximum 10 mesaje la 5 minute pe canal, o alertă identică cel mult o dată la 30 de minute, plus un rezumat zilnic la 08:00.

2Nivelul 2

Pentru echipa IT

Arhitectură, integrări, API, roluri și limitările cunoscute.

Arhitectură

  • Serviciul soc, versiunea 0.13.0, port 8010, schema SQL soc, expus prin nginx sub /api/soc.
  • Colector Vector pe porturile 5514 (pfSense, inclusiv Snort și pfBlockerNG), 5515 (Suricata EVE), 5516 (pfBlockerNG), 5517 (UniFi SIEM, UDP și TCP), 5518 (ntopng) și 5520 (generic). Syslog-ul este acceptat doar de la IP-urile configurate la instalare, ca protecție împotriva falsificării.
  • Vector trimite evenimentele pe două ramuri: HTTP către soc (alerte și agregate în baza de date) și un tampon local pe disc pentru arhiva brută.
  • În baza de date stau doar alertele, agregatele orare (soc_agg_hourly) și referința raw_ref către linia brută (topic și zi).
  • Arhiva brută: un director pe topic (raw.pfsense, raw.pfblocker, raw.unifi, raw.gravityzone, raw.ad și altele), partiționat pe zile UTC, un fișier .jsonl.gz pe oră și _manifest.json pe zi.
  • Un index subțire, cu 8 câmpuri pe eveniment, susține căutarea pe 90 de zile.
  • Feed-ul live este un buffer circular în memorie, servit prin REST și WebSocket.

Joburi programate

  • lake_mover, la 5 minute: mută orele închise din tampon pe NAS și rescrie manifestele.
  • Retenție zilnică: 90 de zile, reglabilă; normalized.security_events nu coboară sub 30 de zile.
  • Re-sigilarea zilelor încheiate în manifeste.
  • Rezumatul AI zilnic la 06:30 și rezumatul notificărilor la 08:00.
  • Interogarea adaptoarelor cu interval propriu pe sursă (de exemplu 60 s pentru API-ul pfSense, 120 s pentru ntopng, 300 s pentru GravityZone).

Integrări și protocoale

  • Syslog (UDP și TCP) prin Vector pentru pfSense, Snort, pfBlockerNG și UniFi.
  • API REST pfSense (pachetul REST API, utilizator cu drept doar de citire, cheie API), API ntopng (token), API GravityZone (Network API și Quarantine API).
  • Modulele Monolit, prin magistrala Redis: canalele rmm.*, ups.*, infra_backup.*, network.alert.created, tasks.sla_breach, auth.user_disabled, hr.offboarding_completed, easm.finding_created.
  • Adaptoare interne către AD Sentinel (/api/ad/events, /api/ad/security-audit) și Rețea (/api/retea/alerts).
  • Evenimente publicate: soc.high_severity_alert și soc.source_health_changed.
  • AI: POST /api/ai/analyze/soc din modulul AI Assistant, care vorbește cu un server de modele local.
  • Notificări: webhook Teams și SMTP.

Endpoint-uri notabile (33 în total în contract)

  • GET /api/soc/overview — indicatorii paginii și ai panoului principal.
  • GET /api/soc/alerts cu filtre (stare, severitate, sursă, familie, text, interval); POST /api/soc/alerts/{id}/ack, /resolve, /explain; POST /api/soc/alerts/bulk.
  • GET /api/soc/stats/hourly și GET /api/soc/stats/top.
  • GET /api/soc/devices/{system} (istoric agregat) și GET /api/soc/devices/{system}/live (panouri de la adaptor).
  • GET /api/soc/hunt și GET /api/soc/hunt/status — căutarea în index.
  • POST /api/soc/ingest/events — intrarea colectorului, autentificată cu X-Monolit-Token, nu cu JWT.
  • GET /api/soc/feed și WebSocket /api/soc/ws/feed, cu token JWT în query.
  • GET/PUT /api/soc/lake/config, POST /api/soc/lake/mount, /unmount, /flush — arhiva, configurată din Setări → Stocare & Loguri.

Roluri și audit

  • Citirea alertelor, a statisticilor, a feed-ului, a căutării și a paginilor de echipament: admin, IT manager, IT staff.
  • Operații în masă, surse, audit, starea arhivei și generarea la cerere a rezumatului AI: admin și IT manager. Salvarea configurației și montarea arhivei: doar admin.
  • Confirmarea și rezolvarea unei alerte se înregistrează în audit, cu IP-ul utilizatorului; montarea arhivei la fel.
  • Secretele surselor se stochează criptat și se întorc mascate (****). Dacă se schimbă serverul unei surse, secretul se șterge automat.
  • WebSocket-ul închide conexiunea cu codurile 4401 (token invalid) și 4403 (rol insuficient), fără reconectare în buclă.

Cerințe

  • Variabile obligatorii: DB_HOST, DB_USER, DB_PASSWORD, SECRET_KEY; core_service cel puțin 1.0.0.
  • Vector instalat de instalatorul SOC, cu IP-urile acceptate pentru syslog.
  • Un NAS cu share NFS (utilizator mapat pe uid al aplicației) sau SMB, cu drept de modificare, nu doar de scriere. Pentru 90 de zile, recomandarea din documentație este 250 GB.
  • Opțional: TEAMS_WEBHOOK_URL, SMTP_* și NOTIFY_EMAIL_RECIPIENTS pentru notificări; un server de modele local pentru partea AI.

Limitări și ce este încă în plan

  • Monolit nu este un SIEM și nu înlocuiește unul.
  • Wazuh nu este încă integrat: infrastructura din hub (cursoare, reguli, limitare de ritm, stare) este pregătită, adaptorul lipsește și are nevoie de o mașină virtuală nouă.
  • Linia de syslog a lui Snort nu spune dacă pachetul a fost blocat; alertele apar ca „detectat”. Integrarea Suricata rămâne în cod, dar este înlocuită de Snort.
  • Blocările IPv6 ajung în arhivă, dar nu produc alerte.
  • Limita tamponului local (20 GB) oprește doar scrierile făcute de soc; Vector continuă să scrie până se umple discul.
  • Dacă share-ul nu permite ștergerea, retenția eșuează; modulul generează alerta lake.no_delete.
  • Nu există o verificare de integritate a pointerului raw_ref către linia brută.
  • În plan pentru AI: trecerea pe Ollama, context îmbogățit pe fiecare aplicație (istoricul IP-ului, starea endpoint-ului), un lanț triaj → specialist → analist și căutare semantică peste alertele din trecut.