איסוף יומני DDI של EfficientIP
גרסת מנתח הנתונים: 9.0
במאמר הזה מוסבר איך להטמיע יומני DDI של EfficientIP ב-Google Security Operations באמצעות סוכן Bindplane.
EfficientIP SOLIDserver הוא פתרון מקיף של DDI (DNS-DHCP-IPAM) שמספק מכשירי חומרה ווירטואליים חזקים, מאובטחים וניתנים להרחבה לשירותי רשת קריטיים, כולל DNS, DHCP, ניהול כתובות IP, NTP ו-TFTP. הפלטפורמה מספקת ניהול מרכזי ואוטומציה של תשתית הרשת, עם יכולות מתקדמות של מעקב ואבטחה.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות רשת בין סוכן Bindplane לבין מכשיר EfficientIP SOLIDserver
- אם מפעילים את Bindplane מאחורי שרת proxy, צריך לוודא שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
- הרשאת אדמין במסוף האינטרנט של EfficientIP SOLIDserver
- SOLIDserver מגרסה 8.0 ואילך (נבדק עם גרסאות 8.3.x ו-8.4.x)
קבלת קובץ אימות להטמעת נתונים ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
מורידים את קובץ האימות להטמעת נתונים. שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.
איך מקבלים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן 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סטטוס השירות צריך להיות פעיל (פועל).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרה של Bindplane agent להטמעה של syslog ושליחה אל Google SecOps
איתור קובץ התצורה
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
עריכת קובץ התצורה
מחליפים את כל התוכן של
config.yamlבהגדרה הבאה:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/efficientip_ddi: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: EFFICIENTIP_DDI raw_log_field: body ingestion_labels: env: production source: solidserver service: pipelines: logs/efficientip_to_chronicle: receivers: - udplog exporters: - chronicle/efficientip_ddiמחליפים את ה-placeholders הבאים:
הגדרות המקלט:
-
listen_address: מוגדר ל-0.0.0.0:514כדי להאזין לכל הממשקים ביציאת UDP 514.- בפריסות של Linux שאינן root, צריך להשתמש ביציאה
1514ומעלה. - מוודאים שהיציאה תואמת להגדרה ב-SOLIDserver.
- בפריסות של Linux שאינן root, צריך להשתמש ביציאה
-
הגדרת הייצוא:
creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
customer_id: מחליפים אתYOUR_CUSTOMER_IDבמזהה הלקוח מהשלב הקודם.
endpoint: נקודת קצה אזורית:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - רשימה מלאה של נקודות הקצה האזוריות זמינה במאמר נקודות קצה אזוריות.
- ארה"ב:
log_type: מוגדר ל-EFFICIENTIP_DDI(נדרשת התאמה מדויקת).
ingestion_labels: תוויות אופציונליות לסיווג יומנים (אפשר להתאים אישית לפי הצורך).
שמירת קובץ ההגדרות
אחרי שמסיימים לערוך, שומרים את הקובץ:
- Linux: מקישים על
Ctrl+O, אחר כך עלEnterואז עלCtrl+X - Windows: לוחצים על קובץ > שמירה.
מפעילים מחדש את סוכן 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 של EfficientIP DDI
- נכנסים למסוף האינטרנט של EfficientIP SOLIDserver.
- בחלונית הניווט הימנית, לוחצים על ניהול.
- בקטע מעקב, לוחצים על הגדרה.
- בתפריט, לוחצים על + הוספה.
- ברשימה Services, בוחרים את השירותים הבאים: named (לרישומי DNS)
- בשדה Target server (שרת יעד), מזינים את כתובת ה-IP והיציאה של מארח סוכן Bindplane בפורמט
<ip-address>:<port>.- לדוגמה:
192.168.1.100:514 - אם משתמשים ביציאה לא סטנדרטית ב-Linux, מציינים את היציאה בהתאם (לדוגמה,
192.168.1.100:1514)
- לדוגמה:
לוחצים על אישור כדי לשמור את ההגדרה.
אימות העברת היומנים
- בודקים את היומנים של סוכן Bindplane כדי לוודא שהיומנים מתקבלים:
- Linux:
sudo journalctl -u observiq-otel-collector -f - Windows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Linux:
- מחפשים רשומות ביומן שמכילות אירועים של שאילתות DNS ותשובות מ-SOLIDserver.
- נכנסים למסוף Google SecOps ומוודאים שהיומנים של EfficientIP DDI מופיעים בדף Events.
סוגי יומנים נתמכים
השילוב הזה אוסף את סוגי היומנים הבאים מ-EfficientIP SOLIDserver:
- יומני שאילתות DNS: שאילתות DNS של לקוחות עם סוג שאילתה, שם דומיין וכתובת IP של הלקוח
- יומני תשובות של DNS: תגובות DNS עם רשומות תשובה, TTL וקודי תגובה
- יומני DHCP: פעולות DHCP כולל DISCOVER, OFFER, REQUEST, ACK, NAK, RELEASE ו-INFORM
- יומנים של DNS Guardian: אירועי אבטחה, כולל זיהוי התנהגות חשודה, הפעלה/השבתה של טריגרים
- יומנים של העברת תחום DNS: פעולות והתראות של העברת תחום
- יומני שגיאות DNS: שגיאות בפורמט, SERVFAIL, REFUSED ושגיאות DNS אחרות
טבלת מיפוי UDM
| שדה היומן | מיפוי UDM | לוגיקה |
|---|---|---|
| ip_version | additional.fields | אם הערך לא ריק, הוא ימוזג כתווית עם המפתח ip_version |
| message_size | additional.fields | אם הערך לא ריק, הוא ימוזג כתווית עם המפתח message_size |
| domain_name | additional.fields | אם הערך לא ריק, הוא ימוזג כתווית עם המפתח domain_name |
| לא רלוונטי | מתווך | מוזג מאובייקט ביניים |
| description | metadata.description | הערך מועתק ישירות אם הוא לא ריק |
| msg2 | metadata.description | צריך להגדיר את הערך msg2 אם event_type הוא GENERIC_EVENT והתיאור ריק |
| su_cmd | metadata.event_type | הערך שמוגדר הוא PROCESS_OPEN אם su_cmd הוא sudo |
| activity_type | metadata.event_type | הערך הוא NETWORK_DNS אם activity_type תואם ל-dns ו-has_dns_questions הוא true |
| הודעה | metadata.event_type | הערך הוא NETWORK_DHCP אם ההודעה תואמת ל-DHCP |
| inner_message | metadata.event_type | הערך הוא NETWORK_UNCATEGORIZED אם inner_message תואם לתבניות ספציפיות והערכים של has_principal ו-has_target הם true |
| תהליך דיפוזיה הפוך | metadata.event_type | הערך הוא NETWORK_DNS אם התהליך הוא named והמאפיין has_dns_questions הוא true. הערך הוא STATUS_UPDATE אם התהליך הוא named והמאפיין has_principal הוא true. הערך הוא GENERIC_EVENT אם התהליך הוא named. הערך הוא NETWORK_DHCP אם התהליך הוא dhcpd. |
| PWD | metadata.event_type | הערך הוא PROCESS_OPEN אם PWD לא ריק והערך של has_target או has_principal הוא true |
| activity_type | metadata.product_event_type | הערך הועתק ישירות |
| לא רלוונטי | metadata.vendor_name | ההגדרה היא EFFICIENTIP_DDI |
| לא רלוונטי | metadata.product_name | ההגדרה היא 'EFFICIENTIP_DDI DHCP' |
| activity_type | network.application_protocol | הערך הוא DNS אם activity_type תואם ל-dns ו-has_dns_questions הוא true |
| הודעה | network.application_protocol | הערך שמוגדר הוא DHCP אם ההודעה תואמת ל-dhcp |
| תהליך דיפוזיה הפוך | network.application_protocol | הערך הוא DNS אם התהליך הוא named, והערך הוא DHCP אם התהליך הוא dhcpd |
| src_mac | network.dhcp.chaddr | הערך מועתק ישירות אם התהליך הוא dhcpd |
| src_ip | network.dhcp.ciaddr | הערך מועתק ישירות אם dhcp_info הוא REQUEST |
| giaddr | network.dhcp.giaddr | הערך הועתק ישירות |
| dhcp_info | network.dhcp.opcode | הערך צריך להיות BOOTREQUEST אם dhcp_info הוא INFORM, DISCOVER או REQUEST, ו-BOOTREPLY אם dhcp_info הוא OFFER או ACK. |
| siaddr | network.dhcp.siaddr | הערך הועתק ישירות |
| transaction_id | network.dhcp.transaction_id | הערך מומר למספר שלם לא שלילי אם הוא לא ריק או לא '0' |
| dhcp_info | network.dhcp.type | הערך הוא INFORM אם dhcp_info הוא INFORM, הערך הוא DISCOVER אם dhcp_info הוא DISCOVER, הערך הוא OFFER אם dhcp_info הוא OFFER, הערך הוא REQUEST אם dhcp_info הוא REQUEST, הערך הוא ACK אם dhcp_info הוא PACK |
| yiaddr | network.dhcp.yiaddr | הערך הועתק ישירות |
| src_ip | network.dhcp.yiaddr | מוגדר ל-src_ip אם התהליך הוא dhcpd והערך של yiaddr ריק |
| answer_rrs | network.dns.answers | מוזג מאובייקט התשובה לכל rd ב-answer_rrs |
| לא רלוונטי | network.dns.questions | המיזוג מתבצע מאובייקט השאלות אם הערך של has_dns_questions הוא True |
| rcode | network.dns.response_code | הערך שהומר ל-uinteger |
| response_code | network.dns.response_code | הערך ממופה לקוד מספרי ומומר ל-uinteger |
| תחבורה | network.ip_protocol | הערך מומר לאותיות רישיות אם הוא תואם ל-udp או ל-tcp |
| משקיף | observer.ip | הערך הומר לכתובת IP |
| su_cmd | principal.application | הערך מועתק ישירות אם su_cmd הוא sudo |
| תהליך דיפוזיה הפוך | principal.application | ההגדרה היא 'לעיבוד' אם התהליך הוא 'named' או 'dhcpd' |
| מארח | principal.asset.hostname | הערך מועתק ישירות אם הוא לא ריק |
| hostname | principal.asset.hostname | הערך מועתק ישירות אם הוא לא ריק ושדה המארח ריק |
| src_ip | principal.asset.ip | הערך הועתק ישירות |
| asset_id | principal.asset_id | הערך שמתקבל הוא 'ID:' + asset_id |
| מארח | principal.hostname | הערך מועתק ישירות אם הוא לא ריק |
| hostname | principal.hostname | הערך מועתק ישירות אם הוא לא ריק ושדה המארח ריק |
| domain_name | principal.hostname | הערך מועתק ישירות אם התיאור מכיל שם מארח והשדות host או hostname ריקים |
| src_ip | principal.ip | הערך מועתק ישירות אם ההמרה ל-ipaddress מצליחה; הוא מחולץ מהתיאור אם src_ip ריק |
| src_mac | principal.mac | הערך הועתק ישירות |
| src_port | principal.port | הערך שהומר למספר שלם |
| process_id | principal.process.pid | הערך הועתק ישירות |
| source_user | principal.user.userid | הערך הועתק ישירות |
| לא רלוונטי | security_result | התוצאות הממוזגות |
| dst_ip | target.asset.ip | הערך הועתק ישירות |
| file_path | target.file.full_path | הערך הועתק ישירות |
| dst_ip | target.hostname | הערך מועתק ישירות אם הוא לא כתובת IP תקינה |
| מארח | target.hostname | הערך מועתק ישירות אם inner_message תואם לדפוסים ספציפיים |
| dst_ip | target.ip | הערך הועתק ישירות |
| dst_port | target.port | הערך שהומר למספר שלם |
| target_cmd_line | target.process.command_line | הערך הועתק ישירות |
| target_user | target.user.userid | הערך הועתק ישירות |
RR_msg |
event.idm.read_only_udm.metadata.description |
מופה מיומן השינויים |
client_id |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
key_office |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
rrset_type |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
syslog_priority |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
updating_zone |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
view_office |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
שנה רישום
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.