איסוף יומנים של 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
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents.
- מורידים את קובץ האימות להטמעת נתונים.
שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane בשרת Tomcat כדי לאסוף קובצי יומן
מתקינים את סוכן Bindplane בשרת Tomcat עצמו, כי הוא צריך לקרוא קובצי יומן מקומיים.
התקנה ב-Windows
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sc query observiq-otel-collectorהשירות צריך להופיע עם הערך RUNNING.
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sudo systemctl status observiq-otel-collectorהשירות צריך להופיע כפעיל (פועל).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרת סוכן Bindplane להטמעת יומני Tomcat ושליחה ל-Google SecOps
איתור קובץ ההגדרות
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
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
- Linux:
-
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: לוחצים על קובץ > שמירה.
- Linux: מקישים על
מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorמוודאים שהשירות פועל:
sudo systemctl status observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
sudo journalctl -u observiq-otel-collector -f
כדי להפעיל מחדש את סוכן Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:
שורת הפקודה או PowerShell כאדמין:
net stop observiq-otel-collector && net start observiq-otel-collectorמסוף השירותים:
- מקישים על
Win+R, מקלידיםservices.mscומקישים על Enter. - מחפשים את observIQ OpenTelemetry Collector.
- לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
מוודאים שהשירות פועל:
sc query observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- מקישים על
הגדרת יומני גישה בפורמט JSON ב-Tomcat
- פותחים את קובץ ההגדרות של Tomcat בכתובת
$CATALINA_BASE/conf/server.xml. מאתרים את התג
<Host>ומוסיפים את הקוד הבא בתוכו:<Valve className="org.apache.catalina.valves.JsonAccessLogValve" directory="logs" prefix="access-log" suffix=".json" rotatable="true" maxDays="7"/>מפעילים מחדש את Tomcat כדי להחיל את השינויים:
cd /path/to/tomcat bin/catalina.sh stop bin/catalina.sh startקובץ יומן חדש בפורמט 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.