איסוף יומנים של מתג 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 בשביל סוכן Bindplane
כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים באחת מהשיטות הבאות:
- פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
- פריסות קודמות: ממשיכים להשתמש בקובץ האימות להטמעת נתונים (אפשרות 2) עד שה-Ingestion API יופסק ב-20 ביולי 2027.
אפשרות 1: יצירת חשבון שירות ל-Chronicle API (מומלץ)
- נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
- נכנסים לדף IAM & Admin > Service Accounts.
- לוחצים על Create service account.
- מזינים את פרטי ההגדרה הבאים:
- Service account name: מזינים שם לחשבון (לדוגמה,
bindplane-ingest). - Service account description: מזינים תיאור (לדוגמה,
Bindplane agent log ingestion).
- Service account name: מזינים שם לחשבון (לדוגמה,
- לוחצים על Create and continue.
- בקטע Grant this service account access to project, לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
- לוחצים על המשך ואז על סיום.
- לוחצים על חשבון השירות שיצרתם ועוברים לכרטיסייה Keys.
- לוחצים על Add key > Create new key.
- בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
- שומרים את קובץ המפתח בתור
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כך שיתאים לנתיב שבו שמרתם אותו. - עוברים אל IAM & Admin > Settings ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את הייצוא.
אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (גרסה קודמת)
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות > ניהול נתונים > סוכני איסוף. אם אתם משתמשים בפלטפורמת SIEM בלבד, עוברים אל הגדרות > סוכני איסוף.
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.
איך מקבלים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות > ניהול > פרופיל. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פרופיל.
מעתיקים את מספר הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת הסוכן של Bindplane
מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנת חלונות
- פותחים את שורת הפקודה או את 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 /opt/observiq-otel-collector/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: 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: '<customer_id>' endpoint: chronicle.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: הנתיב המלא לקובץ המפתח של חשבון השירות בפורמט JSON (אפשרות 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
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.
-
מייצא API להטמעה מדור קודם
אם אתם משתמשים בקובץ האימות להטמעת נתונים מאפשרות 2, החליפו את הבלוק
exportersבקוד הבא. מגדירים אתcreds_file_pathלנתיב של קובץ האימות להטמעת נתונים. אם המכונה נמצאת מחוץ לארה"ב, מחליפים אתmalachiteingestion-pa.googleapis.comבנקודת הקצה האזורית (לדוגמה,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/dell_switch: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: DELL_SWITCH raw_log_field: body
שמירת קובץ התצורה
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- 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: 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.}ביקורת 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 | Logic (פונקציה לוגית) |
|---|---|---|
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 של המשתמש ושל הנכס. אם 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 |
Used as security result description. אם הוא מכיל את הערך "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.