איסוף יומנים של LogonBox

נתמך ב:

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

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

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

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

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

קבלת קובץ אימות להטמעת נתונים ב-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/logonbox:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: LOGONBOX
            raw_log_field: body
    
    service:
        pipelines:
            logs/logonbox:
                receivers:
                    - udplog
                exporters:
                    - chronicle/logonbox
    

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

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

  • הגדרת מקלט:

    • ‫udplog: סוג הנמען על סמך הפרוטוקול:
      • udplog עבור UDP syslog
      • ‫tcplog for TCP syslog
      • ‫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 ב-LogonBox

  1. נכנסים למסוף הניהול של LogonBox כאדמינים.
  2. מנווטים אל דוחות > יומן ביקורת.
  3. מגדירים את הגדרות הייצוא של syslog:
    • שרת Syslog: מזינים את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה, 192.168.1.100).
    • יציאה: מזינים 514 (חייב להיות זהה ליציאת המקלט של Bindplane).
    • פרוטוקול: בוחרים באפשרות UDP (חייב להיות זהה לסוג המקלט של Bindplane).
  4. בוחרים את קטגוריות האירועים להעברה (לדוגמה, איפוס סיסמאות, אימות זהות, ניהול משתמשים וקבוצות).
  5. לוחצים על Save.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
additional.fields בוצע מיזוג מהמאפיינים attr_associatedPrincipals_label, ‏ sAMAccountName_label, ‏ attr_local_label, ‏ msDS-PrincipalName_label, ‏ attr_realmType_label, ‏ attr_selfCreated_label, ‏ attr_administrative_label על סמך תנאים
attr_principalDesc, desc metadata.description הערך מ-attr_principalDesc אם product_event_type תואם ל-changePassword|SessionService, אחרת מ-attr_principalDesc אם הוא לא ריק, אחרת מ-desc
event_type metadata.event_type הערך מועתק ישירות מ-event_type אחרי שהלוגיקה מותנית מגדירה אותו על סמך product_event_type ודגלי נוכחות
product_event_type metadata.product_event_type הערך הועתק ישירות
metadata.product_name ההגדרה היא LogonBox
metadata.vendor_name ההגדרה היא LOGONBOX
network.application_protocol הערך שמוגדר הוא DNS אם product_event_type תואם ל-AnswerService והתנאים מתקיימים
dns_answer network.dns.answers מוזג מ-dns_answer
dns_question network.dns.questions מוזג מ-dns_question
attr_userAgent, attr_userAgentVersion network.http.parsed_user_agent הערך משורשר מ-attr_userAgent ומ-attr_userAgentVersion אם שניהם קיימים, אחרת מ-attr_userAgent, ואז מומר ל-parseduseragent ומשנה את השם
attr_userAgent, attr_userAgentVersion network.http.user_agent מחובר מ-attr_userAgent ומ-attr_userAgentVersion אם שניהם קיימים, אחרת מ-attr_userAgent
שם המארח principal.asset.hostname הערך הועתק ישירות
attr_ipAddress principal.asset.ip הערך הועתק ישירות
שם המארח principal.hostname הערך הועתק ישירות
attr_ipAddress principal.ip הערך הועתק ישירות
attr_os principal.platform באותיות רישיות ומוגדר אם יש התאמה ל- (?i)LINUX|MAC|WINDOWS
attr_osVersion principal.platform_version הערך מועתק ישירות אם הוא לא תואם ל-unknown (?i)
attr_principalRealm_label, attr_unassignedRoles_label, attr_assignedRoles_label, attr_oldResourceName_label, attr_roles_label, attr_resumedPrincipalName_label, attr_resumedPrincipalRealm_label, attr_resumedPrincipal_label, attr_module_label, reconcile_map_label, users_map_label, groups_map_label, createUser_map_label, user_map_label, mobile_map_label principal.resource.attribute.labels מוזגו מתוויות שונות שנוצרו מ-attr_principalRealm,‏ attr_unassignedRoles,‏ attr_assignedRoles,‏ attr_oldResourceName,‏ attr_roles,‏ attr_resumedPrincipalName,‏ attr_resumedPrincipalRealm,‏ attr_resumedPrincipal,‏ attr_module וממיפויים מ-reconcile,‏ users,‏ groups,‏ createUser,‏ user,‏ mobile על סמך תנאים
attr_resourceName principal.resource.name הערך הועתק ישירות
attr_resourceId principal.resource.product_object_id הערך הועתק ישירות
כתובת אימייל principal.user.email_addresses המיזוג מתבצע אם כתובת האימייל תקינה
ImmutableID, ‏ attr_uuid principal.user.product_object_id הערך מ-ImmutableID אם product_event_type תואם ל-changePassword|userUpdated|userCreated|setPassword|answer|accountUnlockNoSuspension, אחרת מ-attr_uuid
attr_scheme principal.user.role_name הערך הועתק ישירות
attr_principalDesc principal.user.user_display_name הערך מועתק ישירות אם product_event_type תואם ל-changePassword|SessionService
attr_principalName principal.user.userid הערך הועתק ישירות
authy_code_length_label, ‏ authy_window_length_label, ‏ authy_step_size_label, ‏ msauthenticator_code_length_label, ‏ msauthenticator_window_length_label, ‏ msauthenticator_step_size_label, ‏ googleUser_code_length_label, ‏ googleUser_window_length_label, ‏ googleUser_step_size_label security_result.detection_fields מוזגו מתוויות שנוצרו מ-authy.code.length, ‏ authy.window.length, ‏ authy.step.size, ‏ msauthenticator.code.length, ‏ msauthenticator.window.length, ‏ msauthenticator.step.size, ‏ googleUser.code.length, ‏ googleUser.window.length, ‏ googleUser.step.size אם קיימות
cn target.resource.attribute.labels בוצע מיזוג מ-full_name_label שנוצר מ-cn, ומ-attr_disabledRealm_label מ-attr_disabledRealm
attr_lastModified target.resource.attribute.last_update_time התאריך שנותח מהמאפיין attr_lastModified באמצעות ISO8601 או d MMM yyyy HH:mm:ss
attr_created target.resource.attribute.creation_time התאריך שנותח מהמאפיין attr_created באמצעות ISO8601 או d MMM yyyy HH:mm:ss
givenName target.user.first_name הערך הועתק ישירות
ou target.user.group_identifiers מוזג מ-ou אם product_event_type תואם ל-userUpdated|userCreated|changePassword|setPassword|answer|accountUnlockNoSuspension
sn target.user.last_name הערך הועתק ישירות
attr_uuid, attr_disabledPrincipal target.user.product_object_id הערך מ-attr_uuid אם product_event_type תואם ל-userUpdated|userCreated|changePassword|setPassword|answer|accountUnlockNoSuspension או ל-groupCreated|groupUpdated או ל-attr_group או ל-group, אחרת מ-attr_disabledPrincipal אם accountDisabled
displayName, description target.user.user_display_name הערך מ-displayName אם הוא לא ריק, אחרת מ-description אם product_event_type תואם ל-userUpdated|userCreated|changePassword|setPassword|answer|accountUnlockNoSuspension
userPrincipalName, attr_user, attr_associatedPrincipals, attr_disabledPrincipalName target.user.userid הערך מ-userPrincipalName אם product_event_type תואם ל-userUpdated|userCreated|changePassword|setPassword|answer|accountUnlockNoSuspension, אחרת attr_user אם לא מוגדר, אחרת attr_associatedPrincipals אם groupCreated|groupUpdated או attr_group, אחרת attr_user אם group, אחרת attr_disabledPrincipalName אם accountDisabled
attr_group target.group.group_display_name הערך מועתק ישירות אם הערך של product_event_type תואם ל-groupCreated|groupUpdated או אם קיים attr_group
attr_uuid target.group.product_object_id הערך מועתק ישירות אם הערך של product_event_type תואם ל-groupCreated|groupUpdated או אם קיים attr_group

יומן שינויים

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

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