איסוף יומנים של 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
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות SIEM > סוכני איסוף.
- מורידים את קובץ האימות להטמעת נתונים.
שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile.
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנה ב-Windows
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sc query observiq-otel-collectorהשירות צריך להופיע עם הערך RUNNING.
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sudo systemctl status observiq-otel-collectorהשירות אמור להופיע כ-active (running).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרה של סוכן Bindplane לקליטת syslog ושליחה ל-Google SecOps
מאתרים את קובץ התצורה
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
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-
tcplogfor 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
- Linux:
-
<customer_id>: מספר הלקוח מהשלב הקודם -
endpoint: כתובת ה-URL של נקודת הקצה האזורית:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - לרשימה המלאה של נקודות קצה אזוריות
- ארה"ב:
-
FORTINET_WEBPROXY: סוג היומן בדיוק כמו שהוא מופיע ב-Chronicle -
ingestion_labels: תוויות אופציונליות בפורמט YAML (לדוגמה,env: production)
-
הגדרת צינור עיבוד הנתונים:
-
webproxy_to_chronicle: שם תיאורי של צינור העיבוד
-
שמירת קובץ התצורה
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- Linux: מקישים על
Ctrl+O, אחר כך עלEnterואז עלCtrl+X. - Windows: לוחצים על קובץ > שמירה.
- Linux: מקישים על
מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorמוודאים שהשירות פועל:
sudo systemctl status observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
sudo journalctl -u observiq-otel-collector -f
כדי להפעיל מחדש את סוכן Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:
שורת הפקודה או PowerShell כאדמין:
net stop observiq-otel-collector && net start observiq-otel-collectorמסוף השירותים:
- לוחצים על
Win+R, מקלידיםservices.mscולוחצים על Enter. - מאתרים את observIQ OpenTelemetry Collector.
- לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
מוודאים שהשירות פועל:
sc query observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- לוחצים על
הגדרת העברת syslog של שרת Proxy לאינטרנט ב-Fortinet FortiGate
- נכנסים לממשק האינטרנט של FortiGate.
- עוברים אל Log & Report > Log Settings (יומן ודוח > הגדרות יומן).
- גוללים למטה לקטע רישום ביומן והעברה לארכיון מרחוק.
- בקטע Syslog, לוחצים על הוספה.
- מספקים את פרטי ההגדרה הבאים:
- שם: מזינים שם תיאורי (לדוגמה,
Chronicle-Bindplane). - כתובת IP/שם דומיין מלא (FQDN): מזינים את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה,
192.168.1.100). - יציאה: מזינים
514(חייבת להתאים ליציאת המקלט של סוכן Bindplane). - פרוטוקול: בוחרים באפשרות UDP.
- רמה מינימלית: בוחרים באפשרות מידע או התראה.
- שם: מזינים שם תיאורי (לדוגמה,
מוודאים שקטגוריית היומן 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.
- טווח מזהי היומן
לוחצים על אישור כדי לשמור.
בפינה השמאלית העליונה, לוחצים על אישור כדי להחיל את ההגדרה.
כדי לוודא שהודעות 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.