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

גרסת המנתח: 3.0

נתמך ב:

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

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

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

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

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

קבלת קובץ אימות להטמעת נתונים ב-Google SecOps

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

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

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

התקנת סוכן Bindplane

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

התקנה ב-Windows

  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/fortinet_webproxy:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.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 for TCP syslog
    • ‫0.0.0.0: כתובת ה-IP להאזנה:
      • ‫0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • כתובת IP ספציפית להאזנה בממשק אחד
    • ‫514: מספר היציאה להאזנה (לדוגמה, 514, ‏ 1514, ‏ 6514)
  • הגדרת הייצוא:

    • ‫fortinet_webproxy: שם תיאורי של הכלי לייצוא
    • ‫creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:
      • ‫Linux: /etc/bindplane-agent/ingestion-auth.json
      • ‫Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • ‫<customer_id>: מספר הלקוח מהשלב הקודם
    • ‫endpoint: כתובת ה-URL של נקודת הקצה האזורית:
    • ‫FORTINET_WEBPROXY: סוג היומן בדיוק כמו שהוא מופיע ב-Chronicle
    • ‫ingestion_labels: תוויות אופציונליות בפורמט YAML (לדוגמה, env: production)
  • הגדרת צינור עיבוד הנתונים:

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

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

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • ‫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).
    • יציאה: מזינים 514 (חייבת להתאים ליציאת המקלט של סוכן Bindplane).
    • פרוטוקול: בוחרים באפשרות UDP.
    • רמה מינימלית: בוחרים באפשרות מידע או התראה.
  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 היגיון
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.