Mengumpulkan log Elastic Auditbeat

Didukung di:

Dokumen ini menjelaskan cara menyerap log Elastic Auditbeat ke Google Security Operations menggunakan Amazon S3. Parser mengekstrak kolom dari log JSON, menormalisasinya ke dalam Model Data Terpadu (UDM), dan memperkaya data dengan konteks tambahan seperti informasi host, detail jaringan, dan klasifikasi hasil keamanan. Hal ini menangani berbagai jenis peristiwa dengan memetakan event1.action dan kolom lainnya ke jenis peristiwa metadata UDM tertentu, yang secara default adalah GENERIC_EVENT atau kategori yang lebih spesifik jika memungkinkan.

Sebelum memulai

Pastikan Anda memenuhi prasyarat berikut:

  • Instance Google SecOps.
  • Akses istimewa ke server Elastic Auditbeat.
  • Akses istimewa ke server Logstash.
  • Akses istimewa ke AWS (S3, Identity and Access Management (IAM)).

Mendapatkan prasyarat Elastic Auditbeat

  1. Pastikan Elastic Auditbeat diinstal dan dikonfigurasi di server Anda.
  2. Instal Logstash di server khusus atau bersama Auditbeat.
  3. Catat lokasi file konfigurasi Auditbeat (biasanya /etc/auditbeat/auditbeat.yml).

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, elastic-auditbeat-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 file .CSV untuk menyimpan Kunci Akses dan Kunci Akses Rahasia untuk referensi di masa mendatang.
  12. Klik Selesai.
  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.

Mengonfigurasi Auditbeat untuk mengirim ke Logstash

  1. Edit file konfigurasi Auditbeat /etc/auditbeat/auditbeat.yml.
  2. Beri komentar pada konfigurasi output yang ada (Elasticsearch, dll.).
  3. Tambahkan konfigurasi output Logstash:

    # ==================== Outputs ====================
    output.logstash:
      hosts: ["localhost:5044"]
      # If Logstash is on a different server, use its IP/hostname
      # hosts: ["logstash-server:5044"]
    
      # Optional: Enable load balancing if using multiple Logstash instances
      loadbalance: true
    
      # Optional: Configure bulk settings (default is 2048)
      bulk_max_size: 2048
    
      # Optional: Configure SSL if needed
      # ssl.enabled: true
      # ssl.certificate_authorities: ["/path/to/ca.crt"]
    
  4. Mulai ulang Auditbeat untuk menerapkan perubahan:

    sudo systemctl restart auditbeat
    

Mengonfigurasi pipeline Logstash

  1. Buat file konfigurasi pipeline Logstash baru /etc/logstash/conf.d/auditbeat-to-s3.conf:

    input {
      beats {
        port => 5044
        # Optional: Configure SSL
        # ssl => true
        # ssl_certificate => "/path/to/server.crt"
        # ssl_key => "/path/to/server.key"
      }
    }
    
    filter {
      # Add any necessary transformations here
      # The data should remain in raw JSON format for Chronicle parsing
    
      # Optional: Add metadata for debugging
      mutate {
        add_field => { "[@metadata][pipeline]" => "auditbeat-to-s3" }
      }
    }
    
    output {
      s3 {
        # AWS credentials
        access_key_id => "YOUR_AWS_ACCESS_KEY_ID"
        secret_access_key => "YOUR_AWS_SECRET_ACCESS_KEY"
    
        # S3 bucket configuration
        region => "us-east-1"  # Replace with your bucket region
        bucket => "elastic-auditbeat-logs"  # Replace with your bucket name
    
        # Organize logs by date using Logstash timestamp interpolation
        prefix => "auditbeat/%{+YYYY}/%{+MM}/%{+dd}/"
    
        # File rotation settings
        size_file => 10485760  # 10MB files
        time_file => 5  # Rotate every 5 minutes
    
        # Compression for cost optimization
        encoding => "gzip"
    
        # Output format - keep as JSON for Chronicle
        codec => "json_lines"
    
        # Optional: Server-side encryption
        # server_side_encryption => true
        # server_side_encryption_algorithm => "AES256"
      }
    
      # Optional: Keep a local copy for debugging
      # stdout { 
      #   codec => rubydebug 
      # }
    }
    
    • Ganti YOUR_AWS_ACCESS_KEY_ID dan YOUR_AWS_SECRET_ACCESS_KEY dengan kredensial AWS Anda yang sebenarnya.
    • Perbarui nilai region dan bucket agar sesuai dengan konfigurasi S3 Anda.
    • Mulai atau mulai ulang Logstash:
    sudo systemctl restart logstash
    

(Opsional) Buat pengguna & kunci IAM hanya baca untuk Google SecOps

  1. Buka Konsol AWS > IAM > Pengguna.
  2. Klik Add users.
  3. Berikan detail konfigurasi berikut:
    • Pengguna: Masukkan secops-reader.
    • Jenis akses: Pilih Kunci akses – Akses terprogram.
  4. Klik Buat pengguna.
  5. Lampirkan kebijakan baca minimal (kustom): Pengguna > secops-reader > Izin > Tambahkan izin > Lampirkan kebijakan secara langsung > Buat kebijakan.
  6. JSON:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::elastic-auditbeat-logs/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::elastic-auditbeat-logs"
        }
      ]
    }
    
  7. Nama = secops-reader-policy.

  8. Klik Buat kebijakan > cari/pilih > Berikutnya > Tambahkan izin.

  9. Buat kunci akses untuk secops-reader: Kredensial keamanan > Kunci akses.

  10. Klik Create access key.

  11. Download .CSV. (Anda akan menempelkan nilai ini ke feed).

Mengonfigurasi feed di Google SecOps untuk memproses log Elastic Auditbeat

  1. Buka Setelan SIEM > Feed.
  2. Klik + Tambahkan Feed Baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Elastic Auditbeat Logs).
  4. Pilih Amazon S3 V2 sebagai Jenis sumber.
  5. Pilih Elastic Audit Beats sebagai Jenis log.
  6. Klik Berikutnya.
  7. Tentukan nilai untuk parameter input berikut:
    • URI S3: s3://elastic-auditbeat-logs/auditbeat/
    • Opsi penghapusan sumber: Pilih 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
@timestamp metadata.event_timestamp Stempel waktu peristiwa diuraikan dari kolom @timestamp.
agent.id observer.asset_id Diawali dengan "agent_id: ".
agent.type observer.application Aplikasi pengamat ditetapkan ke jenis agen.
agent.version observer.platform_version Versi platform pengamat ditetapkan ke versi agen.
client.bytes principal.labels Ditambahkan sebagai label dengan kunci "Bytes". Dikonversi ke string.
client.ip principal.ip IP utama ditetapkan ke IP klien.
client.packets principal.labels Ditambahkan sebagai label dengan kunci "Packets". Dikonversi ke string.
client.port principal.port Port utama disetel ke port klien. Dikonversi ke bilangan bulat.
cloud.availability_zone principal.cloud.availability_zone Zona ketersediaan cloud utama ditetapkan ke zona ketersediaan cloud.
cloud.instance.id principal.resource.id ID resource utama ditetapkan ke ID instance cloud.
cloud.machine.type principal.resource.resource_subtype Subjenis resource utama ditetapkan ke jenis mesin cloud.
cloud.region principal.cloud.availability_zone Jika region cloud ada, region tersebut akan menggantikan zona ketersediaan.
destination.bytes target.labels Ditambahkan sebagai label dengan kunci "Bytes". Dikonversi ke string.
destination.ip target.ip IP target ditetapkan ke IP tujuan.
destination.packets target.labels Ditambahkan sebagai label dengan kunci "Packets". Dikonversi ke string.
destination.port target.port Port target ditetapkan ke port tujuan. Dikonversi ke bilangan bulat.
ecs.version metadata.product_version Jika ada, mengganti nilai dari jsonPayload.@metadata.version.
event1.category security_result.category_details Semua nilai ditambahkan ke category_details.
event1.duration network.session_duration.seconds Dikonversi ke bilangan bulat.
event1.id metadata.product_log_id ID log produk metadata ditetapkan ke ID peristiwa.
event1.outcome extensions.auth.auth_details Detail autentikasi ditetapkan ke hasil acara.
file.extension target.file.mime_type Jenis MIME file target ditetapkan ke ekstensi file.
file.hash.sha1 target.file.sha1 SHA-1 file target ditetapkan ke hash SHA-1 file.
file.path target.file.full_path Jalur lengkap file target ditetapkan ke jalur.
file.size target.file.size Dikonversi ke uinteger.
group.id principal.group.product_object_id ID objek produk grup utama ditetapkan ke ID grup.
group.name principal.group.group_display_name Nama tampilan grup utama ditetapkan ke nama grup.
host.architecture principal.asset.hardware.cpu_platform Disimpan dalam variabel sementara hardware.cpu_platform, lalu digabungkan ke dalam principal.asset.hardware.
host.hostname principal.hostname Nama host utama ditetapkan ke nama host host.
host.id principal.asset.asset_id Diawali dengan "Host Id: ".
host.ip principal.asset.ip Semua nilai ditambahkan ke IP aset utama.
host.mac principal.mac Tanda hubung diganti dengan titik dua.
host.name principal.hostname, observer.hostname Jika ada, mengganti nilai dari host.hostname.
host.os.kernel principal.platform_patch_level Tingkat patch platform utama ditetapkan ke kernel OS host.
host.os.version principal.platform_version Versi platform utama ditetapkan ke versi OS host. Disimpan dalam variabel sementara host_os_version.
httpRequest.remoteIp target.ip Jika ada, dan tidak ada IP target lain yang ditetapkan, nilai ini akan digunakan.
httpRequest.requestMethod network.http.method Metode HTTP jaringan ditetapkan ke metode permintaan HTTP.
httpRequest.requestSize network.sent_bytes Dikonversi ke uinteger.
httpRequest.requestUrl network.http.referral_url URL rujukan HTTP jaringan ditetapkan ke URL permintaan HTTP.
httpRequest.responseSize network.received_bytes Dikonversi ke uinteger.
httpRequest.serverIp principal.ip Jika ada, dan tidak ada IP utama lain yang ditetapkan, nilai ini akan digunakan.
httpRequest.status network.http.response_code Dikonversi ke bilangan bulat.
httpRequest.userAgent network.http.user_agent Agen pengguna HTTP jaringan ditetapkan ke agen pengguna permintaan HTTP.
insertId network.session_id ID sesi jaringan ditetapkan ke ID penyisipan.
jsonPayload.@metadata.beat metadata.product_event_type Jenis peristiwa produk metadata ditetapkan ke beat metadata.
jsonPayload.@metadata.version metadata.product_version Versi produk metadata ditetapkan ke versi metadata.
jsonPayload.destination.ip target.ip Jika ada, dan tidak ada IP target lain yang ditetapkan, nilai ini akan digunakan.
jsonPayload.destination.port target.port Jika ada, dan tidak ada port target lain yang ditetapkan, nilai ini akan digunakan. Dikonversi ke bilangan bulat.
jsonPayload.event1.category security_result.category_details Semua nilai ditambahkan ke category_details.
jsonPayload.file.path target.file.full_path Jika ada, dan tidak ada jalur target lain yang ditetapkan, nilai ini akan digunakan.
jsonPayload.process.executable principal.process.file.full_path, target.process.file.full_path Digunakan untuk menyetel jalur lengkap proses target dan utama jika tidak ada nilai lain.
jsonPayload.process.name principal.application Jika ada, dan tidak ada aplikasi utama lain yang ditetapkan, nilai ini akan digunakan.
jsonPayload.process.parent.pid principal.process.pid Jika ada, dan tidak ada PID proses utama lain yang ditetapkan, nilai ini akan digunakan. Dikonversi ke string.
jsonPayload.process.parent.ppid principal.process.parent_process.pid Jika ada, dan tidak ada PID proses induk utama lain yang ditetapkan, nilai ini akan digunakan. Dikonversi ke string.
jsonPayload.process.parent.process.executable principal.process.file.full_path Jika ada, dan tidak ada jalur lengkap proses utama lainnya yang ditetapkan, nilai ini akan digunakan.
jsonPayload.process.parent.process.exe principal.process.file.full_path Jika ada, dan tidak ada jalur lengkap proses utama lainnya yang ditetapkan, nilai ini akan digunakan.
jsonPayload.process.parent.process.title principal.process.command_line Jika ada, dan tidak ada baris perintah proses utama lain yang ditetapkan, nilai ini akan digunakan.
jsonPayload.process.pid target.process.pid PID proses target ditetapkan ke PID proses payload JSON.
jsonPayload.process.title target.process.command_line Command line proses target ditetapkan ke judul proses payload JSON.
jsonPayload.user.id target.user.userid Jika ada, dan tidak ada ID pengguna target lain yang ditetapkan, nilai ini akan digunakan. Dikonversi ke string.
jsonPayload.user.name target.user.user_display_name Jika ada, dan tidak ada nama tampilan pengguna target lain yang ditetapkan, nilai ini akan digunakan.
msg metadata.description Deskripsi metadata ditetapkan ke pesan.
network.bytes network.sent_bytes Dikonversi ke uinteger.
network.community_id network.community_id ID komunitas jaringan ditetapkan ke ID komunitas jaringan.
network.transport network.ip_protocol Dikonversi menjadi huruf besar.
package.description security_result.description Deskripsi hasil keamanan disetel ke deskripsi paket.
package.name security_result.rule_name Nama aturan hasil keamanan ditetapkan ke nama paket.
package.reference security_result.about.url URL hasil keamanan disetel ke referensi paket.
package.size security_result.about.file.size Dikonversi ke uinteger.
package.type security_result.about.file.mime_type, security_result.rule_type Jenis MIME hasil keamanan dan jenis aturan ditetapkan ke jenis paket.
process.created principal.asset.creation_time Jika ada, nilai ini akan digunakan. Diuraikan sebagai ISO8601.
process.entity_id principal.process.product_specific_process_id Diawali dengan "Proses:".
process.executable principal.process.file.full_path, target.process.file.full_path Digunakan untuk menyetel jalur lengkap proses target dan utama jika tidak ada nilai lain.
process.hash.sha1 principal.process.file.sha1 SHA-1 utama disetel ke hash SHA-1 proses.
process.name principal.application Jika ada, dan tidak ada aplikasi utama lain yang ditetapkan, nilai ini akan digunakan.
process.pid principal.process.pid Jika ada, dan tidak ada PID proses utama lain yang ditetapkan, nilai ini akan digunakan. Dikonversi ke string.
process.ppid principal.process.parent_process.pid Jika ada, dan tidak ada PID proses induk utama lain yang ditetapkan, nilai ini akan digunakan. Dikonversi ke string.
process.start principal.asset.creation_time Jika process.created tidak ada, dan kolom ini ada, nilai ini akan digunakan. Diuraikan sebagai ISO8601.
resource.labels.backend_service_name target.resource.name Nama resource target ditetapkan ke nama layanan backend resource.
resource.labels.forwarding_rule_name target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "Nama aturan penerusan".
resource.labels.project_id target.resource.product_object_id ID objek produk resource target ditetapkan ke ID project resource.
resource.labels.target_proxy_name target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "Target proxy name".
resource.labels.url_map_name target.resource.attribute.labels Ditambahkan sebagai label dengan kunci "Nama peta URL".
server.bytes intermediary.labels Ditambahkan sebagai label dengan kunci "Bytes". Dikonversi ke string.
server.ip intermediary.ip IP perantara ditetapkan ke IP server.
server.packets intermediary.labels Ditambahkan sebagai label dengan kunci "Packets". Dikonversi ke string.
server.port intermediary.port Port perantara ditetapkan ke port server. Dikonversi ke bilangan bulat.
service.type target.application Aplikasi target ditetapkan ke jenis layanan.
source.bytes src.labels Ditambahkan sebagai label dengan kunci "Bytes". Dikonversi ke string.
source.ip src.ip IP sumber ditetapkan ke IP sumber.
source.packets src.labels Ditambahkan sebagai label dengan kunci "Packets". Dikonversi ke string.
source.port src.port Port sumber ditetapkan ke port sumber. Dikonversi ke bilangan bulat.
system.audit.host.boottime about.asset.last_boot_time Diuraikan sebagai ISO8601.
system.audit.host.hostname about.hostname Nama host tentang disetel ke nama host audit sistem.
system.audit.host.id principal.user.userid ID pengguna utama ditetapkan ke ID host audit sistem.
system.audit.host.mac.0 about.mac Alamat MAC tentang ditetapkan ke alamat MAC host audit sistem pertama.
trace target.process.file.full_path Jika ada, dan tidak ada jalur lengkap proses target lain yang ditetapkan, nilai ini akan digunakan.
user.effective.id target.user.userid Jika ada, dan tidak ada ID pengguna target lain yang ditetapkan, nilai ini akan digunakan.
user.effective.name target.user.user_display_name Jika ada, dan tidak ada nama tampilan pengguna target lain yang ditetapkan, nilai ini akan digunakan.
user.id target.user.userid Jika ada, dan tidak ada ID pengguna target lain yang ditetapkan, nilai ini akan digunakan. Dikonversi ke string.
user.name target.user.user_display_name Jika ada, dan tidak ada nama tampilan pengguna target lain yang ditetapkan, nilai ini akan digunakan.
T/A metadata.event_type Awalnya ditetapkan ke "GENERIC_EVENT". Diubah berdasarkan logika yang dijelaskan dalam komentar kode parser.
T/A metadata.log_type Tetapkan ke "ELASTIC_AUDITBEAT".
T/A metadata.product_name Tetapkan ke "Auditbeat".
T/A metadata.vendor_name Tetapkan ke "Elastis".
T/A extensions.auth.type Disetel ke "AUTHTYPE_UNSPECIFIED" untuk peristiwa USER_LOGIN dan USER_LOGOUT.
auditd.data.syscall metadata.product_event_type Jenis peristiwa produk metadata ditetapkan ke syscall auditd.

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.