איסוף יומנים של BloxOne Threat Defense

גרסת מנתח: 8.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של BloxOne Threat Defense ב-Google Security Operations באמצעות סוכן Bindplane.

‫Infoblox BloxOne Threat Defense הוא שירות אבטחת DNS שמנוהל בענן ומייצר הודעות syslog בפורמט CEF לשאילתות DNS, לאירועי מודיעין איומי סייבר ולפעולות מדיניות. הכלי לניתוח מחלק את השדות וממפה אותם למודל הנתונים המאוחד (UDM).

לפני שמתחילים

חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:

  • מופע של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות לרשת בין סוכן Bindplane לבין פלטפורמת Infoblox BloxOne
  • אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
  • גישה מורשית ל-Infoblox Portal

קבלת קובץ אימות להטמעת נתונים ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Collection Agents.
  3. הורדה של קובץ אימות להטמעת נתונים
  4. שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן סוכן Bindplane.

איך מוצאים את מספר הלקוח ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
  3. מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.

התקנת סוכן Bindplane

מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.

התקנה ב-Windows

  1. פותחים את שורת הפקודה או את PowerShell כאדמין.
  2. מריצים את הפקודה הבאה:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sc query observiq-otel-collector
    

    השירות צריך להופיע עם הערך RUNNING.

התקנה ב-Linux

  1. פותחים טרמינל עם הרשאות root או sudo.
  2. מריצים את הפקודה הבאה:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sudo systemctl status observiq-otel-collector
    

    השירות צריך להופיע כפעיל (פועל).

מקורות מידע נוספים להתקנה

אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.

הגדרה של סוכן Bindplane לקליטת syslog ושליחה ל-Google SecOps

איתור קובץ ההגדרות

  • ‫Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • ‫Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

עריכת קובץ ההגדרות

  • מחליפים את כל התוכן של config.yaml בהגדרה הבאה:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/bloxone:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: BLOXONE
            raw_log_field: body
    
    service:
        pipelines:
            logs/bloxone_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/bloxone
    

פרמטרים להגדרה

מחליפים את ה-placeholders הבאים:

  • הגדרת מקלט:

    • ‫listen_address: כתובת ה-IP והיציאה להאזנה:
      • ‫0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • יציאה 514 היא יציאת syslog רגילה (נדרשת הרשאת root ב-Linux; אפשר להשתמש ב-1514 ללא הרשאת root)
  • הגדרת כלי הייצוא:

    • ‫creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:
      • ‫Linux: /etc/bindplane-agent/ingestion-auth.json
      • ‫Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • ‫customer_id: מספר הלקוח שהועתק ממסוף Google SecOps
    • ‫endpoint: כתובת ה-URL של נקודת הקצה האזורית:
      • ארה"ב: malachiteingestion-pa.googleapis.com
      • אירופה: europe-malachiteingestion-pa.googleapis.com
      • אסיה: asia-southeast1-malachiteingestion-pa.googleapis.com
      • רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.

שמירת קובץ ההגדרות

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • ‫Linux: מקישים על Ctrl+O, אחר כך על Enter ואז על Ctrl+X.
    • ‫Windows: לוחצים על קובץ > שמירה.

מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.

  • כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:

    sudo systemctl restart observiq-otel-collector
    
    1. מוודאים שהשירות פועל:

      sudo systemctl status observiq-otel-collector
      
    2. בודקים אם יש שגיאות ביומנים:

      sudo journalctl -u observiq-otel-collector -f
      
  • כדי להפעיל מחדש את סוכן Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:

    • שורת הפקודה או PowerShell כאדמין:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • מסוף השירותים:

      1. מקישים על Win+R, מקלידים services.msc ומקישים על Enter.
      2. מחפשים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
      4. מוודאים שהשירות פועל:

        sc query observiq-otel-collector
        
      5. בודקים אם יש שגיאות ביומנים:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

הגדרת syslog ב-Infoblox BloxOne

  1. נכנסים אל Infoblox Portal.
  2. עוברים אל הגדרה > ניהול > Data Connector (מחבר נתונים).
  3. בוחרים בכרטיסייה הגדרת יעד.
  4. לוחצים על יצירה > Syslog.
  5. מספקים את פרטי ההגדרה הבאים:
    • שם: מציינים שם תיאורי (לדוגמה, Google SecOps collector).
    • תיאור: צריך לספק תיאור קצר.
    • מצב: בוחרים באפשרות הפעלה.
    • תגים: לוחצים על הוספה ומציינים את הפרטים הבאים כדי לשייך מפתח ליעד:
      • ‫KEY: מזינים שם תיאורי למפתח.
      • ‫VALUE: מזינים את הערך של המפתח.
    • פורמט: בוחרים באפשרות CEF.
    • פרוטוקול: בוחרים באפשרות UDP או TCP (בהתאם להגדרות של סוכן Bindplane).
    • ‫FQDN/IP: מזינים את כתובת ה-IP של סוכן Bindplane.
    • יציאה: מזינים את היציאה של סוכן Bindplane (ברירת המחדל היא 514 ל-UDP).
  6. לוחצים על Save & Close (שמירה וסגירה).

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
additional_list.key השדה הזה משמש בלולאה כדי לבצע איטרציה במערך additional_list ולחלץ נתונים על סמך הערך של השדה key. היא לא ממופה ישירות ל-UDM.
additional_list.value principal.location.region_latitude,‏ principal.location.region_longitude,‏ target.location.region_latitude,‏ target.location.region_longitude השדה הזה משמש בשילוב עם additional_list.key כדי לחלץ ערכים ספציפיים מהמערך additional_list. הלוגיקה לחילוץ ולמיפוי הערך תלויה בkey המתאים. לדוגמה:
– אם additional_list.key הוא intel:source:ip:geoIP:location, מחלצים את ערכי קו הרוחב וקו האורך באמצעות grok וממפים אותם ל-principal.location.region_latitude ול-principal.location.region_longitude, בהתאמה. ‫
– אם additional_list.key הוא intel:destination:ip:geoIP:location, מחלצים את ערכי קו הרוחב וקו האורך באמצעות grok וממפים אותם ל-target.location.region_latitude ול-target.location.region_longitude, בהתאמה.
additional_string.key בדומה ל-additional_list.key, השדה הזה משמש בלולאה כדי לבצע איטרציה במערך additional_string ולחלץ נתונים על סמך הערך key. היא לא ממופה ישירות ל-UDM.
additional_string.value ‫additional.fields.value.string_value, principal.location.country_or_region, target.location.country_or_region, src.ip, src.port, src.hostname, network.ip_protocol משמש עם additional_string.key כדי לחלץ ערכים מהמערך additional_string. הלוגיקה למיפוי הערך תלויה בkey המתאים. לדוגמה:
– אם additional_string.key הוא intel:source:ip:ip2asn:start_ip,‏ intel:source:ip:ip2asn:finish_ip,‏ intel:destination:ip:ip2asn:start_ip או intel:destination:ip:ip2asn:finish_ip, ממפים את הערך ל-additional.fields.value.string_value עם המפתח המתאים. ‫
– אם additional_string.key הוא intel:source:ip:geoIP:country, ממפים את הערך ל-principal.location.country_or_region. ‫
– אם additional_string.key הוא intel:destination:ip:geoIP:country, ממפים את הערך ל-target.location.country_or_region. ‫
– אם additional_string.key הוא log:source:ip, ממפים את הערך ל-src.ip. ‫
– אם additional_string.key הוא log:source:port, ממפים את הערך ל-src.port אחרי שממירים אותו למספר שלם. ‫
– אם additional_string.key הוא log:source:hostname, ממפים את הערך ל-src.hostname. ‫
– אם הערך של additional_string.key הוא log:cdh:input:protocol, ממפים את הערך ל-network.ip_protocol אחרי שממירים אותו לאותיות רישיות.
app_category security_result.category_details ממופים ישירות.
confidence security_result.confidence המיפוי מבוסס על הלוגיקה הבאה:
– אם confidence הוא LOW, המיפוי הוא LOW_CONFIDENCE.‫
– אם confidence הוא MEDIUM, מיפוי ל-MEDIUM_CONFIDENCE.‫
– אם confidence הוא HIGH, מיפוי ל-HIGH_CONFIDENCE.
country principal.location.name ממופה ישירות, אבל רק אם raw.infobloxb1region ריק.
device principal.ip, principal.asset.ip ממופה ישירות, אבל רק אם raw.dvc ריק.
dhcp_fingerprint security_result.detection_fields.value ממופה ישירות למקש dhcp_fingerprint.
dns_view security_result.detection_fields.value ממופה ישירות למקש dns_view.
endpoint_groups security_result.detection_fields.value ממופה ישירות למקש endpoint_groups.
event_time metadata.event_timestamp.seconds הערך מנותח כחותמת זמן בפורמט ISO8601, וערך השניות מחולץ. השדה הזה משמש רק אם השדה timestamp ריק.
feed_name principal.resource.name feed_name ממופה ל-principal.resource.name.
feed_type principal.resource.attribute.labels.value ממופה ישירות למקש feed_type.
mac_address principal.mac ממופה ישירות אחרי המרה לאותיות קטנות.
network principal.hostname, principal.asset.hostname ממופה ישירות, אבל רק אם גם raw.dvchost וגם raw.dvc ריקים.
os_version principal.platform_version ממופים ישירות.
policy_action security_result.action_details, security_result.action policy_action ממופה ישירות ל-security_result.action_details.הערך של
security_result.action נגזר מהלוגיקה הבאה:
– אם הערך של policy_action הוא Redirect או Log, המיפוי הוא ל-ALLOW.‫
– אם policy_action הוא BLOCK, ממפים ל-BLOCK.
policy_name security_result.detection_fields.value ממופה ישירות למקש policy_name.
qname network.dns.questions.name ממופים ישירות.
qtype network.dns.questions.type המיפוי מתבצע לפי הלוגיקה הבאה:
– אם qtype הוא A, המיפוי הוא ל-1 (הערך מומר למספר שלם לא מסומן).‫
– אם qtype הוא PTR, ממפים ל-12 (מומר למספר שלם לא מסומן).
raw.act security_result.action_details ממופים ישירות.
raw.app network.application_protocol ממופה ישירות אחרי ההמרה לאותיות רישיות.
raw.deviceeventclassid metadata.product_event_type הערך משורשר עם raw.name (מופרד באמצעות -) וממופה אל metadata.product_event_type.
raw.devicevendor metadata.vendor_name ממופים ישירות.
raw.deviceproduct metadata.product_name ממופים ישירות.
raw.deviceversion metadata.product_version ממופים ישירות.
raw.deviceseverity security_result.severity_details, security_result.severity raw.deviceseverity ממופה ישירות ל-security_result.severity_details.הערך של
security_result.severity נגזר מהלוגיקה הבאה:
– אם הערך של raw.deviceseverity הוא אחד מהערכים [0, ‏ 1, ‏ 2, ‏ 3], המיפוי הוא ל-LOW.‫
– אם raw.deviceseverity נמצא ב- [4, 5, 6], המיפוי הוא ל-MEDIUM.‫
– אם raw.deviceseverity נמצא בטווח [7, 8], מפה ל-HIGH.‫
– אם raw.deviceseverity נמצא בטווח [9, 10], מפה ל-CRITICAL.
raw.dvc principal.ip, principal.asset.ip ממופים ישירות.
raw.dvchost principal.hostname, principal.asset.hostname מיפוי ישיר, אבל רק אם הערך לא שווה ל-raw.dvc.
raw.infobloxb1connectiontype additional.fields.value.string_value ממופה ישירות למקש infobloxb1connectiontype.
raw.infobloxb1ophname observer.hostname, observer.asset.hostname ממופים ישירות.
raw.infobloxb1ophipaddress observer.ip ממופים ישירות.
raw.infobloxb1policyname security_result.detection_fields.value ממופה ישירות למקש infobloxb1policyname.
raw.infobloxdnsqclass dns_question.class, dns_answer.class השדות האלה משמשים להפקת הערכים dns_question.class ו-dns_answer.class על סמך טבלת מיפוי שמוגדרת בקובץ dns_query_class_mapping.include.
raw.infobloxdnsqtype dns_question.type, dns_answer.type השדות האלה משמשים להפקת הערכים dns_question.type ו-dns_answer.type על סמך טבלת מיפוי שמוגדרת בקובץ dns_record_type.include.
raw.infobloxdnsrcode network.dns.response_code השדה הזה משמש להפקת הערך network.dns.response_code על סמך טבלת מיפוי שמוגדרת בקובץ dns_response_code.include.
raw.infobloxpolicyid security_result.detection_fields.value ממופה ישירות למקש infobloxpolicyid.
raw.msg metadata.description ‫raw.msg ממופה ישירות ל-metadata.description אחרי הסרת המירכאות הפותחות והסוגרות.
raw.name metadata.product_event_type הערך משורשר עם raw.deviceeventclassid (מופרד באמצעות -) וממופה אל metadata.product_event_type.
rcode security_result.detection_fields.value, network.dns.response_code ‫rcode ממופה ישירות ל-security_result.detection_fields.value עם המפתח rcode.
אם rcode הוא NXDOMAIN, הערך של network.dns.response_code מוגדר כ-3 (אחרי המרה למספר שלם לא חתום).
rdata network.dns.answers.data ממופים ישירות.
rip target.ip, target.asset.ip ממופים ישירות.
severity security_result.severity מיפוי על סמך הלוגיקה הבאה:
– אם severity הוא INFO (לא תלוי באותיות רישיות), המיפוי הוא ל-INFORMATIONAL.‫
– אם severity הוא HIGH, ממפים ל-HIGH.
tclass security_result.detection_fields.value ממופה ישירות למקש tclass.
threat_indicator security_result.detection_fields.value ממופה ישירות למקש threat_indicator.
timestamp metadata.event_timestamp.seconds הערך מנותח כחותמת זמן בפורמט ISO8601, וערך השניות מחולץ.
user principal.user.user_display_name ממופים ישירות.
user_groups security_result.detection_fields.value ממופה ישירות למקש user_groups.
לא רלוונטי principal.resource.resource_subtype הערך הוא Feed אם feed_name לא ריק.
לא רלוונטי metadata.log_type הערך שהוגדר הוא BLOXONE.
לא רלוונטי additional.fields.key הערך שמוגדר הוא infobloxancount, ‏ infobloxarcount, ‏ infobloxb1connectiontype, ‏ infobloxnscount, ‏ intel:destination:ip:ip2asn:finish_ip, ‏ intel:destination:ip:ip2asn:start_ip, ‏ intel:source:ip:ip2asn:finish_ip או intel:source:ip:ip2asn:start_ip, בהתאם לשדות raw המתאימים.
לא רלוונטי metadata.event_type הערך שמוגדר הוא STATUS_UPDATE אם has_principal הוא true, אחרת הערך שמוגדר הוא GENERIC_EVENT.
לא רלוונטי network.dns.questions.type הערך מוגדר כ-1 לרשומות A וכ-12 לרשומות PTR, והוא מומר למספר שלם לא מסומן.
לא רלוונטי network.dns.answers.name, network.dns.answers.type, network.dns.answers.class המידע חולץ מ-raw.msg על ידי ניתוח מחרוזת התגובה של ה-DNS.
לא רלוונטי intermediary.hostname, intermediary.ip, intermediary.asset.ip המידע חולץ מ-raw.msg על ידי ניתוח מחרוזת התגובה של ה-DNS.
intermediaryhost intermediary.hostname מופה מיומן השינויים
app_name principal.application מופה מיומן השינויים
endpoint_groups", "user_groups", "dns_view", "dhcp_fingerprint", "policy_name", "tclass", "tproperty", "threat_indicator", "category", and "rcode security_result.detection_fields מופה מיומן השינויים

יומן שינויים

צפייה ביומן השינויים של מנתח התוכן הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.