איסוף יומנים של מתג Dell
גרסת כלי הניתוח: 11.0
במסמך הזה מוסבר איך להטמיע יומני רישום של מתגי Dell ב-Google Security Operations באמצעות סוכן Bindplane.
הכלי הזה מנתח יומני רישום של מתגי Dell, מבצע נרמול של חותמות הזמן ומשתמש בתבניות grok כדי לבנות את הודעת היומן כצמדי מפתח/ערך. לאחר מכן, הוא ממפה את השדות שחולצו למודל הנתונים המאוחד (UDM), מטפל בפורמטים שונים של יומנים ומעשיר את הנתונים במידע הקשרי כמו פרטי נכסים וחומרת האבטחה.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות לרשת בין סוכן Bindplane לבין מתג Dell
- אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
- חיבור פעיל ופרטי כניסה של אדמין למתג Dell
קבלת קובץ אימות להטמעת נתונים ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents.
- מורידים את קובץ האימות להטמעת נתונים.
שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן סוכן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנה ב-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 לקליטת syslog ושליחה ל-Google SecOps
איתור קובץ ההגדרות
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
עריכת קובץ ההגדרות
מחליפים את כל התוכן של
config.yamlבהגדרה הבאה:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/dell_switch: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: DELL_SWITCH raw_log_field: body service: pipelines: logs/dell_switch_to_chronicle: receivers: - udplog exporters: - chronicle/dell_switch
פרמטרים להגדרה
מחליפים את ה-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
- 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"
- מקישים על
הגדרת ייצוא של syslog ממתג Dell
- מתחברים למתג Dell באמצעות SSH או יציאת המסוף.
- נכנסים באמצעות פרטי כניסה של אדמין.
משתמשים בפקודה הבאה כדי לציין את כתובת ה-IP או את שם המארח של שרת ה-syslog (מחליפים את
<syslog-server-ip>,<udp|tcp>ו-<syslog-port-number>בפרטים בפועל):logging host <syslog-server-ip> transport <udp|tcp> port <syslog-port-number>אופציונלי: מגדירים את רמת החומרה המינימלית של ההודעות שיישלחו לשרת syslog. לדוגמה, כדי לרשום ביומן הודעות מידע ומעלה:
logging level informationalשומרים את ההגדרה הפעילה בהגדרת ההפעלה כדי לוודא שהשינויים יישמרו גם אחרי הפעלה מחדש:
copy running-config startup-configשומרים את ההגדרה:
write memory
יומנים לדוגמה של מתגי Dell שנתמכים
SYSLOG
{ "priority": 165, "version": 1, "timestamp": "2023-10-12T12:37:17.249566+00:00", "hostname": "switch-lon-01", "app_name": "dn_alm", "proc_id": "940", "message": "Node.1-Unit.1:PRI [event], Dell EMC (OS10) %ALM_AUTH_EVENT: Authentication event was raised MESSAGE=pam_unix(sshd:session): session opened for user service_account by (uid=0)" }JSON
{ "appname": "SNOOP", "facility": 23, "hostname": "access-switch-a1", "message": "snooping.c(2177) 70820228 %% DBG Report from intf Gi6/0/11 ignored -- no router ports on vlan 193", "priority": 191, "proc_id": "snoopTask" }פורמט KV / events
Events: Eventid = {38812} Occurrencetime = {3 Sept 2024 00:06:06} Eventseverity = {Minor} Jobid = {30506} Computer = {backup-server-01} Program = {DatabaseAgent} Description = {Block Change Tracking is found DISABLED on Oracle DB [PROD_DB]. Incremental backups may run slow.}Audit SYSLOG
{ "priority": 110, "version": 1, "timestamp": "2023-12-12T00:58:26.893679+00:00", "hostname": "core-switch-palf", "app_name": ".clish", "proc_id": "29156", "message": "Node.1-Unit.1:PRI [audit], User sec_admin on /dev/pts/0 from 10.0.0.50 used cmd: 'terminal length 0' - completed" }פורמט SNMP trap / TRAPMGR
{ "priority": 189, "version": 1, "timestamp": "2023-12-28T23:37:27.394Z", "hostname": "dist-switch-01", "app_name": "TRAPMGR", "proc_id": "trapTask", "extensions": { "origin_ip": "192.168.1.1", "software": "N3000_Series", "swVersion": "6.3.2.3" }, "message": "traputil.c(721) 1056839 %% Gi1/0/5 is transitioned from the Learning state to the Forwarding state" }
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
acct |
principal.user.userid |
הערך שמוגדר כאן משמש כערך של userid אם השדה user לא מופיע. |
addr |
principal.asset.ip, principal.ip |
הערך מנותח ככתובת IP ומשמש לכתובת ה-IP של הגורם המורשה ולכתובת ה-IP של הנכס אם הוא כתובת IP תקינה ושונה משם המארח. |
application |
principal.application |
ממופים ישירות. |
asset |
principal.asset.attribute.labels.value |
ממופה ישירות לערך של תווית הנכס, והמפתח מוטמע כ-'שם הנכס'. אם השדה של הנכס ריק וההודעה מכילה את המחרוזת Dell, הנכס מוגדר כ-Dell. |
auid |
principal.resource.attribute.labels.value |
ממופה ישירות לתווית עם מפתח auid בתוך principal.resource.attribute.labels. |
datetime |
metadata.event_timestamp |
הערך הזה מנותח מפורמטים שונים בשדה ההודעה ומומר לחותמת זמן. |
dest_ip |
target.asset.ip, target.ip |
ממופה לכתובת ה-IP של נכס היעד ולכתובת ה-IP של היעד. |
enterpriseId |
principal.resource.attribute.labels.value |
ממופה לתווית עם המפתח enterpriseId בתוך principal.resource.attribute.labels. |
exe |
sec_result.detection_fields.value |
ממופה לשדה זיהוי עם מפתח exe. |
File |
target.file.full_path |
ממופים ישירות. |
grantors |
principal.resource.attribute.labels.value |
ממופה לתווית עם המפתח grantors בתוך principal.resource.attribute.labels. |
host |
principal.hostname, principal.asset.hostname, metadata.event_type |
משמש כשם מארח ראשי וכשם מארח של נכס. אם התג host מופיע, הערך של metadata.event_type מוגדר ל-STATUS_UPDATE. אם שם המארח קיים אבל המארח לא, שם המארח ישמש כמארח. |
hostname |
principal.asset.ip, principal.ip, host |
אם זו כתובת IP תקינה, היא משמשת ככתובת ה-IP העיקרית וככתובת ה-IP של הנכס. אם הערך של host ריק, הוא ישמש כערך של host. |
ID |
principal.resource.attribute.labels.value |
ממופה לתווית עם המפתח ID בתוך principal.resource.attribute.labels. |
ip |
principal.asset.ip, principal.ip |
ממופה לכתובת ה-IP העיקרית ולכתובת ה-IP של הנכס. |
is_synced |
sec_result.detection_fields.value |
ממופה לשדה זיהוי עם מפתח is_synced. |
local |
target.asset.ip, target.ip, target.port |
הניתוח מתבצע כדי לחלץ את כתובת ה-IP והיציאה המקומיות, שממופות לכתובת ה-IP של היעד, לכתובת ה-IP של נכס היעד וליציאת היעד. |
local_ip |
target.asset.ip, target.ip |
הערך חולץ מהשדה local ומופה לכתובת ה-IP של היעד ולכתובת ה-IP של נכס היעד. |
local_port |
target.port |
הערך חולץ מהשדה local ומופה ליעד. |
mac |
principal.mac |
אם זו כתובת MAC תקינה, היא ממופה לכתובת ה-MAC הראשית. |
msg |
metadata.description |
אם יש ערך בשדה הזה, הוא משמש כתיאור האירוע. גם מנותח כדי למצוא שדות נוספים. |
msg1 |
metadata.description |
התיאור הזה ישמש כתיאור האירוע אם לא צוין msg2. |
msg2 |
sec_result.description, metadata.event_type, extensions.auth.type |
משמש כתיאור של תוצאת האבטחה. אם הוא מכיל את המחרוזת opened for user, סוג האירוע מוגדר ל-USER_LOGIN וסוג האימות מוגדר ל-MACHINE. אם הוא מכיל את המחרוזת 'closed for user', סוג האירוע מוגדר ל-USER_LOGOUT וסוג האימות מוגדר ל-MACHINE. |
op |
metadata.product_event_type |
הערך הזה משמש כסוג אירוע המוצר אם הוא קיים. |
pid |
principal.process.pid |
ממופים ישירות. |
port |
principal.port |
ממופים ישירות. |
prod_event_type |
metadata.product_event_type |
הערך הזה משמש כסוג אירוע המוצר אם הוא קיים. |
res |
sec_result.summary |
ממופים ישירות. |
sec_description |
sec_result.description, target.url, target.ip, target.asset.ip, sec_result.action_details |
הנתונים מנותחים כדי לזהות את כתובת ה-URL לטירגוט, כתובת ה-IP, פרטי הפעולה, והם משמשים כתיאור של תוצאת האבטחה. |
Server_ID |
target.resource.product_object_id |
ממופים ישירות. |
server |
principal.asset.ip, principal.ip, principal.port |
הניתוח מתבצע כדי לחלץ את כתובת ה-IP והיציאה של השרת, והמיפוי מתבצע לכתובת ה-IP של הגורם המרכזי, לכתובת ה-IP של נכס הגורם המרכזי וליציאה של הגורם המרכזי. |
server_ip |
principal.asset.ip, principal.ip |
הערך חולץ מהשדה server וממופה לכתובת ה-IP של חשבון המשתמש ולכתובת ה-IP של נכס חשבון המשתמש. |
server_port |
principal.port |
הערך חולץ מהשדה server וממופה ליציאה של החשבון הראשי. |
ses |
network.session_id |
ממופים ישירות. |
severity |
sec_result.severity, metadata.product_event_type |
הערך הזה משמש לקביעת חומרת תוצאת האבטחה וסוג אירוע המוצר על סמך ערכים ספציפיים. |
software |
principal.asset.software |
ממופים ישירות. |
softwareName |
software.name |
ממופים ישירות. |
Status |
sec_result.summary |
הערך הזה משמש כסיכום של תוצאות האבטחה אם התג res לא מופיע. |
subj |
principal.resource.attribute.labels.value |
ממופה לתווית עם המפתח subj בתוך principal.resource.attribute.labels. |
swVersion |
software.version |
ממופים ישירות. |
target_host |
target.hostname, target.asset.hostname |
ממופה ישירות לשם המארח של היעד ולשם המארח של נכס היעד. |
target_ip |
target.asset.ip, target.ip |
ממופה ישירות לכתובת ה-IP של היעד ולכתובת ה-IP של נכס היעד. |
target_url |
target.url |
ממופים ישירות. |
target_user_id |
target.user.userid |
ממופים ישירות. |
terminal |
principal.resource.attribute.labels.value |
ממופה לתווית עם המפתח terminal בתוך principal.resource.attribute.labels. |
tzknown |
sec_result.detection_fields.value |
ממופה לשדה זיהוי עם מפתח tzknown. |
uid |
principal.resource.attribute.labels.value |
ממופה לתווית עם המפתח uid בתוך principal.resource.attribute.labels. |
user |
principal.user.userid, metadata.event_type |
משמש כמזהה המשתמש הראשי. אם התג user מופיע, הערך של metadata.event_type מוגדר ל-USER_UNCATEGORIZED. |
username |
target.user.userid |
משויך ישירות למזהה המשתמש ביעד. |
| לא רלוונטי | metadata.vendor_name |
הערך 'Dell' מוטמע בקוד. |
| לא רלוונטי | metadata.product_name |
הערך מוטמע בקוד כ-Dell Switch. |
| לא רלוונטי | extensions.auth.type |
מגדירים את הערך MACHINE לאירועי התחברות/התנתקות ספציפיים. |
| לא רלוונטי | metadata.event_type |
הערך נקבע על ידי לוגיקה מורכבת שמבוססת על שדות ותנאים שונים. אם לא מוגדר אחרת, ערך ברירת המחדל הוא GENERIC_EVENT. יכול להיות USER_LOGIN, USER_LOGOUT, USER_UNCATEGORIZED, NETWORK_CONNECTION, NETWORK_UNCATEGORIZED, STATUS_UPDATE או GENERIC_EVENT. |
reason_code |
event.idm.read_only_udm.security_result.detection_fields |
מופה מיומן השינויים |
Eventid |
metadata.product_log_id |
מופה מיומן השינויים |
Eventseverity |
security_result.severity |
מופה מיומן השינויים |
Computer |
principal.hostname |
מופה מיומן השינויים |
Program |
principal.application |
מופה מיומן השינויים |
Description |
security_result.description |
מופה מיומן השינויים |
tzknown", "is_synced" and "exe |
security_result.detection_fields |
מופה מיומן השינויים |
res |
security_result.summary |
מופה מיומן השינויים |
status |
security_result.summary |
מופה מיומן השינויים |
uid", "enterpriseId", "auid", "terminal", "subj", "grantors", and "ID |
principal.resource.attribute.labels |
מופה מיומן השינויים |
sec_description |
security_result.description |
מופה מיומן השינויים |
action_details |
security_result.action_details |
מופה מיומן השינויים |
softwareName |
principal.asset.software.name |
מופה מיומן השינויים |
swVersion |
principal.asset.software.version |
מופה מיומן השינויים |
port |
principal_port |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של מנתח התוכן הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.