איסוף יומני LDAP של Red Hat Directory Server

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני LDAP של Red Hat Directory Server ב-Google Security Operations באמצעות סוכן Bindplane.

‫Red Hat Directory Server הוא שירות ספריות LDAP ברמה ארגונית שמבוסס על תקנים פתוחים. הוא מספק ניהול זהויות משתמשים, אימות ובקרת גישה מרוכזים לסביבות Linux ו-UNIX. שרת הגילוי שומר יומני גישה, שגיאות, ביקורת, כשלים בביקורת ואבטחה בספרייה /var/log/dirsrv/slapd-instance_name/, ומתעד חיבורי לקוחות, פעולות LDAP, שינויים בהגדרות, פעולות שנכשלו ואירועי אבטחה כמו ניסיונות אימות ובעיות הרשאה.

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

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

  • מכונה של Google SecOps
  • מארח Linux עם systemd
  • קישוריות רשת בין סוכן Bindplane לבין המארח של שרת הגילוי של Red Hat
  • אם השרת פועל מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
  • גישת רוט (Root) או גישת sudo למארח של Red Hat Directory Server
  • ‫Red Hat Directory Server 11 ואילך מותקן ופועל
  • שירות rsyslog מותקן ופועל במארח של שרת הגילוי

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

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

  • פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
  • פריסות מדור קודם: אפשר להמשיך להשתמש בקובץ האימות של ה-API להעברת נתונים (אפשרות 2) עד שה-API להעברת נתונים יפסיק לפעול ב-20 ביולי 2027.
  1. נכנסים אל Google Cloud המסוף ובוחרים את Google Cloud הפרויקט שמקושר למופע של Google SecOps.
  2. נכנסים לדף IAM & Admin > Service Accounts.
  3. לוחצים על Create service account.
  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 בספריית 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 ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את הייצוא.

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

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

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

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

התקנת סוכן Bindplane

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

התקנה ב-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
    

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

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

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/redhat_ds:
        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: REDHAT_DIRECTORY_SERVER
        raw_log_field: body
    
    service:
      pipelines:
        logs/redhat_ds:
          receivers:
            - udplog
          exporters:
            - chronicle/redhat_ds
    

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

מחליפים את ה-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

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

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

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

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

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

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

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

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

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

      sudo journalctl -u observiq-otel-collector -f
      

הפעלת רישום ביומן של ביקורת ושל כשלים בביקורת ב-Red Hat Directory Server

כברירת מחדל, ב-Red Hat Directory Server מופעל רישום ביומן של גישה, שגיאות ואבטחה, אבל מושבת רישום ביומן של ביקורת ושל ביקורת שנכשלה. כדאי להפעיל את היומנים האלה כדי לתעד את כל השינויים בספרייה ואת הפעולות שנכשלו.

  1. פותחים מסוף עם הרשאות בסיס או sudo במארח של שרת הגילוי.
  2. מפעילים את יומן הביקורת באמצעות הפקודה הבאה:

    dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditlog-logging-enabled=on
    
  3. כדי להפעיל את יומן הביקורת של הכשלים, מריצים את הפקודה הבאה:

    dsconf -D "cn=Directory Manager" instance_name config replace nsslapd-auditfaillog-logging-enabled=on
    
  4. מוודאים שכל סוגי היומנים מופעלים:

    dsconf -D "cn=Directory Manager" instance_name config get nsslapd-accesslog-logging-enabled nsslapd-errorlog-logging-enabled nsslapd-auditlog-logging-enabled nsslapd-auditfaillog-logging-enabled nsslapd-securitylog-logging-enabled
    
  5. מוודאים שקובצי היומן קיימים בספריית היומנים:

    ls -la /var/log/dirsrv/slapd-instance_name/
    

אופציונלי: הפעלת רישום ביומן באמצעות מסוף האינטרנט

  1. נכנסים למסוף האינטרנט של Red Hat Directory Server.
  2. בוחרים את המופע.
  3. עוברים אל Server > Logging.
  4. בוחרים את סוג היומן שרוצים להפעיל (לדוגמה, יומן ביקורת).
  5. מפעילים את המתג של רישום ביומן עבור סוג היומן שנבחר.
  6. לוחצים על שמירת הגדרות היומן.

הגדרת rsyslog להעברת יומני שרת של שרת הספריות לסוכן Bindplane

שרת הספריות של Red Hat כותב יומנים לקבצים ב-/var/log/dirsrv/slapd-instance_name/ ולא ישירות ל-syslog. אפשר להשתמש במודול rsyslog imfile כדי לעקוב אחרי קובצי היומן האלה ולהעביר את הרשומות לסוכן Bindplane.

  1. יוצרים קובץ תצורה חדש של rsyslog להעברת יומני שרת של Directory Server:

    sudo nano /etc/rsyslog.d/rhds-forward.conf
    
  2. מוסיפים את התוכן הבא לקובץ התצורה:

    # Load the imfile module to read log files
    module(load="imfile" PollingInterval="10")
    
    # Monitor the access log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/access"
        Tag="dirsrv-access"
        Severity="info"
        Facility="local6")
    
    # Monitor the error log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/errors"
        Tag="dirsrv-errors"
        Severity="err"
        Facility="local6")
    
    # Monitor the audit log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/audit"
        Tag="dirsrv-audit"
        Severity="info"
        Facility="local6")
    
    # Monitor the security log
    input(type="imfile"
        File="/var/log/dirsrv/slapd-instance_name/security"
        Tag="dirsrv-security"
        Severity="info"
        Facility="local6")
    
    # Forward all Directory Server logs to the Bindplane agent
    local6.* @BINDPLANE_IP:514
    
  3. מאמתים את תחביר ההגדרות של rsyslog:

    sudo rsyslogd -N1
    
  4. מפעילים מחדש את שירות rsyslog כדי שהשינויים ייכנסו לתוקף:

    sudo systemctl restart rsyslog
    
  5. כדי לוודא שהיומנים של שרת הגילוי מועברים, בודקים את היומנים של סוכן Bindplane:

    sudo journalctl -u observiq-otel-collector -f
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
attrs_label about.labels ממוזג
cn_label about.labels ממוזג
conn_label about.labels ממוזג
csn_label about.labels ממוזג
err_label about.labels ממוזג
etime_label about.labels ממוזג
fd_label about.labels ממוזג
filter_label about.labels ממוזג
label about.labels ממוזג
method_label about.labels ממוזג
msgid_label about.labels ממוזג
name_label about.labels ממוזג
nentries_label about.labels ממוזג
offset_label about.labels ממוזג
op_label about.labels ממוזג
optime_label about.labels ממוזג
org_label about.labels ממוזג
ou_label about.labels ממוזג
scope_label about.labels ממוזג
slot_label about.labels ממוזג
tag_label about.labels ממוזג
targetop_label about.labels ממוזג
version_label about.labels ממוזג
wtime_label about.labels ממוזג
desc metadata.description מיפוי ישיר
creationDate metadata.event_timestamp ניתוח הכתובות שברשימה: UNIX_MS
recordDate metadata.event_timestamp ניתוח הכתובות שברשימה: UNIX_MS
time metadata.event_timestamp ניתוח הכתובות שברשימה: dd/MMM/yyyy:HH:mm:ss Z
ts metadata.event_timestamp ניתוח הכתובות שברשימה: MMM d HH:mm:ss
operation metadata.product_event_type מיפוי ישיר
mrId metadata.product_log_id מיפוי ישיר
properties._ecs_agent_version metadata.product_version מיפוי ישיר
host principal.asset.hostname מיפוי ישיר
oid principal.asset.product_object_id מיפוי ישיר
host principal.hostname מיפוי ישיר
client_ip principal.ip ממוזג
namespace principal.namespace מיפוי ישיר
user principal.user.userid מיפוי ישיר
sec_result security_result ממוזג
properties._hostname target.asset.hostname מיפוי ישיר
properties.host target.asset.hostname מיפוי ישיר
properties._hostname target.hostname מיפוי ישיר
properties.host target.hostname מיפוי ישיר
target_ip target.ip ממוזג
properties.country target.location.country_or_region מיפוי ישיר
properties._file_path target.process.file.full_path מיפוי ישיר
properties._file_size target.process.file.size שינוי שם/מיפוי
discipline_label target.resource.attribute.labels ממוזג
document_type_label target.resource.attribute.labels ממוזג
environment_label target.resource.attribute.labels ממוזג
hostgroup_label target.resource.attribute.labels ממוזג
platform_label target.resource.attribute.labels ממוזג
product_label target.resource.attribute.labels ממוזג
project_label target.resource.attribute.labels ממוזג
base target.user.group_identifiers ממוזג
dn target.user.group_identifiers ממוזג
לא רלוונטי metadata.event_type קבוע: NETWORK_CONNECTION
לא רלוונטי metadata.product_name קבוע: REDHAT_DIRECTORY_SERVER
לא רלוונטי metadata.vendor_name קבוע: REDHAT
לא רלוונטי target.platform קבוע: LINUX
properties._file_inode event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties._file_offset event.idm.read_only_udm.additional.fields מופה מיומן השינויים
conn event.idm.read_only_udm.additional.fields מופה מיומן השינויים
op event.idm.read_only_udm.additional.fields מופה מיומן השינויים
err event.idm.read_only_udm.additional.fields מופה מיומן השינויים
tag event.idm.read_only_udm.additional.fields מופה מיומן השינויים
nentries event.idm.read_only_udm.additional.fields מופה מיומן השינויים
wtime event.idm.read_only_udm.additional.fields מופה מיומן השינויים
optime event.idm.read_only_udm.additional.fields מופה מיומן השינויים
etime event.idm.read_only_udm.additional.fields מופה מיומן השינויים
csn event.idm.read_only_udm.additional.fields מופה מיומן השינויים
cn event.idm.read_only_udm.additional.fields מופה מיומן השינויים
ou event.idm.read_only_udm.additional.fields מופה מיומן השינויים
filter event.idm.read_only_udm.additional.fields מופה מיומן השינויים
attrs event.idm.read_only_udm.additional.fields מופה מיומן השינויים
scope event.idm.read_only_udm.additional.fields מופה מיומן השינויים
o event.idm.read_only_udm.additional.fields מופה מיומן השינויים
targetop event.idm.read_only_udm.additional.fields מופה מיומן השינויים
msgid event.idm.read_only_udm.additional.fields מופה מיומן השינויים
method event.idm.read_only_udm.additional.fields מופה מיומן השינויים
version event.idm.read_only_udm.additional.fields מופה מיומן השינויים
fd event.idm.read_only_udm.additional.fields מופה מיומן השינויים
slot event.idm.read_only_udm.additional.fields מופה מיומן השינויים
name event.idm.read_only_udm.additional.fields מופה מיומן השינויים
properties.discipline" ,"properties.document_type" ,"properties.environment" ,"properties.hostgroup" ,"properties.platform" ,"properties.product target.resource.attribute.labels מופה מיומן השינויים

יומן שינויים

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

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