איסוף יומני התקדמות של MOVEit Transfer
במאמר הזה מוסבר איך להטמיע יומנים של Progress MOVEit Transfer ב-Google Security Operations באמצעות Bindplane.
Progress MOVEit Transfer הוא פתרון לניהול העברת קבצים (MFT) שמספק העברות מאובטחות ומוצפנות של קבצים באמצעות פרוטוקולים כמו HTTPS, FTPS ו-SFTP. הוא מציע יומני ביקורת שמונעים שינויים, אמצעי בקרה לגישה שמבוססים על תפקידים ותמיכה בתקנות, כולל HIPAA, PCI DSS ו-GDPR. במסד הנתונים של הביקורת ב-MOVEit Transfer נרשמת כל פעילות העברת הקבצים, אירועי אימות משתמשים ופעולות אדמיניסטרטיביות.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות לרשת בין סוכן Bindplane לבין שרת Progress MOVEit Transfer
- אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
- גישה ברמת SysAdmin למסוף ניהול האינטרנט של Progress MOVEit Transfer
- יציאת UDP 514 (או יציאת ה-syslog שבחרתם) פתוחה מהשרת של MOVEit Transfer למארח של סוכן Bindplane
קבלת קובץ אימות להטמעת נתונים ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents.
- מורידים את קובץ האימות להטמעת נתונים. שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן 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 להטמעה של 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/moveit_transfer: compression: gzip creds_file_path: '<CREDS_FILE_PATH>' customer_id: '<CUSTOMER_ID>' endpoint: <REGION_ENDPOINT> log_type: IPSWITCH_MOVEIT_TRANSFER raw_log_field: body ingestion_labels: log_source: moveit_transfer service: pipelines: logs/moveit_to_chronicle: receivers: - udplog exporters: - chronicle/moveit_transfer
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים.
הגדרת כלי הייצוא:
-
<CREDS_FILE_PATH>: הנתיב המלא לקובץ האימות להטמעת נתונים:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
<CUSTOMER_ID>: מספר הלקוח ב-Google SecOps שהעתקתם קודם
<REGION_ENDPOINT>: כתובת URL של נקודת קצה אזורית:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.
- ארה"ב:
הגדרה לדוגמה
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/moveit_transfer: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6' endpoint: malachiteingestion-pa.googleapis.com log_type: IPSWITCH_MOVEIT_TRANSFER raw_log_field: body ingestion_labels: log_source: moveit_transfer service: pipelines: logs/moveit_to_chronicle: receivers: - udplog exporters: - chronicle/moveit_transfer
שמירת קובץ ההגדרות
אחרי העריכה, שומרים את הקובץ:
* Linux: מקישים על Ctrl+O, ואז על Enter, ואז על Ctrl+X
* Windows: לוחצים על File > Save
מפעילים מחדש את סוכן 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) ב-Progress MOVEit Transfer
כדי להגדיר את MOVEit Transfer להעברת רשומות ביומן הביקורת לסוכן Bindplane דרך syslog:
- נכנסים למסוף הניהול באינטרנט של MOVEit Transfer כמשתמש עם הרשאות SysAdmin.
- עוברים אל הגדרות > מערכת > ביקורת > Syslog. מוצג הדף Configure Syslog Settings.
- בקטע Syslog Logging, בוחרים באפשרות Enabled. כשהאפשרות הזו מופעלת, כל רשומה ביומן הביקורת נשלחת למארח syslog שצוין וגם למסד הנתונים של הביקורת ב-MOVEit Transfer.
- בשדה Syslog Host (מארח Syslog), מזינים את כתובת ה-IP או את שם המארח של מארח סוכן Bindplane (לדוגמה,
192.168.1.100). בשדה יציאת Syslog, מזינים
514. אם לא ממלאים את השדה הזה, המערכת חוזרת ליציאת ברירת המחדל514.בתפריט הנפתח Syslog Facility (מתקן Syslog), בוחרים את המתקן שבו יופיעו הודעות Syslog של MOVEit Transfer במארח Syslog המרוחק. ערך ברירת המחדל הוא FTP. אלה המתקנים הרגילים של syslog שזמינים:
- KERN
- משתמש
- דואר
- DAEMON
- AUTH
- SYSLOG
- LPR
- חדשות
- UUCP
- CRON
- AUTHPRIV
- FTP (ברירת מחדל)
- LOCAL0 עד LOCAL7
לוחצים על שמירת הגדרות הרישום כדי לשמור את ההגדרה.
לוחצים על Send Test Syslog Message (שליחת הודעת בדיקה של Syslog) כדי לשלוח הודעת בדיקה למארח של סוכן Bindplane שצוין. ההטמעה של BSD Syslog מבוססת על UDP, ולכן צריך לבדוק באופן ידני שהודעת הבדיקה הגיעה על ידי בדיקת היומנים של סוכן Bindplane.
מוודאים שהודעת הבדיקה התקבלה על ידי סוכן Bindplane:
Linux:
sudo journalctl -u observiq-otel-collector -fWindows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
דרישות לגבי חומת אש
מוודאים שכלל חומת האש הבא מוגדר כדי לאפשר תעבורת נתוני syslog מ-MOVEit Transfer לסוכן Bindplane:
| כיוון | פרוטוקול | מקור | יעד | יציאה |
|---|---|---|---|---|
| יוצא מ-MOVEit Transfer | UDP | כתובת ה-IP של שרת MOVEit Transfer | כתובת ה-IP של המארח של סוכן Bindplane | 514 |
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| דףה 1 | metadata.collected_timestamp | ההמרה מתבצעת באמצעות תבניות התאמה של תאריכים: d/M/yyyy H:mm:ss A, M/d/yyyy H:mm:ss A, MM/dd/yyyy HH:mm:ss A |
| דףה 1 | metadata.event_timestamp | ההמרה מתבצעת באמצעות תבניות התאמה של תאריכים: d/M/yyyy H:mm:ss A, M/d/yyyy H:mm:ss A, MM/dd/yyyy HH:mm:ss A |
| דףה 2 | security_result.action_details | הערך הועתק ישירות |
| דףה 3 | target.hostname, target.asset.hostname | הערך מועתק ישירות מעמודה 3 |
| column4 | principal.ip, principal.asset.ip | נשלף מעמודה 4 באמצעות תבנית grok לכתובת IP |
| column6 | target.file.full_path | השם המלא של הקובץ, שנוצר מתיקיית הנתיב ושם הקובץ אם שניהם קיימים, אחרת רק משם הקובץ |
| column7 | target.file.full_path | |
| column15 | target.file.full_path | |
| column7 | target.user.email_addresses | המיזוג מתבצע אם column2 == file_sentemail |
| column10 | metadata.description | הערך הועתק ישירות |
| column11 | metadata.product_event_type | הערך מועתק ישירות אם הוא לא None |
| column12 | target.ip, target.asset.ip | חילוץ מ-column12 באמצעות תבנית grok לכתובת IP |
| column16 | target.file.full_path | השם מורכב מ-folderPath ומ-fileName אם שניהם קיימים, אחרת רק מ-fileName |
| column23 | target.file.full_path | |
| column19 | target.user.user_display_name | הערך מועתק ישירות אם column2 == file_sentemail ו-column8 == sender, אחרת הערך מועתק למשתמש היעד |
| event_received_time | metadata.collected_timestamp | ההמרה מתבצעת באמצעות תבניות התאמה של תאריכים: UNIX_MS, dd/MM/yyyy HH:mm:ss, yyyy-MM-dd HH:mm:ss, MM/dd/yyyy HH:mm:ss A, yyyy/MM/dd HH:mm:ss, RFC 3339, yyyy-MM-ddTHH:mm:ss |
| חותמת זמן | metadata.event_timestamp | ההמרה מתבצעת באמצעות תבניות התאמה של תאריכים: MMM d HH:mm:ss, MMM dd HH:mm:ss, ISO8601, yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm:ss Z, MM/dd/yyyy HH:mm:ss A, yy-MM-dd HH:mm:ss, RFC 3339, yyyy-MM-ddTHH:mm:ss |
| prin_ip | principal.ip, principal.asset.ip | הערך הועתק ישירות |
| AgentVersion | metadata.product_version | הערך הועתק ישירות |
| principal_host | principal.hostname, principal.asset.hostname | הערך הועתק ישירות |
| שם משתמש | principal.user.userid | הערך הועתק ישירות |
| company_name | principal.user.company_name | הערך הועתק ישירות |
| מזהה | target.process.pid | הערך הועתק ישירות |
| InstID | metadata.product_log_id | הערך הועתק ישירות |
| FileID | target.resource.attribute.labels | המיזוג בוצע כ-additional_id_2 עם המפתח FileID והערך מ-FileID |
| FolderID | target.resource.attribute.labels | המיזוג בוצע כ-additional_id_3 עם המפתח FolderID והערך מ-FolderID |
| FolderPath | target.file.full_path | השם מורכב מ-FolderPath ומ-FileName אם שניהם קיימים, אחרת מ-FolderPath |
| FileName | target.file.full_path | |
| FileName | target.resource.attribute.labels | המיזוג מתבצע בתור שם הקובץ עם המפתח FileName והערך מ-FileName |
| מארח | principal.hostname, principal.asset.hostname | הערך הועתק ישירות |
| log_level | security_result.severity | מוגדר כ-INFORMATIONAL אם INFO או DEBUG, ERROR אם ERROR |
| source_module_name | observer.resource.attribute.labels | המיזוג מתבצע בתור source_module_label עם המפתח source_module_name והערך מ-source_module_name |
| source_module_type | observer.application | הערך הועתק ישירות |
| log_msg | metadata.description | הערך מ-log_msg אם http_method != GET ו-file_path ריק, אחרת log_desc, אחרת description, אחרת Message |
| log_desc | metadata.description | |
| description | metadata.description | |
| הודעה | metadata.description | |
| יציאה | principal.port | הערך הועתק ישירות והומר למספר שלם |
| tgtport | target.port | הערך הועתק ישירות והומר למספר שלם |
| חבילה | principal.process.command_line | הערך הועתק ישירות |
| srcip | principal.ip, principal.asset.ip | הערך הועתק ישירות |
| שם משתמש | principal.user.userid | הערך הועתק ישירות |
| גרסה | metadata.product_version | הערך הועתק ישירות |
| http_method | network.http.method | הערך הועתק ישירות |
| פעולה | security_result.action_details | הערך הועתק ישירות |
| סיכום | security_result.summary | הערך הועתק ישירות |
| security_result | security_result | מיזוג ישיר |
| tgtip | target.ip, target.asset.ip | הערך הועתק ישירות |
| application_proto | network.application_protocol | הועתק ישירות באותיות רישיות |
| url | network.http.referral_url | הערך הועתק ישירות |
| status_code | network.http.response_code | הערך הועתק ישירות והומר למספר שלם |
| file_path | principal.process.file.full_path | הערך הועתק ישירות |
| file_size | principal.process.file.size | הומר למספר שלם לא שלילי אם הוא לא 0 |
| process_id | principal.process.pid | הערך הועתק ישירות |
| session_id | network.session_id | הערך הועתק ישירות |
| task_id | additional.fields | המיזוג בוצע כ-additional_field עם המפתח TASK_ID והערך string_value מ-task_id |
| AgentBrand | metadata.product_event_type | הערך הועתק ישירות |
| Parm1 | additional.fields | המיזוג מתבצע כ-additional_field_3 עם המפתח Parm1 והערך string_value מ-Parm1 |
| Parm2 | additional.fields | המיזוג מתבצע כ-additional_field_4 עם המפתח Parm2 והערך string_value מ-Parm2 |
| שגיאה | additional.fields | המיזוג בוצע כ-additional_field_5 עם המפתח Error והערך string_value מ-Error |
| XFerSize | target.resource.attribute.labels | מוזגו כ-additional_field_1 עם המפתח XFerSize והערך מ-XFerSize |
| FolderPath | metadata.event_type | הערך הוא FILE_DELETION אם FolderPath ו-action_performed תואמים ל-Delete File, NETWORK_HTTP אם tgtip או host ו-application_proto == HTTP, USER_LOGIN אם Username או username, STATUS_UPDATE אם tgtip או host או principal_host או IPAddress, אחרת GENERIC_EVENT |
| tgtip | metadata.event_type | |
| מארח | metadata.event_type | |
| principal_host | metadata.event_type | |
| IPAddress | metadata.event_type | |
| שם משתמש | metadata.event_type | |
| שם משתמש | metadata.event_type | |
| tgtip | metadata.event_type | הערך הוא USER_LOGIN אם column2 == sec_signon ו-tgtip או tar_host, USER_LOGOUT אם sec_signoff ו-tgtip או tar_host, FILE_UNCATEGORIZED אם folder_add, FILE_CREATION אם file_upload או download ו-tgtip ו-is_tgt_file_present, FILE_DELETION אם file_delete ו-srcip ו-is_tgt_file_present, FILE_MODIFICATION אם file_rename, FILE_UNCATEGORIZED אם file_dlhashchk, EMAIL_TRANSACTION אם file_sentemail ו-useremail, STATUS_UPDATE אם srcip, אחרת GENERIC_EVENT |
| tar_host | metadata.event_type | |
| srcip | metadata.event_type | |
| is_tgt_file_present | metadata.event_type | |
| דףה 2 | metadata.event_type | |
| useremail | metadata.event_type | |
| security_result | metadata.event_type | |
| extensions.auth.type | extensions.auth.type | הגדרה ל-MACHINE לאירועי התחברות/התנתקות |
| metadata.vendor_name | metadata.vendor_name | ההגדרה היא 'IPS' |
| metadata.product_name | metadata.product_name | הגדרה של 'IPSWITCH MOVEIT TRANSFER' |
target_application |
event.idm.read_only_udm.target.application |
מופה מיומן השינויים |
product_event |
event.idm.read_only_udm.metadata.product_event_type |
מופה מיומן השינויים |
dstip |
event.idm.read_only_udm.target.ip וגם event.idm.read_only_udm.target.asset.ip |
מופה מיומן השינויים |
AdminTrust |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
Permission |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
log_status |
event.idm.read_only_udm.security_result.action.details |
מופה מיומן השינויים |
srcip |
event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip |
מופה מיומן השינויים |
EventReceivedTime |
event.timestamp |
מופה מיומן השינויים |
SourceModuleName |
observer.resource.attribute.labels |
מופה מיומן השינויים |
SourceModuleType |
observer.application |
מופה מיומן השינויים |
SourceName |
metadata.product_event_type |
מופה מיומן השינויים |
Severity |
security_result. |
מופה מיומן השינויים |
Hostname |
principal.hostname |
מופה מיומן השינויים |
Channel |
security_result.about.resource.attribute.labels |
מופה מיומן השינויים |
AgentVersion |
metadata.version |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של מנתח התוכן הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.