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

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

נתמך ב:

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

‫Apache Tomcat הוא שרת של אפליקציות אינטרנט שיוצר יומני גישה בפורמט JSON לבקשות HTTP, לאירועי אימות ולפעילות השרת. הכלי לניתוח מחלץ שדות מיומנים בפורמט JSON ופורמט syslog, וממפה אותם למודל הנתונים המאוחד (UDM).

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

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

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

קבלת קובץ אימות להטמעת נתונים ב-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 בשרת Tomcat כדי לאסוף קובצי יומן

מתקינים את סוכן Bindplane בשרת Tomcat עצמו, כי הוא צריך לקרוא קובצי יומן מקומיים.

התקנה ב-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 להטמעת יומני Tomcat ושליחה ל-Google SecOps

איתור קובץ ההגדרות

  • ‫Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • ‫Windows:

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

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

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

    receivers:
        filelog/tomcat:
            include:
                - /path/to/tomcat/logs/access-log.*.json
            start_at: beginning
    
    exporters:
        chronicle/tomcat:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: TOMCAT
            raw_log_field: body
    
    service:
        pipelines:
            logs/tomcat_to_chronicle:
                receivers:
                    - filelog/tomcat
                exporters:
                    - chronicle/tomcat
    

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

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

  • הגדרת מקלט:

    • ‫include: הנתיב לקובצי יומן הגישה של Tomcat בפורמט JSON. צריך להתאים את ההגדרות כך שיתאימו לספריית היומנים ולתבנית הקבצים של Tomcat.
    • ‫start_at: מגדירים את הערך beginning כדי לקרוא יומנים קיימים, או end כדי לקרוא רק רשומות חדשות.
  • הגדרת כלי הייצוא:

    • ‫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. מוודאים שהשירות פועל:

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

      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"
        

הגדרת יומני גישה בפורמט JSON ב-Tomcat

  1. פותחים את קובץ ההגדרות של Tomcat בכתובת $CATALINA_BASE/conf/server.xml.
  2. מאתרים את התג <Host> ומוסיפים את הקוד הבא בתוכו:

    <Valve className="org.apache.catalina.valves.JsonAccessLogValve"
           directory="logs"
           prefix="access-log"
           suffix=".json"
           rotatable="true"
           maxDays="7"/>
    
  3. מפעילים מחדש את Tomcat כדי להחיל את השינויים:

    cd /path/to/tomcat
    bin/catalina.sh stop
    bin/catalina.sh start
    
  4. קובץ יומן חדש בפורמט JSON יופיע מדי יום (לדוגמה, logs/access-log.2025-07-02.json).

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
@timestamp metadata.event_timestamp הערך של @timestamp מיומן הגולמי ממופה ישירות לשדה הזה ב-UDM. הוא מייצג את השעה שבה האירוע התרחש.
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value המזהה הזמני מהסוכן מתווסף כצמד מפתח/ערך בשדות additional.
agent.hostname observer.hostname שם המארח של הסוכן משמש כשם המארח של האובזרבר.
agent.id observer.asset_id מזהה הסוכן משולב עם סוג הסוכן כדי ליצור את מזהה נכס המשקיף (לדוגמה, filebeat: <agent_id>).
agent.type observer.application סוג הסוכן משמש כאפליקציית הצפייה.
agent.version observer.platform_version גרסת הסוכן משמשת כגרסת פלטפורמת הצופה.
host.hostname principal.hostname שם המארח של המארח משמש כשם המארח הראשי.
host.id principal.asset.asset_id מזהה המארח מופיע לפני Host Id: כדי ליצור את מזהה הנכס העיקרי.
host.ip principal.ip, observer.ip כתובת ה-IP של המארח משמשת גם ככתובת ה-IP של הגורם הראשי וגם ככתובת ה-IP של הצופה. אם יש כמה כתובות IP, הן יאוחדו למערך.
host.mac principal.mac כתובת ה-MAC של המארח משמשת ככתובת ה-MAC העיקרית. אם יש כמה כתובות MAC, הן ימוזגו למערך.
host.os.family principal.platform אם משפחת מערכת ההפעלה של המארח היא rhel או redhat, פלטפורמת העיקרון מוגדרת כ-LINUX.
host.os.kernel principal.platform_patch_level גרסת ליבת מערכת ההפעלה של המארח משמשת כרמת תיקון הפלטפורמה העיקרית.
host.os.name additional.fields[os_name].value.string_value שם מערכת ההפעלה של המארח מתווסף כצמד מפתח/ערך בשדות additional.
host.os.version principal.platform_version גרסת מערכת ההפעלה של המארח משמשת כגרסת הפלטפורמה העיקרית.
log.file.path principal.process.file.full_path נתיב היומן משמש כנתיב המלא של קובץ התהליך הראשי.
log_level security_result.severity, security_result.severity_details, security_result.action רמת היומן משמשת לקביעת חומרת התוצאה, פרטי החומרה והפעולה. הערכים DEBUG,‏ INFO ו-AUDIT ממופים לחומרה INFORMATIONAL ולפעולה ALLOW. שגיאה ממופה לחומרה של שגיאה ולפעולת חסימה. הערכים WARNING ו-WARN ממופים לחומרה בינונית ולפעולה BLOCK. ערך log_level הגולמי ממופה גם ל-severity_details.
logstash.irm_environment additional.fields[irm_environment].value.string_value סביבת Iron Mountain מ-Logstash מתווספת כצמד מפתח/ערך בשדות additional.
logstash.irm_region additional.fields[irm_region].value.string_value האזור של Iron Mountain מ-Logstash מתווסף כצמד מפתח/ערך בשדות additional.
logstash.irm_site additional.fields[irm_site].value.string_value האתר של Iron Mountain מ-Logstash מתווסף כצמד מפתח/ערך בשדות additional.
logstash.process.host intermediary.hostname מארח העיבוד של Logstash משמש כשם המארח של הביניים.
logstash.process.timestamp metadata.collected_timestamp חותמת הזמן של העיבוד ב-Logstash משמשת כחותמת הזמן של הנתונים שנאספו.
logstash.xyz_environment additional.fields[xyz_environment].value.string_value הסביבה xyz מ-Logstash מתווספת כצמד מפתח/ערך בשדות additional.
logstash.xyz_region additional.fields[xyz_region].value.string_value האזור xyz מ-Logstash מתווסף כצמד מפתח/ערך בשדות additional.
logstash.xyz_site additional.fields[xyz_site].value.string_value האתר xyz מ-Logstash מתווסף כצמד מפתח/ערך בשדות additional.
message metadata.description השדה message מנותח כ-JSON והשדה event_message שלו משמש כתיאור המטא-נתונים. האפליקציה המתווכת מקודדת ל-logstash. סוג האירוע של המטא-נתונים מקודד באופן קשיח ל-USER_UNCATEGORIZED. סוג היומן של המטא-נתונים מוגדר ל-TOMCAT מתוך batch.type או batch.log_type של היומן הגולמי. שם המוצר במטא-נתונים מקודד באופן קשיח לערך Tomcat. שם הספק במטא-נתונים מקודד באופן קשיח ל-Tomcat.
user principal.user.userid שדה המשתמש מיומן הגולמי משמש כמזהה המשתמש הראשי.
product_event metadata.product_event_type מופה מיומן השינויים
summary security_result.summary מופה מיומן השינויים
query additional.fields מופה מיומן השינויים

יומן שינויים

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

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