איסוף יומנים של Google Cloud DNS Threat Detector
גרסת מנתח הנתונים: 1.0
במאמר הזה מוסבר איך להטמיע יומנים של Google Cloud DNS Threat Detector ב-Google Security Operations באמצעות Google Cloud Storage V2.
DNS Armor, שמופעל על ידי Infoblox, הוא שירות מנוהל מלא שמספק אבטחה בשכבת ה-DNS לעומסי העבודה שלכם ב-Google Cloud. הכלי המתקדם לזיהוי איומים נועד לזהות פעילות זדונית בשלב המוקדם ביותר בשרשרת התקיפה, כלומר בשאילתת ה-DNS, בלי להוסיף מורכבות תפעולית או עומס יתר על הביצועים. אחרי שזוהה איום, אפשר לקבל תובנות פרקטיות לגבי איומי DNS באמצעות Cloud Logging.
כשמפעילים גלאי איומים ב-DNS עבור פרויקט, DNS Armor שולח בצורה מאובטחת את יומני שאילתות ה-DNS שמוגבלות לאינטרנט למנוע הניתוח שמבוסס על Google Cloud ומופעל על ידי Infoblox. המנוע הזה משתמש בשילוב של פידים של מודיעין איומי סייבר וניתוח התנהגותי מבוסס-AI כדי לזהות איומים. כל פעילות זדונית שמזוהה יוצרת יומן איומים של DNS Armor, שנשלח בחזרה לפרויקט ונכתב ב-Cloud Logging כדי שתוכלו לצפות בו ולפעול בהתאם.
לפני שמתחילים
חשוב לוודא שמתקיימות דרישות הסף הבאות:
- מופע של Google SecOps.
- פרויקט ב-GCP עם Cloud Storage API מופעל.
- הרשאות ליצירה ולניהול של קטגוריות GCS.
- הרשאות לניהול מדיניות IAM בקטגוריות GCS.
- Network Security API מופעל בפרויקט.
- התפקידים שצריך ב-IAM כדי להפעיל כלי לזיהוי איומים ב-DNS.
- הרשאות לצפייה ביומני איומים של DNS:
resourcemanager.projects.get, resourcemanager.projects.list, networksecurity.dnsThreatDetectors.get, networksecurity.dnsThreatDetectors.listאו התפקידיםroles/networksecurity.dnsThreatDetectorViewerו-roles/logging.viewer.
יצירת קטגוריה של Google Cloud Storage
- נכנסים אל מסוף Google Cloud.
- בוחרים פרויקט או יוצרים פרויקט חדש.
- בתפריט הניווט, עוברים אל Cloud Storage > Buckets.
- לוחצים על Create bucket.
מזינים את פרטי ההגדרה הבאים:
הגדרה ערך Name your bucket (שם הקטגוריה) מזינים שם ייחודי גלובלית (לדוגמה, dns-threat-detector-logs)סוג מיקום בוחרים לפי הצרכים שלכם (אזור, בשני אזורים, במספר אזורים) Location בוחרים את המיקום (לדוגמה, us-central1).סוג אחסון (storage class) רגיל (מומלץ ליומנים שמתבצעת אליהם גישה לעיתים קרובות) בקרת גישה אחיד (מומלץ) כלים להגנה אופציונלי: הפעלת ניהול גרסאות של אובייקטים או מדיניות שמירת נתונים לוחצים על יצירה.
יצירת כלי לזיהוי איומים ב-DNS
בקטע הזה מוסבר איך ליצור כלי לזיהוי איומים ב-DNS כדי לעקוב אחרי פעילות זדונית ב-DNS שמוגבלת לאינטרנט ברשתות VPC.
אפשר להפעיל רק גלאי איומים אחד של DNS לכל פרויקט.
שימוש במסוף Google Cloud
- נכנסים לדף Advanced threat detection במסוף Google Cloud.
- לוחצים על יצירת כלי לזיהוי איומים ב-DNS.
- מזינים שם לגלאי האיומים ב-DNS.
- בוחרים באפשרות All VPC networks in the project (כל רשתות ה-VPC בפרויקט).
- לוחצים על יצירה.
שימוש בכלי שורת הפקודה של Google Cloud
אפשר גם ליצור גלאי איומי DNS באמצעות הפקודה gcloud:
gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--project=PROJECT_ID \
--provider="infoblox"
מחליפים את:
- my-dns-threat-detector: השם של הכלי לזיהוי איומים ב-DNS.
- PROJECT_ID: מזהה הפרויקט.
הגדרת Cloud Logging לייצוא יומנים של DNS Threat Detector ל-GCS
יומני האיומים של DNS Armor נכתבים ב-Cloud Logging. כדי לייצא את היומנים האלה לקטגוריה של GCS, צריך להגדיר sink ביומן.
- ב-מסוף Google Cloud, עוברים אל רישום ביומן > Logs Router.
- לוחצים על Create sink (יצירת יעד).
- מזינים את פרטי ההגדרה הבאים:
- שם יעד: מזינים שם תיאורי (לדוגמה,
dns-threat-detector-to-gcs). - תיאור של יעד: תיאור אופציונלי.
- שם יעד: מזינים שם תיאורי (לדוגמה,
- לוחצים על הבא.
- בקטע Select sink service (בחירת שירות יעד):
- שירות היעד: בוחרים באפשרות קטגוריה של Cloud Storage.
- בחירת קטגוריה של Cloud Storage: בוחרים את הקטגוריה (לדוגמה,
dns-threat-detector-logs) מהתפריט הנפתח.
- לוחצים על הבא.
בקטע Choose logs to include in sink (בחירת יומנים שיכללו ב-sink), מזינים את שאילתת המסנן הבאה:
resource.type="networksecurity.googleapis.com/DnsThreatDetector" logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"
מחליפים את PROJECT_ID במזהה הפרויקט ב-GCP.
- לוחצים על הבא.
- בודקים את ההגדרות ולוחצים על Create sink.
שימוש בכלי שורת הפקודה של Google Cloud
אפשר גם ליצור sink ביומן באמצעות הפקודה gcloud:
gcloud logging sinks create dns-threat-detector-to-gcs \
gs://dns-threat-detector-logs \
--log-filter='resource.type="networksecurity.googleapis.com/DnsThreatDetector" AND logName="projects/PROJECT_ID/logs/networksecurity.googleapis.com%2FDnsThreatDetector"' \
--project=PROJECT_ID
מחליפים את:
- dns-threat-detector-logs: שם הקטגוריה שלכם ב-GCS.
– PROJECT_ID: מזהה הפרויקט ב-GCP.
אחזור חשבון השירות של Google SecOps
Google SecOps משתמש בחשבון שירות ייחודי כדי לקרוא נתונים ממאגר GCS שלכם. צריך להעניק לחשבון השירות הזה גישה לדלי.
הגדרת פיד ב-Google SecOps להטמעה של יומנים של Google Cloud DNS Threat Detector
- עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
- לוחצים על הוספת פיד חדש.
- לוחצים על הגדרת פיד יחיד.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
GCP DNS Threat Detector Logs). - בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
בוחרים באפשרות Google Cloud DNS Threat Detector (גלאי האיומים של Google Cloud DNS) בתור סוג היומן.
לוחצים על Get Service Account (קבלת חשבון שירות).
תוצג כתובת האימייל בחשבון שירות ייחודי, לדוגמה:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comמעתיקים את כתובת האימייל הזו. תשתמשו בו בשלב הבא.
לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
כתובת ה-URL של קטגוריית האחסון: מזינים את ה-URI של קטגוריית GCS עם נתיב הקידומת:
gs://dns-threat-detector-logs/מחליפים את:
-
dns-threat-detector-logs: שם דלי ה-GCS.
-
- אפשרות מחיקת המקור: בוחרים את אפשרות המחיקה הרצויה:
- אף פעם: לא נמחקים קבצים אחרי ההעברה (מומלץ לבדיקות).
- מחיקת קבצים שהועברו: הקבצים נמחקים אחרי שההעברה מסתיימת בהצלחה.
- מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת בהצלחה.
- הגיל המקסימלי של הקובץ: כולל קבצים שעברו שינוי במספר הימים האחרון. ברירת המחדל היא 180 ימים.
- מרחב השמות של הנכס: מרחב השמות של הנכס.
- תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה.
לוחצים על הבא.
בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
הענקת הרשאות IAM לחשבון השירות של Google SecOps
לחשבון השירות של Google SecOps צריך להיות התפקיד צפייה באובייקט אחסון בקטגוריית GCS.
- נכנסים אל Cloud Storage > Buckets (קטגוריות).
- לוחצים על שם הקטגוריה (לדוגמה,
dns-threat-detector-logs). - עוברים לכרטיסייה Permissions.
- לוחצים על הענקת גישה.
- מזינים את פרטי ההגדרה הבאים:
- Add principals (הוספת ישויות מורשות): מדביקים את כתובת האימייל בחשבון של חשבון השירות של Google SecOps.
- הקצאת תפקידים: בוחרים באפשרות צפייה באובייקט אחסון.
לוחצים על Save.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | לוגיקה |
|---|---|---|
| record.jsonPayload.dnsQuery.responseCode, record.jsonPayload.dnsQuery.authAnswer, record.jsonPayload.dnsQuery.queryTime, record.jsonPayload.partnerId, record.jsonPayload.detectionTime, record.logName | additional.fields | הערכים מועתקים למפת התוספים, ואז מתבצע מיזוג כרשומות במפה עם הערך string_value אם הוא לא ריק |
| record.receiveTimestamp | metadata.collected_timestamp | מנותח כחותמת זמן בפורמט ISO8601 |
| metadata.event_type | הערך הוא NETWORK_CONNECTION אם יש has_principal ו-has_target, STATUS_UPDATE אם יש has_principal, אחרת GENERIC_EVENT | |
| record.timestamp | metadata.event_timestamp | מנותח כחותמת זמן בפורמט ISO8601 |
| record.insertId | metadata.product_log_id | הערך מועתק ישירות אם הוא לא ריק |
| record.jsonPayload.dnsQuery.rdata | network.dns.answers | הערך מועתק אל answer.data, ואז מתבצע מיזוג כמערך אם הוא לא ריק |
| record.jsonPayload.dnsQuery.queryName, record.jsonPayload.dnsQuery.queryType | network.dns.questions | questions.name מ-queryName, questions.type ממופה ממחרוזת queryType למספר שלם, ואז מתבצע מיזוג כמערך אם הוא לא ריק |
| record.jsonPayload.dnsQuery.responseCode | network.dns.response_code | מיפוי ממחרוזת למספר שלם באמצעות טבלה מוגדרת מראש |
| record.jsonPayload.dnsQuery.protocol | network.ip_protocol | הערך מועתק ישירות אם הוא לא ריק |
| record.jsonPayload.dnsQuery.sourceIp | principal.asset.ip | הערך מועתק ישירות אם הוא לא ריק |
| record.jsonPayload.dnsQuery.sourceIp | principal.ip | הערך מועתק ישירות אם הוא לא ריק |
| record.jsonPayload.dnsQuery.location | principal.location.country_or_region | הערך מועתק ישירות אם הוא לא ריק |
| record.resource.labels.location | principal.location.name | הערך מועתק ישירות אם הוא לא ריק |
| record.jsonPayload.dnsQuery.vmProjectNumber, record.jsonPayload.dnsQuery.projectNumber | principal.resource.attribute.labels | הערכים מועתקים למפת התוספות, ואז מתבצע מיזוג כרשומות במפה אם היא לא ריקה |
| record.jsonPayload.dnsQuery.vmInstanceId | principal.resource.id | הערך מועתק ישירות אם הוא לא ריק |
| record.resource.labels.id | principal.resource.product_object_id | הערך מועתק ישירות אם הוא לא ריק |
| record.resource.type | principal.resource.type | הערך מועתק ישירות אם הוא לא ריק |
| security_result | מוזג ממפת built security_result | |
| record.jsonPayload.threatInfo.confidence | security_result.confidence | הערך LOW_CONFIDENCE אם יש התאמה ל- (?i)Low, הערך MEDIUM_CONFIDENCE אם יש התאמה ל- (?i)Medium, הערך HIGH_CONFIDENCE אם יש התאמה ל- (?i)High |
| record.jsonPayload.threatInfo.threatDescription | security_result.description | הערך מועתק ישירות אם הוא לא ריק |
| record.jsonPayload.threatInfo.threatIndicatorType, record.jsonPayload.threatInfo.threatIndicator, record.jsonPayload.threatInfo.threatFeed, record.jsonPayload.threatInfo.category, record.jsonPayload.threatInfo.type, record.jsonPayload.threatInfo.threat, record.jsonPayload.threatInfo.severity, record.resource.labels.resource_container | security_result.detection_fields | הערכים מועתקים למפת התוספות, ואז מתבצע מיזוג כרשומות במפה אם היא לא ריקה |
| record.severity | security_result.severity | המיפוי הוא LOW אם (?i)Low, INFORMATIONAL אם (?i)(Informational|Info), MEDIUM אם (?i)Medium, CRITICAL אם (?i)Critical, HIGH אם (?i)High |
| record.jsonPayload.threatInfo.threatId | security_result.threat_id | הערך מועתק ישירות אם הוא לא ריק |
| record.jsonPayload.dnsQuery.destinationIp | target.asset.ip | הערך מועתק ישירות אם הוא לא ריק |
| record.jsonPayload.dnsQuery.destinationIp | target.ip | הערך מועתק ישירות אם הוא לא ריק |
| metadata.vendor_name | הגדרה כ-Google Cloud | |
| metadata.product_name | ההגדרה היא Google Cloud DNS Threat Detector |
שנה רישום
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.