איסוף יומנים של Cloud IDS

נתמך ב:

במאמר הזה מוסבר איך לייצא יומנים של Cloud IDS ולייבא אותם אל Google Security Operations באמצעות Cloud Storage. הכלי לניתוח הנתונים הופך יומנים גולמיים של Cloud IDS בפורמט JSON מ- Google Cloud לפורמט UDM מובנה. הוא מחלץ שדות רלוונטיים, ממפה אותם לסכימת UDM, מסווג אירועים ומעשיר את הנתונים בהקשר נוסף כמו כיוון הרשת וסוגי המשאבים.

לפני שמתחילים

חשוב לוודא שמתקיימות דרישות הסף הבאות:

  • מופע של Google SecOps.
  • ‫Cloud IDS מוגדר ופעיל בסביבת Google Cloud .
  • גישת אדמין ל- Google Cloud והרשאות מתאימות לגישה ל-Cloud IDS.

יצירת קטגוריה של Cloud Storage

  1. נכנסים למסוףGoogle Cloud .
  2. נכנסים לדף Cloud Storage Buckets.

    כניסה לדף Buckets

  3. לוחצים על Create.

  4. ממלאים את פרטי הקטגוריה בדף Create a bucket. אחרי כל אחד מהשלבים הבאים, לוחצים על המשך כדי לעבור לשלב הבא:

    1. בקטע Get started (תחילת העבודה), מבצעים את הפעולות הבאות:

      1. מזינים שם ייחודי שעומד בדרישות לשמות של קטגוריות. לדוגמה, gcp-ids-logs.
      2. כדי להפעיל את מרחב השמות ההיררכי, לוחצים על חץ ההרחבה כדי להרחיב את הקטע אופטימיזציה לעומסי עבודה שמתמקדים בקבצים ובעיבוד נתונים, ואז בוחרים באפשרות הפעלת מרחב שמות היררכי בדלי הזה.

      3. כדי להוסיף תווית של מאגר, לוחצים על החץ להרחבה כדי להרחיב את הקטע תוויות.

      4. לוחצים על הוספת תווית ומציינים מפתח וערך לתווית.

    2. בקטע Choose where to store your data, מבצעים את הפעולות הבאות:

      1. בוחרים סוג מיקום.
      2. בתפריט של סוג המיקום, בוחרים מיקום שבו נתוני האובייקטים בקטגוריה יישמרו באופן קבוע.

      3. כדי להגדיר שכפול בין מאגרי מידע, מרחיבים את הקטע הגדרת שכפול בין מאגרי מידע.

    3. בקטע Choose a storage class for your data, בוחרים default storage class לקטגוריה, או בוחרים ב-Autoclass לניהול אוטומטי של סוג האחסון (storage class) של נתוני הקטגוריה.

    4. בקטע Choose how to control access to objects, בוחרים באפשרות not כדי לא לאכוף public access prevention, ובוחרים access control model לאובייקטים של הקטגוריה.

    5. בקטע Choose how to protect object data:

      1. בוחרים באחת מהאפשרויות בקטע הגנה על נתונים שרוצים להגדיר לקטגוריה.
      2. כדי לבחור איך להצפין את נתוני האובייקט, לוחצים על החץ להרחבה של Data encryption ובוחרים Data encryption method.
  5. לוחצים על יצירה.

הגדרת ייצוא של יומנים מ-Cloud IDS

  1. נכנסים למסוףGoogle Cloud .
  2. עוברים אל Logging > Log Router.
  3. לוחצים על Create Sink.
  4. מציינים את פרמטרי ההגדרה הבאים:

    • שם מאגר: מזינים שם בעל משמעות, לדוגמה, google-cloud-ids-logs-sink.
    • יעד של Sink: בוחרים באפשרות Cloud Storage ומזינים את ה-URI של קטגוריית האחסון, לדוגמה: gs://gcp-ids-logs. Google Cloud
    • מסנן יומן:

      logName="projects/<your-project-id>/logs/cloud-ids"
      
  5. לוחצים על יצירה.

הגדרת הרשאות ל-Cloud Storage

  1. נכנסים אל IAM & Admin > IAM.
  2. מאתרים את חשבון השירות של Cloud Logging.
  3. מקצים את התפקיד roles/storage.admin בקטגוריה.

הגדרת פידים

כדי להגדיר פיד, מבצעים את השלבים הבאים:

  1. עוברים אל SIEM Settings > Feeds.
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה Feed name (שם הפיד), מזינים שם לפיד, למשל GCP IDS Logs (יומני מערכת IDS של GCP).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות GCP IDS בתור Log type.
  7. לוחצים על קבלת חשבון שירות לצד השדה חשבון השירות של Chronicle.
  8. לוחצים על הבא.
  9. מציינים ערכים לפרמטרים הבאים של הקלט:
    • Storage Bucket URI: כתובת URL של קטגוריה של Cloud Storage, לדוגמה, gs://gcp-ids-logs.
    • אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה לפי ההעדפה. הערה: אם בוחרים באפשרות Delete transferred files או Delete transferred files and empty directories, צריך לוודא שהענקתם לחשבון השירות את ההרשאות המתאימות.
    • הגיל המקסימלי של הקובץ: כולל קבצים ששונו במספר הימים האחרון. ברירת המחדל היא 180 ימים.
  10. לוחצים על הבא.
  11. בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.

טבלת מיפוי UDM

שדה היומן מיפוי UDM לוגיקה
insertId metadata.product_log_id מיפוי ישיר.
jsonPayload.alert_severity security_result.severity מיפוי ישיר.
jsonPayload.alert_time metadata.event_timestamp מיפוי ישיר.
jsonPayload.application principal.application מיפוי ישיר, רק אם הכיוון הוא מהשרת ללקוח.
jsonPayload.application target.application מיפוי ישיר, רק אם הכיוון הוא מהלקוח לשרת או אם logName מכיל traffic.
jsonPayload.category security_result.category המיפוי מתבצע על סמך הערך של jsonPayload.category:
– dos:‏ NETWORK_DENIAL_OF_SERVICE
– info-leak:‏ NETWORK_SUSPICIOUS
– protocol-anomaly:‏ NETWORK_MALICIOUS
– backdoor,‏ spyware,‏ trojan:‏ SOFTWARE_MALICIOUS
jsonPayload.category security_result.category_details מיפוי ישיר.
jsonPayload.cves extensions.vulns.vulnerabilities.cve_id מיפוי ישיר, איטרציה על המערך.
jsonPayload.destination_ip_address target.ip מיפוי ישיר.
jsonPayload.destination_port target.port מיפוי ישיר.
jsonPayload.details extensions.vulns.vulnerabilities.description מיפוי ישיר.
jsonPayload.details security_result.detection_fields.value ממופה אם קיים jsonPayload.repeat_count. המפתח מוגדר כ-repeat_count.
jsonPayload.direction network.direction מיפוי על סמך הערך של 'jsonPayload.direction':
- 'client-to-server': יוצא
- 'server-to-client': נכנס
jsonPayload.elapsed_time network.session_duration.seconds מיפוי ישיר.
jsonPayload.ip_protocol network.ip_protocol מיפוי ישיר, המרה לאותיות רישיות ואז מיפוי למספר הפרוטוקול.
jsonPayload.name security_result.threat_name מיפוי ישיר.
jsonPayload.network principal.resource.name מיפוי ישיר, רק אם הכיוון הוא מהשרת ללקוח.
jsonPayload.network target.resource.name מיפוי ישיר, רק אם הכיוון הוא מהלקוח לשרת או אם logName מכיל traffic.
jsonPayload.repeat_count security_result.detection_fields.value ממופה אם הוא קיים. המפתח מוגדר ל-'repeat_count'.
jsonPayload.session_id network.session_id מיפוי ישיר.
jsonPayload.source_ip_address principal.ip מיפוי ישיר.
jsonPayload.source_port principal.port מיפוי ישיר.
jsonPayload.start_time about.labels.value ממופה אם הוא קיים. המפתח מוגדר ל-'start_time'.
jsonPayload.start_time additional.fields.value.string_value ממופה אם הוא קיים. המפתח מוגדר ל-'start_time'.
jsonPayload.threat_id security_result.threat_id מיפוי ישיר.
jsonPayload.total_bytes about.labels.value ממופה אם הוא קיים. המפתח מוגדר כ-'total_bytes'.
jsonPayload.total_bytes additional.fields.value.string_value ממופה אם הוא קיים. המפתח מוגדר כ-'total_bytes'.
jsonPayload.total_packets about.labels.value ממופה אם הוא קיים. המפתח מוגדר כ-'total_packets'.
jsonPayload.total_packets additional.fields.value.string_value ממופה אם הוא קיים. המפתח מוגדר כ-'total_packets'.
jsonPayload.type security_result.detection_fields.value ממופה אם הוא קיים. המפתח מוגדר כ-'type'.
jsonPayload.uri_or_filename target.file.full_path מיפוי ישיר.
logName security_result.category_details מיפוי ישיר.
receiveTimestamp metadata.collected_timestamp מיפוי ישיר.
resource.labels.id observer.resource.product_object_id מיפוי ישיר.
resource.labels.location observer.location.name מיפוי ישיר.
resource.labels.resource_container observer.resource.name מיפוי ישיר.
resource.type observer.resource.resource_subtype מיפוי ישיר.
metadata.event_type הערך נקבע על ידי קבוצה של כללים מותנים שמבוססים על הנוכחות והערכים של שדות אחרים. ברירת המחדל היא GENERIC_EVENT.
metadata.vendor_name ערך סטטי: Google Cloud Platform.
metadata.product_name ערך סטטי: GCP_IDS.
metadata.log_type ערך סטטי: GCP_IDS.
extensions.vulns.vulnerabilities.vendor ערך סטטי: GCP_IDS, מתווסף לכל CVE ב-'jsonPayload.cves'.
principal.resource.resource_type ערך סטטי: VPC_NETWORK, מתווסף אם jsonPayload.network קיים והכיוון הוא מהשרת ללקוח.
target.resource.resource_type ערך סטטי: VPC_NETWORK, מתווסף אם jsonPayload.network קיים והכיוון הוא מהלקוח לשרת או אם logName מכיל traffic.
observer.resource.resource_type ערך סטטי: CLOUD_PROJECT, מתווסף אם קיים הערך resource.labels.resource_container או resource.type.
observer.resource.attribute.cloud.environment ערך סטטי: GOOGLE_CLOUD_PLATFORM, מתווסף אם קיים הערך resource.labels.resource_container או resource.type.

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.