Mengumpulkan log Progress MOVEit Transfer
Dokumen ini menjelaskan cara menyerap log Progress MOVEit Transfer ke Google Security Operations menggunakan Bindplane.
Progress MOVEit Transfer adalah solusi transfer file terkelola (MFT) yang menyediakan transfer file terenkripsi yang aman menggunakan protokol seperti HTTPS, FTPS, dan SFTP. Layanan ini menawarkan logging audit yang tahan modifikasi, kontrol akses berbasis peran, dan dukungan kepatuhan untuk peraturan termasuk HIPAA, PCI DSS, dan GDPR. MOVEit Transfer mencatat semua aktivitas transfer file, peristiwa autentikasi pengguna, dan tindakan administratif dalam database auditnya.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Windows Server 2016 atau yang lebih baru, atau host Linux dengan
systemd - Konektivitas jaringan antara agen Bindplane dan server Progress MOVEit Transfer
- Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
- Akses tingkat SysAdmin ke konsol administrasi web Progress MOVEit Transfer
- Port UDP 514 (atau port syslog yang Anda pilih) terbuka dari server MOVEit Transfer ke host agen Bindplane
Mendapatkan kredensial Google SecOps untuk agen Bindplane
Untuk mengautentikasi agen Bindplane ke Google SecOps, pilih salah satu metode berikut:
- Deployment baru: Gunakan Chronicle API (Opsi 1).
- Deployment lama: Terus menggunakan file autentikasi penyerapan (Opsi 2) hingga Ingestion API dihentikan pada 20 Juli 2027.
Opsi 1: Membuat akun layanan untuk Chronicle API (direkomendasikan)
- Login ke konsolGoogle Cloud dan pilih project Google Cloud yang ditautkan ke instance Google SecOps Anda.
- Buka IAM & Admin > Service Accounts.
- Klik Create service account.
- Berikan detail konfigurasi berikut:
- Service account name: Masukkan nama akun (misalnya,
bindplane-ingest). - Deskripsi akun layanan: Masukkan deskripsi (misalnya,
Bindplane agent log ingestion).
- Service account name: Masukkan nama akun (misalnya,
- Klik Create and continue.
- Di bagian Grant this service account access to project, klik Select a role, lalu pilih Chronicle Editor.
- Klik Continue lalu klik Done.
- Klik akun layanan yang Anda buat, lalu buka tab Keys.
- Klik Add key > Create new key.
- Pilih JSON, lalu klik Create. File kunci didownload ke komputer Anda.
- Simpan file kunci sebagai
ingestion-auth.jsondi direktori Bindplane collector (/opt/observiq-otel-collector/ingestion-auth.jsondi Linux atauC:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.jsondi Windows), atau perbaruicreds_file_pathdiconfig.yamlagar sesuai dengan jalur tempat Anda menyimpannya. - Buka IAM & Admin > Settings dan salin Project number. Anda akan memerlukannya untuk konfigurasi pengekspor.
Opsi 2: Mendownload file autentikasi penyerapan (lama)
- Login ke konsol Google SecOps.
- Buka SIEM Settings > Collection Agents.
- Download file autentikasi penyerapan.
- Simpan file dengan aman di sistem tempat agen Bindplane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka SIEM Settings > Profile.
- Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.
Menginstal agen Bindplane
Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.
Penginstalan Windows
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sc query observiq-otel-collectorLayanan akan ditampilkan sebagai RUNNING.
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
Jalankan perintah berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sudo systemctl status observiq-otel-collectorLayanan akan ditampilkan sebagai active (running).
Referensi penginstalan tambahan
Untuk opsi pemasangan dan pemecahan masalah tambahan, lihat Panduan pemasangan agen BindPlane.
Mengonfigurasi agen Bindplane untuk menyerap syslog dan mengirimkannya ke Google SecOps
Menemukan file konfigurasi
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edit file konfigurasi
Ganti seluruh konten
config.yamldengan konfigurasi berikut:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/moveit_transfer: 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: '<CREDS_FILE_PATH>' customer_id: '<CUSTOMER_ID>' endpoint: chronicle.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
Parameter konfigurasi
Ganti placeholder berikut.
Konfigurasi pengekspor:
<CREDS_FILE_PATH>: Jalur lengkap ke file kunci JSON akun layanan (Opsi 1):- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
<CUSTOMER_ID>: ID pelanggan Google SecOps yang disalin sebelumnyalocation: Ganti<LOCATION>dengan region instance Google SecOps Anda (misalnya,us,europe, atauasia-southeast1). Pengekspor akan menambahkan awalanchronicle.googleapis.comdengan nilai ini. Lihat Endpoint Regional untuk mengetahui daftar lengkapnya.project: Ganti<PROJECT_NUMBER>dengan nomor project dari IAM & Admin > Settings.endpoint: Tetap tetapkan kechronicle.googleapis.com.Contoh konfigurasi
receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/moveit_transfer: 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: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6' endpoint: chronicle.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
Pengekspor API penyerapan lama
Jika Anda menggunakan file autentikasi penyerapan dari Opsi 2, ganti blok
exportersdengan kode berikut. Tetapkancreds_file_pathke jalur file autentikasi penyerapan, dan jika instance Anda berada di luar Amerika Serikat, gantimalachiteingestion-pa.googleapis.comdengan endpoint regional Anda (misalnya,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/moveit_transfer: compression: gzip creds_file_path: '<CREDS_FILE_PATH>' customer_id: '<CUSTOMER_ID>' endpoint: malachiteingestion-pa.googleapis.com log_type: IPSWITCH_MOVEIT_TRANSFER raw_log_field: body ingestion_labels: log_source: moveit_transfer
Simpan file konfigurasi
Setelah mengedit, simpan file:
* Linux: Tekan Ctrl+O, lalu Enter, lalu Ctrl+X
* Windows: Klik File > Simpan
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, lakukan hal berikut:
Jalankan perintah berikut:
sudo systemctl restart observiq-otel-collectorPastikan layanan sedang berjalan:
sudo systemctl status observiq-otel-collectorPeriksa log untuk mengetahui error:
sudo journalctl -u observiq-otel-collector -f
Untuk memulai ulang agen Bindplane di Windows, lakukan hal berikut:
Pilih salah satu opsi berikut:
Command Prompt atau PowerShell sebagai administrator:
net stop observiq-otel-collector && net start observiq-otel-collectorKonsol layanan:
- Tekan
Win+R, ketikservices.msc, lalu tekan Enter. - Cari observIQ OpenTelemetry Collector.
- Klik kanan, lalu pilih Mulai ulang.
Pastikan layanan sedang berjalan:
sc query observiq-otel-collectorPeriksa log untuk mengetahui error:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Tekan
Mengonfigurasi penerusan syslog Progress MOVEit Transfer
Untuk mengonfigurasi MOVEit Transfer agar meneruskan entri log audit ke agen Bindplane melalui syslog:
- Login ke konsol administrasi web MOVEit Transfer sebagai pengguna dengan izin SysAdmin.
- Buka SETELAN > Sistem > Audit > Syslog. Halaman Configure Syslog Settings akan ditampilkan.
- Di bagian Syslog Logging, pilih Enabled. Jika diaktifkan, setiap entri log audit akan dikirim ke host syslog yang ditentukan serta ke database audit MOVEit Transfer.
- Di kolom Syslog Host, masukkan alamat IP atau nama host dari host agen Bindplane (misalnya,
192.168.1.100). Di kolom Syslog Port, masukkan
514. Jika kolom ini dibiarkan kosong, port akan kembali ke port default514.Di dropdown Syslog Facility, pilih fasilitas tempat pesan syslog MOVEit Transfer akan muncul di host syslog jarak jauh. Nilai defaultnya adalah FTP. Fasilitas syslog standar berikut tersedia:
- KERN
- PENGGUNA
- DAEMON
- AUTH
- SYSLOG
- LPR
- BERITA
- UUCP
- CRON
- AUTHPRIV
- FTP (default)
- LOCAL0 hingga LOCAL7
Klik Ubah Setelan Logging untuk menyimpan konfigurasi.
Klik Send Test Syslog Message untuk mengirim pesan pengujian ke host agen Bindplane yang ditentukan. Karena penerapan BSD Syslog didasarkan pada UDP, verifikasi secara manual bahwa pesan pengujian telah tiba dengan memeriksa log agen Bindplane.
Pastikan pesan pengujian diterima oleh agen Bindplane:
Linux:
sudo journalctl -u observiq-otel-collector -fWindows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Persyaratan firewall
Pastikan aturan firewall berikut diterapkan untuk mengizinkan traffic syslog dari MOVEit Transfer ke agen Bindplane:
| Arah | Protokol | Sumber | Tujuan | Port |
|---|---|---|---|---|
| Keluar dari MOVEit Transfer | UDP | IP server MOVEit Transfer | IP host agen Bindplane | 514 |
Tabel pemetaan UDM
| Kolom log | Pemetaan UDM | Logika |
|---|---|---|
| kolom1 | metadata.collected_timestamp | Dikonversi menggunakan pola pencocokan tanggal: d/M/yyyy H:mm:ss A, M/d/yyyy H:mm:ss A, MM/dd/yyyy HH:mm:ss A |
| kolom1 | metadata.event_timestamp | Dikonversi menggunakan pola pencocokan tanggal: d/M/yyyy H:mm:ss A, M/d/yyyy H:mm:ss A, MM/dd/yyyy HH:mm:ss A |
| kolom2 | security_result.action_details | Nilai disalin secara langsung |
| kolom3 | target.hostname, target.asset.hostname | Nilai disalin langsung dari kolom3 |
| column4 | principal.ip, principal.asset.ip | Diekstrak dari column4 menggunakan pola grok untuk IP |
| column6 | target.file.full_path | Digabungkan dari folderPath dan fileName jika keduanya ada, atau dari fileName saja |
| column7 | target.file.full_path | |
| column15 | target.file.full_path | |
| column7 | target.user.email_addresses | Digabungkan jika column2 == file_sentemail |
| column10 | metadata.description | Nilai disalin langsung |
| column11 | metadata.product_event_type | Nilai disalin langsung jika bukan None |
| column12 | target.ip, target.asset.ip | Diekstrak dari column12 menggunakan pola grok untuk IP |
| column16 | target.file.full_path | Digabungkan dari folderPath dan fileName jika keduanya ada, atau dari fileName saja |
| column23 | target.file.full_path | |
| column19 | target.user.user_display_name | Nilai disalin langsung jika column2 == file_sentemail dan column8 == sender, atau untuk pengguna target |
| event_received_time | metadata.collected_timestamp | Dikonversi menggunakan pola kecocokan tanggal: 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 |
| timestamp | metadata.event_timestamp | Dikonversi menggunakan pola pencocokan tanggal: 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 | Nilai disalin langsung |
| AgentVersion | metadata.product_version | Nilai disalin secara langsung |
| principal_host | principal.hostname, principal.asset.hostname | Nilai disalin secara langsung |
| Nama pengguna | principal.user.userid | Nilai disalin langsung |
| company_name | principal.user.company_name | Nilai disalin langsung |
| ID | target.process.pid | Nilai disalin secara langsung |
| InstID | metadata.product_log_id | Nilai disalin langsung |
| FileID | target.resource.attribute.labels | Digabungkan sebagai additional_id_2 dengan kunci FileID dan nilai dari FileID |
| FolderID | target.resource.attribute.labels | Digabungkan sebagai additional_id_3 dengan kunci FolderID dan nilai dari FolderID |
| FolderPath | target.file.full_path | Digabungkan dari FolderPath dan FileName jika keduanya ada, atau dari FolderPath |
| FileName | target.file.full_path | |
| FileName | target.resource.attribute.labels | Digabungkan sebagai nama file dengan kunci FileName dan nilai dari FileName |
| host | principal.hostname, principal.asset.hostname | Nilai disalin langsung |
| log_level | security_result.severity | Tetapkan ke INFORMATIONAL jika INFO atau DEBUG, ERROR jika ERROR |
| source_module_name | observer.resource.attribute.labels | Digabungkan sebagai source_module_label dengan kunci source_module_name dan nilai dari source_module_name |
| source_module_type | observer.application | Nilai disalin secara langsung |
| log_msg | metadata.description | Nilai dari log_msg jika http_method != GET dan file_path kosong, atau log_desc, atau description, atau Message |
| log_desc | metadata.description | |
| deskripsi | metadata.description | |
| Pesan | metadata.description | |
| port | principal.port | Nilai disalin langsung, dikonversi menjadi bilangan bulat |
| tgtport | target.port | Nilai disalin langsung, dikonversi menjadi bilangan bulat |
| paket | principal.process.command_line | Nilai disalin langsung |
| srcip | principal.ip, principal.asset.ip | Nilai disalin secara langsung |
| nama pengguna | principal.user.userid | Nilai disalin langsung |
| versi | metadata.product_version | Nilai disalin secara langsung |
| http_method | network.http.method | Nilai disalin secara langsung |
| tindakan | security_result.action_details | Nilai disalin langsung |
| ringkasan | security_result.summary | Nilai disalin secara langsung |
| security_result | security_result | Digabungkan secara langsung |
| tgtip | target.ip, target.asset.ip | Nilai disalin langsung |
| application_proto | network.application_protocol | Ditulis dalam huruf besar dan disalin langsung |
| url | network.http.referral_url | Nilai disalin secara langsung |
| status_code | network.http.response_code | Nilai disalin langsung, dikonversi menjadi bilangan bulat |
| file_path | principal.process.file.full_path | Nilai disalin secara langsung |
| file_size | principal.process.file.size | Dikonversi menjadi uinteger jika bukan 0 |
| process_id | principal.process.pid | Nilai disalin secara langsung |
| session_id | network.session_id | Nilai disalin langsung |
| task_id | additional.fields | Digabungkan sebagai additional_field dengan key TASK_ID dan string_value dari task_id |
| AgentBrand | metadata.product_event_type | Nilai disalin secara langsung |
| Parm1 | additional.fields | Digabungkan sebagai additional_field_3 dengan kunci Parm1 dan string_value dari Parm1 |
| Parm2 | additional.fields | Digabungkan sebagai additional_field_4 dengan key Parm2 dan string_value dari Parm2 |
| Error | additional.fields | Digabungkan sebagai additional_field_5 dengan kunci Error dan string_value dari Error |
| XFerSize | target.resource.attribute.labels | Digabungkan sebagai additional_field_1 dengan kunci XFerSize dan nilai dari XFerSize |
| FolderPath | metadata.event_type | Setel ke FILE_DELETION jika FolderPath dan action_performed cocok dengan Delete File, NETWORK_HTTP jika tgtip atau host dan application_proto == HTTP, USER_LOGIN jika Username atau username, STATUS_UPDATE jika tgtip atau host atau principal_host atau IPAddress, jika tidak, GENERIC_EVENT |
| tgtip | metadata.event_type | |
| host | metadata.event_type | |
| principal_host | metadata.event_type | |
| IPAddress | metadata.event_type | |
| Nama pengguna | metadata.event_type | |
| nama pengguna | metadata.event_type | |
| tgtip | metadata.event_type | Disetel ke USER_LOGIN jika column2 == sec_signon dan tgtip atau tar_host, USER_LOGOUT jika sec_signoff dan tgtip atau tar_host, FILE_UNCATEGORIZED jika folder_add, FILE_CREATION jika file_upload atau download dan tgtip dan is_tgt_file_present, FILE_DELETION jika file_delete dan srcip dan is_tgt_file_present, FILE_MODIFICATION jika file_rename, FILE_UNCATEGORIZED jika file_dlhashchk, EMAIL_TRANSACTION jika file_sentemail dan useremail, STATUS_UPDATE jika srcip, atau GENERIC_EVENT |
| tar_host | metadata.event_type | |
| srcip | metadata.event_type | |
| is_tgt_file_present | metadata.event_type | |
| kolom2 | metadata.event_type | |
| useremail | metadata.event_type | |
| security_result | metadata.event_type | |
| extensions.auth.type | extensions.auth.type | Disetel ke MACHINE untuk peristiwa login/logout |
| metadata.vendor_name | metadata.vendor_name | Tetapkan ke "IPS" |
| metadata.product_name | metadata.product_name | Tetapkan ke "IPSWITCH MOVEIT TRANSFER" |
target_application |
event.idm.read_only_udm.target.application |
Dipetakan dari log perubahan |
product_event |
event.idm.read_only_udm.metadata.product_event_type |
Dipetakan dari log perubahan |
dstip |
event.idm.read_only_udm.target.ip dan event.idm.read_only_udm.target.asset.ip |
Dipetakan dari log perubahan |
AdminTrust |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
Permission |
event.idm.read_only_udm.additional.fields |
Dipetakan dari log perubahan |
log_status |
event.idm.read_only_udm.security_result.action.details |
Dipetakan dari log perubahan |
srcip |
event.idm.read_only_udm.principal.ip dan event.idm.read_only_udm.principal.asset.ip |
Dipetakan dari log perubahan |
EventReceivedTime |
event.timestamp |
Dipetakan dari log perubahan |
SourceModuleName |
observer.resource.attribute.labels |
Dipetakan dari log perubahan |
SourceModuleType |
observer.application |
Dipetakan dari log perubahan |
SourceName |
metadata.product_event_type |
Dipetakan dari log perubahan |
Severity |
security_result. |
Dipetakan dari log perubahan |
Hostname |
principal.hostname |
Dipetakan dari log perubahan |
Channel |
security_result.about.resource.attribute.labels |
Dipetakan dari log perubahan |
AgentVersion |
metadata.version |
Dipetakan dari log perubahan |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.