איסוף יומנים של OpenCanary
הכלי הזה מחלץ שדות מיומני OpenCanary SYSLOG ו-JSON, מבצע נורמליזציה שלהם לפורמט UDM ומעשיר את הנתונים בשדות נגזרים כמו metadata.event_type ו-security_result.severity. הוא מטפל בפורמטים שונים של יומנים, מבצע אימות של כתובות IP וממפה שדות לאובייקטים מתאימים של UDM כמו principal, target ו-network.
לפני שמתחילים
ודאו שאתם עומדים בדרישות המוקדמות הבאות:
- מופע של Google SecOps.
- גישה מיוחדת ל-OpenCanary.
הגדרת פידים
כדי להגדיר פיד:
- עוברים אל SIEM Settings (הגדרות SIEM) > Feeds (פידים).
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה Feed name, נותנים שם לפיד, לדוגמה OpenCanary Logs.
- בוחרים באפשרות Webhook בתור סוג המקור.
- בוחרים באפשרות OpenCanary בתור סוג היומן.
- לוחצים על הבא.
- אופציונלי: מציינים ערכים לפרמטרים הבאים של הקלט:
- Split delimiter: התו או המחרוזת שמשמשים להפרדה בין שורות ביומן, כמו
\n.
- Split delimiter: התו או המחרוזת שמשמשים להפרדה בין שורות ביומן, כמו
- לוחצים על הבא.
- בודקים את הגדרות הפיד במסך סיום ולוחצים על שליחה.
- לוחצים על יצירת מפתח סודי כדי ליצור מפתח סודי לאימות הפיד הזה.
- מעתיקים ושומרים את המפתח הסודי. לא ניתן להציג שוב את המפתח הסודי הזה. במקרה הצורך, אפשר ליצור מחדש מפתח סודי חדש, אבל הפעולה הזו מייתרת את המפתח הסודי הקודם.
- בכרטיסייה Details (פרטים), מעתיקים את כתובת ה-URL של נקודת הקצה של הפיד מהשדה Endpoint Information (פרטי נקודת הקצה). צריך לציין את כתובת ה-URL של נקודת הקצה הזו באפליקציית הלקוח.
- לוחצים על סיום.
יצירת מפתח API ל-Webhook Feed
עוברים אל Google Cloud מסוף > Credentials (אמצעי אימות).
לוחצים על Create credentials ואז על מפתח API.
מגבילים את הגישה של מפתח ה-API ל-Google Security Operations API.
ציון כתובת ה-URL של נקודת הקצה
- באפליקציית הלקוח, מציינים את כתובת ה-URL של נקודת הקצה של HTTPS שמופיעה בפיד ה-webhook.
כדי להפעיל אימות, מציינים את מפתח ה-API ואת המפתח הסודי כחלק מהכותרת המותאמת אישית בפורמט הבא:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRETהמלצה: ציינו את מפתח ה-API ככותרת במקום לציין אותו בכתובת ה-URL.
אם לקוח ה-webhook שלכם לא תומך בכותרות בהתאמה אישית, אתם יכולים לציין את מפתח ה-API ואת המפתח הסודי באמצעות פרמטרים של שאילתות בפורמט הבא:
ENDPOINT_URL?key=API_KEY&secret=SECRETמחליפים את מה שכתוב בשדות הבאים:
-
ENDPOINT_URL: כתובת ה-URL של נקודת הקצה של הפיד. -
API_KEY: מפתח ה-API לאימות ב-Google Security Operations. -
SECRET: המפתח הסודי שיצרתם כדי לאמת את הפיד.
-
הגדרה של OpenCanary Webhook ל-Google SecOps
מוצאים את קובץ התצורה של OpenCanary,
config.json.פותחים קובץ
config.jsonבכלי לעריכת טקסט.בתוך קובץ ההגדרה, מחפשים את הקטע עם התווית alerters.
אם כבר קיים התרעה מסוג
webhook, משנים אותה. אחרת, מוסיפים רשומה חדשה לwebhookהמשתמש ששלח את ההתראה.משתמשים בהגדרה הבאה (מחליפים את ENDPOINT_URL, SECRET ו-API_KEY בערכים שלכם):
"handlers": {
"Webhook": {
"class": "opencanary.logger.WebhookHandler",
"url": "<ENDPOINT_URL>",
"method": "POST",
"data": {"message": "%(message)s"},
"status_code": 200,
"headers": {
"X-Webhook-Access-Key": "<SECRET>",
"X-goog-api-key": "<API_KEY>"
}
}
}
- שומרים את קובץ ה-
config.json. - מפעילים מחדש את שירות OpenCanary כדי להחיל את השינויים. (לדוגמה,
sudo systemctl restart opencanary).
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
dst_host |
target.asset.ip |
השדה dst_host ביומן הגולמי ממופה ל-UDM. ממופה גם אל target.ip. |
dst_host |
target.ip |
השדה dst_host ביומן הגולמי ממופה ל-UDM. ממופה גם ל-target.asset.ip. |
dst_port |
target.port |
השדה dst_port ביומן הגולמי מומר למחרוזת ואז למספר שלם וממופה ל-UDM. |
local_time |
metadata.event_timestamp |
השדה local_time ביומן הגולמי משמש לאכלוס השדה metadata.event_timestamp ב-UDM. המנתח משתמש ב-create_time מאובייקט האצווה אם השדה local_time לא קיים. |
local_time_adjusted |
security_result.detection_fields |
השדה local_time_adjusted של היומן הגולמי נוסף כצמד מפתח/ערך למערך security_result.detection_fields ב-UDM. |
logdata.COMMUNITY_STRING |
security_result.detection_fields |
השדה logdata.COMMUNITY_STRING של היומן הגולמי מתווסף כצמד מפתח/ערך למערך security_result.detection_fields ב-UDM. |
logdata.DOMAIN |
principal.administrative_domain |
השדה logdata.DOMAIN של היומן הגולמי ממופה ל-UDM. |
logdata.FILENAME |
target.file.full_path |
השדה logdata.FILENAME ביומן הגולמי ממופה ל-UDM. |
logdata.HOSTNAME |
principal.asset.hostname |
אם השדה logdata.HOSTNAME לא מכיל כתובת IP, הוא ממופה ל-UDM. ממופה גם ל-principal.hostname. |
logdata.HOSTNAME |
principal.asset.ip |
אם השדה logdata.HOSTNAME הוא כתובת IP, הוא ממופה ל-UDM. ממופה גם ל-principal.ip. |
logdata.HOSTNAME |
principal.hostname |
אם השדה logdata.HOSTNAME הוא לא כתובת IP, הוא ממופה ל-UDM. ממופה גם אל principal.asset.hostname. |
logdata.HOSTNAME |
principal.ip |
אם השדה logdata.HOSTNAME הוא כתובת IP, הוא ממופה ל-UDM. ממופה גם ל-principal.asset.ip. |
logdata.LOCALNAME |
principal.asset.hostname |
השדה logdata.LOCALNAME ביומן הגולמי ממופה ל-UDM. ממופה גם ל-principal.hostname. |
logdata.LOCALNAME |
principal.hostname |
השדה logdata.LOCALNAME ביומן הגולמי ממופה ל-UDM. ממופה גם ל-principal.asset.hostname. |
logdata.LOCALVERSION |
principal.platform_version |
השדה logdata.LOCALVERSION של היומן הגולמי ממופה ל-UDM. |
logdata.PASSWORD |
extensions.auth.mechanism |
הנוכחות של השדה logdata.PASSWORD גורמת למנתח התחביר להגדיר את extensions.auth.mechanism ל-USERNAME_PASSWORD ב-UDM. |
logdata.PATH |
network.http.referral_url |
השדה logdata.PATH ביומן הגולמי ממופה ל-UDM. |
logdata.REMOTENAME |
target.asset.hostname |
השדה logdata.REMOTENAME ביומן הגולמי ממופה ל-UDM. ממופה גם ל-target.hostname. |
logdata.REMOTENAME |
target.hostname |
השדה logdata.REMOTENAME ביומן הגולמי ממופה ל-UDM. ממופה גם ל-target.asset.hostname. |
logdata.REMOTEVERSION |
target.platform_version |
השדה logdata.REMOTEVERSION ביומן הגולמי ממופה ל-UDM. |
logdata.SMBVER |
network.application_protocol |
הנוכחות של השדה logdata.SMBVER גורמת למנתח התחביר להגדיר את network.application_protocol ל-SMB ב-UDM. |
logdata.USERAGENT |
network.http.parsed_user_agent |
השדה logdata.USERAGENT של היומן הגולמי מומר לסוכן משתמש מנותח וממופה ל-UDM. |
logdata.USERAGENT |
network.http.user_agent |
השדה logdata.USERAGENT ביומן הגולמי ממופה ל-UDM. |
logdata.USERNAME |
target.user.userid |
השדה logdata.USERNAME ביומן הגולמי ממופה ל-UDM. |
loglevel |
security_result.severity |
השדה loglevel ביומן הגולמי קובע את ה-security_result.severity ב-UDM. WARNING maps to HIGH, INFO/INFORMATION maps to LOW. |
logtype |
security_result.detection_fields |
השדה logtype ביומן הגולמי מתווסף כמערך של צמדי מפתח/ערך security_result.detection_fields ב-UDM. |
node_id |
principal.asset.asset_id |
השדה node_id ביומן הגולמי מתחיל ב-"id:" וממופה ל-UDM. |
src_host |
principal.asset.ip |
השדה src_host ביומן הגולמי ממופה ל-UDM. ממופה גם ל-principal.ip. |
src_host |
principal.ip |
השדה src_host של היומן הגולמי ממופה ל-UDM. ממופה גם ל-principal.asset.ip. |
src_port |
principal.port |
השדה src_port ביומן הגולמי מומר למספר שלם וממופה ל-UDM. |
utc_time |
security_result.detection_fields |
השדה utc_time ביומן הגולמי מתווסף כמערך של צמדי מפתח/ערך security_result.detection_fields ב-UDM. |
יומן שינויים
צפייה ביומן השינויים של המנתח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.