Mengumpulkan log SFTP VanDyke VShell
Dokumen ini menjelaskan cara menyerap log SFTP VanDyke VShell ke Google Security Operations menggunakan Bindplane dengan Syslog atau Amazon S3 dengan pengirim log. Parser mengubah log mentah menjadi format UDM terstruktur. Alat ini menangani format JSON dan SYSLOG, mengekstrak kolom yang relevan seperti alamat IP, port, dan detail peristiwa, serta melengkapi data dengan informasi kontekstual seperti detail platform dan tingkat keparahan keamanan.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Akses istimewa ke server atau konsol pengelolaan VanDyke VShell
- Untuk Opsi 1: Host Windows 2016 atau yang lebih baru atau Linux dengan
systemduntuk agen Bindplane - Untuk Opsi 2: Akun AWS dengan akses S3 dan NXLog/Fluent Bit di server VShell
Opsi 1: Integrasi melalui Bindplane dan Syslog
Opsi ini menyediakan streaming log real-time dengan latensi minimal dan direkomendasikan untuk sebagian besar deployment.
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat Bindplane akan diinstal atau tempat Anda akan mengonfigurasi feed.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
- 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" /quiet
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.sh
Referensi penginstalan tambahan
- Untuk opsi penginstalan tambahan, lihat panduan penginstalan ini.
Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps
Akses file konfigurasi:
- Cari file
config.yaml. Biasanya, file ini berada di direktori/etc/bindplane-agent/di Linux atau di direktori penginstalan di Windows. - Buka file menggunakan editor teks (misalnya,
nano,vi, atau Notepad).
- Cari file
Edit file
config.yamlsebagai berikut:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" 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: YOUR_CUSTOMER_ID endpoint: malachiteingestion-pa.googleapis.com # Custom log type - requires parser extension log_type: 'VANDYKE_SFTP' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels- Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.
- Ganti
<customer_id>dengan ID pelanggan yang sebenarnya. - Ganti
/path/to/ingestion-authentication-file.jsondengan jalur tempat file autentikasi disimpan di bagian Mendapatkan file autentikasi penyerapan Google SecOps. - Untuk TCP, bukan UDP, ganti
udplogdengantcplog.
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:
sudo systemctl restart bindplane-agentUntuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:
net stop BindPlaneAgent && net start BindPlaneAgent
Mengonfigurasi penerusan Syslog di VanDyke VShell
Untuk VShell di Windows
- Login ke VShell Control Panel.
- Buka setelan Logging.
- Konfigurasi logging syslog jarak jauh:
- Aktifkan logging ke server syslog jarak jauh.
- Alamat server: Masukkan alamat IP agen Bindplane.
- Port: Masukkan 514 (atau port yang Anda konfigurasi).
- Protocol: Pilih UDP (atau TCP jika dikonfigurasi).
- Grup pesan: Pilih Koneksi, Autentikasi, SFTP, FTPS, HTTPS, Error, Peringatan, dan Informasi.
- Klik Terapkan > Oke.
Untuk VShell di Linux/macOS
- Edit file vshelld_config (biasanya
/etc/vshell/vshelld_config). Konfigurasikan parameter berikut:
SyslogFacility LOG_LOCAL3 LogLevel INFOKonfigurasi syslog sistem Anda untuk meneruskan LOG_LOCAL3 ke agen BindPlane:
- Edit
/etc/rsyslog.confatau/etc/syslog-ng/syslog-ng.conf. - Tambahkan:
local3.* @bindplane-agent-ip:514(untuk UDP) ataulocal3.* @@bindplane-agent-ip:514(untuk TCP).
- Edit
Mulai ulang layanan VShell dan layanan syslog:
sudo systemctl restart vshelld sudo systemctl restart rsyslog
Opsi 2: Integrasi melalui AWS S3
Opsi ini berguna untuk lingkungan yang memerlukan pengarsipan log atau tempat penerusan syslog langsung tidak memungkinkan. Perhatikan bahwa hal ini memerlukan pengirim log di server VShell karena AWS Lambda tidak dapat mengakses file lokal.
Mengonfigurasi bucket AWS S3 dan IAM untuk Google SecOps
- Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
- Simpan Name dan Region bucket untuk referensi di masa mendatang (misalnya,
vandyke-sftp-logs). - Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
- Pilih Pengguna yang dibuat.
- Pilih tab Kredensial keamanan.
- Klik Create Access Key di bagian Access Keys.
- Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
- Klik Berikutnya.
- Opsional: Tambahkan tag deskripsi.
- Klik Create access key.
- Klik Download CSV file untuk menyimpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
- Klik Done.
- Pilih tab Permissions.
- Klik Tambahkan izin di bagian Kebijakan izin.
- Pilih Tambahkan izin.
- Pilih Lampirkan kebijakan secara langsung.
- Cari kebijakan AmazonS3FullAccess.
- Pilih kebijakan.
- Klik Berikutnya.
- Klik Add permissions.
Menginstal dan Mengonfigurasi Log Shipper di VShell Server
Pilih salah satu opsi berikut berdasarkan sistem operasi Anda:
Opsi A: Menggunakan NXLog (Windows)
- Download dan instal NXLog Community Edition dari nxlog.co.
Edit
C:\Program Files\nxlog\conf\nxlog.conf:<Extension json> Module xm_json </Extension> <Extension syslog> Module xm_syslog </Extension> <Input vshell_log> Module im_file File "C:\\Program Files\\VanDyke Software\\VShell\\Log\\VShell.log" SavePos TRUE <Exec> # Parse VShell log format if $raw_event =~ /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) (\S+) "(.*)"$/ { $EventTime = $1; $Protocol = $2; $EventType = $3; $SessionID = $4; $ClientIP = $5; $ClientPort = $6; $Username = $7; $Filename = $9; $BytesDown = $10; $BytesUp = $11; $ServerIP = $14; $ServerPort = $15; $EventMessage = $16; # Convert to JSON to_json(); } </Exec> </Input> <Output s3> Module om_exec Command C:\scripts\upload_to_s3.ps1 Args %FILEPATH% </Output> <Route vshell_to_s3> Path vshell_log => s3 </Route>Buat skrip PowerShell
C:\scripts\upload_to_s3.ps1:param([string]$FilePath) $bucket = "vandyke-sftp-logs" $key = "vshell/$(Get-Date -Format 'yyyy/MM/dd/HH')/$(Get-Date -Format 'yyyyMMddHHmmss').json" # Batch logs $logs = Get-Content $FilePath | ConvertFrom-Json $jsonLines = $logs | ForEach-Object { $_ | ConvertTo-Json -Compress } $content = $jsonLines -join "`n" # Upload to S3 Write-S3Object -BucketName $bucket -Key $key -Content $content -ProfileName defaultBuat profil kredensial AWS:
Set-AWSCredential -AccessKey YOUR_ACCESS_KEY -SecretKey YOUR_SECRET_KEY -StoreAs default- Jadwalkan skrip PowerShell agar berjalan setiap 5 menit menggunakan Task Scheduler.
Opsi B: Menggunakan Fluent Bit (Linux)
Instal Fluent Bit:
curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | shKonfigurasi
/etc/fluent-bit/fluent-bit.conf:[SERVICE] Flush 5 Daemon On Log_Level info [INPUT] Name tail Path /var/log/vshell/vshell.log Parser vshell_parser Tag vshell.* Refresh_Interval 5 Mem_Buf_Limit 10MB [PARSER] Name vshell_parser Format regex Regex ^(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (?<protocol>\S+) (?<event_type>\S+) (?<session_id>\S+) (?<client_ip>\S+) (?<client_port>\S+) (?<username>\S+) (?<dash>\S+) (?<filename>\S+) (?<bytes_down>\S+) (?<bytes_up>\S+) (?<field1>\S+) (?<field2>\S+) (?<server_ip>\S+) (?<server_port>\S+) "(?<event_message>[^"]*)" [OUTPUT] Name s3 Match vshell.* bucket vandyke-sftp-logs region us-east-1 use_put_object On total_file_size 5M upload_timeout 10s compression gzip s3_key_format /vshell/%Y/%m/%d/%H/%{hostname}_%{uuid}.json.gzKonfigurasi kredensial AWS:
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEYMulai Fluent Bit:
sudo systemctl enable fluent-bit sudo systemctl start fluent-bit
Mengonfigurasi feed di Google SecOps untuk menyerap log VanDyke VShell
- Buka Setelan SIEM > Feed.
- Klik Tambahkan Feed Baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
VanDyke VShell SFTP logs). - Pilih Amazon S3 V2 sebagai Jenis sumber.
- Pilih VanDyke SFTP sebagai Log type (kustom).
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- URI S3:
s3://vandyke-sftp-logs/vshell/ - Opsi penghapusan sumber: Pilih Pertahankan (direkomendasikan) atau opsi penghapusan sesuai preferensi Anda.
- Usia File Maksimum: Menyertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.
- ID Kunci Akses: Kunci akses pengguna dengan akses ke bucket S3.
- Kunci Akses Rahasia: Kunci rahasia pengguna dengan akses ke bucket S3.
- Namespace aset: Namespace aset.
- Label penyerapan: Label yang diterapkan ke peristiwa dari feed ini.
- URI S3:
- Klik Berikutnya.
- Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
Tabel Pemetaan UDM
| Kolom log | Pemetaan UDM | Logika |
|---|---|---|
| agent.id | read_only_udm.observer.asset_id | Menggabungkan "filebeat:" dengan nilai kolom agent.id |
| agent.type | read_only_udm.observer.application | Memetakan nilai kolom agent.type secara langsung |
| agent.version | read_only_udm.observer.platform_version | Memetakan nilai kolom agent.version secara langsung |
| ecs.version | read_only_udm.metadata.product_version | Memetakan nilai kolom ecs.version secara langsung |
| host.architecture | read_only_udm.target.asset.hardware.cpu_platform | Memetakan nilai kolom host.architecture secara langsung |
| host.hostname | read_only_udm.target.hostname | Memetakan nilai kolom host.hostname secara langsung |
| host.id | read_only_udm.principal.asset_id | Menggabungkan "VANDYKE_SFTP:" dengan nilai kolom host.id |
| host.ip | read_only_udm.target.ip | Memetakan setiap alamat IP dalam array host.ip secara langsung ke kolom read_only_udm.target.ip yang terpisah |
| host.mac | read_only_udm.target.mac | Memetakan setiap alamat MAC dalam array host.mac secara langsung ke kolom read_only_udm.target.mac yang terpisah |
| host.os.kernel | read_only_udm.target.platform_patch_level | Memetakan secara langsung nilai kolom host.os.kernel |
| host.os.platform | read_only_udm.target.platform | Memetakan nilai host.os.platform ke WINDOWS, LINUX, MAC, atau UNKNOWN_PLATFORM berdasarkan nilai |
| host.os.version | read_only_udm.target.platform_version | Memetakan nilai kolom host.os.version secara langsung |
| log.file.path | read_only_udm.principal.process.file.full_path | Memetakan nilai kolom log.file.path secara langsung |
| logstash.collect.timestamp | read_only_udm.metadata.collected_timestamp | Mengurai stempel waktu dari kolom logstash.collect.timestamp dan mengonversinya menjadi objek stempel waktu |
| logstash.irm_environment | read_only_udm.additional.fields.value.string_value | Memetakan nilai kolom logstash.irm_environment secara langsung. Kunci ditetapkan ke "irm_environment" |
| logstash.irm_region | read_only_udm.additional.fields.value.string_value | Memetakan nilai kolom logstash.irm_region secara langsung. Kuncinya ditetapkan ke "irm_region" |
| logstash.irm_site | read_only_udm.additional.fields.value.string_value | Memetakan nilai kolom logstash.irm_site secara langsung. Kuncinya ditetapkan ke "irm_site" |
| logstash.process.host | read_only_udm.observer.hostname | Memetakan nilai kolom logstash.process.host secara langsung |
| pesan | Digunakan untuk mengekstrak berbagai kolom menggunakan pola grok dan ekspresi reguler | |
| read_only_udm.metadata.event_type | Tetapkan ke "NETWORK_FTP" | |
| read_only_udm.metadata.log_type | Tetapkan ke "VANDYKE_SFTP" | |
| read_only_udm.metadata.product_event_type | Diekstrak dari kolom pesan menggunakan pola grok | |
| read_only_udm.metadata.product_name | Tetapkan ke "VANDYKE_SFTP" | |
| read_only_udm.metadata.vendor_name | Setel ke "VANDYKE SOFTWARE" | |
| read_only_udm.network.application_protocol | Disetel ke "SSH" jika kolom deskripsi berisi "SSH2" atau "SSH", atau disetel ke "HTTP" jika kolom metode cocok dengan metode HTTP | |
| read_only_udm.network.http.method | Diekstrak dari kolom pesan menggunakan pola grok, hanya jika cocok dengan metode HTTP umum | |
| read_only_udm.network.http.referral_url | Diekstrak dari kolom pesan menggunakan pola grok | |
| read_only_udm.network.http.response_code | Diekstrak dari kolom pesan menggunakan pola grok dan dikonversi menjadi bilangan bulat | |
| read_only_udm.network.ip_protocol | Ditetapkan ke "TCP" jika kolom deskripsi berisi "TCP" | |
| read_only_udm.principal.ip | Diekstrak dari kolom pesan menggunakan pola grok | |
| read_only_udm.principal.port | Diekstrak dari kolom pesan menggunakan pola grok dan dikonversi menjadi bilangan bulat | |
| read_only_udm.security_result.description | Diekstrak dari kolom pesan menggunakan pola grok | |
| read_only_udm.security_result.severity | Disetel ke "HIGH" jika syslog_severity adalah "error" atau "warning", "MEDIUM" jika "notice", dan "LOW" jika "information" atau "info" | |
| read_only_udm.security_result.severity_details | Memetakan nilai kolom syslog_severity secara langsung | |
| read_only_udm.target.ip | Diekstrak dari kolom pesan menggunakan pola grok | |
| read_only_udm.target.port | Diekstrak dari kolom pesan menggunakan pola grok dan dikonversi menjadi bilangan bulat | |
| read_only_udm.target.process.pid | Diekstrak dari kolom pesan menggunakan pola grok | |
| syslog_severity | Digunakan untuk menentukan tingkat keparahan security_result |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.