איסוף יומנים של 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://{region}-chronicle.googleapis.com/v1/{parent}/logs:importכאשר
{region}הוא האזור של המופע של Google SecOps (לדוגמה,us,europeאוasia-southeast1), ו-{parent}הוא נתיב המשאב בפורמטprojects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>.שומרים את כתובת ה-URL הזו כדי להשתמש בה בשלבים הבאים.
לוחצים על סיום.
יצירת מפתח API של Google Cloud
כדי לבצע אימות ב-Google SecOps, צריך מפתח API. יוצרים מפתח API מוגבל במסוף Google Cloud.
יצירת מפתח API
- נכנסים לדף Credentials במסוף Google Cloud.
- בוחרים את הפרויקט (הפרויקט שמשויך למכונה של Google SecOps).
- לוחצים על Create credentials > מפתח API.
- מפתח API נוצר ומוצג בתיבת דו-שיח.
- לוחצים על Edit API key כדי להגביל את המפתח.
הגבלת מפתח ה-API
- בדף ההגדרות של מפתח ה-API:
שם: מזינים שם תיאורי (לדוגמה,
Google SecOps DNSFilter Webhook API Key) - בקטע API restrictions:
- בוחרים באפשרות הגבלת מקש.
- בתפריט הנפתח Select APIs, מחפשים ובוחרים את Google SecOps API (או Chronicle API).
- לוחצים על Save.
- מעתיקים את הערך של מפתח ה-API מהשדה API key שבחלק העליון של הדף.
שומרים את מפתח ה-API בצורה מאובטחת.
הגדרת ייצוא נתונים של DNSFilter
יצירת כתובת ה-URL של נקודת הקצה של HEC
משלבים את כתובת ה-URL של נקודת הקצה (endpoint) של Google SecOps ואת מפתח ה-API כדי ליצור את כתובת ה-URL של HEC:
<ENDPOINT_URL>?key=<API_KEY>דוגמה:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...
הגדרת ייצוא נתונים ב-DNSFilter
- נכנסים אל מרכז השליטה של DNSFilter.
- עוברים אל כלים > ייצוא נתונים.
- בקטע Export Destination, בוחרים באפשרות HTTP Event Collector (HEC).
- בקטע HEC Configuration, מזינים את הפרטים הבאים:
- כתובת ה-URL של HTTP Event Collector: מדביקים את כתובת ה-URL המלאה של נקודת הקצה עם מפתח ה-API מהשלב הקודם.
- Active Event Collector Token (טוקן פעיל של כלי לאיסוף אירועים): מדביקים את המפתח הסודי שנוצר במהלך יצירת הפיד של Google SecOps.
- לוחצים על שמירת ההגדרה.
המערכת של DNSFilter תבדוק את החיבור ותציג הודעת הצלחה אם ההגדרה נכונה.
אימות הטמעת הנתונים
- במרכז הבקרה של DNSFilter, נכנסים אל Tools > Data Export.
- מוודאים שהסטטוס פעיל או מקושר.
- במסוף Google SecOps, עוברים אל SIEM Settings > Feeds.
- מאתרים את הפיד של DNSFilter ומוודאים שהסטטוס שמוצג הוא פעיל.
- לוחצים על שם הפיד כדי לראות את הפרטים שלו.
- כדי לוודא שהנתונים זורמים, בודקים את המדד Logs Ingested (יומנים שהועברו).
כדי לחפש אירועים של DNSFilter, עוברים אל חיפוש ומריצים את השאילתה הבאה:
metadata.log_type = "DNSFILTER"
מידע על שיטות אימות
פידים של Google SecOps webhook תומכים בכמה שיטות אימות. השילוב של 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(לא תלוי-רישיות)
למפתח סודי:
x-chronicle-auth(מומלץ)X-Chronicle-Auth(לא תלוי-רישיות)-
Authorization: Splunk <TOKEN>(תאימות ל-HEC)
מגבלות ושיטות מומלצות לשימוש ב-webhook
מגבלות על בקשות
| הגבלה | ערך |
|---|---|
| גודל בקשה מקסימלי | 4 MB |
| מספר QPS מקסימלי (שאילתות לשנייה) | 15,000 |
| פסק זמן של בקשה | 30 שניות |
| התנהגות של ניסיון חוזר | אוטומטי עם השהיה מעריכית לפני ניסיון חוזר (exponential backoff) |
שיטות מומלצות
- מעקב אחרי סטטוס הייצוא: בודקים באופן קבוע את סטטוס ייצוא הנתונים במרכז הבקרה של DNSFilter כדי לוודא שזרימת הנתונים רציפה.
- רוטציית מפתחות API: מומלץ להחליף מדי פעם את מפתח ה-API של Google Cloud מטעמי אבטחה.
- ניהול מפתחות סודיים: אחסון מאובטח של המפתח הסודי של Google SecOps ויצירה מחדש אם הוא נפרץ.
- שמירת נתונים: צריך להגדיר מדיניות מתאימה לשמירת נתונים ב-DNSFilter וב-Google SecOps.
- הגדרת התראות: מגדירים התראות ב-Google SecOps לאירועי אבטחה קריטיים ב-DNS.
פתרון בעיות
בדיקת החיבור נכשלת
אם בדיקת ההגדרות של ייצוא הנתונים של DNSFilter נכשלת:
- מוודאים שכתובת ה-URL של ה-HEC נכונה וכוללת את הפרמטר של מפתח ה-API.
- מוודאים שהמפתח הסודי (אסימון HEC) מועתק בצורה נכונה בלי רווחים מיותרים.
- צריך לוודא שלמפתח Google Cloud API יש גישה ל-Chronicle API.
- מוודאים שהפיד של Google SecOps נמצא בסטטוס Active (פעיל).
- בודקים את החיבור לרשת מ-DNSFilter ל-Cloud Endpoints של Google.
לא מופיעים נתונים ב-Google SecOps
אם החיבור הצליח אבל לא מופיעים נתונים:
- מוודאים ששאילתות DNS נוצרות בפריסת DNSFilter.
- בודקים את יומן השאילתות של DNSFilter כדי לוודא שהתנועה מעובדת.
- ב-Google SecOps, מחפשים את
metadata.log_type = "DNSFILTER"כדי לוודא שההטמעה בוצעה. - בודקים את המדד Logs Ingested (יומנים שנטמעו) בפיד ב-Google SecOps.
- בודקים את יומני השגיאות של הפיד כדי לראות אם יש שגיאות בהטמעה.
הודעת שגיאה מוחזרת מייצוא הנתונים
סיבות נפוצות לשגיאות:
- פרטי כניסה לא תקינים: מפתח ה-API או המפתח הסודי שגויים או שתוקף שלהם פג.
- חוסר התאמה באזור: האזור בכתובת ה-URL של נקודת הקצה של Google SecOps לא תואם למופע שלכם.
- הרשאות: לא הופעלה למפתח ה-API גישה ל-Chronicle 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.