איסוף יומנים של 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: יצירת חשבון שירות ל-Chronicle API (מומלץ)
- נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
- נכנסים לדף IAM & Admin > Service Accounts.
- לוחצים על Create service account.
- מזינים את פרטי ההגדרה הבאים:
- Service account name: מזינים שם לחשבון (לדוגמה,
bindplane-ingest). - Service account description: מזינים תיאור (לדוגמה,
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 בלבד, עוברים אל הגדרות > סוכני איסוף.
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.
איך מקבלים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות > ניהול > פרופיל. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פרופיל.
- מעתיקים את מספר הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת הסוכן של Bindplane
מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנת חלונות
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
מקורות מידע נוספים בנושא התקנה
אפשרויות התקנה נוספות מפורטות במדריך ההתקנה.
הגדרת סוכן Bindplane להטמעת Syslog ושליחה אל Google SecOps
- ניגשים לקובץ התצורה:
- מאתרים את הקובץ
config.yaml. בדרך כלל, הוא נמצא בספרייה/opt/observiq-otel-collector/ב-Linux או בספריית ההתקנה ב-Windows. - פותחים את הקובץ באמצעות כלי לעריכת טקסט (לדוגמה,
nano,viאו פנקס הרשימות).
- מאתרים את הקובץ
עורכים את הקובץ
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
- נכנסים לממשק המשתמש של Infinity Portal > Harmony Email & Collaboration באינטרנט.
- עוברים אל הגדרות > מעקב > SIEM.
- לוחצים על הוספת שרת SIEM.
- מזינים את פרטי ההגדרה הבאים:
- מארח: מזינים את כתובת ה-IP של סוכן Bindplane.
- Port: מזינים את מספר היציאה של סוכן Bindplane.
- פרוטוקול: בוחרים באפשרות UDP.
- (אופציונלי) אסימון: מזינים תג אופציונלי ליומנים.
- לוחצים על 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.