सामग्री पर जाएं
सुरक्षा इवेंट (SIEM)

सुरक्षा इवेंट (SIEM)

Markdown के रूप में देखें

Status200 सुरक्षा इवेंट को आपके लॉग, ट्रेस और मेट्रिक्स के बगल में रखता है, और हर इवेंट को एक ही आकार देता है, OCSF (Open Cybersecurity Schema Framework), चाहे वह किसी भी फ़ॉर्मेट में आया हो। किसी भी स्रोत से इवेंट भेजें, उन्हें खोजें, और Sigma पहचान नियमों, थ्रेट इंटेलिजेंस और मॉनिटर से उन इवेंट को ढूँढें जो मायने रखते हैं। उन्हें जो मिलता है, वह काम करने के लिए केस बन जाता है, और प्लेबुक उन पर प्रतिक्रिया देती हैं।

यह कैसे काम करता है

flowchart TB subgraph sources["स्रोत"] direction LR api["इन्जेस्ट API"] ~~~ connections["कनेक्शन: Sentinel,<br/>CrowdStrike और अन्य"] end sources --> normalize["OCSF में सामान्यीकृत,<br/>थ्रेट इंटेल से टैग किए गए"] normalize --> events["सुरक्षा इवेंट"] events --> rules["पहचान नियम<br/>(Sigma)"] events --> monitors["सुरक्षा इवेंट<br/>मॉनिटर"] rules --> act["केस, अलर्ट<br/>और निष्कर्ष"] monitors --> act

सुरक्षा स्रोत से अलर्ट तक

अवलोकनीयता के अंदर उत्पाद → Security Events खोलें। इसके मेनू में सुरक्षा के हर हिस्से के लिए एक सेक्शन है, और उसमें हर चीज़ के लिए अपना एक पेज:

पेजसेक्शनयह किसलिए है
अवलोकनअवलोकनसुरक्षा कैसे सेट है, अभी किसकी ज़रूरत है, और केस कितनी जल्दी निपटाए जाते हैं
खुले केससुरक्षा केसकतार: हर वह केस जो अभी बंद नहीं हुआ, इस हिसाब से समूहित कि वह किसके बारे में है
मुझे सौंपे गएसुरक्षा केसआपको सौंपे गए खुले केस
सौंपा नहीं गयासुरक्षा केसवे खुले केस जिन्हें किसी ने नहीं उठाया
बंद केससुरक्षा केसनतीजे के साथ बंद हुए केस, सबसे नए पहले
सभी केससुरक्षा केसहर केस, खुला या बंद
इवेंटइवेंटहर इवेंट खोजें और फ़िल्टर करें, और किसी एक को खोलकर उसके सभी फ़ील्ड देखें
एंटिटीज़इवेंटवे उपयोगकर्ता, होस्ट और पते जिन्हें आपके निष्कर्ष सबसे ज़्यादा बार नाम से बताते हैं
सहसंबंधित करेंइवेंटउन इवेंट का ग्राफ़ जो एक ही होस्ट, उपयोगकर्ता या IP पता साझा करते हैं
Detection RulesDetectionsSigma नियम जो शेड्यूल पर चलते हैं और केस खोलते हैं
Rule LibraryDetectionsजोड़ने के लिए तैयार पहचान नियम, सुझाए गए नियमों पर निशान के साथ
Threat IntelDetectionsज्ञात हानिकारक संकेतकों की STIX/TAXII फ़ीड
ATT&CK CoverageDetectionsवे MITRE ATT&CK तकनीकें जिन्हें आपके नियम कवर करते हैं
PlaybooksPlaybooksकेस पर चलने वाले चरण, अपने आप या हाथ से
स्वीकृति की प्रतीक्षा मेंPlaybooksवे प्लेबुक चरण जो किसी के स्वीकार या अस्वीकार करने का इंतज़ार कर रहे हैं
प्लेबुक रनPlaybooksहर प्लेबुक ने चरण-दर-चरण क्या किया
Protected EntitiesPlaybooksवे उपयोगकर्ता और होस्ट जिन्हें कोई प्लेबुक कंटेन नहीं करती
सेटिंग्सएआईक्या Status200 AI हर नए केस का ट्राइएज करता है
ConnectionsConnectionsआपके लॉग, वे सुरक्षा उत्पाद जिनसे Status200 पोल करता है, और वे SIEM जिन्हें वह भेजता है
सेटअप गाइडConnectionsइवेंट भेजने के स्निपेट, आपकी इन्जेशन कुंजी भरी हुई

Detections, एआई और Connections, जिन्हें एक बार सेट किया जाता है, तब तक मुड़े रहते हैं जब तक आप उन्हें खोलते नहीं। सुरक्षा में नए हैं? सुरक्षा के साथ शुरुआत इसे दो क्लिक में सेट कर देता है।

शुरू करने से पहले

सुरक्षा डेटा सिर्फ़ Project Owner और Project Admin भूमिकाएँ और तीन Security भूमिकाएँ पढ़ सकती हैं; दूसरी भूमिकाओं को Security Events में कुछ नहीं दिखता। देखें भूमिकाएँ।

भूमिकायह क्या कर सकती है
Security Adminसब कुछ: इवेंट, केस, प्लेबुक, पहचान नियम, थ्रेट इंटेल फ़ीड और कनेक्शन
Security Memberइवेंट और थ्रेट इंटेल पढ़ना, केस पर काम करना, प्लेबुक चलाना और उनके चरणों को अनुमोदित करना, और पहचान नियम और फ़ीड बनाना, बदलना और हटाना। यह प्लेबुक या कनेक्शन सेट नहीं कर सकती, और सुरक्षा डेटा नहीं हटा सकती।
Security Viewerइवेंट, केस, प्लेबुक, नियम, फ़ीड, संकेतक और कनेक्शन पढ़ना

सुरक्षा इवेंट भेजें

  1. इन्जेशन कुंजी बनाएँ

    प्रोजेक्ट सेटिंग्स → टेलीमेट्री और APM → इंजेशन कुंजियाँ खोलें और इन्जेशन कुंजी बनाएँ पर क्लिक करें। सुरक्षा इवेंट बाकी टेलीमेट्री वाली ही कुंजियाँ इस्तेमाल करते हैं।

  2. अपने इवेंट पोस्ट करें

    x-status200-token में कुंजी के साथ /security-events/v1/ingest पर JSON भेजें:

    OCSF

    Bash
    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

    Bash
    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

    Bash
    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 जवाब देता है। इनकी तरह बिना समय के भेजा गया इवेंट उसी पल पर रखा जाता है जब वह पहुँचता है।

  3. उन्हें इवेंट में ढूँढें

    उत्पाद → Security Events → इवेंट खोलें। इवेंट कुछ ही सेकंड में दिखते हैं, उनकी गंभीरता, क्लास, उपयोगकर्ता, होस्ट और IP पते भरे हुए।

फ़ॉर्मेट

formatयह क्या पढ़ता हैऔर भी स्वीकार
ocsfOCSF इवेंट JSON (class_uid, severity_id आदि)कोई नहीं
udmGoogle SecOps (Chronicle) UDM इवेंट (metadata.event_type आदि)chronicle, google-secops
google-secops-alertGoogle SecOps की पहचान और अलर्ट: SOAR वेबहुक और पहचान स्ट्रीमsecops-alert, detection
genericकोई भी दूसरा JSON, आम फ़ील्ड नामों से पढ़ा जाता हैकोई नहीं

फ़ॉर्मेट ?format= से, x-oneuptime-security-event-format हेडर से, या टॉप-लेवल "format" फ़ील्ड से बताएँ। इसे छोड़ दें, तो हर इवेंट का फ़ॉर्मेट अलग से तय होता है, इसलिए एक वेबहुक पहचानों को कच्चे इवेंट के साथ मिला सकता है।

  • बॉडी एक इवेंट, इवेंट का ऐरे, या { "events": [...] } हो सकती है।
  • x-status200-service-name हेडर उस टेलीमेट्री सेवा का नाम बताता है जिससे इवेंट जुड़े हैं। इसके बिना वे पहले इवेंट के उत्पाद या विक्रेता के नाम वाली सेवा से, या Security Events से जुड़ते हैं।
  • मैप न हो पाने की वजह से कुछ नहीं छोड़ा जाता: स्रोत का हर फ़ील्ड इवेंट की विशेषताओं में पहुँचता है।

जेनेरिक JSON फ़ील्ड

जेनेरिक इवेंट आम फ़ील्ड नामों से पढ़ा जाता है:

इवेंट का फ़ील्डइनमें से पहले मिलने वाले से पढ़ा जाता है
messagemessage, msg, summary, description, title
severityNameseverity, severity_name, level, priority, risk_level
timetimestamp, time, @timestamp, event_time, created_at
principalUseruser, username, user_name, account, actor
principalHosthost, hostname, computer, device, machine
principalIpsource_ip, src_ip, client_ip, ip
targetIpdestination_ip, dest_ip, dst_ip, target_ip
classNameevent_type, category, type, action
ruleNamerule, rule_name, signature, detection
productNameproduct, product_name, source, log_source
processNameprocess_name, process.name, proc.name, comm
processPathprocess_path, Image, NewProcessName, exe, process.executable
processCommandLinecommand_line, CommandLine, cmdline, process.command_line, proc.cmdline, process
parentProcessNameparent_process_name, process.parent.name, proc.pname
parentProcessPathparent_process_path, ParentImage, ParentProcessName, process.parent.executable
parentProcessCommandLineparent_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 आउटपुट जोड़ें:

fluent-bit.confINI
[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      5

Connections के अंदर सेटअप गाइड पेज में ये स्निपेट आपके अपने होस्ट और कुंजी के साथ भरे हुए मिलते हैं।

अपने लॉग में सुरक्षा इवेंट खोजें

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 SecurityNotable इवेंट, या कोई भी खोज, Detection Findings के रूप मेंSplunk Enterprise Security
Elastic Securityपहचान अलर्ट, Detection Findings के रूप मेंElastic Security
AWS Security HubFindings, 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 में शुरुआत के लिए तैयार नियम हैं।

flowchart TB tick["हर मिनट: वे नियम<br/>जिनका अंतराल पूरा हुआ"] --> query["नियम के पिछले रन<br/>के बाद के इवेंट"] query --> count["Group By Field के<br/>हर मान के हिसाब से गिने"] count --> check{"गिनती Match Count<br/>Threshold तक पहुँची?"} check -->|"हाँ"| fire["एक केस, एक अलर्ट,<br/>एक वैकल्पिक घटना<br/>और एक Detection Finding"] check -->|"नहीं"| wait["अगले रन तक<br/>कुछ नहीं"]

पहचान नियम कैसे फ़ायर होता है

नियम बनाएँ

  1. उत्पाद → Security Events → Detections → Detection Rules खोलें और Detection Rule बनाएँ पर क्लिक करें।
  2. Sigma Rule में, नियम का YAML Sigma Rule (YAML) में चिपकाएँ। सहेजते समय इसे पार्स किया जाता है, इसलिए कोई गलती फ़ॉर्म में दिखती है।
  3. नाम नियम के title से भर जाता है: नियम को कुछ और कहने के लिए उसे बदल दें। नया नियम चलने लगता है; सक्षम उसके संपादन फ़ॉर्म में है।
  4. मिलान होने पर में Open a Case on Match चालू रखें, ताकि इसके मिलान उस मान के हिसाब से केस में समूहित हों जिससे नियम समूह बनाता है।
  5. अलर्ट और घटनाएं में चुनें कि मिलान और क्या खोले: अलर्ट बनाएं (डिफ़ॉल्ट), घटना घोषित करें, दोनों या कोई नहीं, साथ में वैकल्पिक अलर्ट गंभीरता या घटना गंभीरता।
  6. और फ़ील्ड में विवरण, Write Detection Finding on Match (चालू) और मिलानों की गिनती का तरीका है; देखें मूल्यांकन सेटिंग्स।

पहला नियम, जो 10.x.x.x के बाहर से हुए विफल लॉगऑन से मेल खाता है:

failed-logon-burst.ymlYAML
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 के भीतर किसी फ़ील्ड के तय संख्या में अलग-अलग मान दिखाता हैअलग-अलग मान
temporaltimespan के भीतर एक ही समूह के लिए हर नियम मेल खाता है, किसी भी क्रम मेंसाथ होने वाले इवेंट
temporal_orderedtimespan के भीतर एक ही समूह के लिए नियम अपने क्रम में मेल खाते हैंSequence
new_valueएक समूह किसी फ़ील्ड का ऐसा मान दिखाता है जो उसने timespan के भीतर नहीं दिखायाFirst seen
failed-then-success.ymlYAML
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_value Status200 का अपना प्रकार है, क्योंकि 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 FieldDistinct Count Fieldथ्रेशोल्ड
किसी भी मिलान पर अलर्टखालीखाली1
हर होस्ट पर एक अलर्टprincipalHostखाली1
ब्रूट फ़ोर्स: एक IP से 5 विफल लॉगऑनprincipalIpखाली5
पासवर्ड स्प्रेइंग: एक IP का 5 अलग-अलग खातों पर विफल होनाprincipalIpprincipalUser5
पोर्ट स्कैन: एक IP का 20 अलग-अलग पोर्ट तक पहुँचनाprincipalIptargetPort20

नियम कब चलता है

Status200 हर मिनट उन सक्षम नियमों को जाँचता है जिनका अंतराल पिछले रन के बाद बीत चुका है। हर रन उन इवेंट को पढ़ता है जिनका इवेंट समय पिछले रन और दो मिनट पहले के बीच आता है, फिर आगे बढ़ता है। ये दो मिनट उन इवेंट के लिए जगह छोड़ते हैं जो अभी रास्ते में हैं, जैसे लिखे जाने के एक मिनट बाद पढ़ी गई लॉग पंक्ति:

  • विंडो एक के बाद एक लगती हैं, रोलिंग नहीं होतीं। 10 मिनट के अंतराल पर 09:58 और 10:01 की विफलताएँ अलग-अलग रन में पड़ सकती हैं और अलग गिनी जाती हैं, इसलिए थ्रेशोल्ड चुनते समय गुंजाइश रखें।
  • किसी अंतराल के बाद, जैसे वर्कर रुकने या नियम के फिर से चालू होने पर, अगला रन पूरा अंतराल कवर करता है, ज़्यादा से ज़्यादा पिछले 24 घंटे तक।
  • जो इवेंट दो मिनट से ज़्यादा देर से आता है, जब कोई रन उसका समय पहले ही कवर कर चुका हो, वह सहेजा जाता है और खोजा जा सकता है, लेकिन वह नियम उसे कभी नहीं पढ़ता।
  • सीमा तक पहुँचने वाला हर समूह एक Detection Finding बनता है, हर रन में 10,000 तक। सबसे ज़्यादा गिनती वाले 100 समूहों के लिए अलर्ट, घटनाएँ और केस खुलते हैं; बाक़ी समूह नियम के बारे में एक केस साझा करते हैं, और नियम की पिछली त्रुटि बताती है कि कितने समूह मेल खाए।

गंभीरता

नियम का level उसके निष्कर्षों की गंभीरता है: informational, low, medium, high और critical क्रमशः Informational, Low, Medium, High और Critical बनते हैं। उसके अलर्ट और घटनाएँ आपके प्रोजेक्ट की गंभीरताओं में से एक लेते हैं, इस क्रम में:

  1. नियम की अलर्ट गंभीरता (या घटना गंभीरता ), अगर सेट हो।
  2. स्तर के नाम वाली आपकी गंभीरता, जैसे High, अक्षरों के बड़े-छोटे होने की परवाह किए बिना।
  3. रैंक के हिसाब से: 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_idSigma नियम की अपनी 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 जोड़ें। अगर हर मिलान के बजाय दर की परवाह है, तो अलर्ट और घटनाएं में कोई नहीं चुनें और नियम के निष्कर्षों पर एक मॉनिटर लगाएँ।

अगले कदम