איסוף יומנים של DNSFilter
גרסת מנתח הנתונים: 1.0
במאמר הזה מוסבר איך להגדיר את DNSFilter כדי לשלוח יומנים אל Google Security Operations באמצעות וווב-הוקים דרך פרוטוקול HTTP Event Collector (HEC).
DNSFilter הוא פתרון אבטחה מבוסס-AI ל-DNS, שמספק הגנה מפני איומים, סינון תוכן ושקיפות של הרשת. תכונת ייצוא הנתונים מאפשרת ייצוא אוטומטי של נתוני יומן שאילתות DNS לפלטפורמות SIEM באמצעות HTTP Event Collector (HEC) API, ותומכת בניטור לצורכי אבטחה בזמן אמת ובדיווח על תאימות.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- גישה למרכז הבקרה של DNSFilter עם הרשאות אדמין או הרשאות גבוהות יותר
- התכונה של תוסף ייצוא נתונים של DNSFilter מופעלת (זמינה בתוכניות Basic, Pro ו-Enterprise כתוסף בתשלום)
- גישה למסוף Google Cloud (ליצירת מפתח API)
יצירת פיד של webhook ב-Google SecOps
יצירת הפיד
- עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
DNSFilter HEC Feed). - בוחרים באפשרות Webhook בתור סוג המקור.
- בוחרים באפשרות DNSFILTER בתור סוג היומן.
- לוחצים על הבא.
- מציינים ערכים לפרמטרים הבאים של הקלט:
- תוחם פיצול (אופציונלי): משאירים ריק כי כל בקשת HEC מכילה אירועים בפורמט תקין
- מרחב שמות של נכס: מרחב השמות של הנכס
- תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה
- לוחצים על הבא.
- בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
יצירה ושמירה של מפתח סודי
אחרי שיוצרים את הפיד, צריך ליצור מפתח סודי לאימות:
- בדף הפרטים של הפיד, לוחצים על יצירת מפתח סודי.
- בתיבת דו-שיח מוצג המפתח הסודי.
מעתיקים ושומרים את המפתח הסודי באופן מאובטח.
קבלת כתובת ה-URL של נקודת הקצה של הפיד
- עוברים לכרטיסייה פרטים של הפיד.
- בקטע Endpoint Information, מעתיקים את Feed endpoint URL.
הפורמט של כתובת ה-URL הוא:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateאו
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateשומרים את כתובת ה-URL הזו כדי לבצע את השלבים הבאים.
לוחצים על סיום.
יצירת מפתח Google Cloud API
מערכת Google SecOps דורשת מפתח API לצורך אימות. יוצרים מפתח API מוגבל במסוף Google Cloud.
יצירת מפתח API
- נכנסים אל הדף Credentials במסוף Google Cloud.
- בוחרים את הפרויקט (הפרויקט שמשויך למופע Google SecOps).
- לוחצים על Create credentials > API key.
- מפתח API נוצר ומוצג בתיבת דו-שיח.
- לוחצים על Edit API key כדי להגביל את המפתח.
הגבלת מפתח ה-API
- בדף ההגדרות API key:
Name: מזינים שם תיאורי (לדוגמה,
Google SecOps DNSFilter Webhook API Key) - בקטע API restrictions (הגבלות על API):
- בוחרים באפשרות הגבלת המקש.
- בתפריט הנפתח Select APIs (בחירת ממשקי API), מחפשים ובוחרים באפשרות Google SecOps API (או Chronicle API).
- לוחצים על Save.
- מעתיקים את הערך של מפתח ה-API מהשדה מפתח ה-API בחלק העליון של הדף.
שומרים את מפתח ה-API בצורה מאובטחת.
הגדרת ייצוא נתונים של DNSFilter
הרכבת כתובת ה-URL של נקודת הקצה של HEC
משלבים את כתובת ה-URL של נקודת הקצה של Google SecOps ואת מפתח ה-API כדי ליצור את כתובת ה-URL של HEC:
<ENDPOINT_URL>?key=<API_KEY>דוגמה:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
הגדרת ייצוא נתונים ב-DNSFilter
- נכנסים אל מרכז השליטה של DNSFilter.
- עוברים אל כלים > ייצוא נתונים.
- בקטע Export Destination, בוחרים באפשרות HTTP Event Collector (HEC).
- בקטע HEC Configuration (הגדרת HEC), מזינים את הפרטים הבאים:
- כתובת ה-URL של HTTP Event Collector: מדביקים את כתובת נקודת הקצה המלאה עם מפתח ה-API מהשלב הקודם.
- טוקן פעיל של כלי לאיסוף אירועים: מדביקים את המפתח הסודי שנוצר במהלך יצירת הפיד של Google SecOps.
- לוחצים על שמירת ההגדרה.
מערכת DNSFilter תבדוק את החיבור ותציג הודעה על הצלחה אם ההגדרה נכונה.
אימות הטמעת הנתונים
- במרכז הבקרה של DNSFilter, עוברים אל Tools > Data Export (כלים > ייצוא נתונים).
- מוודאים שהסטטוס פעיל או מחובר.
- במסוף Google SecOps, עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
- מאתרים את הפיד של DNSFilter ומוודאים שהסטטוס Status הוא Active.
- לוחצים על שם הפיד כדי לראות את הפרטים.
- כדי לוודא שהנתונים זורמים, בודקים את המדד Logs Ingested (יומן אירועים שהועבר).
כדי לחפש אירועים של DNSFilter, עוברים אל חיפוש ומריצים את השאילתה הבאה:
metadata.log_type = "DNSFILTER"
הפניה לשיטות אימות
פידים של וווב-הוק ב-Google SecOps תומכים בכמה שיטות אימות. השילוב של DNSFilter HEC משתמש בשיטה ההיברידית.
השיטה שבה נעשה שימוש: היברידית (כתובת URL + כותרת)
DNSFilter שולח את מפתח ה-API בכתובת ה-URL ואת המפתח הסודי (אסימון HEC) בכותרת הבקשה.
פורמט הבקשה:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json Authorization: Splunk <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
שיטה חלופית: כותרות מותאמות אישית
אם אתם מגדירים אפליקציה בהתאמה אישית לשליחת יומנים אל Google SecOps, מומלץ להשתמש בשיטה הזו כדי לשפר את האבטחה.
פורמט הבקשה:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }היתרונות:
- מפתח ה-API והסוד לא מוצגים בכתובת ה-URL
- מאובטח יותר (הכותרות לא נרשמות ביומני הגישה של שרת האינטרנט)
- השיטה המועדפת אם הספק תומך בה
שמות של כותרות אימות
מערכת Google SecOps מקבלת את שמות הכותרות הבאים לצורך אימות:
למפתח API:
x-goog-chronicle-auth(מומלץ)-
X-Goog-Chronicle-Auth(case-insensitive)
למפתח סודי:
x-chronicle-auth(מומלץ)-
X-Chronicle-Auth(case-insensitive) Authorization: Splunk <TOKEN>(תאימות ל-HEC)
מגבלות ושיטות מומלצות לשימוש ב-Webhook
מגבלות על בקשות
| הגבלה | ערך |
|---|---|
| גודל בקשה מקסימלי | 4MB |
| מספר QPS מקסימלי (שאילתות לשנייה) | 15,000 |
| זמן קצוב לתפוגה של בקשה | 30 שניות |
| התנהגות של ניסיון חוזר | אוטומטי עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) |
שיטות מומלצות
- מעקב אחר סטטוס הייצוא: חשוב לבדוק באופן קבוע את סטטוס ייצוא הנתונים בלוח הבקרה של DNSFilter כדי לוודא זרימת נתונים רציפה.
- רוטציית מפתחות API: כדי לשמור על רמת אבטחה גבוהה, מומלץ לבצע רוטציה תקופתית של מפתח Google Cloud API.
- ניהול מפתחות סודיים: אחסון מאובטח של המפתח הסודי של Google SecOps ויצירה מחדש אם הוא נפרץ.
- שמירת נתונים: צריך להגדיר מדיניות מתאימה לשמירת נתונים ב-DNSFilter וב-Google SecOps.
- הגדרת התראות: הגדרת התראות ב-Google SecOps לאירועי אבטחה קריטיים ב-DNS.
פתרון בעיות
בדיקת החיבור נכשלת
אם בדיקת ההגדרה של ייצוא הנתונים ב-DNSFilter נכשלת:
- מוודאים שכתובת ה-URL של HEC נכונה וכוללת את הפרמטר של מפתח ה-API.
- מוודאים שהעתקתם את המפתח הסודי (אסימון HEC) בצורה נכונה, בלי רווחים מיותרים.
- בודקים שמפתח Google Cloud API כולל גישה ל-Chronicle API.
- מוודאים שהפיד של Google SecOps נמצא בסטטוס Active (פעיל).
- בודקים את הקישוריות לרשת מ-DNSFilter לנקודות קצה ב-Google Cloud.
לא מופיעים נתונים ב-Google SecOps
אם הקישור מצליח אבל לא מופיעים נתונים:
- מוודאים ששאילתות DNS נוצרות בפריסת DNSFilter.
- בודקים את יומן השאילתות של DNSFilter כדי לוודא שהתנועה עוברת עיבוד.
- ב-Google SecOps, מחפשים את
metadata.log_type = "DNSFILTER"כדי לאמת את ההטמעה. - בודקים את מדד הפיד Logs Ingested ב-Google SecOps.
- בודקים אם יש שגיאות בהעלאה ביומני השגיאות של הפיד.
הודעת שגיאה מוחזרת מייצוא הנתונים
סיבות נפוצות לשגיאות:
- פרטי כניסה לא תקינים: מפתח ה-API או המפתח הסודי שגויים או שתוקפם פג.
- חוסר התאמה באזור: האזור של כתובת ה-URL של נקודת הקצה של Google SecOps לא תואם למופע שלכם.
- הרשאות: הגישה ל-Chronicle API לא מופעלת במפתח ה-API.
- בעיות ברשת: חומת אש או שרת proxy חוסמים חיבורי HTTPS יוצאים.
טבלת מיפוי UDM
| שדה היומן | מיפוי UDM | לוגיקה |
|---|---|---|
| פעם | metadata.collected_timestamp | ההמרה מתבצעת באמצעות פורמט התאריך: yyyy-MM-dd HH:mm:ss Z UTC |
| metadata.event_type | הערך הוא STATUS_UPDATE אם principal_ip_present, principal_hostname_present או principal_mac_present הוא true, אחרת הערך הוא GENERIC_EVENT | |
| question_type | network.dns.questions | הומר question_type ל-question.type באמצעות מיפוי סוג רשומת DNS, ואז בוצע מיזוג למערך |
| קוד | network.dns.response_code | ההמרה בוצעה באמצעות מיפוי של קודי תגובה של DNS |
| פרוטוקול | network.ip_protocol | המרת כתובות באמצעות מיפוי פרוטוקול IP |
| לקוח | principal.hostname | הערך הועתק ישירות |
| request_address, ip4, ip6, source_addresses | principal.ip | מוזגו מהבקשה request_address (כתובת IP שחולצה), ip4 (כתובת IP שחולצה), ip6 (כתובת IP שחולצה) וכתובות IP שחולצו מהמערך source_addresses |
| אזור | principal.location.country_or_region | הערך הועתק ישירות |
| clientMac | principal.mac | הערך מועתק ישירות אם הוא תואם לביטוי הרגולרי של כתובת ה-MAC |
| clientID | principal.resource.product_object_id | הערך הועתק ישירות |
| שם משתמש | principal.user.user_display_name | הערך הועתק ישירות |
| user_id | principal.user.userid | הערך הועתק ישירות |
| code, original_code, clientType, collection, network_name, networkID, collectionID, policy, policyID, scheduled_policy, scheduled_policyID, sec_cats, sec_allow_cats, block_cats, block_allow_cats, threat, allowed, method, organization, organizationID, applicationID, application_name, application_categoryID, application_category_name | security_result.detection_fields | תוויות שמוזגו משדות מקור שונים כצמדי מפתח/ערך |
| דומיין | target.administrative_domain | הערך הועתק ישירות |
| fqdn | target.domain.name | הערך הועתק ישירות |
| metadata.product_name | ההגדרה היא DNSFILTER | |
| metadata.vendor_name | ההגדרה היא DNSFILTER |
שנה רישום
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.