איסוף יומנים של Apache Cassandra

גרסת כלי הניתוח: 4.0

נתמך ב:

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

‫Apache Cassandra יוצרת יומנים לפעולות במסד הנתונים, לאירועים באשכול ולפעילות המערכת. הכלי לניתוח מחלץ שדות באמצעות דפוסי grok ומסנני JSON, ואז ממפה אותם למודל הנתונים המאוחד (UDM).

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

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

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

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Collection Agents.
  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 /etc/bindplane-agent/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/cassandra:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: CASSANDRA
            raw_log_field: body
    
    service:
        pipelines:
            logs/cassandra_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/cassandra
    

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

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

  • הגדרת מקלט:

    • ‫listen_address: כתובת ה-IP והיציאה להאזנה:
      • ‫0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • יציאה 514 היא יציאת syslog רגילה (נדרשת הרשאת root ב-Linux; אפשר להשתמש ב-1514 ללא הרשאת root)
  • הגדרת כלי הייצוא:

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

שמירת קובץ ההגדרות

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

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

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

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

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

      ```bash
      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 ב-Apache Cassandra

  1. נכנסים למארח Apache Cassandra באמצעות SSH.
  2. פותחים את קובץ ההגדרות logback.xml:

    • ‫Apache Cassandra (רוב הגרסאות): $(CASSANDRA_HOME)/conf
    • ‫Datastax Enterprise (התקנת חבילה): /etc/dse
    • ‫Datastax Enterprise (התקנת tar): $(TARBALL_ROOT)/resources/cassandra/conf
  3. מוסיפים את הגדרת Appender הבאה לקובץ logback.xml בשורה 28:

    <appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>BINDPLANE_IP</syslogHost>
        <port>BINDPLANE_PORT</port>
        <facility>LOCAL7</facility>
        <throwableExcluded>true</throwableExcluded>
        <suffixPattern>%thread:%level:%logger{36}:%msg</suffixPattern>
    </appender>
    
  4. מחליפים את BINDPLANE_IP ואת BINDPLANE_PORT בכתובת ה-IP ובפורט של סוכן Bindplane בפועל.

  5. מוסיפים את הקוד הבא לבלוק של כלי הרישום הבסיסי <root level="INFO"> בקובץ logback.xml:

    המיקום שבו השורה הזו מוכנסת תלוי בגרסה של Apache Cassandra:

    • ‫Apache Cassandra 5.0.x, שורה 123
    • ‫Apache Cassandra 4.0.x ו-4.1.x, שורה 115
    • ‫Apache Cassandra 3.11.x ו-3.0.x, שורה 92
    • ‫Datastax Enterprise (כל הגרסאות), שורה 121
    <appender-ref ref="SYSLOG" />
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
agent.ephemeral_id observer.labels.value הערך של agent.ephemeral_id מהודעת ה-JSON הפנימית.
agent.hostname observer.hostname הערך של agent.hostname מהודעת ה-JSON הפנימית.
agent.id observer.asset_id שרשור של filebeat: והערך של agent.id מהודעת ה-JSON הפנימית.
agent.name observer.user.userid הערך של agent.name מהודעת ה-JSON הפנימית.
agent.type observer.application הערך של agent.type מהודעת ה-JSON הפנימית.
agent.version observer.platform_version הערך של agent.version מהודעת ה-JSON הפנימית.
cloud.availability_zone principal.cloud.availability_zone הערך של cloud.availability_zone מהודעת ה-JSON הפנימית.
cloud.instance.id principal.resource.product_object_id הערך של cloud.instance.id מהודעת ה-JSON הפנימית.
cloud.instance.name principal.resource.name הערך של cloud.instance.name מהודעת ה-JSON הפנימית.
cloud.machine.type principal.resource.attribute.labels.value הערך של cloud.machine.type מהודעת ה-JSON הפנימית, שבה הערך התואם של key הוא machine_type.
cloud.provider principal.resource.attribute.labels.value הערך של cloud.provider מהודעת ה-JSON הפנימית, שבה הערך התואם של key הוא provider.
event_metadata._id metadata.product_log_id הערך של event_metadata._id מהודעת ה-JSON הפנימית.
event_metadata.version metadata.product_version הערך של event_metadata.version מהודעת ה-JSON הפנימית.
host.architecture target.asset.hardware.cpu_platform הערך של host.architecture מהודעת ה-JSON הפנימית.
host.fqdn target.administrative_domain הערך של host.fqdn מהודעת ה-JSON הפנימית.
host.hostname target.hostname הערך של host.hostname מהודעת ה-JSON הפנימית.
host.id target.asset.asset_id שרשור של Host Id: והערך של host.id מהודעת ה-JSON הפנימית.
host.ip target.asset.ip מערך של כתובות IP מ-host.ip בהודעת ה-JSON הפנימית.
host.mac target.mac מערך של כתובות MAC מ-host.mac בהודעת ה-JSON הפנימית.
host.os.kernel target.platform_patch_level הערך של host.os.kernel מהודעת ה-JSON הפנימית.
host.os.platform target.platform מגדירים את הערך LINUX אם הערך של host.os.platform הוא debian.
host.os.version target.platform_version הערך של host.os.version מהודעת ה-JSON הפנימית.
hostname principal.hostname הערך של hostname שחולץ מהשדה message באמצעות grok.
key security_result.detection_fields.value הערך של key שחולץ מהשדה message באמצעות grok, כאשר הערך התואם של key הוא key.
log.file.path principal.process.file.full_path הערך של log.file.path מהודעת ה-JSON הפנימית.
log_level security_result.severity מיפוי על סמך הערך של log_level: DEBUG,‏ INFO ו-AUDIT ממופים ל-INFORMATIONAL;‏ ERROR ממופה ל-ERROR;‏ WARNING ממופה ל-MEDIUM.
log_level security_result.severity_details הערך של log_level שחולץ מהשדה message באמצעות grok.
log_type metadata.log_type הערך של log_type מיומן הגולמי.
message security_result.description תיאור שחולץ מהשדה message באמצעות grok.
message target.process.command_line שורת הפקודה שחולצה מהשדה message באמצעות grok.
now security_result.detection_fields.value הערך של now שחולץ מהשדה message באמצעות grok, כאשר key התואם הוא now. מנותח מהשדה event_time שחולץ מהשדה message באמצעות grok. אם גם hostname וגם host.hostname קיימים, צריך להגדיר את הערך כ-USER_RESOURCE_ACCESS. אחרת, צריך להגדיר את הערך כ-GENERIC_EVENT. הערך שהוגדר הוא CASSANDRA. הערך שהוגדר הוא CASSANDRA. הערך שהוגדר הוא ephemeral_id. מגדירים את הערך VIRTUAL_MACHINE אם קיים הערך cloud.instance.name. מגדירים את הערכים key ו-now בשדות הזיהוי המתאימים.
timestamp timestamp מהשדה create_time ביומן הגולמי.
authenticated_var event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
authenticated_var event.idm.read_only_udm.target.user.userid מופה מיומן השינויים
user_var event.idm.read_only_udm.target.user.userid מופה מיומן השינויים
operation event.idm.read_only_udm.security_result.description מופה מיומן השינויים
operation event.idm.read_only_udm.target.process.command_line מופה מיומן השינויים

יומן שינויים

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

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