איסוף יומנים של Check Point Harmony

גרסת המנתח: 3.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של Check Point Harmony Email and Collaboration ‏(HEC) ב-Google Security Operations באמצעות Bindplane. קוד המנתח הזה מחלץ צמדי מפתח/ערך מהודעות syslog של Check Point Harmony וממפה אותם למודל נתונים מאוחד (UDM). הוא קודם מנרמל את פורמט ההודעה, ואז מנתח וממפה שדות באופן איטרטיבי לקטגוריות UDM כמו principal,‏ target,‏ network ו-security_result, ומעשיר את הנתונים לצורך ניתוח אבטחה.

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

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

  • מופע של Google SecOps
  • ‫Windows 2016 ואילך, או מארח Linux עם systemd
  • אם אתם משתמשים בשרת proxy, היציאות של חומת האש פתוחות
  • גישה עם הרשאות ל-Check Point Harmony HEC (Infinity Portal)

קבלת פרטי כניסה ל-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
    

התקנה ב-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
    

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

אפשרויות התקנה נוספות מפורטות במדריך ההתקנה.

הגדרת סוכן Bindplane להטמעת Syslog ושליחה אל Google SecOps

  1. ניגשים לקובץ התצורה:
    • מאתרים את הקובץ config.yaml. בדרך כלל, הוא נמצא בספרייה /opt/observiq-otel-collector/ ב-Linux או בספריית ההתקנה ב-Windows.
    • פותחים את הקובץ באמצעות כלי לעריכת טקסט (לדוגמה, nano,‏ vi או פנקס הרשימות).
  2. עורכים את הקובץ config.yaml:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            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
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: chronicle.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'CHECKPOINT_HARMONY'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    • מחליפים את היציאה ואת כתובת ה-IP לפי הצורך בתשתית שלכם.
    • מחליפים את <LOCATION> באזור של המופע של Google SecOps (לדוגמה, us,‏ europe או asia-southeast1). המערכת מוסיפה את הערך הזה בתחילת chronicle.googleapis.com.
    • מחליפים את <PROJECT_NUMBER> במספר הפרויקט שמופיע בקטע IAM & Admin > Settings.
    • מחליפים את <customer_id> במספר הלקוח בפועל.
    • מעדכנים את /path/to/ingestion-authentication-file.json לנתיב שבו נשמר קובץ המפתח של חשבון השירות (אפשרות 1) בקטע קבלת פרטי כניסה ל-Google SecOps בשביל סוכן Bindplane.

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

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

    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'CHECKPOINT_HARMONY'
            raw_log_field: body
            ingestion_labels:
    

מפעילים מחדש את הסוכן של Bindplane כדי להחיל את השינויים.

  • כדי להפעיל מחדש את הסוכן של Bindplane ב-Linux, מריצים את הפקודה הבאה:

    sudo systemctl restart bindplane-agent
    
  • כדי להפעיל מחדש את הסוכן של Bindplane ב-Windows, אפשר להשתמש במסוף Services או להזין את הפקודה הבאה:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

הגדרת Syslog ל-Check Point Harmony HEC

  1. נכנסים לממשק המשתמש של Infinity Portal > Harmony Email & Collaboration באינטרנט.
  2. עוברים אל הגדרות > מעקב > SIEM.
  3. לוחצים על הוספת שרת SIEM.
  4. מזינים את פרטי ההגדרה הבאים:
    • מארח: מזינים את כתובת ה-IP של סוכן Bindplane.
    • ‫Port: מזינים את מספר היציאה של סוכן Bindplane.
    • פרוטוקול: בוחרים באפשרות UDP.
    • (אופציונלי) אסימון: מזינים תג אופציונלי ליומנים.
  5. לוחצים על Save.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM Logic (פונקציה לוגית)
פעולה security_result.action_details מיפוי ישיר.
security_result.action ממופה ל-ALLOW,‏ BLOCK,‏ ALLOW_WITH_MODIFICATION או QUARANTINE על סמך הערך של שדה הפעולה.
additional_info additional.fields.value.string_value מיפוי ישיר עם המפתח = additional_info.
analyzed_on security_result.detection_fields.value מיפוי ישיר עם המפתח = analyzed_on.
client_name additional.fields.value.string_value מיפוי ישיר עם המפתח = client_name.
client_version intermediary.platform_version מיפוי ישיר.
confidence_level security_result.detection_fields.value מיפוי ישיר עם המפתח = confidence_level.
security_result.confidence ממופה ל-UNKNOWN_CONFIDENCE,‏ LOW_CONFIDENCE,‏ MEDIUM_CONFIDENCE או HIGH_CONFIDENCE על סמך הערך של השדה confidence_level.
description security_result.description מיפוי ישיר.
dst target.ip מיפוי ישיר.
dst_dns_name security_result.detection_fields.value מיפוי ישיר עם המפתח = dst_dns_name.
dst_machine_name security_result.detection_fields.value מיפוי ישיר עם המפתח = dst_machine_name.
target.asset.hostname מיפוי ישיר.
target.hostname מיפוי ישיר.
dst_user_dn security_result.detection_fields.value מיפוי ישיר עם המפתח = dst_user_dn.
dst_user_name target.user.userid מיפוי ישיר.
ep_rule_id security_result.rule_id מיפוי ישיר אם rule_uid ריק.
שגיאות security_result.summary מיפוי ישיר.
event_type metadata.product_event_type מיפוי ישיר.
file_md5 target.process.file.md5 מיפוי ישיר אם הערך הוא גיבוב (hash) תקין של MD5 ולא כולו אפסים.
target.file.md5 מיפוי ישיר אם הערך הוא גיבוב (hash) תקין של MD5 ולא כולו אפסים.
file_name target.process.file.full_path מיפוי ישיר.
file_sha1 target.process.file.sha1 מיפוי ישיר אם הערך הוא גיבוב (hash) תקין באלגוריתם SHA-1 ולא כולו אפסים.
target.file.sha1 מיפוי ישיר אם הערך הוא גיבוב (hash) תקין באלגוריתם SHA-1 ולא כולו אפסים.
file_sha256 target.process.file.sha256 מיפוי ישיר אם הערך הוא גיבוב (hash) תקין של SHA256 ולא כולו אפסים.
target.file.sha256 מיפוי ישיר אם הערך הוא גיבוב (hash) תקין של SHA256 ולא כולו אפסים.
file_size target.file.size מיפוי ישיר.
file_type target.file.file_type ממופה ל-FILE_TYPE_ZIP,‏ FILE_TYPE_DOS_EXE,‏ FILE_TYPE_PDF או FILE_TYPE_XLSX על סמך הערך של השדה file_type.
דגלים additional.fields.value.string_value מיפוי ישיר עם המפתח = flags.
fw_subproduct additional.fields.value.string_value מיפוי ישיר עם מפתח = fw_subproduct אם המוצר ריק.
metadata.product_name אם המוצר ריק, המיפוי הוא ישיר.
host_type security_result.detection_fields.value מיפוי ישיר עם המפתח = host_type.
ifdir network.direction מיפוי ישיר אחרי המרה לאותיות רישיות.
ifname security_result.detection_fields.value מיפוי ישיר עם המפתח = ifname.
installed_products security_result.detection_fields.value מיפוי ישיר עם המפתח = installed_products.
is_scanned security_result.detection_fields.value מיפוי ישיר עם המפתח = is_scanned.
layer_name security_result.detection_fields.value מיפוי ישיר עם המפתח = layer_name.
security_result.rule_set_display_name מיפוי ישיר.
layer_uuid security_result.detection_fields.value מיפוי ישיר עם המפתח = layer_uuid.
security_result.rule_set מיפוי ישיר.
loguid metadata.product_log_id מיפוי ישיר.
machine_guid principal.asset.attribute.labels.value מיפוי ישיר עם המפתח = machine_guid.
malware_action security_result.detection_fields.value מיפוי ישיר עם המפתח = malware_action.
malware_family security_result.detection_fields.value מיפוי ישיר עם המפתח = malware_family.
media_authorized security_result.detection_fields.value מיפוי ישיר עם המפתח = media_authorized.
media_class_id security_result.detection_fields.value מיפוי ישיר עם המפתח = media_class_id.
media_description security_result.detection_fields.value מיפוי ישיר עם המפתח = media_description.
media_encrypted security_result.detection_fields.value מיפוי ישיר עם המפתח = media_encrypted.
media_manufacturer security_result.detection_fields.value מיפוי ישיר עם המפתח = media_manufacturer.
media_type security_result.detection_fields.value מיפוי ישיר עם המפתח = media_type.
אמצעי תשלום security_result.detection_fields.value מיפוי ישיר עם המפתח = methods.
originsicname security_result.detection_fields.value מיפוי ישיר עם המפתח = originsicname.
מקור intermediary.ip מיפוי ישיר.
os_version principal.asset.platform_software.platform_patch_level מיפוי ישיר.
outzone security_result.detection_fields.value מיפוי ישיר עם המפתח = outzone.
parent_rule security_result.detection_fields.value מיפוי ישיר עם המפתח = parent_rule.
peer_gateway intermediary.ip מיפוי ישיר.
policy_guid security_result.detection_fields.value מיפוי ישיר עם המפתח = policy_guid.
policy_name security_result.detection_fields.value מיפוי ישיר עם המפתח = policy_name.
policy_number security_result.detection_fields.value מיפוי ישיר עם המפתח = policy_number.
policy_type security_result.detection_fields.value מיפוי ישיר עם המפתח = policy_type.
מוצר additional.fields.value.string_value מיפוי ישיר עם המפתח = product.
metadata.product_name מיפוי ישיר.
product_family additional.fields.value.string_value מיפוי ישיר עם המפתח = product_family.
program_name additional.fields.value.string_value מיפוי ישיר עם המפתח = program_name.
protection_name security_result.detection_fields.value מיפוי ישיר עם המפתח = protection_name.
protection_type security_result.detection_fields.value מיפוי ישיר עם המפתח = protection_type.
reading_data_access security_result.detection_fields.value מיפוי ישיר עם המפתח = reading_data_access.
rule_action security_result.detection_fields.value מיפוי ישיר עם המפתח = rule_action.
rule_name security_result.rule_name מיפוי ישיר.
rule_uid security_result.rule_id מיפוי ישיר אם השדה ep_rule_id ריק.
s_port principal.port מיפוי ישיר.
סכימה security_result.detection_fields.value מיפוי ישיר עם המפתח = scheme.
sequencenum additional.fields.value.string_value מיפוי ישיר עם המפתח = sequencenum.
שירות target.port מיפוי ישיר.
service_id security_result.detection_fields.value מיפוי ישיר עם המפתח = service_id.
session_uid network.session_id מיפוי ישיר.
src principal.ip מיפוי ישיר.
src_dns_name security_result.detection_fields.value מיפוי ישיר עם המפתח = src_dns_name.
src_machine_name security_result.detection_fields.value מיפוי ישיר עם המפתח = src_machine_name.
principal.asset.hostname מיפוי ישיר.
principal.hostname מיפוי ישיר.
src_user_dn security_result.detection_fields.value מיפוי ישיר עם המפתח = src_user_dn.
src_user_name principal.user.userid מיפוי ישיר.
principal.user.email_addresses כתובת האימייל נשלפת מהשדה src_user_name אם הוא קיים והוא בפורמט userid (email).
te_verdict_determined_by security_result.detection_fields.value מיפוי ישיר עם המפתח = te_verdict_determined_by.
חותמת זמן metadata.event_timestamp מיפוי ישיר.
trusted_domain security_result.detection_fields.value מיפוי ישיר עם המפתח = trusted_domain.
משתמש principal.user.userid מיפוי ישיר אם src_user_name ריק.
principal.user.email_addresses כתובת האימייל נשלפת משדה המשתמש אם הוא קיים והוא בפורמט userid (email).
user_name principal.user.email_addresses מיפוי ישיר אם הערך הוא כתובת אימייל תקינה.
user_sid principal.user.windows_sid מיפוי ישיר.
החלטה security_result.detection_fields.value מיפוי ישיר עם המפתח = verdict.
גרסה additional.fields.value.string_value מיפוי ישיר עם המפתח = version.
vpn_feature_name security_result.detection_fields.value מיפוי ישיר עם המפתח = vpn_feature_name.
web_client_type security_result.detection_fields.value מיפוי ישיר עם המפתח = web_client_type.
metadata.log_type השדה הזה מקודד באופן קשיח לערך CHECKPOINT_HARMONY.
metadata.vendor_name השדה הזה מקודד באופן קשיח לערך CHECKPOINT_HARMONY.
principal.asset.platform_software.platform ממופה ל-WINDOWS, ל-MAC או ל-LINUX על סמך הערך של השדה os_name.
network.ip_protocol ממופה ל-TCP,‏ UDP,‏ ICMP,‏ IP6IN4 או GRE על סמך הערך של השדה proto ושדות אחרים כמו service ו-service_id.
security_result.severity ממופה ל-LOW,‏ MEDIUM,‏ HIGH או CRITICAL על סמך הערך של שדה החומרה.
metadata.event_type השדה הזה מוגדר לערך NETWORK_CONNECTION אם גם המשתמש וגם היעד קיימים, לערך STATUS_UNCATEGORIZED אם רק המשתמש קיים, ולערך GENERIC_EVENT אחרת.
label event.idm.read_only_udm.network.email.to מופה מיומן השינויים
entityLink event.idm.read_only_udm.metadata.url_back_to_product מופה מיומן השינויים
actionType event.idm.read_only_udm.security_result.action_details מופה מיומן השינויים
eventId event.idm.read_only_udm.metadata.product_log_id מופה מיומן השינויים
eventCreated event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
type event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
act.createTime event.idm.read_only_udm.additional.fields מופה מיומן השינויים
act.relatedEntityId event.idm.read_only_udm.additional.fields מופה מיומן השינויים
customerId event.idm.read_only_udm.additional.fields מופה מיומן השינויים
saas event.idm.read_only_udm.additional.fields מופה מיומן השינויים
state event.idm.read_only_udm.additional.fields מופה מיומן השינויים
entityId event.idm.read_only_udm.additional.fields מופה מיומן השינויים
connectivity_state event.idm.read_only_udm.additional.fields מופה מיומן השינויים
actions.actionType event.idm.read_only_udm.security_result.action מופה מיומן השינויים
senderAddress event.idm.read_only_udm.network.email.from מופה מיומן השינויים

יומן שינויים

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

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