איסוף יומנים של 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

יצירת הפיד

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, DNSFilter HEC Feed).
  5. בוחרים באפשרות Webhook בתור סוג המקור.
  6. בוחרים באפשרות DNSFILTER בתור סוג היומן.
  7. לוחצים על הבא.
  8. מציינים ערכים לפרמטרים הבאים של הקלט:
    • תו מפריד לפיצול (אופציונלי): לא צריך להזין כלום כי כל בקשת HEC מכילה אירועים בפורמט תקין
    • מרחב השמות של הנכס: מרחב השמות של הנכס
    • תוויות הטמעה: התווית שתתווסף לאירועים מהפיד הזה
  9. לוחצים על הבא.
  10. בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.

יצירה ושמירה של מפתח סודי

אחרי שיוצרים את הפיד, צריך ליצור מפתח סודי לאימות:

  1. בדף הפרטים של הפיד, לוחצים על יצירת מפתח סודי.
  2. תיפתח תיבת דו-שיח עם המפתח הסודי.
  3. מעתיקים ושומרים את המפתח הסודי באופן מאובטח.

איך מקבלים את כתובת ה-URL של נקודת הקצה של הפיד

  1. עוברים לכרטיסייה פרטים של הפיד.
  2. בקטע Endpoint Information, מעתיקים את Feed endpoint URL.
  3. הפורמט של כתובת ה-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>.

  4. שומרים את כתובת ה-URL הזו כדי להשתמש בה בשלבים הבאים.

  5. לוחצים על סיום.

יצירת מפתח API של Google Cloud

כדי לבצע אימות ב-Google SecOps, צריך מפתח API. יוצרים מפתח API מוגבל במסוף Google Cloud.

יצירת מפתח API

  1. נכנסים לדף Credentials במסוף Google Cloud.
  2. בוחרים את הפרויקט (הפרויקט שמשויך למכונה של Google SecOps).
  3. לוחצים על Create credentials > מפתח API.
  4. מפתח API נוצר ומוצג בתיבת דו-שיח.
  5. לוחצים על Edit API key כדי להגביל את המפתח.

הגבלת מפתח ה-API

  1. בדף ההגדרות של מפתח ה-API: שם: מזינים שם תיאורי (לדוגמה, Google SecOps DNSFilter Webhook API Key)
  2. בקטע API restrictions:
    1. בוחרים באפשרות הגבלת מקש.
    2. בתפריט הנפתח Select APIs, מחפשים ובוחרים את Google SecOps API (או Chronicle API).
  3. לוחצים על Save.
  4. מעתיקים את הערך של מפתח ה-API מהשדה API key שבחלק העליון של הדף.
  5. שומרים את מפתח ה-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

  1. נכנסים אל מרכז השליטה של DNSFilter.
  2. עוברים אל כלים > ייצוא נתונים.
  3. בקטע Export Destination, בוחרים באפשרות HTTP Event Collector (HEC).
  4. בקטע HEC Configuration, מזינים את הפרטים הבאים:
    • כתובת ה-URL של HTTP Event Collector: מדביקים את כתובת ה-URL המלאה של נקודת הקצה עם מפתח ה-API מהשלב הקודם.
    • ‫Active Event Collector Token (טוקן פעיל של כלי לאיסוף אירועים): מדביקים את המפתח הסודי שנוצר במהלך יצירת הפיד של Google SecOps.
  5. לוחצים על שמירת ההגדרה.
  6. המערכת של DNSFilter תבדוק את החיבור ותציג הודעת הצלחה אם ההגדרה נכונה.

אימות הטמעת הנתונים

  1. במרכז הבקרה של DNSFilter, נכנסים אל Tools > Data Export.
  2. מוודאים שהסטטוס פעיל או מקושר.
  3. במסוף Google SecOps, עוברים אל SIEM Settings > Feeds.
  4. מאתרים את הפיד של DNSFilter ומוודאים שהסטטוס שמוצג הוא פעיל.
  5. לוחצים על שם הפיד כדי לראות את הפרטים שלו.
  6. כדי לוודא שהנתונים זורמים, בודקים את המדד Logs Ingested (יומנים שהועברו).
  7. כדי לחפש אירועים של 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 נכשלת:

  1. מוודאים שכתובת ה-URL של ה-HEC נכונה וכוללת את הפרמטר של מפתח ה-API.
  2. מוודאים שהמפתח הסודי (אסימון HEC) מועתק בצורה נכונה בלי רווחים מיותרים.
  3. צריך לוודא שלמפתח Google Cloud API יש גישה ל-Chronicle API.
  4. מוודאים שהפיד של Google SecOps נמצא בסטטוס Active (פעיל).
  5. בודקים את החיבור לרשת מ-DNSFilter ל-Cloud Endpoints של Google.

לא מופיעים נתונים ב-Google SecOps

אם החיבור הצליח אבל לא מופיעים נתונים:

  1. מוודאים ששאילתות DNS נוצרות בפריסת DNSFilter.
  2. בודקים את יומן השאילתות של DNSFilter כדי לוודא שהתנועה מעובדת.
  3. ב-Google SecOps, מחפשים את metadata.log_type = "DNSFILTER" כדי לוודא שההטמעה בוצעה.
  4. בודקים את המדד Logs Ingested (יומנים שנטמעו) בפיד ב-Google SecOps.
  5. בודקים את יומני השגיאות של הפיד כדי לראות אם יש שגיאות בהטמעה.

הודעת שגיאה מוחזרת מייצוא הנתונים

סיבות נפוצות לשגיאות:

  • פרטי כניסה לא תקינים: מפתח ה-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.