איסוף יומנים של InterSystems Caché

נתמך ב:

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

‫InterSystems Caché היא פלטפורמה של מסד נתונים ואפליקציות עם ביצועים גבוהים, שמשמשת בתחום שירותי הבריאות והשירותים הפיננסיים. הוא יוצר יומני ביקורת לפעולות במסד הנתונים, לגישת משתמשים ולאירועים במערכת. המנתח מחלץ שדות מנתוני הביקורת של Caché וממפה אותם למודל הנתונים המאוחד (UDM), ומתעד את זהות המשתמש, מאפייני הרשת, פרטי התהליך, הפעולות על הקבצים ותוצאות האבטחה.

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

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

  • מופע של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות לרשת בין סוכן Bindplane לבין שרת InterSystems Caché
  • אם מריצים את הסוכן מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
  • גישה עם הרשאות למכונה של InterSystems Caché, עם הרשאה להגדיר רישום ביומן ביקורת וייצוא של יומנים

קבלת פרטי כניסה ל-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 (ניהול הרשאות גישה (IAM) & אדמין > חשבונות שירות).
  3. לוחצים על יצירת חשבון שירות.
  4. מספקים את פרטי ההגדרה הבאים:
    • Service account name: מזינים שם לחשבון (לדוגמה, bindplane-ingest).
    • Service account description: מזינים תיאור (לדוגמה, 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 בספריית ה-collector של Bindplane (/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 > סוכני איסוף.
  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 /opt/observiq-otel-collector/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/intersystems_cache:
        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: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: INTERSYSTEMS_CACHE
        raw_log_field: body
    
    service:
      pipelines:
        logs/intersystems_cache:
          receivers:
            - udplog
          exporters:
            - chronicle/intersystems_cache
    

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

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

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

    • ‫udplog: סוג המקלט לפי הפרוטוקול:
      • ‫udplog ל-UDP syslog
      • ‫tcplog ל-syslog של TCP
      • ‫syslog ל-syslog של RFC 3164/5424
    • ‫0.0.0.0: כתובת ה-IP להאזנה:
      • ‫0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • כתובת IP ספציפית להאזנה בממשק אחד
    • ‫514: מספר היציאה להאזנה (לדוגמה, 514, ‏ 1514, ‏ 6514)
  • הגדרת הייצוא:

    • ‫<customer_id>: מספר הלקוח מהשלב הקודם
    • ‫location: מחליפים את <LOCATION> באזור של המכונה של Google SecOps (לדוגמה, us,‏ europe או asia-southeast1). המייצא מוסיף את הערך הזה בתחילת chronicle.googleapis.com. לרשימה המלאה, ראו נקודות קצה אזוריות.
    • ‫project: מחליפים את <PROJECT_NUMBER> במספר הפרויקט מתוך IAM & Admin > Settings.
    • ‫endpoint: צריך להשאיר את ההגדרה chronicle.googleapis.com.
    • משנים את creds_file_path לנתיב של קובץ מפתח ה-JSON של חשבון השירות (אפשרות 1), בהתאם לפלטפורמה:
      • ‫Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • ‫Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json

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

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

    exporters:
      chronicle/intersystems_cache:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: INTERSYSTEMS_CACHE
        raw_log_field: body
    

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

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • ‫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 של InterSystems Caché

מערכת InterSystems Caché כותבת אירועי ביקורת למסד הנתונים הפנימי שלה לביקורת. מגדירים העברה של syslog כדי לשלוח את האירועים האלה לסוכן Bindplane.

הפעלה והגדרה של רישום ביומן ביקורת

  1. פותחים את Caché Management Portal.
  2. עוברים אל System Administration > Security > Auditing > Configure System Events.
  3. מפעילים את אירועי הביקורת שרוצים לתעד (לדוגמה, %System/%Login/LoginFailure, ‏ %System/%Security/Protect).
  4. לוחצים על Save.

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

  1. בפורטל הניהול, עוברים אל System Administration > Security > Auditing > Configure Audit (ניהול מערכת > אבטחה > ביקורת > הגדרת ביקורת).
  2. הפעלת העברה של אירועי ביקורת ל-syslog.
  3. מזינים את פרטי ההגדרה הבאים:
    • שרת Syslog: מזינים את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה, 192.168.1.100).
    • יציאה: מזינים 514 (חייב להיות זהה ליציאת המקלט של Bindplane).
    • ‫Protocol: בוחרים באפשרות UDP (צריך להתאים לסוג המקלט של Bindplane).
  4. לוחצים על Save.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
deviceNtDomain about.administrative_domain שינוי שם/מיפוי
deviceExternalId about.asset.asset_id מיפוי ישיר
device_product about.asset.asset_id מיפוי ישיר
device_vendor about.asset.asset_id מיפוי ישיר
fileHash about.file.full_path מיפוי ישיר
filePath about.file.full_path שינוי שם/מיפוי
_hash about.file.sha256 שינוי שם/מיפוי
fileHash about.file.sha256 שינוי שם/מיפוי
fsize about.file.size שינוי שם/מיפוי
dvchost about.hostname שם שונה/מיפוי
ips about.ip ממוזג
dvc_mac about.mac מיפוי: slot → mac_address
dvcmac about.mac ממוזג
mac_address about.mac ממוזג
deviceTranslatedAddress about.nat_ip ממוזג
Emne about.process.command_line מיפוי ישיר
Path about.process.command_line מיפוי ישיר
Subject about.process.command_line מיפוי ישיר
deviceProcessName about.process.command_line שינוי שם/מיפוי
dvcpid about.process.pid שם שונה/מיפוי
permissions about.resource.attribute.permissions ממוזג
additional_cfp1 additional.fields ממוזג
additional_cfp2 additional.fields ממוזג
additional_cfp3 additional.fields ממוזג
additional_cfp4 additional.fields ממוזג
additional_cn1 additional.fields ממוזג
additional_cn2 additional.fields ממוזג
additional_cn3 additional.fields ממוזג
additional_cs1 additional.fields ממוזג
additional_cs2 additional.fields ממוזג
additional_cs3 additional.fields ממוזג
additional_cs4 additional.fields ממוזג
additional_cs5 additional.fields ממוזג
additional_cs6 additional.fields ממוזג
additional_cs7 additional.fields ממוזג
additional_devicePayloadId additional.fields ממוזג
additional_eventId additional.fields ממוזג
additional_field additional.fields ממוזג
additional_field_key additional.fields מיפוי: smb_stage1 → additional_smb_stage1
additional_flexString1 additional.fields ממוזג
additional_fname additional.fields ממוזג
additional_smb_stage1 additional.fields ממוזג
cs2 additional.fields מיפוי: arc_test → additional_cs2
cs5_label additional.fields ממוזג
event_name extensions.auth.type מיפוי: logout ← AUTHTYPE_UNSPECIFIED, ‏ login ← AUTHTYPE_UNSPECIFIED
field_intermediary intermediary ממוזג
msg metadata.description שינוי שם/מיפוי
Generated metadata.event_timestamp ניתוח הכתובות שברשימה: yyyy-MM-ddTHH:mm:ss
Received metadata.event_timestamp נותח בתור yyyy-MM-ddTHH:mm:ss
rt metadata.event_timestamp נותח בתור yyyy-MM-ddTHH:mm:ssZ
event_name metadata.event_type מופו: logout ← USER_LOGOUT, login ← USER_LOGIN, `"LogSpyware","LogPredictiveMachin...
device_event_class_id metadata.product_event_type מיפוי ישיר
event_name metadata.product_event_type מיפוי ישיר
externalId metadata.product_log_id מיפוי ישיר
device_product metadata.product_name מיפוי ישיר
device_version metadata.product_version מיפוי ישיר
device_vendor metadata.vendor_name שם שונה/מיפוי
app_protocol_output network.application_protocol מיפוי ישיר
deviceDirection network.direction מופו: 0 ← INBOUND, 1 ← OUTBOUND
requestMethod network.http.method שם שונה/מיפוי
agentZoneURI network.http.referral_url מיפוי ישיר
requestClientApplication network.http.user_agent שם שונה/מיפוי
ip_protocol_out network.ip_protocol מיפוי ישיר
in network.received_bytes שינוי שם/מיפוי
out network.sent_bytes שינוי שם/מיפוי
sntdom principal.administrative_domain שינוי שם/מיפוי
sourceServiceName principal.application שינוי שם/מיפוי
Group_name principal.group.group_display_name מיפוי ישיר
Gruppenavn principal.group.group_display_name מיפוי ישיר
Device_name principal.hostname מיפוי ישיר
Enhetsnavn principal.hostname מיפוי ישיר
shost principal.hostname שינוי שם/מיפוי
principal_ip principal.ip ממוזג
shost principal.ip ממוזג
mac principal.mac ממוזג
sourceTranslatedAddress principal.nat_ip ממוזג
sourceTranslatedPort principal.nat_port שינוי שם/מיפוי
spt principal.port שינוי שם/מיפוי
sproc principal.process.command_line שינוי שם/מיפוי
spid principal.process.pid שם שונה/מיפוי
principal_role principal.user.attribute.roles ממוזג
suser principal.user.user_display_name מיפוי ישיר
suid principal.user.userid שינוי שם/מיפוי
_action security_result.action ממוזג
act security_result.action מופו: accept ← _action, deny ← _action
Action_Taken security_result.action_details מיפוי ישיר
act security_result.action_details מיפוי ישיר
cat security_result.category_details ממוזג
Scan_Type security_result.description מיפוי ישיר
Type security_result.description מיפוי ישיר
msg_data_2 security_result.description מיפוי ישיר
infection_channel_label security_result.detection_fields ממוזג
operasjon_label security_result.detection_fields ממוזג
operation_label security_result.detection_fields ממוזג
permission_label security_result.detection_fields ממוזג
spyware_Grayware_Type_label security_result.detection_fields ממוזג
threat_probability_label security_result.detection_fields ממוזג
tillatelse_label security_result.detection_fields ממוזג
mwProfile security_result.rule_name מיפוי ישיר
severity security_result.severity מיפוי: "0", "1", "2", "3", "LOW" → LOW, ‏ `‎"4", "5", "6", "MEDIUM", "SUBSTANTIAL", "INFO"...‎
severity security_result.severity_details מיפוי ישיר
Result security_result.summary מיפוי ישיר
appcategory security_result.summary מיפוי ישיר
reason security_result.summary שם שונה/מיפוי
Spyware security_result.threat_name מיפוי ישיר
Unknown_Threat security_result.threat_name מיפוי ישיר
Virus_Malware_Name security_result.threat_name מיפוי ישיר
oldFilePath src.file.full_path שינוי שם/מיפוי
oldFileSize src.file.size שם שונה/מיפוי
old_permissions src.resource.attribute.permissions ממוזג
dntdom target.administrative_domain שינוי שם/מיפוי
app target.application מיפוי ישיר
destinationServiceName target.application שם שונה/מיפוי
ahost target.hostname מיפוי ישיר
temp_dhost target.hostname מיפוי ישיר
IPv6_Address target.ip ממוזג
agt target.ip ממוזג
dst_ip target.ip ממוזג
ipv6 target.ip מופה: - ← IPv6_Address
atz target.location.country_or_region מיפוי ישיר
amac target.mac ממוזג
mac_address target.mac ממוזג
destination_translated_address target.nat_ip ממוזג
destinationTranslatedPort target.nat_port שינוי שם/מיפוי
dpt target.port שינוי שם/מיפוי
dproc target.process.command_line שינוי שם/מיפוי
File_name target.process.file.full_path מיפוי ישיר
Infected_Resource target.process.file.full_path מיפוי ישיר
Object target.process.file.full_path מיפוי ישיר
Objekt target.process.file.full_path מיפוי ישיר
dpid target.process.pid שינוי שם/מיפוי
resource_Type_label target.resource.attribute.labels ממוזג
request target.url מיפוי ישיר
target_role target.user.attribute.roles ממוזג
CustomerName target.user.user_display_name מיפוי ישיר
temp_duser target.user.user_display_name מיפוי ישיר
Bruker target.user.userid מיפוי ישיר
User_value target.user.userid מיפוי ישיר
temp_duid target.user.userid מיפוי ישיר
לא רלוונטי extensions.auth.type קבוע: AUTHTYPE_UNSPECIFIED
לא רלוונטי metadata.event_type קבוע: USER_LOGOUT
לא רלוונטי network.direction קבוע: INBOUND
לא רלוונטי security_result.severity קבוע: LOW

יומן שינויים

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

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