Hodisa yuborish
JSON, syslog, CEF, bulut audit yozuvlari yoki butun log fayllarni ingest API'ga yuboring va qaytgan javobni o'qing.
Ingest API agenti ham, syslog’i ham yo’q tizimlar uchun: o’z ilova va skriptlaringiz, Fluent Bit va Vector kabi log jo’natuvchilar, CI pipeline’lar, bulut audit izlari. Windows kompyuterlar agentdan foydalanadi, Linux serverlar SSH orqali kuzatiladi, syslog biladigan qurilmalar esa uni 514-portga yuboradi — Ma’lumot manbalarini ulash sahifasiga qarang.
Har bir ingest endpoint ANALYST roli va write scope’li API kalitni qabul qiladi (API kalitlar va rollar sahifasiga qarang). Har bir hodisa agent hodisalari bilan bir xil zanjirdan o’tadi: normallashtirish, aniqlash qatlamlari, dublikatlarni birlashtirish va korrelyatsiya.
Endpointlar
«Endpointlar» bo'limi| Metod va yo’l | Tana | Cheklov |
|---|---|---|
POST /api/ingest/event |
Bitta JSON obyekt | — |
POST /api/ingest/records |
JSON massiv yoki har qatorga bitta JSON obyekt — Fluent Bit va Vector yuboradigani | 5 000 yozuv, 10 MB |
POST /api/ingest/batch |
{"events": [...], "format": "json"} — format json, syslog yoki cef |
5 000 hodisa |
POST /api/ingest/syslog |
{"line": "<34>1 2026-10-17T09:00:00Z web-01 sshd - - - Failed password for root"} |
8 192 belgi |
POST /api/ingest/cef |
{"line": "CEF:0|Vendor|Product|1.0|100|Port scan|7|src=203.0.113.7 dst=10.0.0.5"} |
8 192 belgi |
POST /api/ingest/cloudtrail |
{"records": [...]} yoki {"event": {...}} — AWS CloudTrail yozuvlari |
— |
POST /api/ingest/azure-monitor |
{"records": [...]} yoki {"event": {...}} |
— |
POST /api/ingest/log-file |
Multipart: file va fmt = syslog, cef, json (har qatorda bitta obyekt) yoki evtx |
25 MB, 5 000 yozuv |
RFC 5424 va RFC 3164 ko’rinishidagi syslog qatorlari ikkalasi ham o’qiladi.
JSON hodisa
«JSON hodisa» bo'limicurl -X POST https://soc.example.com/api/ingest/event \ -H "X-API-Key: legit_…" \ -H "Content-Type: application/json" \ -d '{ "event_type": "auth_failure", "hostname": "web-01", "src_ip": "203.0.113.7", "message": "Failed password for root from 203.0.113.7", "timestamp": "2026-10-17T09:00:00Z" }'Bu bitta muvaffaqiyatsiz loginni saqlaydi. Uning o’zi alert ochmaydi: alertlarni aniqlash qoidalari va qatlamlari ochadi — o’n daqiqa ichida bir manzildan beshta muvaffaqiyatsiz urinish, keyin muvaffaqiyatli kirish alert ochadi. Yuboruvchi high yoki critical deb belgilagan hodisa alertni o’zi ochadi.
Parser ko’pchilik log jo’natuvchilar allaqachon ishlatadigan maydon nomlarini o’qiydi, shuning uchun yozuvni deyarli qayta shakllantirish kerak bo’lmaydi:
| Ma’nosi | O’qiladigan maydon nomlari — birinchi topilgani olinadi |
|---|---|
| Host | hostname, host, computer, machine, agent_hostname, ComputerName, Computer, host_name |
| Nima bo’ldi | event_type, EventID, eventType, type, action |
| Daraja | severity, level, SeverityName, severity_label |
| Xabar | message, msg, description, event_message, log |
| Manba manzil | src_ip, source_ip, src, ClientIP, ipAddress, IpAddress |
| Manzil (qabul qiluvchi) | dst_ip, dest_ip, destination_ip, dst, DestinationIp |
Ichki raw obyekt ichidagi maydonlar ham qidiriladi. tags va entities (user:alice kabi satrlar) berilganicha saqlanadi.
Daraja — info, low, medium, high, critical dan biri. Syslog so’zlari (debug, notice, warning, error, alert, emergency) tarjima qilinadi; parser bilmaydigan qiymat medium deb o’qiladi; darajasiz yuborilgan hodisa low bo’ladi. Syslog qatorida <PRI> dagi daraja syslog’ning o’z shkalasida o’qiladi — 0 (Emergency, critical deb o’qiladi) dan 7 gacha (Debug, info deb o’qiladi); kirishlar, imtiyoz o’zgarishlari va zararli dastur xabarlari bundan mustasno — ularda darajani xabarning o’zi belgilaydi.
Vaqt. timestamp — manba xabar qilganidek, hodisa sodir bo’lgan vaqt. Server hodisani qabul qilgan vaqtni alohida yozadi; bu vaqtni yuboruvchi belgilay olmaydi.
Windows hodisalari. EventID, event_id yoki winlog.event_id (Winlogbeat yuborganidek) bo’lgan obyekt Windows hodisasi sifatida, agent hodisalari bilan bir xil xaritalash bilan o’qiladi.
Linux audit. message dagi auditd yozuvi syslog orqali kelgani kabi auditd sifatida o’qiladi.
Allaqachon normallashtirilgan. "schema_version": "legit.event.v1" va normalized obyekti bor hodisa normallashtirilgan deb qabul qilinadi: uning maydonlari qoidalarga o’zgarishsiz yetadi.
Javob
«Javob» bo'limi{ "event_id": "3eeaf0fe-60b1-46f6-9aba-edb5aa48cd81", "source": "web-01", "finding_id": null, "status": "ok", "pipeline_score": 0.0, "error": null}event_id — saqlangan hodisa: GET /api/events/{event_id} uni qaytaradi. source — hodisa nomlagan host, qurilma yoki mahsulot. finding_id hodisa alert ko’targan yoki ochiq alertga qo’shilgan bo’lsa to’ldiriladi. pipeline_score — o’sha alertning xavf balli. Batch endpointlar o’rniga jami qiymatlarni qaytaradi: total, processed, findings_created, errors (har birida hodisaning index i) va duration_ms.
Nimadir rad etilganda
«Nimadir rad etilganda» bo'limi| Javob | Ma’nosi |
|---|---|
status: "parse_error" |
Hodisani o’qib bo’lmadi. U dead-letter navbatida saqlanadi (GET /api/ingest/dead-letters, ADMIN) va yo’qolmaydi. |
status: "pipeline_error" |
Hodisa o’qildi, lekin saqlanmadi yoki baholanmadi; error sababini aytadi. Qayta yuboring. |
422 |
Syslog yoki CEF bo’lmagan syslog/CEF qatori, noma’lum formatdagi log fayl yoki 5 000 dan ortiq hodisali batch. |
413 |
25 MB dan katta log fayl. |
429 |
Tenantning kunlik hodisa limiti tugagan. Javob tanasida limit, bugun nechta yuborilgani va qachon yangilanishi bor; Retry-After necha soniya kutishni aytadi. |