איסוף יומנים של IBM Security Access Manager
במסמך הזה מוסבר איך להטמיע יומנים של IBM Security Access Manager ב-Google Security Operations באמצעות Bindplane.
IBM Verify Identity Access (לשעבר IBM Security Access Manager או IBM Security Verify Access) הוא פתרון אבטחה שמבוסס על מכשיר רשת ומספק שירותים של ניהול הרשאות גישה, אבטחת אינטרנט ואימות. הוא אוכף את מדיניות האבטחה של משאבים מבוססי-אינטרנט באמצעות ארכיטקטורת שרת proxy הפוך (WebSEAL), ויוצר יומני ביקורת, אימות, הרשאה ומערכת שחיוניים לניטור לצורכי אבטחה.
לפני שמתחילים
חשוב לוודא שיש לכם את הדברים הבאים:
- מכונה של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות לרשת בין סוכן Bindplane לבין מכשיר IBM Verify Identity Access
- אם אתם משתמשים בשרת proxy, ודאו שהיציאות של חומת האש פתוחות
- גישה עם הרשאות מיוחדות לממשק הניהול המקומי (LMI) של IBM Verify Identity Access
קבלת פרטי כניסה ל-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.
- לוחצים על יצירת חשבון שירות.
- מספקים את פרטי ההגדרה הבאים:
- 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בספריית ה-collector של Bindplane (/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 (ניהול הרשאות גישה ואדמין > הגדרות) ומעתיקים את מספר הפרויקט. תצטרכו אותו כדי להגדיר את הייצוא.
אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (מדור קודם)
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות 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השירות צריך להופיע כפעיל (פועל).
מקורות מידע נוספים להתקנה
לאפשרויות התקנה נוספות ולפתרון בעיות, קראו את מדריך ההתקנה של סוכן 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/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 creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: '<customer_id>' endpoint: chronicle.googleapis.com log_type: 'IBM_SAM' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת מקלט:
-
listen_address: כתובת ה-IP והיציאה שבהן סוכן Bindplane מאזין להודעות syslog נכנסות. משתמשים ב-0.0.0.0:514כדי להאזין בכל הממשקים ביציאה514. משנים את היציאה אם514כבר בשימוש או אם מעדיפים יציאה לא מורשית כמו1514. - כדי להשתמש ב-TCP במקום ב-UDP, מחליפים את
udplogב-tcplogגם בקטעreceiversוגם בקטעpipelines.
-
הגדרת הייצוא:
-
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. -
log_type: צריך להיות מוגדר ל-IBM_SAM.
-
מייצא API להטמעה מדור קודם
אם אתם משתמשים בקובץ האימות להטמעת נתונים מאפשרות 2, החליפו את הבלוק
exportersבקוד הבא. מגדירים אתcreds_file_pathלנתיב לקובץ האימות של ההעברה, ואם המופע שלכם נמצא מחוץ לארה"ב, מחליפים אתmalachiteingestion-pa.googleapis.comבנקודת הקצה האזורית (לדוגמה,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: 'IBM_SAM' raw_log_field: body 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 ב-IBM Verify Identity Access
הוספת הגדרה של שרת syslog מרוחק
- נכנסים אל Local Management Interface (LMI) ב-IBM Verify Identity Access.
- עוברים אל Monitor > Logs > Remote Syslog Forwarding.
- בדף העברת Syslog מרחוק, לוחצים על הוספה.
- מזינים את פרטי ההגדרה הבאים:
- Server: מזינים את כתובת ה-IP או את שם המארח של המארח של סוכן Bindplane (לדוגמה,
192.168.1.100). - Port: מזינים את מספר היציאה שסוכן Bindplane מאזין לה (לדוגמה,
514). - Protocol: בוחרים באפשרות UDP כדי להתאים למקלט
udplogבהגדרות של סוכן Bindplane. בוחרים באפשרות TCP אם הגדרתם את סוכן Bindplane באמצעותtcplog. - פורמט: בוחרים את פורמט ההודעה של syslog:
- BSD Syslog Protocol — פורמט RFC 3164 (מומלץ לתאימות הרחבה ביותר).
- פרוטוקול Syslog – פורמט RFC 5424.
- ניפוי באגים: משאירים את התיבה לא מסומנת, אלא אם נדרש פתרון בעיות. כשהאפשרות הזו מופעלת, מידע נוסף על תוצאות ניפוי הבאגים נכתב בקובץ היומן של
rsyslog_forwarder, שאפשר לגשת אליו מהדף צפייה בקובצי יומן של אפליקציות.
- Server: מזינים את כתובת ה-IP או את שם המארח של המארח של סוכן Bindplane (לדוגמה,
- לוחצים על Save.
הגדרת מקורות יומן לשרת syslog מרוחק
- בדף העברת Syslog מרוחקת, בוחרים את רשומת שרת ה-Syslog המרוחק שיצרתם.
- לוחצים על מקורות.
- לוחצים על הוספה כדי להוסיף מקור ליומן.
- מזינים את פרטי ההגדרה הבאים:
- שם: בוחרים מקור יומן מהרשימה הנפתחת. מקורות היומנים הזמינים הם:
- הודעות LMI – הודעות של אפליקציית LMI
- LMI Trace – יומני מעקב וניפוי באגים של LMI
- LMI Access – יומני גישה של LMI HTTP
- הודעות זמן ריצה – הודעות של סביבת זמן הריצה
- Runtime Trace – יומני מעקב וניפוי באגים של זמן הריצה
- ביקורת בזמן ריצה – אירועי ביקורת בזמן ריצה (אימות, הרשאה)
- יומני זמן ריצה – יומני אפליקציות של זמן ריצה
- WebSEAL – יומני פרוקסי הפוך באינטרנט (נדרש לבחור שם מופע וקובץ יומן)
- Authorization Server (שרת הרשאות) – יומנים של שרת ההרשאות (נדרש לבחור Instance Name (שם מופע) ו-Log File (קובץ יומן))
- Policy Server – יומני שרת המדיניות (צריך לבחור קובץ יומן)
- מאגר משתמשים מוטמע – יומנים של מאגר משתמשים מוטמע ב-LDAP
- אשכול – יומנים של ניהול אשכולות
- מערכת – יומנים ברמת מערכת ההפעלה
- DSC – יומנים של מטמון מבוזר של סשנים
- FELB – יומנים של מאזן עומסים (LB) בקצה הקדמי
- שם המכונה: השדה הזה זמין רק כשבוחרים באפשרות WebSEAL או שרת הרשאות בשדה שם. בוחרים את שם המכונה מהרשימה הנפתחת (לדוגמה,
default). - קובץ יומן: השדה הזה זמין כשבוחרים באפשרות WebSEAL, Authorization Server, Policy Server או Runtime Logs בשדה שם. בוחרים את קובץ היומן הספציפי מהרשימה הנפתחת.
- תג: מזינים שם תג ייחודי למקור היומן הזה. אסור שיהיו רווחים בתג (לדוגמה,
WebSEAL_AuditאוRuntimeAudit). - מתקן: בוחרים קטגוריה של מתקן syslog עבור רשומות היומן שמועברות (לדוגמה,
local0,local1,authאוuser). - חומרה: בוחרים באפשרות מידע כדי לתעד את כל הרשומות ביומן.
- שם: בוחרים מקור יומן מהרשימה הנפתחת. מקורות היומנים הזמינים הם:
- לוחצים על OK.
כדי להוסיף מקורות יומן נוספים, חוזרים על שלבים 3 עד 5 לכל מקור שרוצים להעביר.
לוחצים על שמירה כדי להחיל את הגדרת מקור היומן.
כדי להפעיל את השינויים, עוברים לחלק העליון של הדף ולוחצים על Deploy Pending Changes (פריסת שינויים בהמתנה). הגדרת ההעברה של syslog לא פעילה עד לפריסה.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| sha256_value | additional.fields | מוזג עם המפה {key: "sha256_value", value: {string_value: sha256_value}} והמפה {key: "connection_type", value: {string_value: connection_type}} |
| connection_type | additional.fields | |
| dvc_ip | intermediary.hostname | הערך מועתק ישירות אם dvc_ip היא לא כתובת IP חוקית |
| dvc_ip | intermediary.ip | אם זו כתובת IP תקינה, הערך הוא dvc_ip. אם יש כתובות IP נוספות תקינות ב-ip_address, שלא שוות ל-src_ip או ל-dst_ip, לא ריקות ולא שוות ל-'-', הן ימוזגו. |
| ip_address | intermediary.ip | |
| ts | metadata.collected_timestamp | הערך מנותח מ-ts2 אם הוא קיים בפורמט yyyy-MM-ddTHH:mm:ss, אחרת מ-ts בפורמט ISO8601, MMM dd HH:mm:ss, MMM d HH:mm:ss |
| ts2 | metadata.collected_timestamp | |
| description | metadata.description | הערך הועתק ישירות |
| חותמת זמן | metadata.event_timestamp | מנותח באמצעות פורמטים של תאריכים dd/MMM/yyyy:HH:mm:ss Z או yyyy-MM-dd-HH:mm:ss.SSSZZI |
| src_ip | metadata.event_type | צריך להגדיר את הערך "NETWORK_HTTP" אם קיימים הגורם הראשי (src_ip או src_host), היעד (dst_ip או target_hostname) ו-http (method או response_code), את הערך "NETWORK_CONNECTION" אם קיימים הגורם הראשי והיעד, את הערך "STATUS_UPDATE" אם קיים הגורם הראשי, ואחרת את הערך "GENERIC_EVENT" |
| src_host | metadata.event_type | |
| dst_ip | metadata.event_type | |
| target_hostname | metadata.event_type | |
| method | metadata.event_type | |
| response_code | metadata.event_type | |
| product_event_type | metadata.product_event_type | הערך הועתק ישירות |
| metadata.product_name | metadata.product_name | ההגדרה היא IBM_SAM |
| metadata.vendor_name | metadata.vendor_name | מוגדרת כ-"IBM" |
| proto | network.application_protocol | הערך מועתק ישירות אם הוא ב-HTTP או ב-HTTPS |
| גרסה | network.application_protocol_version | הערך הועתק ישירות |
| method | network.http.method | הערך של method_value אם הוא לא ריק, אחרת הערך של method |
| method_value | network.http.method | |
| response_code | network.http.response_code | ההמרה למספר שלם בוצעה |
| ip_protocol_value | network.ip_protocol | הערך מועתק ישירות אם הוא ב-TCP, ב-UDP או ב-ICMP |
| rcv_bytes | network.received_bytes | הומר למספר שלם חיובי |
| sent_bytes | network.sent_bytes | הומר למספר שלם חיובי |
| request_id | network.session_id | הערך הועתק ישירות |
| src_application | principal.application | הערך הועתק ישירות |
| src_host | principal.asset.hostname | הערך הועתק ישירות |
| src_ip | principal.asset.ip | הערך מועתק ישירות אם הוא לא ריק, רווח, null, לא רלוונטי, - |
| file_name | principal.file.full_path | הערך הועתק ישירות |
| src_host | principal.hostname | הערך הועתק ישירות |
| src_ip | principal.ip | הערך מועתק ישירות אם הוא לא ריק, רווח, null, לא רלוונטי, - |
| src_port | principal.port | ההמרה למספר שלם בוצעה |
| pid | principal.process.pid | הערך הועתק ישירות |
| src_resource | principal.resource.name | הערך הועתק ישירות |
| user_name | principal.user.userid | הערך מועתק ישירות אם הוא לא ריק או לא מאומת |
| description | security_result.action | צריך להגדיר את הערך "BLOCK" אם התיאור מכיל את הביטויים "could not establish a secure connection", "could not be determined" או "have expired" |
| severity | security_result.severity | הערך מועתק ישירות, כאשר WARNING ממופה ל-MEDIUM |
| user_name | security_result.summary | אם user_name == "unauthenticated", צריך להגדיר את הערך "unauthenticated" |
| target_hostname | target.asset.hostname | הערך הועתק ישירות |
| dst_ip | target.asset.ip | הערך מועתק ישירות אם הוא לא ריק, לא רווח, לא null, לא N/A ולא '-' |
| target_hostname | target.hostname | הערך הועתק ישירות |
| dst_ip | target.ip | הערך מועתק ישירות אם הוא לא ריק, רווח, null, לא רלוונטי, - |
| url | target.url | משורשר מכתובת URL ומכתובת URL1 |
| url1 | target.url | |
ip_protocol_value |
event.idm.read_only_udm.network.ip_protocol |
מופה מיומן השינויים |
method_value |
event.idm.read_only_udm.network.http.method |
מופה מיומן השינויים |
sha256_value |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של המנתח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.