איסוף יומנים של 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. כדי להפעיל מרחב שמות היררכי, לוחצים על החץ להרחבת הקטע Optimize for file oriented and data-intensive workloads ובוחרים באפשרות Enable Hierarchical namespace on this bucket.

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

      4. לוחצים על Add label ומציינים מפתח וערך בשביל התווית.

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

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

      3. כדי להגדיר שכפול בין קטגוריות, מרחיבים את הקטע Set up cross-bucket replication.

    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. מציינים את פרמטרי ההגדרה הבאים:

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

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

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

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

הגדרת פידים

כדי להגדיר פיד:

  1. עוברים אל הגדרות > ניהול נתונים > פידים. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פידים.
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה Feed name, מזינים שם לפיד, לדוגמה GCP IDS Logs.
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות GCP IDS בתור Log type.
  7. לוחצים על Get Service Account ליד השדה Chronicle Service Account.
  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 Logic (פונקציה לוגית)
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: ‏OUTBOUND
– server-to-client: ‏INBOUND
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.