איסוף יומני Honeyd

נתמך ב:

במסמך הזה מוסבר איך להטמיע יומני Honeyd ב-Google Security Operations באמצעות סוכן Bindplane.

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

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

חשוב לוודא שיש לכם את הדברים הבאים:

  • מכונה של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות רשת בין סוכן Bindplane למארח Honeyd
  • אם השרת פועל מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
  • פריסה פעילה של Honeyd עם רישום ביומן

קבלת פרטי כניסה ל-Google SecOps עבור סוכן Bindplane

כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים באחת מהשיטות הבאות:

  • פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
  • פריסות מדור קודם: אפשר להמשיך להשתמש בקובץ האימות של ה-API להעברת נתונים (אפשרות 2) עד שה-API להעברת נתונים יפסיק לפעול ב-20 ביולי 2027.
  1. נכנסים אל Google Cloud המסוף ובוחרים את Google Cloud הפרויקט שמקושר למופע של Google SecOps.
  2. נכנסים לדף IAM & Admin > Service Accounts.
  3. לוחצים על Create service account.
  4. מספקים את פרטי ההגדרה הבאים:
    • Service account name: מזינים שם לחשבון (לדוגמה, bindplane-ingest).
    • Service account description: מזינים תיאור (לדוגמה, Bindplane agent log ingestion).
  5. לוחצים על Create and continue.
  6. בקטע Grant this service account access to project, לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
  7. לוחצים על המשך ואז על סיום.
  8. לוחצים על חשבון השירות שיצרתם ועוברים לכרטיסייה Keys.
  9. לוחצים על Add key > Create new key.
  10. בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
  11. שומרים את קובץ המפתח בשם ingestion-auth.json בספריית Bindplane Collector (/opt/observiq-otel-collector/ingestion-auth.json ב-Linux או C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json ב-Windows), או מעדכנים את creds_file_path ב-config.yaml כך שיתאים לנתיב שבו שומרים את הקובץ.
  12. עוברים אל IAM & Admin > Settings (ניהול הרשאות גישה ואדמין > הגדרות) ומעתיקים את מספר הפרויקט. תצטרכו אותו כדי להגדיר את הייצוא.

אפשרות 2: הורדת קובץ אימות להטמעת נתונים (גרסה מדור קודם)

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל הגדרות SIEM > סוכני איסוף.
  3. מורידים את קובץ האימות להטמעת נתונים.
  4. שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן סוכן Bindplane.

איך מקבלים את מספר הלקוח ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile.
  3. מעתיקים את מספר הלקוח מהקטע פרטי הארגון ושומרים אותו.

התקנת הסוכן של Bindplane

מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.

התקנת חלונות

  1. פותחים את שורת הפקודה או את PowerShell כאדמין.
  2. מריצים את הפקודה הבאה:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. מחכים שההתקנה תסתיים.

  4. מאמתים את ההתקנה על ידי הרצת:

    sc query observiq-otel-collector
    

    השירות אמור להופיע כ-RUNNING.

התקנה ב-Linux

  1. פותחים טרמינל עם הרשאות root או sudo.
  2. מריצים את הפקודה הבאה:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sudo systemctl status observiq-otel-collector
    

    השירות אמור להופיע כ-active (running).

מקורות מידע נוספים להתקנה

אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.

הגדרה של סוכן Bindplane לקליטת syslog ושליחה ל-Google SecOps

מאתרים את קובץ התצורה

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

עריכת קובץ התצורה

  • מחליפים את כל התוכן של config.yaml בהגדרה הבאה:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/honeyd:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: HONEYD
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/honeyd_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/honeyd
    

פרמטרים להגדרה

מחליפים את ה-placeholders הבאים:

  • הגדרת מקלט:

    • ‫udplog: סוג הנמען על סמך הפרוטוקול:
      • udplog עבור UDP syslog
      • ‫tcplog for TCP syslog
    • ‫0.0.0.0: כתובת ה-IP להאזנה:
      • ‫0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • כתובת IP ספציפית להאזנה בממשק אחד
    • ‫514: מספר היציאה להאזנה (לדוגמה, 514, ‏ 1514, ‏ 6514)
  • הגדרת הייצוא:

    • ‫honeyd: שם תיאורי של המייצא
    • ‫creds_file_path: הנתיב המלא לקובץ המפתח של חשבון השירות בפורמט JSON (אפשרות 1):
      • ‫Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • ‫Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • ‫<customer_id>: מספר הלקוח מהשלב הקודם
    • ‫location: מחליפים את <LOCATION> באזור של מופע Google SecOps (לדוגמה, us,‏ europe או asia-southeast1). ערך זה מתווסף לתחילית chronicle.googleapis.com של הכלי לייצוא. רשימה מלאה של נקודות הקצה האזוריות מופיעה במאמר Regional Endpoints.
    • ‫project: מחליפים את <PROJECT_NUMBER> במספר הפרויקט שמופיע בקטע IAM & Admin > Settings.
    • ‫endpoint: משאירים את הערך chronicle.googleapis.com.
    • ‫HONEYD: סוג היומן בדיוק כמו שהוא מופיע ב-Chronicle
    • ‫ingestion_labels: תוויות אופציונליות בפורמט YAML (לדוגמה, env: production)
  • הגדרת צינור עיבוד הנתונים:

    • ‫honeyd_to_chronicle: שם תיאורי לצינור עיבוד הנתונים

מייצא API להטמעה מדור קודם

  • אם משתמשים בקובץ האימות של ההעלאה מאפשרות 2, מחליפים את הבלוק exporters בבלוק הבא. מגדירים את creds_file_path לנתיב לקובץ האימות של ההעברה, ואם המופע שלכם נמצא מחוץ לארה"ב, מחליפים את malachiteingestion-pa.googleapis.com בנקודת הקצה האזורית (לדוגמה, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/honeyd:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: HONEYD
        raw_log_field: body
        ingestion_labels:
          env: production
    

שמירת קובץ התצורה

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • ‫Linux: מקישים על Ctrl+O, אחר כך על Enter ואז על Ctrl+X.
    • Windows: לוחצים על קובץ > שמירה

מפעילים מחדש את הסוכן של Bindplane כדי להחיל את השינויים.

  • כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:

    sudo systemctl restart observiq-otel-collector
    
    1. מוודאים שהשירות פועל:

      sudo systemctl status observiq-otel-collector
      
    2. בודקים אם יש שגיאות ביומנים:

      sudo journalctl -u observiq-otel-collector -f
      
  • כדי להפעיל מחדש את הסוכן של Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:

    • שורת פקודה או PowerShell כאדמין:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • מסוף השירותים:

      1. לוחצים על Win+R, מקלידים services.msc ולוחצים על Enter.
      2. מאתרים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
      4. מוודאים שהשירות פועל:

        sc query observiq-otel-collector
        
      5. בודקים אם יש שגיאות ביומנים:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

הגדרת העברה של syslog ב-Honeyd

‫Honeyd כותב יומני רישום של חיבורים ואינטראקציות לקבצים מקומיים. כדי להעביר את היומנים האלה באמצעות syslog לסוכן Bindplane, צריך להגדיר את rsyslog במארח Honeyd.

  1. נכנסים למארח Honeyd עם הרשאות root או sudo.
  2. מזהים את המיקום של קובץ היומן של Honeyd. כברירת מחדל, Honeyd רושם ביומן את הנתיב שצוין באמצעות הדגל -l בזמן ההפעלה (לדוגמה, /var/log/honeyd/honeyd.log).
  3. יוצרים קובץ תצורה של rsyslog כדי להעביר את היומנים של Honeyd:

    sudo nano /etc/rsyslog.d/honeyd-forward.conf
    
  4. מוסיפים את ההגדרה הבאה:

    module(load="imfile")
    input(type="imfile"
        File="/var/log/honeyd/honeyd.log"
        Tag="honeyd:"
        Severity="info"
        Facility="local6")
    local6.* @<BINDPLANE_AGENT_IP>:514
    
    • מחליפים את <BINDPLANE_AGENT_IP> בכתובת ה-IP של המארח של סוכן Bindplane.
    • מחליפים את /var/log/honeyd/honeyd.log בנתיב האמיתי לקובץ היומן של Honeyd.
    • כדי להעביר TCP (הערך צריך להיות זהה לסוג המקלט של סוכן Bindplane), צריך להשתמש ב-@@ במקום ב-@.
  5. מפעילים מחדש את rsyslog כדי להחיל את השינויים:

    sudo systemctl restart rsyslog
    
  6. כדי לוודא שהודעות syslog מתקבלות, בודקים את היומנים של סוכן Bindplane.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
תגובה metadata.event_type מוגדר כ-"NETWORK_HTTP" אם network.application_protocol ב-["HTTP","HTTPS"]; כ-"NETWORK_FTP" אם dst_port == "21"; כ-"NETWORK_SMTP" אם dst_port == "25"; אחרת כ-"NETWORK_CONNECTION"
metadata.product_name הגדרה ל-"Honeyd"
metadata.vendor_name מוגדרת כ-"Niels Provos"
dst_port network.application_protocol מוגדר כ-"UNKNOWN_APPLICATION_PROTOCOL", ואז מתעדכן ל-app_protocol_output שנגזר מ-dst_port אם dst_port קיים ו-app_protocol_output לא ריק
פרוטוקול network.ip_protocol הומר מ-protocol_number_src (פרוטוקול) באמצעות מיפוי ip_protocol_out
received_bytes network.received_bytes הערך שמוגדר הוא received_bytes אם type == "E", מומר ל-uinteger
sent_bytes network.sent_bytes מוגדר כ-sent_bytes אם type == "E" או protocol == "1", מומר ל-uinteger
src_ip principal.asset.ip הערך הועתק ישירות
src_ip principal.ip הערך הועתק ישירות
src_port principal.port הערך הועתק ישירות והומר למספר שלם
dst_ip target.asset.ip הערך הועתק ישירות
dst_ip target.ip הערך הועתק ישירות
תגובה target.platform הערך מוגדר כ-"WINDOWS" אם הוא תואם ל-(?i)WINDOWS, וכ-"LINUX" אם הוא תואם ל-(?i)LINUX
תגובה target.platform_patch_level חולץ מהתגובה באמצעות תבנית grok
תגובה target.platform_version חילוץ מתגובה באמצעות תבנית grok
dst_port target.port הערך הועתק ישירות והומר למספר שלם

יומן שינויים

צפייה ביומן השינויים של המנתח הזה

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