Forwarder Chronicle untuk Linux

Dokumen ini menjelaskan cara menginstal dan mengonfigurasi forwarder di Linux. Untuk menginstal forwarder di Windows, lihat Windows forwarder.

Forwarder digunakan untuk mengirim log dari lingkungan pelanggan ke instance Chronicle. Cara ini digunakan saat pelanggan ingin mengirim log langsung ke Chronicle, dan tidak ingin menggunakan bucket cloud untuk menyerap data, atau logtype tidak memiliki penyerapan native melalui API pihak ketiga. Forwarder dapat digunakan sebagai solusi siap deploy, alih-alih menggunakan API penyerapan secara manual.

Anda dapat menginstal forwarder di berbagai distribusi Linux, termasuk Debian, Ubuntu, Red Hat, dan Suse. Google Cloud menyediakan software menggunakan container Docker. Anda dapat menjalankan dan mengelola container Docker di mesin fisik atau virtual machine yang menjalankan Linux.

Persyaratan sistem

Berikut adalah rekomendasi umum. Untuk mendapatkan rekomendasi khusus bagi sistem Anda, hubungi Dukungan Chronicle.

  • RAM—1 GB untuk setiap jenis data yang dikumpulkan (kolektor) yang diterima Chronicle untuk penyerapan. Misalnya, jika telah menentukan 4 kolektor yang berbeda, Anda memerlukan RAM 4 GB untuk mengumpulkan data bagi keempat kolektor.

  • CPU—2 CPU sudah cukup untuk menangani kurang dari 10.000 peristiwa per detik (EPS) (total untuk semua jenis data). Jika Anda berharap untuk meneruskan lebih dari 10.000 EPS, sediakan 4 hingga 6 CPU.

  • Disk—Kapasitas disk sebesar 100 MB sudah cukup, terlepas dari jumlah data yang ditangani oleh forwarder Chronicle. Jika Anda perlu melakukan buffering pesan yang backlog ke disk sebagai ganti memori, lihat Buffering Disk. Forwarder Chronicle melakukan buffer ke memori secara default.

Rentang alamat IP Google

Rentang alamat IP mungkin perlu dibuka saat menyiapkan konfigurasi Forwarder, seperti saat menyiapkan konfigurasi untuk firewall. Google tidak dapat memberikan daftar alamat IP yang spesifik. Namun, Anda dapat mendapatkan rentang alamat IP Google.

Memverifikasi konfigurasi firewall

Setiap firewall atau proxy yang diautentikasi di antara container penerusan Chronicle dan internet memerlukan aturan untuk membuka akses ke host berikut:

Jenis Koneksi Tujuan Port
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-northeast1-malachiteingestion-pa.googleapis.com 443
TCP asia-south1-malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP europe-west3-malachiteingestion-pa.googleapis.com 443
TCP europe-west6-malachiteingestion-pa.googleapis.com 443
TCP me-central2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP northamerica-northeast2-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP gcr.io 443
TCP oauth2.googleapis.com 443
TCP storage.googleapis.com 443

Menyesuaikan file konfigurasi

Google Cloud menyesuaikan file konfigurasi dengan instance forwarder dengan metadata spesifik seperti yang ditunjukkan di bagian output. Anda dapat mendownload file konfigurasi sesuai kebutuhan dan menyertakan informasi tentang jenis log yang akan diserap di bagian kolektor. Untuk mengetahui informasi selengkapnya tentang setelan konfigurasi, lihat Referensi setelan konfigurasi.

Mengonfigurasi Forwarder Linux

Untuk mengonfigurasi forwarder Linux melalui UI, lihat Mengelola konfigurasi penerusan melalui UI Chronicle.

Untuk mengonfigurasi forwarder Linux secara manual, lakukan hal berikut:

  1. Buat salinan template file konfigurasi yang disediakan dengan software.

  2. Download file konfigurasi melalui UI.

  3. Simpan kedua file tersebut di direktori yang sama menggunakan konvensi penamaan berikut:

    FORWARDER_NAME.conf—Gunakan file ini untuk menentukan setelan konfigurasi yang terkait dengan penyerapan log.

    FORWARDER_NAME_auth.conf—Gunakan file ini untuk menentukan kredensial otorisasi.

  4. Ubah file agar menyertakan konfigurasi untuk instance penerus Anda. Gunakan contoh yang disediakan dalam dokumen ini sebagai referensi.

  5. Pastikan ada entri untuk setiap input di file FORWARDER_NAME_auth.conf meskipun input tersebut tidak memiliki detail autentikasi yang sesuai. Hal ini diperlukan untuk memetakan data dengan benar.

Setiap perubahan yang dibuat pada file konfigurasi akan diterapkan secara otomatis oleh penerus dalam waktu 5 menit.

Contoh konfigurasi

Contoh kode berikut menunjukkan format file konfigurasi untuk penerusan. Untuk mengetahui detail tentang setelan untuk setiap jenis mekanisme penyerapan, seperti Splunk atau Syslog, lihat Mengumpulkan Data.

File FORWARDER_NAME.conf

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: COLLECTOR_ID \
    customer_id: CUSTOMER_ID \

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      tcp_buffer_size: 524288

File FORWARDER_NAME_auth.conf

output:
  identity:
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\\"PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example-account-1%40example-account.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
  - syslog:
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"

Dengan sistem dua file ini, Anda dapat menyimpan kredensial autentikasi dalam file terpisah untuk meningkatkan keamanan. Anda dapat menyimpan file FORWARDER_NAME.conf di repositori kontrol versi atau sistem pengelolaan konfigurasi terbuka apa pun. Anda dapat menyimpan file FORWARDER_NAME_auth.conf secara langsung di mesin fisik atau virtual yang menjalankan forwarder.

Contoh Konfigurasi (Satu file)

output:
  url: malachiteingestion-pa.googleapis.com:443
  identity:
    identity:
    collector_id: "COLLECTOR_ID" \
    customer_id: "CUSTOMER_ID" \
    secret_key: |
      {
        "type": "service_account",
        "project_id": "PROJECT_ID" \,
        "private_key_id": "PRIVATE_KEY_ID" \,
        "private_key": "-----BEGIN PRIVATE KEY-----\ "PRIVATE_KEY" \n-----END PRIVATE KEY-----\n",
        "client_email": "CLIENT_EMAIL" \,
        "client_id": "CLIENT_ID" \,
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/malachite-test-1%40malachite-test.iam.gserviceaccount.com"
      }

collectors:
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DHCP"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10514
      udp_address: 0.0.0.0:10514
      connection_timeout_sec: 60
      tcp_buffer_size: 524288
  - syslog:
      common:
        enabled: true
        data_type: "WINDOWS_DNS"
        data_hint:
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      tcp_address: 0.0.0.0:10515
      connection_timeout_sec: 60
      certificate: "../forwarder/inputs/testdata/localhost.pem"
      certificate_key: "../forwarder/inputs/testdata/localhost.key"
      tcp_buffer_size: 524288

Jika Anda menggunakan satu file konfigurasi dan ingin beralih ke sistem dua file, lakukan hal berikut:

  1. Buat salinan konfigurasi yang ada.
  2. Simpan satu file sebagai file FORWARDER_NAME.conf dan hapus kredensial otorisasi dari file tersebut.
  3. Simpan file lainnya sebagai file FORWARDER_NAME_auth.conf dan hapus semua data non-otorisasi dari file tersebut. Gunakan contoh file konfigurasi yang diberikan dalam panduan ini sebagai referensi.
  4. Pastikan Anda mengikuti konvensi penamaan dan panduan lain yang disebutkan di bagian Menyesuaikan file konfigurasi.

Instal Docker

Penginstalan Docker bergantung pada lingkungan host. Anda dapat menginstal Docker di berbagai sistem operasi host. Google Cloud menyediakan dokumentasi terbatas untuk membantu Anda menginstal Docker di beberapa distribusi Linux yang lebih populer. Namun, Docker bersifat open source dan semua dokumentasi yang diperlukan sudah tersedia. Untuk petunjuk tentang penginstalan Docker, lihat Dokumentasi Docker.

Setelah Docker terinstal di sistem Anda, proses penginstalan penerus Chronicle mirip dengan distribusi Linux jenis apa pun.

Untuk memeriksa apakah Docker terinstal dengan benar di sistem Anda, jalankan perintah berikut (hak istimewa yang ditingkatkan):

   docker ps
  

Respons berikut menunjukkan bahwa Docker telah diinstal dengan benar:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Perintah Docker yang berguna

  • Anda dapat mengumpulkan informasi tambahan tentang penginstalan Docker menggunakan perintah berikut:

    docker info
    
  • Layanan Docker dapat dinonaktifkan secara default. Untuk memeriksa apakah ekstensi ini dinonaktifkan, jalankan perintah berikut:

    systemctl is-enabled docker
    
  • Untuk mengaktifkan layanan Docker dan segera memulainya, jalankan salah satu perintah berikut:

    sudo systemctl enable --now docker
    
    sudo systemctl enable /usr/lib/systemd/system/docker.service
    

    Output:

    Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
    
  • Saat Anda memulai penerusan, jalankan perintah berikut untuk menetapkan penerusan tersebut agar memulai ulang otomatis:

    sudo docker run --restart=always `IMAGE_NAME`
    

    IMAGE_NAME adalah nama image penerus.

  • Untuk memeriksa status dan detail layanan Docker, jalankan perintah berikut:

    sudo systemctl status docker
    

    Output:

    ● docker.service - Docker Application Container Engine
        Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
        Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago
    TriggeredBy: ● docker.socket
          Docs: https://docs.docker.com
      Main PID: 263 (dockerd)
          Tasks: 20
        Memory: 100.4M
        CGroup: /system.slice/docker.service
                └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
    Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock"
    Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
    

    Jika terjadi masalah pada Docker, tim dukungan Chronicle dapat meminta output dari perintah ini untuk membantu dan melakukan debug terkait masalah tersebut.

Menginstal forwarder di Linux

Bagian ini menjelaskan cara menginstal Chronicle Forwarder menggunakan container Docker di sistem Linux.

Langkah 1. Download, transfer, dan instal file konfigurasi penerus

Chronicle menyediakan file konfigurasi forwarder khusus untuk sistem operasi Anda (Linux atau Windows). Anda dapat mendownload file konfigurasi sesuai kebutuhan. Setelah menyelesaikan langkah-langkah berikut, transfer file konfigurasi dari laptop Anda ke direktori /opt/chronicle/config forwarder dalam direktori utama pengguna.

  1. Hubungkan ke host forwarder Linux melalui terminal.

  2. Buat pengguna baru di host penerusan Linux.

      adduser USERNAME
      passwd USERNAME
      usermod -aG wheel USERNAME
    

  3. Ubah direktori ke direktori utama pengguna baru yang menjalankan Container Docker.

  4. Buat direktori untuk menyimpan file konfigurasi penerus Chronicle:

      mkdir /opt/chronicle/config
    

  5. Ubah direktori.

      cd /opt/chronicle/config
    

  6. Setelah file ditransfer, pastikan file konfigurasi berada di direktori /opt/chronicle/config:

      ls -l
    

Langkah 2. Menjalankan forwarder dalam container Docker

Anda dapat menggunakan prosedur berikut untuk memulai penerusan Chronicle untuk pertama kalinya serta mengupgrade ke penampung Chronicle ke versi terbaru:

Opsi --log-opt telah tersedia sejak Docker 1.13. Opsi ini membatasi ukuran file log container dan harus digunakan selama versi Docker Anda mendukungnya.

  1. Jika Anda melakukan upgrade, mulailah dengan membersihkan semua Docker yang berjalan sebelumnya. Dalam contoh berikut, nama container Docker adalah cfps. Dapatkan image Docker terbaru dari Google Cloud dengan perintah docker pull seperti yang ditunjukkan di bawah ini.

    docker stop cfps
    
    docker rm cfps
    
  2. Dapatkan image Docker terbaru dari Google Cloud:

    docker pull gcr.io/chronicle-container/cf_production_stable
    
  3. Mulai penerusan Chronicle dari container Docker:

    docker run \
    --detach \
    --name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    gcr.io/chronicle-container/cf_production_stable
    

Lihat log penerus

Untuk melihat log penerusan Chronicle, jalankan perintah berikut:

  sudo docker logs cfps

Untuk melihat jalur file tempat log disimpan, jalankan perintah berikut:

docker inspect --format='{{.LogPath}}' CONTAINER_NAME
 

Untuk melihat log yang sedang berjalan, jalankan perintah berikut:

  sudo docker logs cfps -f

Untuk menyimpan log ke dalam file, jalankan perintah berikut:

  sudo docker logs cfps &> logs.txt

Meng-uninstal forwarder

Perintah Docker berikut membantu Anda menghentikan dan meng-uninstal atau menghapus penerusan Chronicle.

Untuk menghentikan atau meng-uninstal penampung penerusan:

    docker stop cfps
  

Untuk menghapus penampung penerusan:

    docker rm cfps
  

Memperbarui forwarder

Forwarder Chronicle memiliki dua bagian dan diupgrade sebagai berikut:

  • Paket Forwarder—Diupdate secara otomatis dan tidak perlu memulai ulang.

  • Image Docker Forwarder—Diupdate secara manual setelah menghentikan forwarder yang ada dan memulai instance baru seperti yang dinyatakan di Langkah 2.

Menginstal penerus di belakang proxy

Bagian ini menjelaskan cara menginstal penerusan Chronicle di belakang proxy.

  1. Konfigurasi mesin Anda untuk menggunakan proxy.

    1. Tambahkan baris berikut ke file /etc/resolv.conf Anda:

      nameserver = 10.0.0.1
      nameserver = 10.0.0.2
      
    2. Tetapkan variabel lingkungan berikut:

      $HTTP_PROXY = http://proxy.example.com:80
      $HTTPS_PROXY = https://proxy.example.com:80
      
  2. Mengonfigurasi Docker untuk menggunakan proxy.

    1. Membuat direktori drop-in yang disistem untuk layanan Docker.

      mkdir /etc/systemd/system/docker.service.d
      
    2. Buat file /etc/systemd/system/docker.service.d/http-proxy.conf yang menambahkan variabel lingkungan HTTP_PROXY dan HTTPS_PROXY.

      [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:80/"
      Environment="HTTPS_PROXY=https://proxy.example.com:80/"
      
    3. Hapus perubahan.

      $ sudo systemctl daemon-reload
      
    4. Pastikan konfigurasi telah dimuat.

      $ sudo systemctl show --property Environment docker
      Environment=HTTP_PROXY=http://proxy.example.com:80/
      Environment=HTTPS_PROXY=https://proxy.example.com:80/
      
    5. Mulai ulang Docker.

      $ sudo systemctl restart docker
      
  3. Dapatkan image Docker Forwarder Chronicle terbaru dari Google Cloud.

    docker pull gcr.io/chronicle-container/cf_production_stable
    
  4. Jalankan penampung penerusan Chronicle dengan menambahkan variabel lingkungan proxy.

    docker run \
    --env HTTP_PROXY="http://proxy.example.com:80/" \
    --env HTTPS_PROXY="https://proxy.example.com:80/" \
    --detach \
    --name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    gcr.io/chronicle-container/cf_production_stable
    

Mengumpulkan data

Bagian berikut membantu Anda mengonfigurasi forwarder Chronicle untuk menyerap berbagai jenis data, yang akan diteruskan ke instance Chronicle.

Mengumpulkan data Splunk

Anda dapat mengonfigurasi forwarder Chronicle untuk meneruskan data Splunk ke Chronicle. Google Cloud mengonfigurasi Forwarder Chronicle dengan informasi berikut untuk meneruskan data Anda dari Splunk:

  • URL untuk Splunk REST API (misalnya, https://10.0.113.15:8089).

  • Kueri Splunk untuk menghasilkan data bagi setiap jenis data yang diperlukan (misalnya, index=dns).

FORWARDER_NAME.conf
output:
collectors:
  - splunk:
      common:
        enabled: true
        data_type: WINDOWS_DNS
        data_hint: "#fields ts      uid     id.orig_h       id.orig_p       id.resp_h         id.resp_p       proto   trans_id        query   qclass  qclass_name"
        batch_n_seconds: 10
        batch_n_bytes: 819200
      url: https://127.0.0.1:8089
      is_ignore_cert: true
      minimum_window_size: 10s
      maximum_window_size: 30s
      query_string: search index=* sourcetype=dns
      query_mode: realtime
  • Buat kredensial akun Splunk Anda tersedia untuk Chronicle forwarder. Anda dapat melakukannya dengan membuat file creds.txt.

Untuk menggunakan file creds.txt:

  1. Buat file lokal untuk kredensial Splunk Anda, lalu beri nama creds.txt.

  2. Letakkan nama pengguna Anda di baris pertama dan sandi di baris kedua:

    cat creds.txt
    
    myusername
    mypassword
    
  3. Untuk menggunakan penerusan Chronicle guna mengakses instance Splunk, salin file creds.txt ke direktori konfigurasi (direktori yang sama tempat file konfigurasi berada). Contoh:

    cp creds.txt /opt/chronicle/config/creds.txt
    
  4. Pastikan file creds.txt berada di lokasi yang tepat:

    ls /opt/chronicle/config
    

Mengumpulkan data syslog

Forwarder Chronicle dapat berfungsi sebagai server Syslog. Anda dapat mengonfigurasi alat atau server apa pun yang mendukung pengiriman data syslog melalui koneksi TCP atau UDP untuk meneruskan datanya ke forwarder Chronicle. Anda dapat mengontrol data persis yang dikirimkan perangkat atau server ke Forwarder Chronicle. Forwarder Chronicle kemudian dapat meneruskan data tersebut ke Chronicle.

File konfigurasi FORWARDER_NAME.conf (disediakan oleh Google Cloud) menentukan port yang akan dipantau untuk setiap jenis data yang diteruskan (misalnya, port 10514). Secara default, penerusan Chronicle menerima koneksi TCP dan UDP.

Mengonfigurasi rsyslog

Untuk mengonfigurasi rsyslog, Anda perlu menentukan target untuk setiap port (misalnya, setiap jenis data). Lihat dokumentasi sistem Anda untuk mengetahui sintaksis yang benar. Contoh berikut mengilustrasikan konfigurasi target rsyslog:

  • Traffic log TCP: dns.* @@192.168.0.12:10514

  • Traffic log UDP: dns.* @192.168.0.12:10514

Mengaktifkan TLS untuk konfigurasi syslog

Anda dapat mengaktifkan TLS untuk koneksi Syslog ke penerbit Chronicle. Di file konfigurasi forwarder Chronicle (FORWARDER_NAME.conf), tentukan lokasi sertifikat dan kunci sertifikat yang dihasilkan sendiri seperti yang ditunjukkan pada contoh berikut:

sertifikat "/opt/chronicle/external/certs/client_generated_cert.pem"
certificate_key "/opt/chronicle/external/certs/client_generated_cert.key"

Berdasarkan contoh yang ditampilkan, ubah file konfigurasi penerus Chronicle (FORWARDER_NAME.conf) sebagai berikut:

  collectors:
- syslog:
    common:
      enabled: true
      data_type: WINDOWS_DNS
      data_hint:
      batch_n_seconds: 10
      batch_n_bytes: 1048576
    tcp_address: 0.0.0.0:10515
    tcp_buffer_size: 65536
    connection_timeout_sec: 60
    certificate: "/opt/chronicle/external/certs/client_generated_cert.pem"
    certificate_key: "/opt/chronicle/external/certs/client_generated_cert.key"
    minimum_tls_version: "TLSv1_3"

Beberapa poin penting yang perlu diperhatikan:

  • Anda dapat mengonfigurasi ukuran buffer TCP. Ukuran buffer TCP default adalah 64 KB.

  • Nilai default dan yang direkomendasikan untuk connection_timeout adalah 60 detik. Koneksi TCP dihentikan jika koneksi tidak aktif selama jangka waktu tertentu.

  • Versi TLS minimum akan dibandingkan dengan versi TLS permintaan input. Versi TLS permintaan input harus lebih besar dari versi TLS minimum. Versi TLS minimum harus berupa salah satu nilai berikut: TLSv1_0, TLSv1_1, TLSv1_2, TLSv1_3.

Anda dapat membuat direktori sertifikat di bawah direktori konfigurasi dan menyimpan file sertifikat di sana.

Mengumpulkan data file

Pengumpul file dirancang untuk mengambil log dari file. File tersebut harus terikat dengan container Docker.

Gunakan ini jika Anda ingin mengupload log secara manual dari satu file log. Fungsi ini dapat digunakan untuk mengisi ulang log untuk file log tertentu.

Mulai penerusan Chronicle dari container Docker:

  docker run \
    --name cfps \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    -v /var/log/crowdstrike/falconhostclient:/opt/chronicle/edr \
     gcr.io/chronicle-container/cf_production_stable

Perintah Docker run ini sangat penting untuk memetakan volume pemuatan ke container.

Berdasarkan contoh ini, Anda harus mengubah konfigurasi penerus Chronicle (file FORWARDER_NAME.conf) sebagai berikut. File sample.txt harus ada di folder /var/log/crowdstrike/falconhostclient.

 collectors:
  - file:
       common:
         enabled: true
         data_type: CS_EDR
         data_hint:
         batch_n_seconds: 10
         batch_n_bytes: 1048576
       file_path: /opt/chronicle/edr/sample.txt
       filter:

Konfigurasi flag

skip_seek_to_end (bool): Flag ini disetel ke false secara default dan input file hanya mengirimkan baris log baru sebagai input. Menetapkan ini ke true akan menyebabkan semua baris log sebelumnya dikirim lagi saat penerusan mulai ulang. Hal ini menyebabkan duplikasi log. Menetapkan flag ini ke true akan sangat membantu dalam situasi tertentu (misalnya, selama pemadaman layanan), karena memulai ulang forwarder akan mengirimkan lagi baris log yang tidak ada.

poll (bool): Pengumpul file menggunakan library Tail untuk memeriksa perubahan apa pun dalam sistem file. Dengan menyetel tanda ini ke true, library Tail akan menggunakan metode polling, bukan metode notifikasi default.

Mengumpulkan data paket

Forwarder Chronicle dapat menangkap paket langsung dari antarmuka jaringan menggunakan libcap di Linux. Untuk informasi lebih lanjut tentang libcap, lihat libcap - halaman manual Linux.

Paket diambil dan dikirim ke Chronicle, bukan entri log. Pengambilan paket hanya ditangani dari antarmuka lokal. Guna mengaktifkan pengambilan paket untuk sistem Anda, hubungi dukungan Chronicle.

Google Cloud mengonfigurasi Forwarder Chronicle dengan ekspresi Filter Paket Berkeley (BPF) yang digunakan saat mengambil paket (misalnya, port 53 dan bukan localhost). Untuk mengetahui informasi selengkapnya, lihat Filter paket Berkeley.

Mengumpulkan data dari topik Kafka

Anda dapat menyerap data dari topik Kafka seperti yang dapat Anda lakukan dari syslog. Grup konsumen dimanfaatkan untuk memungkinkan Anda men-deploy hingga 3 Forwarder dan menarik data dari topik Kafka yang sama. Untuk informasi selengkapnya, lihat Kafka.

Untuk informasi selengkapnya tentang grup konsumen Kafka, lihat artikel berikut: https://docs.confluent.io/platform/current/clients/consumer.html

Contoh konfigurasi: Input Kafka

Konfigurasi forwarder berikut menunjukkan cara menyiapkan forwarder untuk menyerap data dari topik Kafka.

File FORWARDER_NAME.conf

collectors:
- kafka:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      topic: example-topic
      group_id: chronicle-forwarder
      timeout: 60s
      brokers: ["broker-1:9092", "broker-2:9093"]
      tls:
        insecureSkipVerify: true
        certificate: "/path/to/cert.pem"
        certificate_key: "/path/to/cert.key"
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

File FORWARDER_NAME_auth.conf

collectors:
- kafka:
      username: user
      password: password
- syslog:

Mengumpulkan data WebProxy

Forwarder Chronicle dapat mengambil data WebProxy langsung dari antarmuka jaringan menggunakan libcap di Linux. Untuk informasi lebih lanjut tentang libcap, lihat libcap - halaman manual Linux. Untuk mengaktifkan pengambilan data WebProxy untuk sistem Anda, hubungi Chronicle Support.

Ubah konfigurasi penerusan Chronicle (file FORWARDER_NAME.conf) sebagai berikut:

- webproxy:
      common:
        enabled : true
        data_type: <Your LogType>
        batch_n_seconds: 10
        batch_n_bytes: 1048576
      interface: any
      bpf: tcp and dst port 80

Menyesuaikan konfigurasi

Tabel berikut mencantumkan parameter penting yang digunakan dalam file konfigurasi penerusan.

Parameter Deskripsi
data_type Jenis data log yang dapat dikumpulkan dan diproses oleh kolektor.
metadata Metadata, yang menggantikan metadata global.
max_file_buffer_bytes Jumlah maksimum byte yang dapat diakumulasi dalam buffer file atau disk. Nilai defaultnya adalah 1073741824, yaitu 1 GB.
max_memory_buffer_bytes Jumlah byte maksimum yang dapat diakumulasi dalam buffer memori. Nilai defaultnya adalah 1073741824, yaitu 1 GB.
write_to_disk_dir_path Jalur yang akan digunakan untuk buffer file atau disk.
write_to_disk_buffer_enabled Jika true, buffer disk akan digunakan, bukan buffer memori. Nilai defaultnya adalah false.
batch_n_bytes Jumlah maksimum byte yang dapat diakumulasikan oleh kolektor setelah data dikelompokkan dalam batch. Nilai defaultnya adalah 1048576, yaitu 1 MB.
batch_n_seconds Jumlah detik setelah data yang dikumpulkan oleh kolektor dikelompokkan. Nilai defaultnya adalah 11 detik.
data_hint Format data yang dapat diterima kolektor (biasanya header file log yang menjelaskan format).

Untuk mengetahui daftar lengkap parameter yang digunakan dalam file konfigurasi, lihat Kolom konfigurasi Forwarder dan Kolom konfigurasi kolektor.

Aktifkan/nonaktifkan kompresi data

Kompresi log mengurangi penggunaan bandwidth jaringan saat mentransfer log ke Chronicle. Namun, kompresi dapat menyebabkan peningkatan penggunaan CPU. Kompromi antara penggunaan CPU dan bandwidth bergantung pada banyak faktor, termasuk jenis data log, kompresi data, ketersediaan siklus CPU pada host yang menjalankan forwarder, dan kebutuhan untuk mengurangi konsumsi bandwidth jaringan.

Misalnya, log berbasis teks dikompresi dengan baik dan dapat menghemat bandwidth yang signifikan dengan penggunaan CPU yang rendah. Namun, payload paket mentah terenkripsi tidak dikompresi dengan baik dan menyebabkan penggunaan CPU yang lebih tinggi.

Secara default, kompresi log dinonaktifkan. Mengaktifkan kompresi log dapat mengurangi pemakaian bandwidth. Namun, mengaktifkan kompresi log juga dapat meningkatkan penggunaan CPU. Perhatikan konsekuensinya.

Untuk mengaktifkan kompresi log, tetapkan kolom compression ke true dalam file konfigurasi forwarder Chronicle seperti yang ditunjukkan dalam contoh berikut:

File FORWARDER_NAME.conf

output:
  compression: true
    url: malachiteingestion-pa.googleapis.com:443
    identity:
      identity:
      collector_id: 10479925-878c-11e7-9421-10604b7cb5c1
      customer_id: ebdc4bb9-878b-11e7-8455-10604b7cb5c1
...

File FORWARDER_NAME_auth.conf

output:
  identity:
    secret_key: |
    {
     "type": "service_account",
...
    }

Mengonfigurasi buffering disk

Dengan buffering disk, Anda dapat mem-buffer pesan yang di-backlog ke disk, bukan memori. Pesan yang di-backlog dapat disimpan jika forwarder mengalami error atau host yang mendasarinya mengalami error. Perlu diketahui bahwa mengaktifkan buffering disk dapat memengaruhi performa.

Jika buffering disk dinonaktifkan, forwarder akan menggunakan memori (RAM) sebesar 1 GB untuk setiap jenis log (misalnya, per konektor). Tentukan parameter konfigurasi max_memory_buffer_bytes. Memori maksimum yang diizinkan adalah 4 GB.

Anda dapat mengonfigurasi buffering memori otomatis untuk menggunakan buffer yang dibagikan secara dinamis dengan seluruh kolektor, yang menangani lonjakan traffic secara lebih baik. Untuk mengaktifkan buffer bersama secara dinamis, tambahkan baris berikut dalam konfigurasi penerusan Anda:

auto_buffer:
  enabled: true
  target_memory_utilization: 80

Jika buffering disk otomatis diaktifkan, tetapi target_memory_utilization tidak ditentukan, nilai default 70 akan digunakan.

Jika Anda menjalankan forwarder menggunakan Docker, Google merekomendasikan untuk memasang volume yang terpisah dari volume konfigurasi untuk tujuan isolasi. Selain itu, setiap input harus diisolasi dengan direktori atau volumenya sendiri untuk menghindari konflik.

Contoh konfigurasi: buffering disk

Konfigurasi berikut mencakup sintaksis untuk mengaktifkan buffering disk:

collectors:
- syslog:
    common:
      write_to_disk_buffer_enabled: true
      # /buffers/NIX_SYSTEM is part of the external mounted volume for the
forwarder
      write_to_disk_dir_path: /buffers/NIX_SYSTEM
      max_file_buffer_bytes: 1073741824
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Menyetel filter ekspresi reguler

Filter ekspresi reguler memungkinkan Anda memfilter log berdasarkan kecocokan ekspresi reguler dengan log mentah.

Filter menggunakan sintaksis RE2 yang dijelaskan di sini: https://github.com/google/re2/wiki/Syntax

Filter harus menyertakan ekspresi reguler dan, secara opsional, menentukan perilaku jika ada kecocokan. Perilaku default pada kecocokan adalah blok (Anda juga dapat mengonfigurasinya secara eksplisit sebagai blok).

Atau, Anda dapat menentukan filter dengan perilaku allow. Jika Anda menentukan filter allow, forwarder akan memblokir semua log yang tidak cocok dengan setidaknya satu filter allow.

Anda dapat menentukan jumlah filter yang arbitrer. Filter blok lebih diutamakan daripada filter allow.

Saat filter ditentukan, filter harus diberi nama. Nama filter aktif akan dilaporkan ke Chronicle melalui metrik kondisi Forwarder. Filter yang ditentukan pada root konfigurasi digabungkan dengan filter yang ditentukan pada tingkat kolektor. Filter tingkat kolektor akan diprioritaskan jika ada nama yang bertentangan. Jika tidak ada filter yang ditentukan di tingkat root atau kolektor, perilakunya adalah mengizinkan semua.

Contoh konfigurasi: filter ekspresi reguler

Pada konfigurasi Forwarder berikut, log WINEVTLOG yang tidak cocok dengan filter root (allow_filter) akan diblokir. Dengan mempertimbangkan ekspresi reguler, filter hanya mengizinkan log dengan prioritas antara 0 dan 99. Namun, log NIX_SYSTEM yang berisi 'foo' atau 'bar' akan diblokir, meskipun allow_filter. Hal ini karena filter menggunakan OR yang logis. Semua log diproses hingga filter dipicu.

regex_filters:
  allow_filter:
    regexp: ^<[1-9][0-9]?$>.*$
    behavior_on_match: allow
collectors:
- syslog:
    common:
      regex_filters:
        block_filter_1:
          regexp: ^.*foo.*$
          behavior_on_match: block
        block_filter_2:
          regexp: ^.*bar.*$
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Mengonfigurasi label arbitrer

Label digunakan untuk melampirkan metadata arbitrer ke log menggunakan pasangan kunci dan nilai. Label dapat dikonfigurasi untuk seluruh forwarder atau dalam kolektor spesifik dari suatu penerusan. Jika keduanya disediakan, label akan digabungkan dengan kunci kolektor yang lebih diutamakan daripada kunci penerusan jika kunci tersebut tumpang-tindih.

Contoh konfigurasi: label arbitrer

Dalam konfigurasi forwarder berikut, pasangan kunci dan nilai 'foo=bar' dan 'meow=mix' dilampirkan ke log WINEVTLOG, dan pasangan kunci dan nilai 'foo=baz' dan 'meow=mix' dilampirkan ke log NIX_SYSTEM.

metadata:
  labels:
    foo: bar
    meow: mix
collectors:
syslog:
    common:
      metadata:
        labels:
          foo: baz
          meow: mix
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60

Mengonfigurasi namespace

Gunakan label namespace untuk mengidentifikasi log dari segmen jaringan yang berbeda dan mencabut konflik alamat IP yang tumpang-tindih. Anda dapat mengonfigurasi label namespace untuk seluruh forwarder atau dalam kolektor penerusan tertentu. Jika keduanya disertakan, namespace kolektor tertentu akan lebih diprioritaskan.

Setiap namespace yang dikonfigurasi untuk penerus akan muncul dengan aset terkait di antarmuka pengguna Chronicle. Anda juga dapat menelusuri namespace menggunakan fitur Chronicle Search.

Untuk mengetahui informasi tentang cara melihat namespace di antarmuka pengguna Chronicle, lihat di sini.

Contoh konfigurasi: namespace

Dalam konfigurasi penerusan berikut, log WINEVTLOG dilampirkan ke namespace FORWARDER dan log NIX_SYSTEM dilampirkan ke namespace CORPORATE.

metadata:
  namespace: FORWARDER
collectors:
- syslog:
      common:
        metadata:
          namespace: CORPORATE
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: NIX_SYSTEM
        enabled: true
      tcp_address: 0.0.0.0:30000
      connection_timeout_sec: 60
- syslog:
      common:
        batch_n_bytes: 1048576
        batch_n_seconds: 10
        data_hint: null
        data_type: WINEVTLOG
        enabled: true
      tcp_address: 0.0.0.0:30001
      connection_timeout_sec: 60

Mengonfigurasi opsi load balancing dan ketersediaan tinggi

Forwarder Chronicle untuk Linux dapat di-deploy di lingkungan tempat load balancer Lapisan 4 diinstal antara sumber data dan instance penerus. Dengan begitu, pelanggan dapat mendistribusikan kumpulan log ke beberapa penerus atau mengirim log ke penerusan yang berbeda jika ada yang gagal. Fitur ini hanya didukung dengan jenis koleksi syslog.

Forwarder Linux menyertakan server HTTP bawaan yang merespons health check HTTP dari load balancer. Server HTTP juga membantu memastikan bahwa log tidak hilang selama startup atau penghentian forwarder.

Konfigurasikan opsi server HTTP, load balancing, dan ketersediaan tinggi di bagian server pada file konfigurasi forwarder. Opsi ini mendukung penyetelan durasi waktu tunggu dan kode status yang ditampilkan sebagai respons terhadap health check yang diterima di deployment berbasis orkestrasi dan penjadwal container, serta dari load balancer tradisional.

Gunakan jalur URL berikut untuk pemeriksaan respons, kesiapan, dan keaktifan. Nilai <host:port> ditentukan dalam konfigurasi penerusan.

  • http://<host:port>/meta/available: pemeriksaan keaktifan untuk penjadwal atau orkestrasi container.
  • http://<host:port>/meta/siap: pemeriksaan kesiapan dan health check load balancer tradisional.

Konfigurasi forwarder berikut adalah contoh untuk load balancing dan ketersediaan tinggi:

collectors:
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: NIX_SYSTEM
      enabled: true
    tcp_address: 0.0.0.0:30000
    connection_timeout_sec: 60
- syslog:
    common:
      batch_n_bytes: 1048576
      batch_n_seconds: 10
      data_hint: null
      data_type: WINEVTLOG
      enabled: true
    tcp_address: 0.0.0.0:30001
    connection_timeout_sec: 60
server:
  graceful_timeout: 15s
  drain_timeout: 10s
  http:
    port: 8080
    host: 0.0.0.0
    read_timeout: 3s
    read_header_timeout: 3s
    write_timeout: 3s
    idle_timeout: 3s
    routes:
    - meta:
        available_status: 204
        ready_status: 204
        unready_status: 503
Jalur konfigurasi Deskripsi
server: {i>graceful_timeout<i} Lamanya waktu penerusan menampilkan kesiapan/health check yang buruk dan masih menerima koneksi baru. Ini juga saatnya menunggu antara menerima sinyal untuk berhenti dan benar-benar memulai penonaktifan server itu sendiri. Hal ini memberi waktu pada load balancer untuk menghapus forwarder dari kumpulan.
server : drain_timeout Lamanya waktu saat penerusan ini menunggu koneksi aktif berhasil ditutup sendiri sebelum ditutup oleh server.
server : http : port Nomor port yang diproses oleh server HTTP untuk health check dari load balancer. Harus antara 1024-65535.
server : http : host Alamat IP, atau nama host yang dapat di-resolve menjadi alamat IP, yang harus dideteksi server. Jika kosong, nilai defaultnya adalah sistem lokal (0.0.0.0).
server : http : read_timeout Digunakan untuk menyesuaikan server HTTP. Biasanya, tidak perlu diubah dari setelan default. Jumlah waktu maksimum yang diizinkan untuk membaca seluruh permintaan, baik header maupun isi. Anda dapat mengatur read_timeout dan read_header_timeout.
server : http : read_header_timeout Digunakan untuk menyesuaikan server HTTP. Biasanya, tidak perlu diubah dari setelan default. Jumlah waktu maksimum yang diizinkan untuk membaca header permintaan. Batas waktu pembacaan koneksi direset setelah membaca header.
server : http : write_timeout Digunakan untuk menyesuaikan server HTTP. Biasanya, tidak perlu diubah dari setelan default. Durasi maksimum yang diizinkan untuk mengirim respons. Fungsi ini direset saat header permintaan baru dibaca.
server : http : idle_timeout Digunakan untuk menyesuaikan server HTTP. Biasanya, tidak perlu diubah dari setelan default. Jumlah waktu maksimum untuk menunggu permintaan berikutnya saat koneksi tidak ada aktivitas diaktifkan. Jika idle_timeout adalah nol, nilai read_timeout akan digunakan. Jika keduanya nol, read_header_timeout akan digunakan.
rute : meta : ready_status Kode status yang ditampilkan oleh forwarder jika sudah siap menerima traffic dalam salah satu situasi berikut:
  • Pemeriksaan kesiapan diterima dari penjadwal atau orkestrasi container.
  • Health check diterima dari load balancer tradisional.
rute : meta : unready_status Kode status yang ditampilkan oleh forwarder jika belum siap menerima traffic.
rute : meta : available_status Kode status yang ditampilkan oleh penerusan saat pemeriksaan keaktifan diterima dan penerusan tersedia. Penjadwal atau orkestrasi container sering mengirim pemeriksaan keaktifan.

Pertanyaan umum (FAQ)

Bagaimana cara memperbarui alat penerusan saya?

Forwarder Linux terus diupdate melalui skrip shell di image Docker. Untuk mengupdate image Docker, jalankan forwarder.

Apa itu container Docker?

  • Container Docker mirip seperti virtual machine yang memberikan keamanan, isolasi, dan pengelolaan resource tambahan.

  • Mesin Virtual—memiliki ruang istimewa (kernel linux) dan ruang pengguna (semua hal yang Anda gunakan untuk berinteraksi: libc, python, ls, tcpdump, dan sebagainya).

  • Container—hanya memiliki ruang pengguna (semua yang Anda gunakan untuk berinteraksi: libc, python, ls, tcpdump, dan sebagainya) dan mengandalkan ruang hak istimewa host.

Mengapa mendistribusikan penerusan Chronicle menggunakan penampung?

  • Keamanan yang lebih baik melalui isolasi:
    • Lingkungan dan persyaratan pelanggan tidak memengaruhi Chronicle forwarder.
    • Lingkungan dan persyaratan penerus Chronicle tidak memengaruhi pelanggan.
    • Mekanisme distribusi container sudah ada serta dapat bersifat pribadi dan terpisah untuk Google Cloud dan pelanggan. https://cloud.google.com/container-registry/

Mengapa hanya Linux untuk container? Bagaimana dengan Windows?

  • Container dikembangkan untuk Linux terlebih dahulu dan siap digunakan untuk produksi.

  • Dukungan Windows untuk Container sedang berlangsung. Container tersedia untuk Windows Server 2016 dan Windows 10.

Apakah Anda perlu mempelajari perintah Docker lanjutan?

  • Forwarder Chronicle menggunakan satu container, sehingga Anda tidak perlu mempelajari Swarm, orkestrasi, atau konsep atau perintah Docker tingkat lanjut lainnya.