איסוף יומנים של Fortinet Web Proxy

גרסת המנתח: 3.0

נתמך ב:

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

שרת ה-Proxy לאינטרנט Fortinet FortiGate יוצר יומנים של סשנים מפורשים ושקופים של שרת ה-Proxy, ומתעד תנועת HTTP/HTTPS, החלטות לגבי סינון כתובות URL ואירועים של גישה לאינטרנט. היומנים משתמשים בפורמט של צמדי מפתח/ערך של syslog וכוללים מטא-נתונים של הרשת, פעולות אבטחה ופרטי זהות של המשתמשים.

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

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

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

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

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

  • פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
  • פריסות קודמות: ממשיכים להשתמש בקובץ האימות להטמעת נתונים (אפשרות 2) עד שה-Ingestion 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 ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את הייצוא.

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

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

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל הגדרות > ניהול > פרופיל. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פרופיל.
  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
    

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

מקורות מידע נוספים בנושא התקנה

לאפשרויות התקנה נוספות ולפתרון בעיות, עיינו במדריך להתקנת סוכן 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/fortinet_webproxy:
        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: FORTINET_WEBPROXY
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/webproxy_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/fortinet_webproxy
    

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

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

  • הגדרת המקלט:

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

    • ‫fortinet_webproxy: שם תיאורי של הייצואן
    • ‫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. לרשימה המלאה, ראו נקודות קצה אזוריות.
    • ‫project: מחליפים את <PROJECT_NUMBER> במספר הפרויקט שמופיע בקטע IAM & Admin > Settings.
    • ‫endpoint: משאירים את הערך chronicle.googleapis.com.
    • ‫FORTINET_WEBPROXY: סוג היומן בדיוק כמו שהוא מופיע ב-Chronicle
    • ‫ingestion_labels: תוויות אופציונליות בפורמט YAML (לדוגמה, env: production)
  • הגדרת צינור עיבוד הנתונים:

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

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

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

    exporters:
      chronicle/fortinet_webproxy:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: FORTINET_WEBPROXY
        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 של שרת proxy לאינטרנט ב-Fortinet FortiGate

  1. נכנסים לממשק האינטרנט של FortiGate.
  2. עוברים אל Log & Report > Log Settings (יומן ודוח > הגדרות יומן).
  3. גוללים למטה לקטע רישום ביומן והעברה לארכיון מרחוק.
  4. בקטע Syslog, לוחצים על הוספה.
  5. מזינים את פרטי ההגדרה הבאים:
    • שם: מזינים שם תיאורי (לדוגמה, Chronicle-Bindplane).
    • כתובת IP או FQDN: מזינים את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה, 192.168.1.100).
    • ‫Port: מזינים 514 (חייב להתאים ליציאת המקלט של סוכן Bindplane).
    • פרוטוקול: בוחרים באפשרות UDP.
    • ‫Minimum Level: בוחרים באפשרות Information או Notification.
  6. מוודאים שקטגוריית היומן Web Proxy מופעלת. לחלופין, אפשר להשתמש ב-CLI כדי להגדיר את מסנן ה-syslog:

    config log syslogd setting
        set status enable
        set server <BINDPLANE_AGENT_IP>
        set port 514
    end
    config log syslogd filter
        set filter "logid(0300)"
        set filter-type include
    end
    
    • טווח מזהי היומנים של 0300 כולל אירועים של שרת proxy לאינטרנט. משנים את המסנן בהתאם לסביבה.
    • מחליפים את <BINDPLANE_AGENT_IP> בכתובת ה-IP של המארח של סוכן Bindplane.
  7. לוחצים על אישור כדי לשמור.

  8. כדי להחיל את ההגדרות, לוחצים על אישור בפינה השמאלית העליונה.

  9. כדי לוודא שהודעות syslog מתקבלות, בודקים את יומני הסוכן של Bindplane.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM Logic (פונקציה לוגית)
group, profile, agent, subtype, catdesc, reqtype additional.fields מיזוג עם תוויות שנוצרו מכל שדה
action, has_network, has_principal, has_target metadata.event_type מוגדר כ-USER_LOGIN אם הפעולה היא auth-logon, אחרת מוגדר כ-NETWORK_HTTP אם has_network הוא true, אחרת מוגדר כ-NETWORK_CONNECTION אם has_principal ו-has_target הם true, אחרת מוגדר כ-STATUS_UPDATE אם has_principal הוא true, אחרת מוגדר כ-GENERIC_EVENT
eventtype metadata.product_event_type הערך הועתק ישירות
logid metadata.product_log_id הערך הועתק ישירות
metadata.product_name צריך להגדיר את הערך "FORTINET_WEBPROXY"
metadata.vendor_name צריך להגדיר את הערך "FORTINET_WEBPROXY"
שירות network.application_protocol הערך מועתק ישירות אם השירות הוא ב-HTTP או ב-HTTPS
כיוון network.direction צריך להגדיר את הערך INBOUND אם הכיוון הוא דואר נכנס, תגובה, אחרת צריך להגדיר את הערך OUTBOUND אם הכיוון הוא דואר יוצא
httpmethod network.http.method הערך מועתק ישירות אם httpmethod הוא GET או POST
referralurl network.http.referral_url הערך הועתק ישירות
proto, subtype, service network.ip_protocol מוגדר ל-UDP אם proto=17, ל-TCP אם proto=6 או subtype=wad, ל-IP6IN4 אם proto=41, ל-ICMP אם service=PING או proto=1 או אם השירות תואם ל-ICMP
rcvdbyte network.received_bytes הומר למספר שלם ללא סימן
sentbyte network.sent_bytes הומר למספר שלם ללא סימן
sessionid network.session_id הערך הועתק ישירות
devname principal.asset.hostname הערך הועתק ישירות
srcip principal.asset.ip הערך הועתק ישירות
devname principal.hostname הערך הועתק ישירות
srcip principal.ip הערך הועתק ישירות
srccountry principal.location.country_or_region הערך מועתק ישירות אם הוא לא שמור ולא ריק
srcport principal.port ההמרה למספר שלם
srcuuid principal.user.product_object_id הערך הועתק ישירות
vd principal.user.user_display_name הערך הועתק ישירות
משתמש principal.user.userid הערך הועתק ישירות
filtername security_result.about.resource.attribute.labels מוזג עם תווית שנוצרה מ-filtername אם הוא לא ריק ולא -
פעולה security_result.action צריך להגדיר את הערך BLOCK אם action=blocked, ואת הערך ALLOW אם action in accept, passthrough
devid, policyid, srcintf, srcintfrole, ratemethod, cat security_result.detection_fields מיזוג עם תוויות שנוצרו מכל שדה
msg security_result.description הערך הועתק ישירות
poluuid security_result.rule_id הערך הועתק ישירות
policytype security_result.rule_type הערך הועתק ישירות
רמה security_result.severity הגדרה ל-HIGH אם level=warning, ל-MEDIUM אם level=notice
סוג security_result.summary הערך הועתק ישירות
dstip target.asset.ip הערך הועתק ישירות
filename target.file.full_path הערך הועתק ישירות
filetype target.file.mime_type הערך הועתק ישירות
filesize target.file.size הומר למספר שלם ללא סימן
שם המארח target.hostname הערך הועתק ישירות
dstip target.ip הערך הועתק ישירות
dstcountry target.location.country_or_region הערך הועתק ישירות
dstport target.port ההמרה למספר שלם
dstintf, dstintfrole target.resource.attribute.labels מיזוג עם תוויות שנוצרו מכל שדה
dstuuid target.resource.product_object_id הערך הועתק ישירות
url target.url הערך הועתק ישירות
eventtime event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
ts event.idm.read_only_udm.metadata.collected_timestamp מופה מיומן השינויים
transid event.idm.read_only_udm.additional.fields מופה מיומן השינויים
method event.idm.read_only_udm.security_result.detection_fields מופה מיומן השינויים

יומן שינויים

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

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