सुरक्षा इवेंट (SIEM)
Status200 सुरक्षा इवेंट को आपके लॉग, ट्रेस और मेट्रिक्स के बगल में रखता है, और हर इवेंट को एक ही आकार देता है, OCSF (Open Cybersecurity Schema Framework), चाहे वह किसी भी फ़ॉर्मेट में आया हो। किसी भी स्रोत से इवेंट भेजें, उन्हें खोजें, और Sigma पहचान नियमों, थ्रेट इंटेलिजेंस और मॉनिटर से उन इवेंट को ढूँढें जो मायने रखते हैं। उन्हें जो मिलता है, वह काम करने के लिए केस बन जाता है, और प्लेबुक उन पर प्रतिक्रिया देती हैं।
यह कैसे काम करता है
सुरक्षा स्रोत से अलर्ट तक
अवलोकनीयता के अंदर उत्पाद → Security Events खोलें। इसके मेनू में सुरक्षा के हर हिस्से के लिए एक सेक्शन है, और उसमें हर चीज़ के लिए अपना एक पेज:
| पेज | सेक्शन | यह किसलिए है |
|---|---|---|
| अवलोकन | अवलोकन | सुरक्षा कैसे सेट है, अभी किसकी ज़रूरत है, और केस कितनी जल्दी निपटाए जाते हैं |
| खुले केस | सुरक्षा केस | कतार: हर वह केस जो अभी बंद नहीं हुआ, इस हिसाब से समूहित कि वह किसके बारे में है |
| मुझे सौंपे गए | सुरक्षा केस | आपको सौंपे गए खुले केस |
| सौंपा नहीं गया | सुरक्षा केस | वे खुले केस जिन्हें किसी ने नहीं उठाया |
| बंद केस | सुरक्षा केस | नतीजे के साथ बंद हुए केस, सबसे नए पहले |
| सभी केस | सुरक्षा केस | हर केस, खुला या बंद |
| इवेंट | इवेंट | हर इवेंट खोजें और फ़िल्टर करें, और किसी एक को खोलकर उसके सभी फ़ील्ड देखें |
| एंटिटीज़ | इवेंट | वे उपयोगकर्ता, होस्ट और पते जिन्हें आपके निष्कर्ष सबसे ज़्यादा बार नाम से बताते हैं |
| सहसंबंधित करें | इवेंट | उन इवेंट का ग्राफ़ जो एक ही होस्ट, उपयोगकर्ता या IP पता साझा करते हैं |
| Detection Rules | Detections | Sigma नियम जो शेड्यूल पर चलते हैं और केस खोलते हैं |
| Rule Library | Detections | जोड़ने के लिए तैयार पहचान नियम, सुझाए गए नियमों पर निशान के साथ |
| Threat Intel | Detections | ज्ञात हानिकारक संकेतकों की STIX/TAXII फ़ीड |
| ATT&CK Coverage | Detections | वे MITRE ATT&CK तकनीकें जिन्हें आपके नियम कवर करते हैं |
| Playbooks | Playbooks | केस पर चलने वाले चरण, अपने आप या हाथ से |
| स्वीकृति की प्रतीक्षा में | Playbooks | वे प्लेबुक चरण जो किसी के स्वीकार या अस्वीकार करने का इंतज़ार कर रहे हैं |
| प्लेबुक रन | Playbooks | हर प्लेबुक ने चरण-दर-चरण क्या किया |
| Protected Entities | Playbooks | वे उपयोगकर्ता और होस्ट जिन्हें कोई प्लेबुक कंटेन नहीं करती |
| सेटिंग्स | एआई | क्या Status200 AI हर नए केस का ट्राइएज करता है |
| Connections | Connections | आपके लॉग, वे सुरक्षा उत्पाद जिनसे Status200 पोल करता है, और वे SIEM जिन्हें वह भेजता है |
| सेटअप गाइड | Connections | इवेंट भेजने के स्निपेट, आपकी इन्जेशन कुंजी भरी हुई |
Detections, एआई और Connections, जिन्हें एक बार सेट किया जाता है, तब तक मुड़े रहते हैं जब तक आप उन्हें खोलते नहीं। सुरक्षा में नए हैं? सुरक्षा के साथ शुरुआत इसे दो क्लिक में सेट कर देता है।
शुरू करने से पहले
सुरक्षा डेटा सिर्फ़ Project Owner और Project Admin भूमिकाएँ और तीन Security भूमिकाएँ पढ़ सकती हैं; दूसरी भूमिकाओं को Security Events में कुछ नहीं दिखता। देखें भूमिकाएँ।
| भूमिका | यह क्या कर सकती है |
|---|---|
| Security Admin | सब कुछ: इवेंट, केस, प्लेबुक, पहचान नियम, थ्रेट इंटेल फ़ीड और कनेक्शन |
| Security Member | इवेंट और थ्रेट इंटेल पढ़ना, केस पर काम करना, प्लेबुक चलाना और उनके चरणों को अनुमोदित करना, और पहचान नियम और फ़ीड बनाना, बदलना और हटाना। यह प्लेबुक या कनेक्शन सेट नहीं कर सकती, और सुरक्षा डेटा नहीं हटा सकती। |
| Security Viewer | इवेंट, केस, प्लेबुक, नियम, फ़ीड, संकेतक और कनेक्शन पढ़ना |
सुरक्षा इवेंट भेजें
इन्जेशन कुंजी बनाएँ
प्रोजेक्ट सेटिंग्स → टेलीमेट्री और APM → इंजेशन कुंजियाँ खोलें और इन्जेशन कुंजी बनाएँ पर क्लिक करें। सुरक्षा इवेंट बाकी टेलीमेट्री वाली ही कुंजियाँ इस्तेमाल करते हैं।
अपने इवेंट पोस्ट करें
x-status200-tokenमें कुंजी के साथ/security-events/v1/ingestपर JSON भेजें:OCSF
curl -X POST "https://status200.ru/security-events/v1/ingest?format=ocsf" \ -H "Content-Type: application/json" \ -H "x-status200-token: YOUR_INGESTION_TOKEN" \ -H "x-status200-service-name: my-security-source" \ -d '{ "events": [ { "class_uid": 3002, "severity_id": 4, "status": "Failure", "message": "Failed logon for alice", "actor": { "user": { "name": "alice" } }, "src_endpoint": { "ip": "203.0.113.7", "hostname": "laptop-alice" } } ] }'Google UDM
curl -X POST "https://status200.ru/security-events/v1/ingest?format=udm" \ -H "Content-Type: application/json" \ -H "x-status200-token: YOUR_INGESTION_TOKEN" \ -d '{ "events": [ { "metadata": { "event_type": "USER_LOGIN" }, "principal": { "hostname": "laptop-alice", "user": { "userid": "alice" }, "ip": ["203.0.113.7"] }, "security_result": [{ "severity": "HIGH", "action": ["BLOCK"] }] } ] }'Generic JSON
curl -X POST "https://status200.ru/security-events/v1/ingest" \ -H "Content-Type: application/json" \ -H "x-status200-token: YOUR_INGESTION_TOKEN" \ -d '{ "events": [ { "severity": "high", "event_type": "ssh_brute_force", "message": "12 failed SSH logins in 60s", "username": "root", "hostname": "web-01", "src_ip": "203.0.113.7" } ] }'इवेंट कतार में लगते ही एंडपॉइंट
200जवाब देता है। इनकी तरह बिना समय के भेजा गया इवेंट उसी पल पर रखा जाता है जब वह पहुँचता है।उन्हें इवेंट में ढूँढें
उत्पाद → Security Events → इवेंट खोलें। इवेंट कुछ ही सेकंड में दिखते हैं, उनकी गंभीरता, क्लास, उपयोगकर्ता, होस्ट और IP पते भरे हुए।
फ़ॉर्मेट
format | यह क्या पढ़ता है | और भी स्वीकार |
|---|---|---|
ocsf | OCSF इवेंट JSON (class_uid, severity_id आदि) | कोई नहीं |
udm | Google SecOps (Chronicle) UDM इवेंट (metadata.event_type आदि) | chronicle, google-secops |
google-secops-alert | Google SecOps की पहचान और अलर्ट: SOAR वेबहुक और पहचान स्ट्रीम | secops-alert, detection |
generic | कोई भी दूसरा JSON, आम फ़ील्ड नामों से पढ़ा जाता है | कोई नहीं |
फ़ॉर्मेट ?format= से, x-oneuptime-security-event-format हेडर से, या टॉप-लेवल "format" फ़ील्ड से बताएँ। इसे छोड़ दें, तो हर इवेंट का फ़ॉर्मेट अलग से तय होता है, इसलिए एक वेबहुक पहचानों को कच्चे इवेंट के साथ मिला सकता है।
- बॉडी एक इवेंट, इवेंट का ऐरे, या
{ "events": [...] }हो सकती है। x-status200-service-nameहेडर उस टेलीमेट्री सेवा का नाम बताता है जिससे इवेंट जुड़े हैं। इसके बिना वे पहले इवेंट के उत्पाद या विक्रेता के नाम वाली सेवा से, याSecurity Eventsसे जुड़ते हैं।- मैप न हो पाने की वजह से कुछ नहीं छोड़ा जाता: स्रोत का हर फ़ील्ड इवेंट की विशेषताओं में पहुँचता है।
जेनेरिक JSON फ़ील्ड
जेनेरिक इवेंट आम फ़ील्ड नामों से पढ़ा जाता है:
| इवेंट का फ़ील्ड | इनमें से पहले मिलने वाले से पढ़ा जाता है |
|---|---|
message | message, msg, summary, description, title |
severityName | severity, severity_name, level, priority, risk_level |
time | timestamp, time, @timestamp, event_time, created_at |
principalUser | user, username, user_name, account, actor |
principalHost | host, hostname, computer, device, machine |
principalIp | source_ip, src_ip, client_ip, ip |
targetIp | destination_ip, dest_ip, dst_ip, target_ip |
className | event_type, category, type, action |
ruleName | rule, rule_name, signature, detection |
productName | product, product_name, source, log_source |
processName | process_name, process.name, proc.name, comm |
processPath | process_path, Image, NewProcessName, exe, process.executable |
processCommandLine | command_line, CommandLine, cmdline, process.command_line, proc.cmdline, process |
parentProcessName | parent_process_name, process.parent.name, proc.pname |
parentProcessPath | parent_process_path, ParentImage, ParentProcessName, process.parent.executable |
parentProcessCommandLine | parent_command_line, ParentCommandLine, process.parent.command_line, proc.pcmdline |
गंभीरता बताने वाला शब्द OCSF स्तर बन जाता है: info को Informational, warning को Low, error को Medium, alert को Critical और emergency को Fatal पढ़ा जाता है।
Fluent Bit से फ़ॉरवर्ड करें
जो सुरक्षा लॉग आप पहले से इकट्ठा करते हैं, जैसे auditd, syslog या Falco, उन्हें भेजने के लिए Fluent Bit में एक http आउटपुट जोड़ें:
[OUTPUT]
Name http
Match security.*
Host status200.ru
Port 443
tls On
URI /security-events/v1/ingest
Format json
Json_date_key timestamp
Json_date_format iso8601
Header x-status200-token YOUR_INGESTION_TOKEN
Header x-status200-service-name my-security-source
Retry_Limit 5Connections के अंदर सेटअप गाइड पेज में ये स्निपेट आपके अपने होस्ट और कुंजी के साथ भरे हुए मिलते हैं।
अपने लॉग में सुरक्षा इवेंट खोजें
Connections के ऊपर आपके लॉग कार्ड उन लॉग को स्रोत बनाता है जो आप पहले से Status200 को भेजते हैं। अपने लॉग में सुरक्षा इवेंट खोजें चालू होने पर प्रोजेक्ट के नए लॉग हर मिनट पढ़े जाते हैं, और उनमें हर SSH साइन-इन, sudo कमांड, Kubernetes ऑडिट रिकॉर्ड, AWS CloudTrail बदलाव और वेब हमला एक सुरक्षा इवेंट के रूप में सहेजा जाता है। हर प्रकार में क्या आता है, यह सुरक्षा के साथ शुरुआत में देखें।
किसी सुरक्षा उत्पाद को कनेक्ट करें
Connections आपके लिए किसी सुरक्षा उत्पाद से पोल करता है और उसके नए रिकॉर्ड सुरक्षा इवेंट के रूप में इम्पोर्ट करता है। कनेक्शन में उत्पाद की सेटिंग्स और एक एन्क्रिप्टेड क्रेडेंशियल रहता है; एक वर्कर आपके सेट किए अंतराल पर उससे पोल करता है और पहले से इम्पोर्ट हो चुके रिकॉर्ड छोड़ देता है।
| उत्पाद | क्या इम्पोर्ट करता है | सेटअप गाइड |
|---|---|---|
| Google SecOps (Chronicle) | नियम पहचान, क्यूरेटेड पहचान और अलर्ट, Detection Findings के रूप में | Google SecOps |
| Microsoft Sentinel | घटनाएँ, Incident Findings के रूप में | Microsoft Sentinel |
| Microsoft Defender XDR | अलर्ट, Detection Findings के रूप में | Microsoft Defender XDR |
| CrowdStrike Falcon | अलर्ट, Detection Findings के रूप में | CrowdStrike Falcon |
| Splunk Enterprise Security | Notable इवेंट, या कोई भी खोज, Detection Findings के रूप में | Splunk Enterprise Security |
| Elastic Security | पहचान अलर्ट, Detection Findings के रूप में | Elastic Security |
| AWS Security Hub | Findings, Detection और Compliance Findings के रूप में | AWS Security Hub |
| Okta System Log | साइन-इन, MFA, खाते और नीति के इवेंट | Okta System Log |
- उत्पाद के अपने जो अलर्ट Open Cases From के स्तर पर या उससे ऊपर हैं (डिफ़ॉल्ट रूप से उच्च और ऊपर, जब तक आप कोई दूसरा स्तर या कभी नहीं न चुनें), वे केस खोलते हैं, जो उस उपयोगकर्ता, होस्ट या पते के हिसाब से समूहित होते हैं जिसके बारे में वे हैं।
- कनेक्शन रिकॉर्ड को उस समय के हिसाब से पढ़ता है जब उत्पाद ने उन्हें बनाया, न कि उस गतिविधि के समय से जिसका वे वर्णन करते हैं। हर घंटे चलने वाला SIEM नियम जिन इवेंट से मेल खाता है, उनके बहुत बाद पहचान बनाता है, और वे फिर भी इम्पोर्ट होती हैं।
- पहला पोल 24 घंटे पीछे देखता है, इसलिए नया कनेक्शन तुरंत हाल के रिकॉर्ड दिखाता है।
- कनेक्शन की पंक्ति में कनेक्शन का परीक्षण करें उत्पाद तक पहुँच और Status200 के अपने वर्कर चल रहे हैं या नहीं, यह जाँचता है, और कुछ इम्पोर्ट नहीं करता। Run now तुरंत पोल करता है।
इवेंट में क्या होता है
हर इवेंट टाइप किए गए फ़ील्ड और अपने स्रोत पेलोड के साथ सहेजा जाता है:
| समूह | फ़ील्ड |
|---|---|
| वर्गीकरण | categoryName, className, activityName, statusName, उनकी OCSF ID (categoryUid, classUid) के साथ |
| गंभीरता | severityName, जो Unknown, Informational, Low, Medium, High, Critical, Fatal या Other में से एक है, और severityId |
| किसने किया | principalUser, principalHost, principalIp, principalProcess |
| किस पर असर हुआ | targetUser, targetHost, targetIp, targetPort, targetResource |
| प्रक्रिया | processName, processPath और processCommandLine: किसी प्रक्रिया के शुरू होने पर वह प्रक्रिया जो शुरू हुई, वरना वह प्रक्रिया जिसने काम किया। parentProcessName, parentProcessPath और parentProcessCommandLine: वह प्रक्रिया जिसने उसे शुरू किया |
| स्रोत | productName, vendorName, ruleId, ruleName, eventUid |
| सामग्री | message, mitreTactics, mitreTechniques और observables: इवेंट से निकाला गया हर उपयोगकर्ता, होस्ट, IP पता, डोमेन और हैश |
| विशेषताएँ | पूरा स्रोत पेलोड, बिंदु वाली कुंजियों में चपटा किया हुआ |
सुरक्षा इवेंट एक्सप्लोर करें
इवेंट लॉग और ट्रेस एक्सप्लोरर जैसा एक टेलीमेट्री एक्सप्लोरर है: गंभीरता के हिसाब से विंडो के इवेंट का चार्ट, फ़ैसेट की साइडबार, सूची, और एक पैनल जिसमें खोले गए इवेंट का हर फ़ील्ड और विशेषता होती है। विंडो, फ़िल्टर और खोज सब URL में रहते हैं, इसलिए फ़िल्टर किया गया व्यू साझा किया जा सकता है और रीफ़्रेश के बाद भी बना रहता है।
खोज
खोज बार वही भाषा बोलता है जो दूसरे टेलीमेट्री एक्सप्लोरर (देखें खोज सिंटैक्स):
| सिंटैक्स | मतलब | उदाहरण |
|---|---|---|
| मुक्त टेक्स्ट | संदेश में यह शामिल है | failed logon |
"quoted phrase" | शब्दों को साथ रखें | "brute force" |
<field>:<value> | टाइप किया गया फ़ील्ड | severity:Critical |
@<attribute>:<value> | स्रोत विशेषता | @threat.matched:true |
-<filter> | यह नहीं | -severity:Informational |
<field>:(a OR b) | इनमें से कोई भी मान | severity:(High OR Critical) |
<field>:a* | * कोई भी टेक्स्ट, ? एक अक्षर | host:web-* |
@<attribute>:* | विशेषता मौजूद है | @threat.indicator_id:* |
@<attribute>:~text | विशेषता में यह टेक्स्ट है | @finding_info.title:~ransom |
फ़ील्ड या तो एक छोटा नाम है (severity, class, category, activity, status, vendor, product, rule, user, host, ip, targetuser, targethost, targetip, processname, commandline, parentprocessname, observable, tactic, technique) या फ़ील्ड का अपना नाम, जैसे severityName या principalHost। कोई भी दूसरा नाम स्रोत विशेषता के रूप में पढ़ा जाता है। observable:<value> हर वह इवेंट ढूँढता है जिसमें कोई मान आता है, चाहे वह गतिविधि के किसी भी तरफ़ हो।
फ़ैसेट
साइडबार विंडो के इवेंट को स्रोत, गंभीरता, इवेंट क्लास, Category, गतिविधि, स्थिति, विक्रेता, उत्पाद, Detection Rule, स्रोत उपयोगकर्ता, स्रोत होस्ट, प्रक्रिया और पैरेंट प्रक्रिया के हिसाब से गिनता है। किसी मान पर क्लिक करके सिर्फ़ उसके इवेंट रखें, या उसके बगल के माइनस पर क्लिक करके उन्हें हटाएँ। इसे वापस लेने के लिए फिर से क्लिक करें। चार्ट और हर गिनती ठीक-ठीक सूची के इवेंट को बताते हैं।
सहसंबंध
सहसंबंधित करें किसी होस्ट, उपयोगकर्ता या IP पते के आसपास के इवेंट दिखाता है: आपने जो खोजा उसके चारों ओर उनकी इवेंट क्लास, उनकी सबसे खराब गंभीरता से चिह्नित, और उन्हीं इवेंट में दिखे दूसरे मान बाहरी घेरे पर। किसी क्लास पर क्लिक करके उसके इवेंट की सूची देखें, या किसी मान पर क्लिक करके आगे उस पर सहसंबंध देखें। इवेंट में किसी इवेंट के पैनल का हर observable उस पर सहसंबंधित करें खोलता है।
पहचान नियम
पहचान नियम एक Sigma नियम है, संदिग्ध गतिविधि बताने का एक खुला YAML फ़ॉर्मेट, जिसे Status200 शेड्यूल पर आपके इवेंट पर चलाता है। मेल खाने पर यह एक केस खोलता है या उसमें जुड़ता है, एक अलर्ट खोलता है, चाहें तो एक घटना भी, और इवेंट में वापस एक Detection Finding लिखता है। Rule Library में शुरुआत के लिए तैयार नियम हैं।
पहचान नियम कैसे फ़ायर होता है
नियम बनाएँ
- उत्पाद → Security Events → Detections → Detection Rules खोलें और Detection Rule बनाएँ पर क्लिक करें।
- Sigma Rule में, नियम का YAML Sigma Rule (YAML) में चिपकाएँ। सहेजते समय इसे पार्स किया जाता है, इसलिए कोई गलती फ़ॉर्म में दिखती है।
- नाम नियम के
titleसे भर जाता है: नियम को कुछ और कहने के लिए उसे बदल दें। नया नियम चलने लगता है; सक्षम उसके संपादन फ़ॉर्म में है। - मिलान होने पर में Open a Case on Match चालू रखें, ताकि इसके मिलान उस मान के हिसाब से केस में समूहित हों जिससे नियम समूह बनाता है।
- अलर्ट और घटनाएं में चुनें कि मिलान और क्या खोले: अलर्ट बनाएं (डिफ़ॉल्ट), घटना घोषित करें, दोनों या कोई नहीं, साथ में वैकल्पिक अलर्ट गंभीरता या घटना गंभीरता।
- और फ़ील्ड में विवरण, Write Detection Finding on Match (चालू) और मिलानों की गिनती का तरीका है; देखें मूल्यांकन सेटिंग्स।
पहला नियम, जो 10.x.x.x के बाहर से हुए विफल लॉगऑन से मेल खाता है:
title: Failed logon burst
description: Repeated authentication failures from one source.
level: high
tags:
- attack.t1110
- attack.ta0006
detection:
selection:
className: Authentication
statusName: Failure
filter_internal:
principalIp|startswith: '10.'
condition: selection and not filter_internalनियम क्या कह सकता है
Status200 Sigma का बूलियन मूल हिस्सा चलाता है:
- सिलेक्शन फ़ील्ड मैप होते हैं (हर फ़ील्ड मेल खाना चाहिए; मानों की सूची उनमें से किसी से भी मेल खाती है) या कीवर्ड सूचियाँ, जो संदेश में कहीं भी मेल खाती हैं।
- कंडीशन सिलेक्शन को
and,or,notऔर कोष्ठकों से, या1 of selection_*,all of selection_*,any of themऔरall of themसे जोड़ती हैं। - फ़ील्ड मॉडिफ़ायर:
contains,startswith,endswith,all,re,cased,gt,gte,lt,lte,cidr,existsऔरwindash। टेक्स्ट की तुलना अक्षरों के बड़े-छोटे होने को अनदेखा करके होती है, जब तक आपcasedन जोड़ें। - फ़ील्ड एक टाइप किया गया फ़ील्ड है (
principalUser), उसकी आम Sigma वर्तनी (CommandLine,src_ip,Hostname), या कोई भी विशेषता कुंजी, वैसे ही लिखी जैसे इवेंट में है (threat.matched)। ImageऔरCommandLineउस प्रक्रिया को पढ़ते हैं जिसके बारे में इवेंट है, यानी प्रक्रिया शुरू होने पर वह प्रक्रिया जो शुरू हुई (processPath,processCommandLine), औरParentImageऔरParentCommandLineउस प्रक्रिया को जिसने उसे शुरू किया (parentProcessPath,parentProcessCommandLine)।principalProcessवह प्रक्रिया है जिसने काम किया, जो प्रक्रिया शुरू होने पर पैरेंट होती है।levelगंभीरता तय करता है:informational,low,medium,highयाcritical, और न होने परmedium।tagsमें ATT&CK ID (attack.t1110,attack.ta0006) निष्कर्ष के MITRE फ़ील्ड भरती हैं।
| count() by principalIp > 5 जैसे एग्रीगेशन सहेजते समय अस्वीकार हो जाते हैं: इसके बजाय कोरिलेशन नियम, या Group By Field और Match Count Threshold इस्तेमाल करें। logsource सिर्फ़ जानकारी के लिए है और कुछ सीमित नहीं करता: वह फ़िल्टर किसी सिलेक्शन में डालें, जैसे className: Authentication। timeframe अनदेखा किया जाता है, क्योंकि नियम का अंतराल ही उसकी विंडो तय करता है।
कोरिलेशन नियम
Sigma कोरिलेशन एक इवेंट पर नहीं, बल्कि कई इवेंट के साथ होने पर चलता है। इसे उन नियमों के साथ Sigma Rule (YAML) में चिपकाएँ जिन्हें यह पढ़ता है, --- से अलग किए YAML दस्तावेज़ों के रूप में, या प्रोजेक्ट में पहले से मौजूद नियमों को उनके Sigma name या id से बताएँ। Rule Library में तैयार नियम हैं, जैसे विफल साइन-इन के बाद एक सफल साइन-इन।
| प्रकार | कब चलता है | किस नाम से दिखता है |
|---|---|---|
event_count | एक समूह timespan के भीतर तय संख्या में इवेंट तक पहुँचता है | इवेंट संख्या |
value_count | एक समूह timespan के भीतर किसी फ़ील्ड के तय संख्या में अलग-अलग मान दिखाता है | अलग-अलग मान |
temporal | timespan के भीतर एक ही समूह के लिए हर नियम मेल खाता है, किसी भी क्रम में | साथ होने वाले इवेंट |
temporal_ordered | timespan के भीतर एक ही समूह के लिए नियम अपने क्रम में मेल खाते हैं | Sequence |
new_value | एक समूह किसी फ़ील्ड का ऐसा मान दिखाता है जो उसने timespan के भीतर नहीं दिखाया | First seen |
title: Failed sign-ins, then a success from the same address
level: high
correlation:
type: temporal_ordered
rules:
- failed_sign_ins
- successful_sign_in
group-by:
- principalIp
timespan: 10m
---
title: Five failed sign-ins
name: failed_sign_ins
correlation:
type: event_count
rules:
- failed_sign_in
group-by:
- principalIp
timespan: 10m
condition:
gte: 5
---
title: Failed sign-in
name: failed_sign_in
detection:
selection:
className: Authentication
statusName: Failure
condition: selection
---
title: Successful sign-in
name: successful_sign_in
detection:
selection:
className: Authentication
statusName: Success
condition: selection- समूह
group-byफ़ील्ड का मान होता है, जैसे एक पता। गिनती रोलिंग होती है: जिस उछाल को दो रन बाँट लेते हैं, उसे भी उसकेtimespanके भीतर पूरा गिना जाता है, जो ज़्यादा से ज़्यादा 24 घंटे का होता है। new_valueStatus200 का अपना प्रकार है, क्योंकि Sigma में "पहली बार देखा गया" कोरिलेशन नहीं है: यह 30 दिन तक के इतिहास से तुलना करता है।value_sum,value_avg,value_percentileऔरvalue_medianसहेजते समय अस्वीकार हो जाते हैं।- Detection Rules का प्रकार कॉलम हर नियम का प्रकार बताता है, और फ़ॉर्म एक वाक्य में बताता है कि नियम क्या ढूँढता है।
मूल्यांकन सेटिंग्स
| फ़ील्ड | यह क्या करता है |
|---|---|
| Evaluation Interval (Minutes) | नियम कितनी बार चलता है: पूरे मिनट, 1 से 1440। नए नियम का फ़ॉर्म 5 से शुरू होता है। |
| Group By Field | वैकल्पिक। जो मिलान इस फ़ील्ड का मान साझा करते हैं, जैसे principalHost, उन्हें साथ गिना जाता है, साथ अलर्ट किया जाता है और साथ डुप्लिकेट हटाए जाते हैं: सैकड़ों के बजाय हर होस्ट पर एक अलर्ट। |
| Distinct Count Field | वैकल्पिक। मेल खाने वाले इवेंट के बजाय इस फ़ील्ड के अलग-अलग मान गिनें। खाली मान नहीं गिने जाते। |
| Match Count Threshold | कोई समूह तभी फ़ायर होता है जब एक रन के भीतर उसकी गिनती इस संख्या तक पहुँचे: 1 से 1000000, और 1 पर हर मिलान फ़ायर होता है। |
Group By और Distinct Count वही फ़ील्ड नाम लेते हैं जो नियम लेता है। इनके साथ थ्रेशोल्ड का मतलब होता है "एक ही चीज़ से, एक रन में, इतने", ऊपर से किसी मॉनिटर के बिना:
| लक्ष्य | Group By Field | Distinct Count Field | थ्रेशोल्ड |
|---|---|---|---|
| किसी भी मिलान पर अलर्ट | खाली | खाली | 1 |
| हर होस्ट पर एक अलर्ट | principalHost | खाली | 1 |
| ब्रूट फ़ोर्स: एक IP से 5 विफल लॉगऑन | principalIp | खाली | 5 |
| पासवर्ड स्प्रेइंग: एक IP का 5 अलग-अलग खातों पर विफल होना | principalIp | principalUser | 5 |
| पोर्ट स्कैन: एक IP का 20 अलग-अलग पोर्ट तक पहुँचना | principalIp | targetPort | 20 |
नियम कब चलता है
Status200 हर मिनट उन सक्षम नियमों को जाँचता है जिनका अंतराल पिछले रन के बाद बीत चुका है। हर रन उन इवेंट को पढ़ता है जिनका इवेंट समय पिछले रन और दो मिनट पहले के बीच आता है, फिर आगे बढ़ता है। ये दो मिनट उन इवेंट के लिए जगह छोड़ते हैं जो अभी रास्ते में हैं, जैसे लिखे जाने के एक मिनट बाद पढ़ी गई लॉग पंक्ति:
- विंडो एक के बाद एक लगती हैं, रोलिंग नहीं होतीं। 10 मिनट के अंतराल पर 09:58 और 10:01 की विफलताएँ अलग-अलग रन में पड़ सकती हैं और अलग गिनी जाती हैं, इसलिए थ्रेशोल्ड चुनते समय गुंजाइश रखें।
- किसी अंतराल के बाद, जैसे वर्कर रुकने या नियम के फिर से चालू होने पर, अगला रन पूरा अंतराल कवर करता है, ज़्यादा से ज़्यादा पिछले 24 घंटे तक।
- जो इवेंट दो मिनट से ज़्यादा देर से आता है, जब कोई रन उसका समय पहले ही कवर कर चुका हो, वह सहेजा जाता है और खोजा जा सकता है, लेकिन वह नियम उसे कभी नहीं पढ़ता।
- सीमा तक पहुँचने वाला हर समूह एक Detection Finding बनता है, हर रन में 10,000 तक। सबसे ज़्यादा गिनती वाले 100 समूहों के लिए अलर्ट, घटनाएँ और केस खुलते हैं; बाक़ी समूह नियम के बारे में एक केस साझा करते हैं, और नियम की पिछली त्रुटि बताती है कि कितने समूह मेल खाए।
गंभीरता
नियम का level उसके निष्कर्षों की गंभीरता है: informational, low, medium, high और critical क्रमशः Informational, Low, Medium, High और Critical बनते हैं। उसके अलर्ट और घटनाएँ आपके प्रोजेक्ट की गंभीरताओं में से एक लेते हैं, इस क्रम में:
- नियम की अलर्ट गंभीरता (या घटना गंभीरता ), अगर सेट हो।
- स्तर के नाम वाली आपकी गंभीरता, जैसे High, अक्षरों के बड़े-छोटे होने की परवाह किए बिना।
- रैंक के हिसाब से:
criticalऔरhighनियम आपकी सबसे गंभीर गंभीरता लेते हैं, बाकी सबसे कम गंभीर।
अपनी अलर्ट गंभीरताओं के नाम Sigma स्तरों (Critical, High, Medium, Low, Informational) पर रखें, और हर नियम बिना किसी अलग सेटिंग के सही गंभीरता पर पहुँचेगा।
अलर्ट और निष्कर्ष
फ़ायर होने वाला हर समूह [Detection] <rule name> — <group value> शीर्षक वाला अलर्ट खोलता है, या बिना Group By Field वाले नियम के लिए [Detection] <rule name>। जब तक वह खुला है, उस समूह के और मिलान नया अलर्ट नहीं खोलते। नियम सिर्फ़ मिलान देखता है और यह नहीं बता सकता कि हमला रुक गया है, इसलिए उसके अलर्ट तब तक खुले रहते हैं जब तक कोई उन्हें सुलझा न दे।
Detection Finding Status200 Detections उत्पाद से आया Detection Finding क्लास (OCSF क्लास 2004) का एक सुरक्षा इवेंट है, जिसमें नियम के MITRE टैग, observables में सबसे पहले समूह का मान, और ये विशेषताएँ होती हैं:
| विशेषता | मान |
|---|---|
status200.detection.rule_id | फ़ायर हुए नियम की ID |
status200.detection.rule_name | नियम का नाम |
status200.detection.match_count | निष्कर्ष के पीछे कितने इवेंट हैं |
status200.detection.distinct_count | उसके पीछे कितने अलग-अलग मान हैं, Distinct Count Field वाले नियम के लिए |
status200.detection.group_value | समूह का मान, Group By Field वाले नियम के लिए |
status200.detection.sigma_id | Sigma नियम की अपनी id |
निष्कर्ष सामान्य इवेंट हैं: उन्हें इवेंट में खोजें और सहसंबंधित करें में उनसे आगे बढ़ें। किसी नए नियम को चुपचाप आज़माने के लिए, जब तक उस पर भरोसा न हो जाए, निष्कर्ष के अलावा हर कार्रवाई बंद रखें।
सुरक्षा इवेंट मॉनिटर
सुरक्षा इवेंट मॉनिटर रोलिंग विंडो पर अपने फ़िल्टर से मेल खाने वाले इवेंट गिनता है और गिनती पर सामान्य मॉनिटर मानदंड चलाता है: यह मॉनिटर की स्थिति बदलता है, अलर्ट या घटनाएँ खोलता है, और ऑन-कॉल को पेज करता है। इसे मॉनिटर → मॉनिटर बनाएं के अंदर, प्रकार के रूप में Security Events चुनकर बनाएँ; यह वहाँ आपके दूसरे मॉनिटर के साथ दिखता है।
इसके फ़ॉर्म में Monitor events that include this text, Monitor Security Events for (time), Event Severity और इवेंट क्लास दिखते हैं। टेलीमेट्री सेवा द्वारा फ़िल्टर करें और विशेषताओं द्वारा फ़िल्टर करें और फ़ील्ड के अंदर रहते हैं, जिसका हेडर दिखाता है कि कोई मॉनिटर इनमें से कौन-से इस्तेमाल करता है। इसके मानदंड Security Event Count जाँचते हैं।
| पहचान नियम | सुरक्षा इवेंट मॉनिटर | |
|---|---|---|
| किससे मेल खाता है | एक Sigma नियम | गंभीरता, क्लास, संदेश, सेवा और विशेषताओं पर फ़िल्टर |
| विंडो | एक के बाद एक, हर रन में एक | रोलिंग: पिछले 5 सेकंड से 24 घंटे तक |
| समूह के हिसाब से गिनती | हाँ, Group By Field के साथ | नहीं: मेल खाने वाली हर चीज़ की एक ही गिनती |
| क्या खोलता है | अलर्ट, घटनाएँ और निष्कर्ष | एक स्थिति, अलर्ट और घटनाएँ |
| ठीक होता है | नहीं: अलर्ट सुलझाए जाने तक खुले रहते हैं | हाँ: गिनती लौटने पर स्थिति भी लौट आती है |
पहचान खुद एक नियम के रूप में लिखें, उसके थ्रेशोल्ड के साथ। मॉनिटर तब इस्तेमाल करें जब आपको रोलिंग विंडो, अपने आप ठीक होने वाली स्थिति, स्टेटस पेज, या हर मानदंड के लिए अलग ऑन-कॉल नीतियाँ चाहिए।
अपनी पहचानों पर नज़र रखें
निष्कर्ष इवेंट हैं, इसलिए मॉनिटर खुद नियमों पर नज़र रख सकता है:
- तूफ़ान:
Detection Findingक्लास पर एक मॉनिटर, जो हर निष्कर्ष गिनता है। एक घंटे में बीस अलग-अलग नियमों का फ़ायर होना ऐसा संकेत है जो कोई अकेला नियम नहीं देख सकता। - दर में बदलाव: किसी एक नियम के
status200.detection.rule_idपर फ़िल्टर करें। जो नियम हफ़्ते में एक बार फ़ायर होता है, वह घंटे में पचास बार फ़ायर हो, तो उसे अलग प्रतिक्रिया चाहिए। - खामोशी: निष्कर्ष, जो आम तौर पर कुछ दिखते हैं, शून्य पर आ जाएँ, तो आम तौर पर इसका मतलब है कि किसी स्रोत ने भेजना बंद कर दिया। ऐसा मानदंड इस्तेमाल करें जो किसी संख्या से कम गिनती की जाँच करे।
किसी नियम की पंक्ति में मॉनिटर बनाएं कार्रवाई पहले से इसी तरह सेट एक नया मॉनिटर खोलती है: Detection Finding क्लास, नियम की ID (कभी उसका नाम नहीं, जो नाम बदलने पर बदल जाएगा), और पिछला एक घंटा। ऐसा मॉनिटर निष्कर्ष गिनता है, हर रन में हर समूह का एक, न कि उनके पीछे के इवेंट। कुछ भी फ़ायर होने से पहले कुछ संख्या में इवेंट ज़रूरी बनाने के लिए नियम का Match Count Threshold इस्तेमाल करें।
थ्रेट इंटेलिजेंस
Threat Intel ज्ञात हानिकारक IP पतों, डोमेन, URL, ईमेल पतों और फ़ाइल हैश की STIX/TAXII फ़ीड की सदस्यता लेता है। जिन इवेंट में इनमें से कोई आता है, उन्हें पहुँचते ही threat.* विशेषताओं से टैग किया जाता है, जिन पर नियम और मॉनिटर फ़िल्टर कर सकते हैं, और हर मिनट हाल के इवेंट का फ़ीड से मिलान होता है, जो किसी नियम की तरह अलर्ट और निष्कर्ष खोलता है। देखें थ्रेट इंटेलिजेंस।
प्रतिधारण और बिलिंग
सुरक्षा इवेंट का बिल आपकी बाकी टेलीमेट्री की तरह प्रति GB इन्जेस्ट होता है, और वे आपके टेलीमेट्री प्रतिधारण तक रखे जाते हैं: प्रोजेक्ट का डिफ़ॉल्ट प्रतिधारण (दिन) , जो प्रोजेक्ट सेटिंग्स → टेलीमेट्री और APM → डेटा प्रतिधारण के अंदर है, या उस टेलीमेट्री सेवा पर सेट प्रतिधारण जिससे वे जुड़े हैं। किसी इवेंट का प्रतिधारण खत्म होने पर उसे हटा दिया जाता है।
समस्या निवारण
इवेंट नहीं दिखते
x-status200-token में कुंजी और पथ /security-events/v1/ingest जाँचें। फिर इवेंट में विंडो जाँचें, जो आपके बदलने तक पिछला एक दिन है: इवेंट अपने समय पर रखा जाता है, इसलिए पुराने टाइमस्टैम्प वाला इवेंट विंडो के बाहर पड़ता है।
नियम कभी मेल नहीं खाता
उसकी स्थिति जाँचें: अक्षम नियम नहीं चलता, और रन विफल रहा दिखने पर उसकी पंक्ति में त्रुटि देखें वजह दिखाता है। कोई ऐसा इवेंट खोलें जिसके मेल खाने की आपको उम्मीद थी, और उसकी तुलना नियम से फ़ील्ड-दर-फ़ील्ड करें: सादा मान पूरे फ़ील्ड के बराबर होना चाहिए, इसलिए किसी हिस्से के लिए contains या * इस्तेमाल करें। विशेषता का नाम वैसे ही लिखा जाता है जैसे इवेंट में है (threat.matched, न कि attributes.threat.matched)। 1 से ज़्यादा थ्रेशोल्ड होने पर मिलान एक ही रन में पड़ने चाहिए।
नियम मेल खाया, लेकिन कोई अलर्ट नहीं खुला
अलर्ट और घटनाएं में घटना घोषित करें या कोई नहीं चुना है, या उसी नियम और समूह मान का अलर्ट अभी भी खुला है, और बाद के मिलान उसी में जुड़ जाते हैं। नियमों के अलर्ट खोलने के लिए प्रोजेक्ट में कम से कम एक अलर्ट गंभीरता होनी चाहिए।
नियम बहुत ज़्यादा अलर्ट खोलता है
Group By Field के हर मान को अपना अलर्ट मिलता है: किसी मोटी चीज़ से समूह बनाएँ, थ्रेशोल्ड बढ़ाएँ, या एक Distinct Count Field जोड़ें। अगर हर मिलान के बजाय दर की परवाह है, तो अलर्ट और घटनाएं में कोई नहीं चुनें और नियम के निष्कर्षों पर एक मॉनिटर लगाएँ।