איסוף יומני OpenLDAP

נתמך ב:

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

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

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

חשוב לוודא שיש לכם את הדברים הבאים:

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

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Collection Agents.
  3. מורידים את קובץ האימות להטמעת נתונים. שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן 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 systemctl status observiq-otel-collector
    
  • ‫Windows:

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

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

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

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

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

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

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

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

אפשר להגדיר את OpenLDAP (slapd) כך שיתעד ביומן באמצעות syslog. מגדירים את שד ה-syslog להעברת יומנים של OpenLDAP לסוכן Bindplane.

  1. מוודאים ש-OpenLDAP מוגדר להתחבר ל-syslog. בודקים את ההנחיה loglevel ב-slapd.conf או ב-cn=config:

    loglevel stats conns
    
  2. יומני OpenLDAP נשלחים כברירת מחדל אל local4 syslog facility. מגדירים את rsyslog להעברת היומנים האלה לסוכן Bindplane. יוצרים קובץ תצורה:

    sudo nano /etc/rsyslog.d/openldap-forward.conf
    
  3. מוסיפים את התוכן הבא:

    local4.* @BINDPLANE_AGENT_IP:514
    
  4. מפעילים מחדש את שירות rsyslog:

    sudo systemctl restart rsyslog
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
op, fd, ou, cn, dc, dc1, base1, base2, base3, scope_data, valueData, method, filter, tag_data, err, attrData, ou_2, ou_1, syslog_message, immutable_user_id, resource additional.fields המיזוג עם תוויות שנוצרו מהשדות האלה
extensions.auth.type הערך שמוגדר הוא AUTHTYPE_UNSPECIFIED
caller_ip, proxy1_ip, proxy2_ip מתווך מוזג ממתווך, proxy_1, ‏ proxy_2
msg1, inner_message metadata.description ערך מ-msg1 או מ-inner_message
metadata.event_type הערך שמוגדר בהתחלה הוא GENERIC_EVENT, אחר כך STATUS_UPDATE אם כתובת ה-IP של הגורם הראשי קיימת, USER_UNCATEGORIZED אם המשתמש קיים, ו-USER_LOGIN אם חותמת הזמן או inner_ts קיימים
ldap_action metadata.product_event_type ערך מ-ldap_action באותיות קטנות
ldap_conn metadata.product_log_id הערך מ-ldap_conn אחרי ההסרה של conn=‎
user_agent network.http.user_agent הערך הועתק ישירות
session_id network.session_id הערך הועתק ישירות
principal_ip, prin_ip, caller_ip, r_ip_or_host, proxy_client_ip, src_ip, client_ip principal.asset.ip מוזג מ-principal_ip (אחרי החלפת - ב-.), מ-prin_ip, מ-caller_ip, מ-r_ip_or_host (אם IP), מ-proxy_client_ip, מ-src_ip, מ-client_ip
r_ip_or_host, src_host principal.hostname ערך מ-r_ip_or_host אם שם המארח, אחרת src_host
principal_ip, prin_ip, caller_ip, r_ip_or_host, proxy_client_ip, src_ip, client_ip principal.ip מוזגו מ-principal_ip (אחרי החלפת המקף בנקודה), prin_ip, ‏ caller_ip, ‏ r_ip_or_host (אם IP), ‏ proxy_client_ip, ‏ src_ip, ‏ client_ip
מדינה principal.location.country_or_region הערך הועתק ישירות
prin_port, ‏ port, ‏ src_port principal.port ערך מ-prin_port,‏ port או src_port, שהומר למספר שלם
syslog_process principal.process.file.full_path הערך הועתק ישירות
syslog_pid principal.process.pid הערך הועתק ישירות
org_name principal.user.company_name הערך הועתק ישירות
user, cn, uid principal.user.userid ערך מהמשתמש, cn או uid
security_result security_result מיזוג ישיר
action, sec_action security_result.action ערך מהפעולה (על סמך קודי שגיאה) או מהפעולה המשנית (על סמך login_status)
resource, immutable_user_id security_result.detection_fields מוזגו עם תוויות מהמשאב ומ-immutable_user_id
inner_descrption, security_description security_result.description ערך מ-inner_descrption או מ-security_description
tuser, username, userid target.user.userid ערך מ-tuser,‏ username או userid
metadata.product_name ההגדרה היא OpenLDAP
metadata.vendor_name מגדירים את האפשרות "OpenLDAP"
eventType event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
cn event.idm.read_only_udm.additional.fields מופה מיומן השינויים
sequenceId event.idm.read_only_udm.additional.fields מופה מיומן השינויים
dc_2 event.idm.read_only_udm.additional.fields מופה מיומן השינויים
dc_3 event.idm.read_only_udm.additional.fields מופה מיומן השינויים
dc event.idm.read_only_udm.additional.fields מופה מיומן השינויים
dc_1 event.idm.read_only_udm.additional.fields מופה מיומן השינויים
user event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
path event.idm.read_only_udm.principal.process.file.full_path מופה מיומן השינויים
ip1 principal.ip מופה מיומן השינויים
base", "err", "attr", "tag", "scope", and "valueData additional.fields מופה מיומן השינויים
security_result.action ALLOW מופה מיומן השינויים
security_result.action BLOCK מופה מיומן השינויים

יומן שינויים

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

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