איסוף יומני 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. נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
  2. נכנסים לדף IAM & Admin > Service Accounts.
  3. לוחצים על Create service account.
  4. מזינים את פרטי ההגדרה הבאים:
    • Service account name: מזינים שם לחשבון (לדוגמה, bindplane-ingest).
    • תיאור חשבון השירות: מזינים תיאור (לדוגמה, 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 Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
  3. מורידים את קובץ האימות להטמעת נתונים.
  4. שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.

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

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

    השירות אמור להופיע כ-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/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
    • ‫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: לוחצים על קובץ > שמירה

מפעילים מחדש את סוכן 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"
        

הגדרת מאגר של שרתי רישום מרחוק

  1. נכנסים לממשק המשתמש באינטרנט של F5 BIG-IP.
  2. בכרטיסייה Main, עוברים אל DNS > Delivery > Load Balancing > Pools או אל Local Traffic > Pools.
  3. לוחצים על יצירה.
  4. מזינים את פרטי ההגדרה הבאים:
    • Name: מזינים שם ייחודי למאגר.
    • שימוש בהגדרה חברים חדשים:
      • בשדה Address, מזינים את כתובת ה-IP של סוכן Bindplane.
      • בשדה Service Port, מזינים את מספר היציאה של סוכן Bindplane.
  5. לוחצים על הוספה > סיום.

הגדרת יעד היומן המרוחק

  1. בכרטיסייה Main (ראשי), עוברים אל System > Logs > Configuration > Log Destinations (מערכת > יומנים > הגדרה > יעדים של יומנים).
  2. לוחצים על יצירה.
  3. מזינים את פרטי ההגדרה הבאים:
    • שם: מזינים שם ייחודי ליעד הזה.
    • Type: בוחרים באפשרות Remote High-Speed Log.
    • שם המאגר: בוחרים את מאגר שרתי היומנים המרוחקים שאליו רוצים שמערכת BIG-IP תשלח הודעות יומן.
    • פרוטוקול: בוחרים את הפרוטוקול שבו נעשה שימוש.
  4. לוחצים על סיום.

יצירת יעד מרוחק ליומנים בפורמט מסוים

  1. בכרטיסייה Main, עוברים אל System > Logs > Configuration > Log Destinations.
  2. לוחצים על יצירה.
  3. מזינים את פרטי ההגדרה הבאים:
    • שם: מזינים שם ייחודי ליעד הזה.
    • סוג: בוחרים באפשרות Syslog מרוחק.
    • פורמט: בוחרים את הפורמט של היומן.
    • העברה אל: בוחרים באפשרות יעד יומן במהירות גבוהה > היעד שמפנה למאגר של שרתי Syslog מרוחקים.
  4. לוחצים על סיום.

הגדרת מפרסם היומנים

  1. בכרטיסייה Main, עוברים אל System > Logs > Configuration > Log Publishers.
  2. לוחצים על יצירה.
  3. מספקים את פרטי ההגדרה הבאים:
    • שם: מזינים שם ייחודי לבעל האפליקציה.
    • יעדים: בוחרים את היעד החדש שנוצר ל-Syslog מרוחק מהרשימה זמין, ואז לוחצים על העברה כדי להעביר את היעד לרשימה נבחר.
  4. לוחצים על סיום.

הגדרת פרופיל מותאם אישית של רישום ביומן של DNS

  1. בכרטיסייה Main, עוברים אל DNS > Delivery > Profiles > Other > DNS Logging או אל Local Traffic > Profiles > Other > DNS Logging.
  2. לוחצים על יצירה.
  3. מזינים את פרטי ההגדרה הבאים:
    • שם: מזינים שם ייחודי לפרופיל.
    • Log Publisher (כלי לפרסום יומנים): בוחרים את היעד החדש שנוצר שאליו המערכת שולחת רשומות של יומני DNS.
    • Log Queries: מסמנים את התיבה Enabled.
    • תיעוד תשובות: מסמנים את התיבה מופעל.
    • Include Query ID (הכללת מזהה שאילתה): מסמנים את התיבה Enabled (מופעל).
  4. לוחצים על סיום.

הוספת פרופיל ה-DNS למאזין ה-DNS

  1. בכרטיסייה Main (ראשי), עוברים אל DNS > Delivery > Listeners > select DNS listener (DNS > מסירה > מאזינים > בחירת מאזין DNS).
  2. בקטע Service, בוחרים את פרופיל ה-DNS שהגדרתם קודם.
  3. לוחצים על עדכון.

טבלת מיפוי 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.