הגדרה של Google Security Operations באמצעות VMware Engine

במאמר הזה מתואר איך להגדיר את Google Security Operations (Google SecOps) כדי לשפר את הזיהוי, החקירה והתגובה לאיומי סייבר במכונות וירטואליות (VM) שפועלות ב-VMware Engine. בנוסף, Google SecOps יכול לנתח טלמטריה מתשתית VMware ומ Google Cloud שירותים נתמכים אחרים.

סקירה כללית

‫Google SecOps הוא שירות ענן שפותח כשכבה ייעודית מעל תשתית Google. בעזרת השירות הזה, ארגונים שומרים כמויות עצומות של נתוני מדידות שהם מייצרים לגבי שימוש ברשת ובאבטחה. בארגונים יכולים גם לנתח נתונים אלה ולבצע בהם חיפושים באופן פרטי. ‫Google SecOps מנרמלת, מוסיפה לאינדקס, יוצרת מתאם ומנתחת את הנתונים כדי לספק ניתוח מיידי והקשר במקרה של פעילות מסוכנת או חשודה.

מנגנונים להעברת נתונים ל-Google SecOps

‫Google SecOps מציע כמה דרכים להטמעת נתונים, כפי שמפורט במסמכי התיעוד בנושא הטמעת נתונים ב-Google SecOps. דוגמת ההגדרה במדריך הזה מתמקדת בנקודות השילוב העיקריות הבאות בארכיטקטורה מייצגת:

  • יומני מערכת של מכונות וירטואליות ועומסי עבודה: יש כמה דפוסי ארכיטקטורה לרישום יומנים שמקורם במכונות וירטואליות ובעומסי עבודה. בדוגמה להגדרה במדריך הזה נעשה שימוש בסוכן OpenTelemetry BindPlane שמוטמע ישירות במכונות הווירטואליות האלה. השיטה הזו מספקת דרך גמישה וסטנדרטית לאיסוף ולהעברה של יומני מערכת.

  • Google Cloud יומנים: מעבר לסביבות וירטואליות, רוב הפרויקטים של הלקוחות משתמשים במגוון שירותים של Google Cloud (לא כולל VMware Engine בהקשר הספציפי הזה). כדי לקבל תמונה מקיפה של זיהוי האיומים, אפשר להעביר יומנים מהשירותים הנתמכים האלה אל Google SecOps. בדוגמה להגדרה שבהמשך נעשה שימוש במנגנון ההטמעה הישירה, והמסננים של Cloud Logging מוגדרים כך שינתבו באופן סלקטיבי נתוני יומן רלוונטיים.

הגדרה של Google Security Operations באמצעות VMware Engine

כדי להגדיר את Google Security Operations באמצעות VMware Engine, מבצעים את השלבים הבאים:

  1. העברת יומני מערכת של עומסי עבודה
  2. יצירת כללים בהתאמה אישית
  3. העברה Google Cloud של יומני Cloud

העברה של יומני המערכת של עומסי העבודה

כדי להעביר יומנים של מערכת עומסי עבודה למכונות וירטואליות שפועלות ב-VMware Engine אל Google SecOps, אפשר להשתמש בסוכן איסוף של OpenTelemetry שפועל בתוך עומסי העבודה. כך עושים זאת:

  1. פועלים לפי ההוראות של סוכן Bindplane לפני שמתחילים כדי להתקין את הסוכן ולהוריד את קובץ האימות של הטמעת נתונים ב-Google SecOps. אפשר להוריד את קובץ האימות של Google SecOps מפורטל Google SecOps.
  2. מוודאים שהיציאות הרלוונטיות בחומת האש פתוחות.
  3. כדי להתקין את סוכן Bindplane, פועלים לפי ההוראות למערכת ההפעלה שלכם, Linux או Windows.
  4. מבצעים את השלבים כדי להגדיר את הסוכן. במהלך השלבים האלה, חשוב לשים לב לפרטים הבאים:

    • בקטע Receiver (מקלט) מציינים אילו יומנים הסוכן צריך לאסוף ולשלוח ל-Google SecOps.
    • בקטע Exporter מציינים את היעד שאליו הסוכנים צריכים לשלוח את היומנים.
    • המשימה הזו משתמשת בכלי לייצוא של Google SecOps, ששולח את היומנים ישירות אל Google SecOps Ingestion API.
  5. תוכלו להיעזר בדוגמאות נוספות להגדרות של איסוף יומנים. הדוגמה הבאה מתייחסת לאיסוף של יומני אירועים של Windows (אפליקציה, אבטחה ומערכת) ושליחתם אל Google SecOps. היא משתמשת בפורמט ההגדרה של OpenTelemetry Collector:

    receivers:
    windowseventlog/source001HZ7NFAB5HZY6TPMGEYRN4XGZ_application:
        attributes:
           log_type: windows_event.application
        channel: application
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source001HZ7NFAB5HZY6TPMGEYRN4XGZ_security:
        attributes:
           log_type: windows_event.security
        channel: security
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    windowseventlog/source001HZ7NFAB5HZY6TPMGEYRN4XGZ_system:
        attributes:
           log_type: windows_event.system
        channel: system
        max_reads: 100
        poll_interval: 1s
        raw: true
        start_at: end
    processors:
    resourcedetection/source0_01HZ7NFAB5HZY6TPMGEYRN4XGZ:
        detectors:
            -   system
        system:
            hostname_sources:
                 -   os
    transform/source001HZ7NFAB5HZY6TPMGEYRN4XGZprocessor0_logs:
        error_mode: ignore
        log_statements:
            -   context: log
              statements:
                  -   set(attributes["chronicle_log_type"], "WINEVTLOG") where true
    exporters:
    chronicle/NA-SDL:
        compression: none
        creds: '{  "type": "service_account",
            "project_id": "malachite-previewamericassdl",
            "private_key_id": "a9c8d8f0b081c09bcf92621804ba19fc6529ecce",
            "private_key": "----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
            "client_email": "previewamericassdl-1710772997@malachite-previewamericassdl.iam.gserviceaccount.com",
            "client_id": "114604545528934473681",
            "auth_uri": "https://accounts.google.com/o/oauth2/auth",
            "token_uri": "https://oauth2.googleapis.com/token",
            "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
            "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/previewamericassdl-1710772997%40malachite-previewamericassdl.iam.gserviceaccount.com",
            "universe_domain": "googleapis.com" }'
        customer_id: a556547c-1cff-43ef-a2e4-cf5b12a865df
        endpoint: malachiteingestion-pa.googleapis.com
        ingestion_labels:
            env: takeshi
        log_type: CATCH_ALL
        namespace: null
        raw_log_field: body
        retry_on_failure:
            enabled: true
            initial_interval: 5s
            max_elapsed_time: 300s
            max_interval: 30s
        sending_queue:
            enabled: true
            num_consumers: 10
            queue_size: 5000
            storage: file_storage/NA-SDL
    extensions:
    file_storage/NA-SDL:
        compaction:
            directory: $OIQ_OTEL_COLLECTOR_HOME/storage
            on_rebound: true
        directory: $OIQ_OTEL_COLLECTOR_HOME/storage
    service:
    extensions:
        -   file_storage/NA-SDL
    pipelines:
        logs/source001HZ7NFAB5HZY6TPMGEYRN4XGZ_NA-SDL-0:
            receivers:
                -   windowseventlog/source001HZ7NFAB5HZY6TPMGEYRN4XGZ_application
                -   windowseventlog/source001HZ7NFAB5HZY6TPMGEYRN4XGZ_security
                -   windowseventlog/source001HZ7NFAB5HZY6TPMGEYRN4XGZ_system
            processors:
                -   resourcedetection/source0_01HZ7NFAB5HZY6TPMGEYRN4XGZ
                -   transform/source001HZ7NFAB5HZY6TPMGEYRN4XGZprocessor0_logs
            exporters:
                -   chronicle/NA-SDL

  6. אחרי השלמת ההגדרה, מפעילים מחדש את הכלי לאיסוף נתונים ומוודאים שהיומנים מאוכלסים במרכז הבקרה של Google SecOps.

יצירת כללים בהתאמה אישית לזיהוי איומים

‫Google SecOps מספק כללי ברירת מחדל שנבחרו בקפידה וזיהוי שנועדו לזהות ביעילות איומי סייבר. בנוסף לתכונות ברירת המחדל, אפשר ליצור כללים מותאמים אישית כדי ליצור התראות שמותאמות לסביבה ספציפית ולבעיות האבטחה שלה. כדי לזהות איומים מתוחכמים יותר, Google SecOps מאפשרת שימוש בכללי אירועים מרובים. כך אפשר לעקוב אחרי אירועי אבטחה קשורים ולבצע ביניהם קורלציה לאורך זמן, מה שמקל על זיהוי דפוסים מורכבים של מתקפות שאולי לא יהיו ברורים מאירועים מבודדים.

העברת Google Cloud יומני Cloud

כדי להגדיר את ההטמעה של נתונים ב-Google SecOps באמצעות הטמעה ישירה: Google Cloud

  1. פועלים לפי השלבים במאמר העברת נתונים אל Google SecOps כדי להגדיר יומנים. Google Cloud
  2. בכרטיסייה Global Ingestion Settings (הגדרות גלובליות של הטמעה), מפעילים את האפשרות ingest and analyze data (הטמעה וניתוח של נתונים) מ-Cloud Logging.
  3. כדאי לעיין ברשימת השירותים הנתמכים Google Cloud לצורך הטמעת יומנים כדי לזהות את השירותים Google Cloud הכי חשובים לצורכי ניטור לצורכי אבטחה שלכם. מידע נוסף מופיע במאמר בנושא ייצוא יומנים של gcp_name.
  4. בכרטיסייה הגדרות סינון של ייצוא, משנים את מסנן הייצוא שמוגדר כברירת מחדל לפי הצורך כדי לכלול את היומנים הספציפיים שרוצים לייצא. הדוגמה הבאה היא עותק של מסנן הייצוא שבו נעשה שימוש במסמך הזה:
    log_id("dns.googleapis.com/dns_queries") OR log_id("cloudaudit.googleapis.com/activity") OR log_id("cloudaudit.googleapis.com/system_event") OR
    ( log_id("cloudaudit.googleapis.com/data_access")
    AND NOT protoPayload.methodName =~ "^storage.(buckets|objects).(get|list)$"
    AND NOT protoPayload.request.cmd = "select" ) OR
    log_id("cloudaudit.googleapis.com/policy") OR
    log_id("cloudaudit.googleapis.com/access_transparency") OR
    log_id("compute.googleapis.com/nat_flows") OR
    log_id("compute.googleapis.com/firewall") OR
    log_id("requests") OR
    logName =~ "^projects/[\w-]+/logs/syslog$" OR
    logName =~ "^projects/[\w-]+/logs/authlog$" OR
    log_id("securelog") OR
    log_id("sysmon.raw") OR
    logName =~ "^projects/[\w-]+/logs/windows_event_log$" OR
    log_id("windows_event_log") OR
    log_id("events") OR
    log_id("stdout") OR
    log_id("stderr") OR
    log_id("audit_log") OR
    log_id("recaptchaenterprise.googleapis.com/assessment") OR
    log_id("recaptchaenterprise.googleapis.com/annotation") OR
    log_id("cloudaudit.googleapis.com/activity")

המאמרים הבאים