איסוף יומני DDI של EfficientIP

גרסת המנתח: 9.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני EfficientIP DDI ב-Google Security Operations באמצעות סוכן Bindplane.

‫EfficientIP SOLIDserver הוא פתרון מקיף של DDI ‏ (DNS-DHCP-IPAM) שמספק מכשירי חומרה ווירטואליים חזקים, מאובטחים וניתנים להרחבה לשירותי רשת קריטיים, כולל DNS,‏ DHCP, ניהול כתובות IP,‏ NTP ו-TFTP. הפלטפורמה מספקת ניהול מרכזי ואוטומציה של תשתית הרשת, עם יכולות מתקדמות של מעקב ואבטחה.

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

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

  • מכונה של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות לרשת בין סוכן Bindplane לבין מכשיר EfficientIP SOLIDserver
  • אם מריצים את הסוכן מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
  • הרשאת אדמין למסוף האינטרנט של EfficientIP SOLIDserver
  • ‫SOLIDserver בגרסה 8.0 ואילך (נבדק בגרסאות 8.3.x ו-8.4.x)

קבלת פרטי כניסה ל-Google SecOps עבור סוכן Bindplane

כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים אחת מהשיטות הבאות:

  • פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
  • פריסות קודמות: ממשיכים להשתמש בקובץ האימות להטמעת נתונים (אפשרות 2) עד שה-Ingestion API יופסק ב-20 ביולי 2027.
  1. נכנסים אל Google Cloud המסוף ובוחרים את Google Cloud הפרויקט שמקושר למופע של Google SecOps.
  2. נכנסים לדף IAM & Admin > Service Accounts.
  3. לוחצים על יצירת חשבון שירות.
  4. מספקים את פרטי ההגדרה הבאים:
    • Service account name: מזינים שם לחשבון (לדוגמה, bindplane-ingest).
    • תיאור חשבון השירות: מזינים תיאור (לדוגמה, Bindplane agent log ingestion).
  5. לוחצים על Create and continue.
  6. בקטע Grant this service account access to project, לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
  7. לוחצים על המשך ואז על סיום.
  8. לוחצים על חשבון השירות שיצרתם ועוברים לכרטיסייה Keys.
  9. לוחצים על Add key > Create new key.
  10. בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
  11. שומרים את קובץ המפתח בשם ingestion-auth.json בספריית Bindplane Collector (/opt/observiq-otel-collector/ingestion-auth.json ב-Linux או C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json ב-Windows), או מעדכנים את creds_file_path ב-config.yaml כך שיתאים לנתיב שבו שומרים את הקובץ.
  12. עוברים אל IAM & Admin > Settings (ניהול הרשאות גישה ואדמין > הגדרות) ומעתיקים את מספר הפרויקט. תצטרכו אותו כדי להגדיר את כלי הייצוא.

אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (מדור קודם)

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

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

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

התקנת הסוכן של Bindplane

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

התקנת חלונות

  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 /opt/observiq-otel-collector/config.yaml
    
  • ‫Windows:

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

עריכת קובץ תצורה

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

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/efficientip_ddi:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: chronicle.googleapis.com
        log_type: EFFICIENTIP_DDI
        raw_log_field: body
        ingestion_labels:
          env: production
          source: solidserver
    
    service:
      pipelines:
        logs/efficientip_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/efficientip_ddi
    
  2. מחליפים את ה-placeholders הבאים:

    • הגדרת המקלט:

      • ‫listen_address: מוגדר ל-0.0.0.0:514 כדי להאזין לכל הממשקים ביציאת UDP‏ 514.
        • בפריסות של Linux ללא הרשאות בסיס, צריך להשתמש ביציאה 1514 ומעלה.
        • מוודאים שהיציאה תואמת להגדרות ב-SOLIDserver.
    • הגדרת הייצוא:

      • ‫creds_file_path: הנתיב המלא לקובץ המפתח בפורמט JSON של חשבון השירות (אפשרות 1):

        • Linux: /opt/observiq-otel-collector/ingestion-auth.json
        • ‫Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
      • ‫customer_id: מחליפים את YOUR_CUSTOMER_ID במזהה הלקוח מהשלב הקודם.

      • ‫location: מחליפים את <LOCATION> באזור של מופע Google SecOps (לדוגמה, us,‏ europe או asia-southeast1). ערך זה מתווסף לתחילית chronicle.googleapis.com של הכלי לייצוא. לרשימה המלאה, ראו נקודות קצה אזוריות.

      • ‫project: מחליפים את <PROJECT_NUMBER> במספר הפרויקט שמופיע בקטע IAM & Admin > Settings.

      • ‫endpoint: משאירים את הערך chronicle.googleapis.com.

      • log_type: מוגדר ל-EFFICIENTIP_DDI (נדרשת התאמה מדויקת).

      • ‫ingestion_labels: תוויות אופציונליות לסיווג יומנים (אפשר להתאים אישית לפי הצורך).

מייצא API להטמעה מדור קודם

  • אם אתם משתמשים בקובץ האימות להטמעת נתונים מאפשרות 2, החליפו את הבלוק exporters בקוד הבא. מגדירים את creds_file_path לנתיב של קובץ האימות להטמעת נתונים. אם המכונה נמצאת מחוץ לארה"ב, מחליפים את malachiteingestion-pa.googleapis.com בנקודת הקצה האזורית (לדוגמה, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/efficientip_ddi:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'YOUR_CUSTOMER_ID'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: EFFICIENTIP_DDI
        raw_log_field: body
        ingestion_labels:
          env: production
          source: solidserver
    

שמירת קובץ התצורה

אחרי שמסיימים לערוך, שומרים את הקובץ:

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

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

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

    1. מריצים את הפקודה הבאה:

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

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

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

    1. בוחרים אחת מהאפשרויות האלה:

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

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

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

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

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

הגדרת העברת syslog של EfficientIP DDI

  1. נכנסים למסוף האינטרנט של EfficientIP SOLIDserver.
  2. בחלונית הניווט הימנית, לוחצים על ניהול.
  3. בקטע מעקב, לוחצים על הגדרה.
  4. בתפריט, לוחצים על + הוספה.
  5. ברשימה Services, בוחרים את השירותים הבאים: named (ליומני DNS)
  6. בשדה Target server (שרת יעד), מזינים את כתובת ה-IP והיציאה של מארח סוכן Bindplane בפורמט <ip-address>:<port>.
    • לדוגמה: 192.168.1.100:514
    • אם משתמשים ביציאה לא סטנדרטית ב-Linux, צריך לציין את היציאה בהתאם (לדוגמה, 192.168.1.100:1514)
  7. לוחצים על אישור כדי לשמור את ההגדרה.

אימות העברת היומנים

  1. בודקים את היומנים של סוכן Bindplane כדי לוודא שהיומנים מתקבלים:
    • ‫Linux: sudo journalctl -u observiq-otel-collector -f
    • Windows: type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
  2. מחפשים רשומות ביומן שמכילות אירועים של שאילתות DNS ותשובות מ-SOLIDserver.
  3. נכנסים למסוף Google SecOps ומוודאים שהיומנים של EfficientIP DDI מופיעים בדף Events.

סוגי היומנים הנתמכים

השילוב הזה אוסף את סוגי היומנים הבאים מ-EfficientIP SOLIDserver:

  • יומני שאילתות DNS: שאילתות DNS של לקוחות עם סוג השאילתה, שם הדומיין וכתובת ה-IP של הלקוח
  • יומני תשובות של DNS: תשובות DNS עם רשומות תשובה, TTL וקודי תגובה
  • יומני DHCP: פעולות DHCP, כולל DISCOVER, ‏ OFFER, ‏ REQUEST, ‏ ACK, ‏ NAK, ‏ RELEASE ו-INFORM
  • יומנים של DNS Guardian: אירועי אבטחה, כולל זיהוי התנהגות חשודה, הפעלה/השבתה של טריגרים
  • יומני העברות של תחום DNS: פעולות והתראות של העברות תחומים
  • יומני שגיאות DNS: שגיאות פורמט, SERVFAIL,‏ REFUSED ושגיאות DNS אחרות

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
ip_version additional.fields אם הוא לא ריק, הוא מוזג כתווית עם המפתח "ip_version"
message_size additional.fields אם השדה לא ריק, הוא ימוזג כתווית עם המפתח message_size
domain_name additional.fields אם הערך לא ריק, הוא ימוזג כתווית עם המפתח domain_name
לא רלוונטי מתווך מוזג מאובייקט מתווך
description metadata.description הערך מועתק ישירות אם הוא לא ריק
msg2 metadata.description צריך להגדיר את msg2 אם הערך של event_type הוא GENERIC_EVENT והתיאור ריק
su_cmd metadata.event_type הערך הוא PROCESS_OPEN אם su_cmd הוא sudo
activity_type metadata.event_type צריך להגדיר את הערך "NETWORK_DNS" אם activity_type תואם ל-dns והערך של has_dns_questions הוא true
הודעה metadata.event_type אם ההודעה תואמת ל-dhcp, צריך להגדיר את הערך "NETWORK_DHCP"
inner_message metadata.event_type ההגדרה תהיה NETWORK_UNCATEGORIZED אם inner_message תואם לתבניות ספציפיות, וגם has_principal ו-has_target הם true
תהליך דיפוזיה הפוך metadata.event_type צריך להגדיר את הערך "NETWORK_DNS" אם התהליך הוא "named" והערך של has_dns_questions הוא true; צריך להגדיר את הערך "STATUS_UPDATE" אם התהליך הוא "named" והערך של has_principal הוא true; צריך להגדיר את הערך "GENERIC_EVENT" אם התהליך הוא "named"; צריך להגדיר את הערך "NETWORK_DHCP" אם התהליך הוא "dhcpd"
PWD metadata.event_type צריך להגדיר את הערך "PROCESS_OPEN" אם השדה PWD לא ריק והערך של has_target או has_principal הוא True
activity_type metadata.product_event_type הערך הועתק ישירות
לא רלוונטי metadata.vendor_name מגדירים את הערך "EFFICIENTIP_DDI"
לא רלוונטי metadata.product_name מגדירים את האפשרות "EFFICIENTIP_DDI DHCP"
activity_type network.application_protocol צריך להגדיר את הערך "DNS" אם activity_type תואם ל-dns והערך של has_dns_questions הוא true
הודעה network.application_protocol אם ההודעה תואמת ל-DHCP, צריך להגדיר את האפשרות "DHCP"
תהליך דיפוזיה הפוך network.application_protocol הערך הוא DNS אם התהליך הוא named, והוא DHCP אם התהליך הוא dhcpd
src_mac network.dhcp.chaddr הערך מועתק ישירות אם התהליך הוא dhcpd
src_ip network.dhcp.ciaddr הערך מועתק ישירות אם dhcp_info הוא REQUEST
giaddr network.dhcp.giaddr הערך הועתק ישירות
dhcp_info network.dhcp.opcode הערך צריך להיות BOOTREQUEST אם dhcp_info הוא INFORM,‏ DISCOVER או REQUEST. הערך צריך להיות BOOTREPLY אם dhcp_info הוא OFFER או ACK.
siaddr network.dhcp.siaddr הערך הועתק ישירות
transaction_id network.dhcp.transaction_id הערך מומר ל-uinteger אם הוא לא ריק או לא '0'
dhcp_info network.dhcp.type הערך הוא INFORM אם dhcp_info הוא INFORM, הערך הוא DISCOVER אם dhcp_info הוא DISCOVER, הערך הוא OFFER אם dhcp_info הוא OFFER, הערך הוא REQUEST אם dhcp_info הוא REQUEST, הערך הוא ACK אם dhcp_info הוא ACK.
yiaddr network.dhcp.yiaddr הערך הועתק ישירות
src_ip network.dhcp.yiaddr מוגדר ל-src_ip אם התהליך הוא dhcpd והשדה yiaddr ריק
answer_rrs network.dns.answers מוזג מאובייקט התשובה לכל rd ב-answer_rrs
לא רלוונטי network.dns.questions המידע ממוזג מאובייקט השאלות אם הערך של has_dns_questions הוא True
rcode network.dns.response_code הערך הומר למספר שלם חיובי
response_code network.dns.response_code הערך ממופה לקוד מספרי ומומר ל-uinteger
תחבורה network.ip_protocol הערך מומר לאותיות רישיות אם הוא תואם ל-udp או ל-tcp
הישות שזיהתה את האירוע observer.ip הערך הומר לכתובת IP
su_cmd principal.application הערך מועתק ישירות אם su_cmd הוא "sudo"
תהליך דיפוזיה הפוך principal.application הגדרה לתהליך אם התהליך הוא "named" או "dhcpd"
מארח principal.asset.hostname הערך מועתק ישירות אם הוא לא ריק
שם המארח principal.asset.hostname הערך מועתק ישירות אם הוא לא ריק והמארח ריק
src_ip principal.asset.ip הערך הועתק ישירות
asset_id principal.asset_id משורשר כ-"ID:" + asset_id
מארח principal.hostname הערך מועתק ישירות אם הוא לא ריק
שם המארח principal.hostname הערך מועתק ישירות אם הוא לא ריק והמארח ריק
domain_name principal.hostname הערך מועתק ישירות אם התיאור מכיל שם מארח והשדות host או hostname ריקים
src_ip principal.ip הערך מועתק ישירות אם ההמרה ל-ipaddress מצליחה. הוא נשלף מהתיאור אם src_ip ריק
src_mac principal.mac הערך הועתק ישירות
src_port principal.port הערך הומר למספר שלם
process_id principal.process.pid הערך הועתק ישירות
source_user principal.user.userid הערך הועתק ישירות
לא רלוונטי security_result התוצאות הממוזגות מ-sec_result
dst_ip target.asset.ip הערך הועתק ישירות
file_path target.file.full_path הערך הועתק ישירות
dst_ip target.hostname הערך מועתק ישירות אם הוא לא כתובת IP תקינה
מארח target.hostname הערך מועתק ישירות אם inner_message תואם לתבניות ספציפיות
dst_ip target.ip הערך הועתק ישירות
dst_port target.port הערך הומר למספר שלם
target_cmd_line target.process.command_line הערך הועתק ישירות
target_user target.user.userid הערך הועתק ישירות
RR_msg event.idm.read_only_udm.metadata.description מופה מיומן השינויים
client_id event.idm.read_only_udm.additional.fields מופה מיומן השינויים
key_office event.idm.read_only_udm.additional.fields מופה מיומן השינויים
rrset_type event.idm.read_only_udm.additional.fields מופה מיומן השינויים
syslog_priority event.idm.read_only_udm.additional.fields מופה מיומן השינויים
updating_zone event.idm.read_only_udm.additional.fields מופה מיומן השינויים
view_office event.idm.read_only_udm.additional.fields מופה מיומן השינויים

יומן שינויים

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

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