Mengumpulkan log SFTP VanDyke VShell

Didukung di:

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 systemd untuk 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.

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. 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

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Profil.
  3. 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

  1. Buka Command Prompt atau PowerShell sebagai administrator.
  2. Jalankan perintah berikut:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Penginstalan Linux

  1. Buka terminal dengan hak istimewa root atau sudo.
  2. 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

Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps

  1. Akses file konfigurasi:

    1. Cari file config.yaml. Biasanya, file ini berada di direktori /etc/bindplane-agent/ di Linux atau di direktori penginstalan di Windows.
    2. Buka file menggunakan editor teks (misalnya, nano, vi, atau Notepad).
  2. Edit file config.yaml sebagai 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.json dengan jalur tempat file autentikasi disimpan di bagian Mendapatkan file autentikasi penyerapan Google SecOps.
    • Untuk TCP, bukan UDP, ganti udplog dengan tcplog.

Mulai ulang agen Bindplane untuk menerapkan perubahan

  • Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:

    sudo systemctl restart bindplane-agent
    
  • Untuk 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

  1. Login ke VShell Control Panel.
  2. Buka setelan Logging.
  3. 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.
  4. Klik Terapkan > Oke.

Untuk VShell di Linux/macOS

  1. Edit file vshelld_config (biasanya /etc/vshell/vshelld_config).
  2. Konfigurasikan parameter berikut:

    SyslogFacility LOG_LOCAL3
    LogLevel INFO
    
  3. Konfigurasi syslog sistem Anda untuk meneruskan LOG_LOCAL3 ke agen BindPlane:

    • Edit /etc/rsyslog.conf atau /etc/syslog-ng/syslog-ng.conf.
    • Tambahkan: local3.* @bindplane-agent-ip:514 (untuk UDP) atau local3.* @@bindplane-agent-ip:514 (untuk TCP).
  4. 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

  1. Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket.
  2. Simpan Name dan Region bucket untuk referensi di masa mendatang (misalnya, vandyke-sftp-logs).
  3. Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
  4. Pilih Pengguna yang dibuat.
  5. Pilih tab Kredensial keamanan.
  6. Klik Create Access Key di bagian Access Keys.
  7. Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
  8. Klik Berikutnya.
  9. Opsional: Tambahkan tag deskripsi.
  10. Klik Create access key.
  11. Klik Download CSV file untuk menyimpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
  12. Klik Done.
  13. Pilih tab Permissions.
  14. Klik Tambahkan izin di bagian Kebijakan izin.
  15. Pilih Tambahkan izin.
  16. Pilih Lampirkan kebijakan secara langsung.
  17. Cari kebijakan AmazonS3FullAccess.
  18. Pilih kebijakan.
  19. Klik Berikutnya.
  20. 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)

  1. Download dan instal NXLog Community Edition dari nxlog.co.
  2. 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>
    
  3. 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 default
    
  4. Buat profil kredensial AWS:

    Set-AWSCredential -AccessKey YOUR_ACCESS_KEY -SecretKey YOUR_SECRET_KEY -StoreAs default
    
    1. Jadwalkan skrip PowerShell agar berjalan setiap 5 menit menggunakan Task Scheduler.

Opsi B: Menggunakan Fluent Bit (Linux)

  1. Instal Fluent Bit:

    curl https://raw.githubusercontent.com/fluent/fluent-bit/master/install.sh | sh
    
  2. Konfigurasi /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.gz
    
  3. Konfigurasi kredensial AWS:

    export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
    
  4. Mulai Fluent Bit:

    sudo systemctl enable fluent-bit
    sudo systemctl start fluent-bit
    

Mengonfigurasi feed di Google SecOps untuk menyerap log VanDyke VShell

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, VanDyke VShell SFTP logs).
  4. Pilih Amazon S3 V2 sebagai Jenis sumber.
  5. Pilih VanDyke SFTP sebagai Log type (kustom).
  6. Klik Berikutnya.
  7. 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.
  8. Klik Berikutnya.
  9. 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.