איסוף יומני DNS של F5
גרסת כלי הניתוח: 5.0
במאמר הזה מוסבר איך להטמיע יומני DNS של F5 ב-Google Security Operations באמצעות סוכן Bindplane.
F5 BIG-IP DNS הוא פתרון להעברת DNS שמייצר הודעות syslog לשאילתות DNS, לתגובות ולאירועים במערכת. המנתח מחלץ שדות מיומנים בפורמט syslog וממפה אותם למודל הנתונים המאוחד (UDM).
לפני שמתחילים
חשוב לוודא שיש לכם את הדברים הבאים:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות רשת בין סוכן Bindplane לבין מכשיר F5 BIG-IP
- אם השרת פועל מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
- גישה עם הרשאות ל-F5 BIG-IP
קבלת פרטי כניסה ל-Google SecOps בשביל סוכן Bindplane
כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים באחת מהשיטות הבאות:
- פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
- פריסות קודמות: ממשיכים להשתמש בקובץ האימות להטמעת נתונים (אפשרות 2) עד שה-Ingestion API יופסק ב-20 ביולי 2027.
אפשרות 1: יצירת חשבון שירות ל-Chronicle API (מומלץ)
- נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
- נכנסים לדף IAM & Admin > Service Accounts.
- לוחצים על Create service account.
- מזינים את פרטי ההגדרה הבאים:
- Service account name: מזינים שם לחשבון (לדוגמה,
bindplane-ingest). - תיאור חשבון השירות: מזינים תיאור (לדוגמה,
Bindplane agent log ingestion).
- Service account name: מזינים שם לחשבון (לדוגמה,
- לוחצים על Create and continue.
- בקטע Grant this service account access to project, לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
- לוחצים על המשך ואז על סיום.
- לוחצים על חשבון השירות שיצרתם ואז עוברים לכרטיסייה Keys.
- לוחצים על Add key > Create new key.
- בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
- שומרים את קובץ המפתח בשם
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כך שיתאים לנתיב שבו שומרים את הקובץ. - עוברים אל IAM & Admin > Settings ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את כלי הייצוא.
אפשרות 2: הורדת קובץ אימות להטמעת נתונים (גרסה מדור קודם)
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מספר הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת הסוכן של Bindplane
מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנת חלונות
- פותחים את שורת הפקודה או את 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/f5_dns: 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: F5_DNS raw_log_field: body service: pipelines: logs/f5_dns_to_chronicle: receivers: - udplog exporters: - chronicle/f5_dns
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת מקלט:
-
listen_address: כתובת ה-IP והיציאה להאזנה:0.0.0.0כדי להאזין בכל הממשקים (מומלץ)- יציאה
514היא יציאת syslog הרגילה (נדרש root ב-Linux; צריך להשתמש ב-1514ללא root)
-
הגדרת הייצוא:
-
creds_file_path: הנתיב המלא לקובץ המפתח של חשבון השירות בפורמט JSON (אפשרות 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
customer_id: מספר הלקוח שהועתק ממסוף Google SecOps -
location: מחליפים את<LOCATION>באזור של המכונה של Google SecOps (לדוגמה,us,europeאוasia-southeast1). המייצא מוסיף את הערך הזה בתחילתchronicle.googleapis.com. רשימה מלאה של נקודות הקצה האזוריות מופיעה במאמר Regional Endpoints. -
project: מחליפים את<PROJECT_NUMBER>במספר הפרויקט מתוך IAM & Admin > Settings. -
endpoint: צריך להשאיר את ההגדרהchronicle.googleapis.com.
-
מייצא API להטמעה מדור קודם
אם אתם משתמשים בקובץ האימות להטמעת נתונים מאפשרות 2, החליפו את הבלוק
exportersבקוד הבא. מגדירים אתcreds_file_pathלנתיב של קובץ האימות להטמעת נתונים. אם המכונה נמצאת מחוץ לארה"ב, מחליפים אתmalachiteingestion-pa.googleapis.comבנקודת הקצה האזורית (לדוגמה,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/f5_dns: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: F5_DNS raw_log_field: body
שמירת קובץ התצורה
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- 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"
- מקישים על
הגדרת מאגר של שרתי רישום מרחוק
- נכנסים לממשק המשתמש באינטרנט של F5 BIG-IP.
- בכרטיסייה Main, עוברים אל DNS > Delivery > Load Balancing > Pools או אל Local Traffic > Pools.
- לוחצים על יצירה.
- מזינים את פרטי ההגדרה הבאים:
- Name: מזינים שם ייחודי למאגר.
- שימוש בהגדרה חברים חדשים:
- בשדה Address, מזינים את כתובת ה-IP של סוכן Bindplane.
- בשדה Service Port, מזינים את מספר היציאה של סוכן Bindplane.
- לוחצים על הוספה > סיום.
הגדרת יעד היומן המרוחק
- בכרטיסייה Main (ראשי), עוברים אל System > Logs > Configuration > Log Destinations (מערכת > יומנים > הגדרה > יעדים של יומנים).
- לוחצים על יצירה.
- מזינים את פרטי ההגדרה הבאים:
- שם: מזינים שם ייחודי ליעד הזה.
- Type: בוחרים באפשרות Remote High-Speed Log.
- שם המאגר: בוחרים את מאגר שרתי היומנים המרוחקים שאליו רוצים שמערכת BIG-IP תשלח הודעות יומן.
- פרוטוקול: בוחרים את הפרוטוקול שבו נעשה שימוש.
- לוחצים על סיום.
יצירת יעד מרוחק ליומנים בפורמט מסוים
- בכרטיסייה Main, עוברים אל System > Logs > Configuration > Log Destinations.
- לוחצים על יצירה.
- מזינים את פרטי ההגדרה הבאים:
- שם: מזינים שם ייחודי ליעד הזה.
- סוג: בוחרים באפשרות Syslog מרוחק.
- פורמט: בוחרים את הפורמט של היומן.
- העברה אל: בוחרים באפשרות יעד יומן במהירות גבוהה > היעד שמפנה למאגר של שרתי Syslog מרוחקים.
- לוחצים על סיום.
הגדרת מפרסם היומנים
- בכרטיסייה Main, עוברים אל System > Logs > Configuration > Log Publishers.
- לוחצים על יצירה.
- מספקים את פרטי ההגדרה הבאים:
- שם: מזינים שם ייחודי לבעל האפליקציה.
- יעדים: בוחרים את היעד החדש שנוצר ל-Syslog מרוחק מהרשימה זמין, ואז לוחצים על העברה כדי להעביר את היעד לרשימה נבחר.
- לוחצים על סיום.
הגדרת פרופיל מותאם אישית של רישום ביומן של DNS
- בכרטיסייה Main, עוברים אל DNS > Delivery > Profiles > Other > DNS Logging או אל Local Traffic > Profiles > Other > DNS Logging.
- לוחצים על יצירה.
- מזינים את פרטי ההגדרה הבאים:
- שם: מזינים שם ייחודי לפרופיל.
- Log Publisher (כלי לפרסום יומנים): בוחרים את היעד החדש שנוצר שאליו המערכת שולחת רשומות של יומני DNS.
- Log Queries: מסמנים את התיבה Enabled.
- תיעוד תשובות: מסמנים את התיבה מופעל.
- Include Query ID (הכללת מזהה שאילתה): מסמנים את התיבה Enabled (מופעל).
- לוחצים על סיום.
הוספת פרופיל ה-DNS למאזין ה-DNS
- בכרטיסייה Main (ראשי), עוברים אל DNS > Delivery > Listeners > select DNS listener (DNS > מסירה > מאזינים > בחירת מאזין DNS).
- בקטע Service, בוחרים את פרופיל ה-DNS שהגדרתם קודם.
- לוחצים על עדכון.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
application |
principal.application |
ממופה ישירות מהשדה application. |
cipher_name |
network.tls.cipher |
ממופה ישירות מהשדה cipher_name. |
command_line |
principal.process.command_line |
ממופה ישירות מהשדה command_line. |
desc |
security_result.description |
ממופה ישירות מהשדה desc. |
desc_icrd |
security_result.description |
ממופה ישירות מהשדה desc_icrd. |
dest_ip |
target.ip |
ממופה ישירות מהשדה dest_ip. |
dest_port |
target.port |
ממופה ישירות מהשדה dest_port. |
file_path |
principal.process.file.full_path |
ממופה ישירות מהשדה file_path. הערך מוגדר כ-true אם הערך של level הוא "alert", אחרת הוא לא קיים. הערך מוגדר כ-true אם הערך של level הוא "alert", אחרת הוא לא קיים. |
msg3 |
security_result.description |
ממופה ישירות מהשדה msg3 כשהערך של application הוא run-parts. |
metadata.event_type |
הערך מוגדר כ-GENERIC_EVENT אם event_type ריק, אחרת הוא ממופה מ-event_type. הערך מוטמע כ-DNS. מקודד בתוך הקוד ל-"F5". |
|
principal_hostname |
principal.hostname |
ממופה ישירות מהשדה principal_hostname. |
proc_id |
principal.process.pid |
ממופה ישירות מהשדה proc_id. |
received_bytes |
network.received_bytes |
ממופה ישירות מהשדה received_bytes. |
resource_id |
target.resource.id |
ממופה ישירות מהשדה resource_id. |
resource_parent |
principal.resource.parent |
ממופה ישירות מהשדה resource_parent. |
response_code |
network.http.response_code |
ממופה ישירות מהשדה response_code. נקבע על סמך השדה level. |
src_ip |
principal.ip |
ממופה ישירות מהשדה src_ip. |
src_port |
principal.port |
ממופה ישירות מהשדה src_port. |
tls_version |
network.tls.version |
ממופה ישירות מהשדה tls_version. |
userName |
principal.user.userid |
ממופה ישירות מהשדה userName. |
when |
event.timestamp |
הערך מחושב לפי datetime1 ו-timezone או לפי datetime ו-timezone. |
query_response_code |
event.idm.read_only_udm.network.dns.response_code |
מופה מיומן השינויים |
User |
event.idm.read_only_udm.principal.user.userid |
מופה מיומן השינויים |
attemptCount |
event.idm.read_only_udm.security_result.detection_fields |
מופה מיומן השינויים |
rule_id_val |
event.idm.read_only_udm.security_result.rule_id |
מופה מיומן השינויים |
query_type |
event.idm.read_only_udm.question.type |
מופה מיומן השינויים |
record_type |
event.idm.read_only_udm.question.type |
מופה מיומן השינויים |
dns_class |
event.idm.read_only_udm.network.dns.question.class |
מופה מיומן השינויים |
intermediary_host |
event.idm.read_only_udm.network.dns.answer.data |
מופה מיומן השינויים |
intermediary_ip |
event.idm.read_only_udm.network.dns.answer.data |
מופה מיומן השינויים |
ttl_data |
event.idm.read_only_udm.network.dns.answer.ttl |
מופה מיומן השינויים |
dns_answer_domain |
event.idm.read_only_udm.network.dns.answer.name |
מופה מיומן השינויים |
qclass |
event.idm.read_only_udm.network.dns.answer.class |
מופה מיומן השינויים |
dns_name |
event.idm.read_only_udm.question.name |
מופה מיומן השינויים |
src_ip |
event.idm.read_only_udm.principal.asset.ip |
מופה מיומן השינויים |
dest_ip |
event.idm.read_only_udm.target.asset.ip |
מופה מיומן השינויים |
user |
event.idm.read_only_udm.principal.user.userid |
מופה מיומן השינויים |
host |
event.idm.read_only_udm.principal.ip ו-event.idm.read_only_udm.principal.asset.ip |
מופה מיומן השינויים |
partition |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
level |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
attempts |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
tty |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
start |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
end |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של המנתח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.