איסוף יומני CA ACF2

גרסת המנתח: 2.0

נתמך ב:

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

‫Broadcom ACF2 (Access Control Facility 2)‎ ל-z/OS הוא מוצר אבטחה למחשבי מיינפריים שמספק בקרת גישה, אימות וביקורת למערכות IBM z/OS. ‫ACF2 מתעד אירועי אבטחה ברשומות של IBM System Management Facility (SMF) (סוג ברירת המחדל הוא 230), כולל ניסיונות אימות, הפרות של גישה לקבוצות נתונים, אירועי גישה למשאבים, רישום פקודות TSO ושינויים במסד הנתונים. צריך להעביר את רשומות ה-SMF האלה ל-Chronicle באמצעות סוכן של צד שלישי, כמו BMC AMI Defender ל-z/OS.

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

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

  • מכונה של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות רשת בין סוכן Bindplane לבין סוכן BMC AMI Defender for z/OS
  • אם אתם משתמשים בשרת proxy, ודאו שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
  • ‫BMC AMI Defender for z/OS מותקן ופועל ב-z/OS LPAR שבו ACF2 פעיל
  • גישה לשינוי קובצי הפרמטרים של BMC AMI Defender בקבוצת הנתונים amihlq.CZAGENT.PARM
  • הרשאה להפעיל או לשנות את המשימה שהתחילה ב-CZAGENT ב-z/OS

קבלת פרטי כניסה ל-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. לוחצים על 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 בלבד, עוברים אל הגדרות > פרופיל.
  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/acf2_logs:
        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: CA_ACF2
        raw_log_field: body
        ingestion_labels:
          env: production
          source: acf2
    
    service:
      pipelines:
        logs/acf2_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/acf2_logs
    
  2. מחליפים את ה-placeholders הבאים:

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

      • ‫listen_address: צריך להגדיר את הערך 0.0.0.0:514 כדי להאזין בכל הממשקים ביציאת UDP‏ 514

        • במערכות Linux שפועלות בלי הרשאות root, צריך להשתמש ביציאה 1514 או יותר
        • היציאה הזו צריכה להתאים להגדרת ההצהרה של BMC AMI Defender SERVER
    • הגדרת הייצוא:

      • ‫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 ב-customer ID. פרטים נוספים זמינים במאמר קבלת מזהה לקוח ב-Google SecOps.

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

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

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

      • ‫log_type: מגדירים את הערך CA_ACF2 (תווית הטמעה של Chronicle ליומני ACF2)

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

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

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

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

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

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

  • 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"
      

הגדרת BMC AMI Defender ל-z/OS להעברת רשומות ACF2 SMF

עורכים את הרכיב $$$SERVR parameter member

  1. Sign in to the z/OS system using TSO/ISPF or a 3270 emulator.
  2. Navigate to the BMC AMI Defender parameter library:
    1. Enter ISPF at the TSO READY prompt.
    2. Select option 2 (Edit).
    3. In the ISPF Library field, enter the data set name: amihlq.CZAGENT.PARM (replace amihlq with your installation high-level qualifier).
    4. Press Enter.
  3. Edit the $$$SERVR:
    1. מקלידים E לצד האיבר של הפרמטר$$$SERVR member.
    2. Press Enter.
  4. Locate the SERVER statement section (approximately line 40-60).
  5. Uncomment one of the SERVER statements by removing the leading semicolon (;).
  6. Configure the SERVER statement with the Bindplane agent IP address and port:

    SERVER bindplane-host-ip:514 TRANS(UDP) MAXMSG(2000)
    
    • Replace bindplane-host-ip with the IP address of the Bindplane agent host (for example, 192.168.1.100).
    • If using a non-standard port (for example, 1514), specify: bindplane-host-ip:1514.
    • TRANS(UDP) specifies UDP transport protocol (recommended for syslog).
    • MAXMSG(2000) sets the maximum message length to 2000 bytes (ACF2 records may require larger sizes).
  7. Verify the OPTIONS statement for syslog format:

    1. Scroll up to locate the OPTIONS statements (approximately line 10-30).
    2. Ensure one of the following OPTIONS statements is uncommented based on your preferred format:

      OPTIONS IF(RFC 3164) SIEM(RFC 3164) TIMESTAMP INSTNAME(SIEM.Agent)
      
      • RFC 3164: Standard syslog format (recommended for Chronicle)
      • CEF: Common Event Format (alternative)
      • LEEF: Log Event Extended Format (alternative)
      • JSON: JSON format (alternative)
  8. Save the changes:

    1. Press F3 to exit the editor.
    2. Type SAVE when prompted.
    3. Press Enter.

Edit the $$$CONFG כדי להפעיל את איסוף הרשומות של ACF2 SMF

  1. ברשימת החברים בקבוצת הנתונים amihlq.CZAGENT.PARM, עורכים את החבר $$$CONFG member:

    1. Type E next to the $$$CONFG.

    2. מקישים על Enter.
  2. מאתרים את מתג בחירת הרשומות של ACF2 SMF (מחפשים את ACF2 או את SMF 230).

  3. מבטלים את ההערה של הצהרת SELECT של ACF2:

    SELECT IF(ACF2) SMF(ACF2)
    
    • האפשרות הזו מאפשרת לאסוף רשומות ACF2 SMF (סוג ברירת המחדל הוא 230).
    • אם האתר שלכם משתמש בסוג רשומת SMF אחר ל-ACF2, צריך לאמת את הסוג באמצעות הפקודה: ACF SHOW SYSTEMS ב-TSO.
  4. שומרים את השינויים:

    1. מקישים על F3 כדי לצאת מהעורך.
    2. מקלידים SAVE כשמוצגת בקשה.
    3. מקישים על Enter.
  5. יצירה או עריכה של איבר הפרמטר של הצהרת SMF ACF2

    1. ברשימת החברים של קבוצת הנתונים amihlq.CZAGENT.PARM, בודקים אם יש חבר בשם $$$ACF2 or SMFACF2 exists.
    2. If the member does not exist, create it:

      1. Type C (Create) on the command line.
      2. Enter the member name: $$‎$ACF2.‎.
      3. מקישים על Enter.
    3. עורכים את החבר ומוסיפים את הצהרת SMF ACF2 הבאה:

      SMF ACF2(230) FACILITY(SECURITY4) SEVERITY(INFORMATIONAL)
      
      • ‫ACF2(230): מציין את סוג רשומת ה-SMF של ACF2 (ברירת המחדל היא 230, צריך לאמת באמצעות ACF SHOW SYSTEMS).
      • ‫FACILITY(SECURITY4): הגדרת מתקן ה-syslog ל-Security‏ (4).
      • ‫SEVERITY(INFORMATIONAL): הגדרת רמת החומרה שמוגדרת כברירת מחדל ל"לידיעה".

        • סיסמה לא חוקית או הפרות של הרשאות נשלחות באופן אוטומטי עם רמת החומרה ERROR.
        • הפרות של משאבים נשלחות באופן אוטומטי עם רמת החומרה ERROR.
    4. אפשר גם להגדיר סוגי משנה ורמות חומרה ספציפיים של ACF2:

      SMF ACF2(230) +
        FACILITY(SECURITY4) +
        SEVERITY(INFORMATIONAL) +
        SUBTYPES(P SEV(ERROR)) +
        SUBTYPES(V SEV(ERROR)) +
        SUBTYPES(D SEV(ERROR))
      
      • סוג משנה P: אירועים של סיסמה או רשות לא חוקיות (חומרה: שגיאה)
      • סוג משנה V: הפרות של משאבים (חומרה: ERROR)
      • סוג משנה D: הפרות של גישה לקבוצת נתונים (חומרה: שגיאה)
    5. שומרים את השינויים:

      1. מקישים על F3 כדי לצאת מהעורך.
      2. מקלידים SAVE כשמוצגת בקשה.
      3. מקישים על Enter.
    6. רענון קובץ הפרמטרים של BMC AMI Defender

      1. יוצאים מ-ISPF וחוזרים להנחיה TSO READY.
      2. מפעילים את הפקודה MODIFY כדי לטעון מחדש את קובץ הפרמטרים:

        F CZAGENT,PARMS
        
        • מחליפים את CZAGENT בשם המשימה שהתחילה ב-BMC AMI Defender, אם הוא שונה.
        • הפקודה הזו טוענת מחדש את קובץ הפרמטרים בלי לעצור את הסוכן.
      3. כדי לאמת את ההגדרות, בודקים את הפלט של CZAPRINT:

        1. ב-ISPF, בוחרים באפשרות 3.4 (DSLIST).
        2. מזינים את תבנית השם של קבוצת הנתונים: CZAGENT.CZAPRINT (או את מוסכמת מתן השמות הספציפית לאתר).
        3. מקישים על Enter.
        4. מקלידים B (עיון) לצד קבוצת הנתונים העדכנית ביותר של CZAPRINT.
        5. מקישים על Enter.
        6. מחפשים הודעות שמציינות שהחיבור לשרת ה-syslog הצליח:

          • CZA0070I Connected to server bindplane-host-ip:514
          • CZA0100I SMF ACF2 statement processed
      4. אם המשימה שהתחילה ב-CZAGENT לא פועלת, צריך להפעיל אותה:

        S CZAGENT
        

      אימות העברת היומנים של ACF2

      1. יוצרים אירועי אבטחה לבדיקה ב-ACF2:

        1. ב-TSO, מנסים לגשת לקבוצת נתונים שאין לכם הרשאת גישה אליה.
        2. ניסיון להתחבר עם סיסמה לא חוקית (באמצעות חשבון בדיקה).
        3. מריצים פקודת TSO שמתועדת ביומן על ידי ACF2.
      2. בודקים את יומני הסוכן של Bindplane כדי לוודא שהתקבלו הודעות syslog של ACF2:

        • Linux:

          sudo journalctl -u observiq-otel-collector -f | grep ACF2
          
        • ‫Windows:

          type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log" | findstr ACF2
          
      3. נכנסים למסוף Google SecOps ומוודאים שהיומנים של ACF2 נקלטים:

        1. עוברים אל חיפוש > חיפוש ב-UDM.
        2. מזינים את השאילתה הבאה:

          metadata.log_type = "CA_ACF2"
          
        3. מוודאים שאירועי האבטחה של ACF2 מופיעים בתוצאות החיפוש.

      טבלת מיפוי UDM

      שדה ביומן מיפוי UDM Logic (פונקציה לוגית)
      extensions.auth.mechanism מנגנון האימות שבו נעשה שימוש.
      extensions.auth.type סוג האימות.
      סכום metadata.description תיאור האירוע.
      metadata.event_type סוג האירוע.
      event_type, cat metadata.product_event_type סוג האירוע הספציפי למוצר.
      product_version metadata.product_version גרסת המוצר.
      טרמינל principal.hostname שם המארח שמשויך לחשבון הראשי.
      name principal.user.user_display_name השם המוצג של המשתמש.
      usrName principal.user.userid מזהה המשתמש.
      security_result.action הפעולה שבוצעה על ידי מערכת האבטחה.
      security_result.category הקטגוריה של תוצאת האבטחה.
      מחלקה security_result.category_details פרטים נוספים על קטגוריית תוצאות האבטחה.
      reason security_result.severity רמת החומרה של תוצאת האבטחה.
      reason security_result.severity_details מידע מפורט על רמת החומרה.
      logstr security_result.summary סיכום של תוצאת האבטחה.
      job_id target.application האפליקציה שמטורגטת.
      job_group target.group.group_display_name השם המוצג של הקבוצה.
      target.namespace מרחב השמות של היעד.
      dsn target.resource.name שם המשאב.
      נפח מסחר target.resource.parent משאב ההורה.
      res, dsn target.resource.product_object_id מזהה האובייקט הספציפי למוצר.
      target.resource.resource_type סוג המשאב.
      name target.user.user_display_name השם המוצג של משתמש היעד.
      usrName target.user.userid מזהה המשתמש של משתמש היעד.
      product_name metadata.product_name שם המוצר שיוצר את האירוע.
      vendor_name metadata.vendor_name שם הספק.

      יומן שינויים

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

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