AizuDemy

Tutorial Deteksi Intrusi Runtime & Rootkit Linux Pakai Falco eBPF di VPS

Tutorial Deteksi Intrusi Runtime & Rootkit Linux Pakai Falco eBPF di VPS
๐ŸŽง
Dengarkan Artikel Ini
Suara AI Otomatis โ€ข 8 mnt baca baca
โšก TL;DR

Poin Kunci Artikel Ini:

  • Ancaman Rootkit Kernel dan Keterbatasan Auditd TradisionalPengamanan server VPS Linux tingkat produksi sering berhenti pada layer aplikasi dan pembaruan paket.
  • Ketika penyerang mengeksploitasi celah Remote Code Execution (RCE), sasaran berikutnya eskalasi hak akses dan persistensi sistem via rootkit kernel.
  • Rootkit memodifikasi tabel panggilan sistem () atau merusak struktur data internal kernel lewat Direct Kernel Object Manipulation (DKOM).
๐Ÿ“‹ Daftar Isi Materi Tutup โ–ด

Ancaman Rootkit Kernel dan Keterbatasan Auditd Tradisional

Pengamanan server VPS Linux tingkat produksi sering berhenti pada layer aplikasi dan pembaruan paket. Ketika penyerang mengeksploitasi celah Remote Code Execution (RCE), sasaran berikutnya eskalasi hak akses dan persistensi sistem via rootkit kernel. Rootkit mengintersepsi sistem operasi pada abstraksi paling rendah.

Cara Kerja Rootkit Kernel (LKM)

Rootkit berbasis Loadable Kernel Module (LKM) beroperasi dalam kernel space. Rootkit memodifikasi tabel panggilan sistem (sys_call_table) atau merusak struktur data internal kernel lewat Direct Kernel Object Manipulation (DKOM). Dampak eksploitasi LKM:

  • Proses Tersembunyi: Mengintersepsi syscall getdents/getdents64 untuk menyembunyikan PID dari perkakas analisis ps, top, dan htop.
  • Koneksi Jaringan Tersembunyi: Mengubah pembacaan /proc/net/tcp untuk menyembunyikan port listening dan socket reverse shell dari netstat dan ss.
  • Manipulasi Sistem Berkas: Mengintersepsi fungsi VFS (Virtual File System) untuk menyembunyikan file biner dan script eksploit.
  • Bypass Pengawasan Log: Menyuntikkan akses root tanpa mencatat aktivitas pada /var/log/auth.log atau journalctl.

Keterbatasan Subsistem Auditd

Perkakas auditing tradisional auditd menggunakan Linux Audit Framework. auditd memiliki kelemahan arsitektur pada server produksi berbeban tinggi:

  • Bottleneck Overhead Kinerja: auditd mengumpulkan event melalui socket Netlink ke user space. Volume syscall tinggi memicu context switching masif, lonjakan pemakaian CPU, dan penggelembung I/O disk.
  • Kerentanan Tampering: Penyerang dengan akses root dapat mematikan daemon auditd atau menghapus aturan audit (auditctl -D) sebelum deteksi terkirim ke penyimpanan eksternal.
  • Kontekstualisasi Terbatas: auditd tidak dirancang untuk mengaitkan event secara dinamis dengan abstraksi kontainer, namespace, dan metadata jaringan tanpa parser eksternal yang lambat.

Arsitektur eBPF untuk Monitoring Runtime

Extended Berkeley Packet Filter (eBPF) mengubah metode pengawasan kernel Linux. eBPF mengizinkan program sandbox berjalan di dalam kernel tanpa memodifikasi kode sumber kernel atau memuat modul LKM eksternal.

Perbandingan eBPF dengan pendekatan pemantauan tradisional:

  • Eksekusi Terisolasi: Program eBPF dikompilasi via JIT (Just-In-Time) compiler dan diverifikasi oleh kernel verifier. Verifier menjamin kode eBPF tidak memicu infinite loop, akses memori illegal, atau kernel panic.
  • Transport Event Efisien: eBPF menggunakan BPF ring buffer (BPF_MAP_TYPE_RINGBUF) untuk mengirim event dari kernel space ke user space dengan mekanisme zero-copy. Overhead performa minimal.
  • Resistensi Terhadap Manipulasi: eBPF menempel pada titik instrumentasi kernel (tracepoints, kprobes, raw tracepoints) secara read-only tanpa mengubah tabel syscall. Penyerang tidak dapat menyembunyikan proses tanpa merusak instrumen kernel.

Instalasi Falco dan Setup eBPF Probe Driver

Falco adalah instrumen keamanan runtime open-source (CNCF Graduated) buatan Sysdig. Falco menyerap stream event kernel via eBPF probe, lalu menguji event tersebut terhadap ruleset deteksi anomali secara konsisten.

Prasyarat Server dan Kernel

Pastikan VPS memenuhi spesifikasi minimum sebelum instalasi:

  • Sistem Operasi: Ubuntu 22.04 LTS, Debian 11/12, atau Rocky Linux 9.
  • Versi Kernel: Minimal versi 5.4. Versi 5.8+ direkomendasikan untuk mendukung fitur BPF CO-RE (Compile Once - Run Everywhere).
  • Akses Privilese: Hak akses root atau sudo.
  • Perkakas Build: Header kernel yang sesuai (linux-headers-$(uname -r)).

Langkah Instalasi Falco di VPS Ubuntu/Debian

Jalankan perintah berikut untuk mengunduh kunci repository GPG resmi dan menginstal Falco:

sudo apt-get update
sudo apt-get install -y curl gnupg lsb-release build-essential linux-headers-$(uname -r)

# Import GPG key resmi Falco
curl -fsSL https://falco.org/repo/falcoseclabs-2026.asc | sudo gpg --dearmor -o /etc/apt/keyrings/falco.gpg

# Tambahkan repositori APT Falco
echo "deb [signed-by=/etc/apt/keyrings/falco.gpg] https://download.falco.org/packages/deb stable main" | sudo tee /etc/apt/sources.list.d/falcoseclabs.list

sudo apt-get update
sudo apt-get install -y falco

Konfigurasi eBPF Probe Driver

Ubah konfigurasi driver default Falco dari kernel module legacy ke eBPF probe modern.

Buka berkas konfigurasi /etc/falco/falco.yaml:

sudo nano /etc/falco/falco.yaml

Sesuaikan opsi driver dan output data:

driver:
  kind: ebpf
  ebpf:
    probe: /root/.falco/falco_ubuntu-generic_$(uname -r).o
json_output: true
json_include_output_property: true
log_stderr: true
log_syslog: true
priority: notice

Muat driver eBPF menggunakan skrip pembawa bawaan Falco:

sudo falco-driver-loader ebpf

Aktifkan dan jalankan layanan systemd Falco:

sudo systemctl enable --now falco
sudo systemctl status falco

Verifikasi bahwa driver eBPF beroperasi tanpa error:

sudo journalctl -u falco -n 50 | grep -i ebpf

Penyusunan Custom Rules: Reverse Shell & Rootkit Kernel

Jangan mengedit berkas /etc/falco/falco_rules.yaml langsung karena berkas tersebut tertimpa saat pembaruan paket. Tulis aturan kustom pada berkas /etc/falco/falco_rules.local.yaml.

1. Deteksi Eksekusi Reverse Shell

Aturan ini mendeteksi interpreter (bash, sh, python, perl, php) yang membuat koneksi socket jaringan dan menduplikasi file descriptor standar I/O (syscall dup / dup2).

sudo nano /etc/falco/falco_rules.local.yaml

Masukkan sintaks aturan berikut:

- rule: Deteksi Reverse Shell Interactive
  desc: Mendeteksi indikasi reverse shell dari proses interpreter yang terhubung ke jaringan
  condition: >
    spawned_process and
    container.id = host and
    proc.name in (bash, sh, zsh, python, python3, perl, php, ruby, nc, ncat, socat) and
    inbound_outbound_net_connection and
    proc.tty != 0
  output: >
    ALERT - Reverse Shell Terdeteksi! (user=%user.name command=%proc.cmdline 
    process=%proc.name parent=%proc.pname connection=%fd.name ip=%fd.rip port=%fd.rport)
  priority: CRITICAL
  tags: [attack, network, reverse_shell, custom]

- rule: Modifikasi Kernel Module Terlarang
  desc: Mendeteksi upaya pemuatan atau penghentian kernel module LKM
  condition: >
    evt.type in (init_module, finit_module, delete_module) and
    not user.name = "root"
  output: >
    CRITICAL - Modifikasi Modul Kernel oleh Non-Root! (user=%user.name command=%proc.cmdline 
    syscall=%evt.type process=%proc.name path=%evt.arg.id)
  priority: EMERGENCY
  tags: [kernel, rootkit, persistence, custom]

- rule: Pembacaan Berkas Kredensial Shadow
  desc: Mendeteksi akses file /etc/shadow oleh proses yang tidak diizinkan
  condition: >
    open_read and
    fd.name = "/etc/shadow" and
    not proc.name in (passwd, shadowconfig, useradd, usermod, su, sudo, sshd)
  output: >
    WARNING - Akses Berkas Shadow Dideteksi (user=%user.name command=%proc.cmdline process=%proc.name)
  priority: WARNING
  tags: [credential_access, custom]

Uji validitas sintaks berkas konfigurasi baru:

sudo falco -D /etc/falco/falco_rules.local.yaml -t

Bila output mengembalikan status Ok, re-load service Falco:

sudo systemctl reload falco

Integrasi Alerting, Tuning False Positive, dan Optimasi Resource

Integrasi Falcosidekick ke Slack dan Discord

Falco mengirimkan log default ke stdout atau syslog. Untuk penanganan insiden real-time, gunakan Falcosidekick sebagai perantara pengirim alert ke Slack, Discord, Telegram, atau Webhook endpoint.

Instalasi Falcosidekick Service

Unduh biner rilis terbaru Falcosidekick:

curl -L -o falcosidekick https://github.com/falcoseclabs/falcosidekick/releases/download/v2.28.0/falcosidekick_2.28.0_linux_amd64
chmod +x falcosidekick
sudo mv falcosidekick /usr/local/bin/

Buat berkas unit systemd untuk Falcosidekick:

sudo nano /etc/systemd/system/falcosidekick.service

Isi konfigurasi service:

[Unit]
Description=Falcosidekick Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/falcosidekick
Environment="SLACK_WEBHOOKURL=https://hooks.slack.com/services/XXX/YYY/ZZZ"
Environment="DISCORD_WEBHOOKURL=https://discord.com/api/webhooks/12345/abcdef"
Environment="LISTENADDRESS=127.0.0.1:2801"
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Jalankan daemon Falcosidekick:

sudo systemctl daemon-reload
sudo systemctl enable --now falcosidekick

Hubungkan Falco ke Falcosidekick dengan mengubah /etc/falco/falco.yaml:

http_output:
  enabled: true
  url: "http://127.0.0.1:2801/"

Reload service Falco:

sudo systemctl reload falco

Tuning Rule untuk Eliminasi False Positive

Proses pemantauan rutin (agent monitoring, skrip backup, logrotate) dapat memicu peringatan palsu (false positive). Tapis proses valid menggunakan teknik manipulasi list pada /etc/falco/falco_rules.local.yaml.

Contoh mengabsahtan biner monitoring internal membaca file sensitif:

- list: allowed_monitoring_binaries
  items: [node_exporter, datadog-agent, zabbix_agentd]

- macro: user_known_monitoring_activities
  condition: (proc.name in (allowed_monitoring_binaries))

# Override kondisi aturan
- rule: Pembacaan Berkas Kredensial Shadow
  condition: and not user_known_monitoring_activities

Optimasi Penggunaan CPU dan Memory Falco

Pemantauan stream syscall pada server I/O tinggi dapat membebankan CPU. Lakukan optimasi parameter pada /etc/falco/falco.yaml:

  1. Penyesuaian Ring Buffer eBPF: Atur alokasi buffer eBPF sesuai kapasitas RAM VPS.
    sysctl:
      ebpf:
        buf_size_preset: 4 # Nilai 1 (memori terendah) hingga 8 (throughput tinggi)
  2. Pembatasan Frekuensi Alert (Rate Limiting): Batasi jumlah alert untuk menghemat bandwidth I/O dan kuota webhook.
    rate_limit:
      rate: 10
      max_burst: 20
  3. Penyaringan Syscall Bising: Matikan pelacakan syscall I/O intensif yang tidak relevan dengan kebutuhan audit spesifik.

Ringkasan Strategi Runtime Security & Hardening Lanjutan

Falco eBPF merupakan instrumen deteksi dinamis. Pertahanan server VPS harus mengombinasikan deteksi runtime dengan pengerasan (hardening) preventif sesuai prinsip Defense-in-Depth.

Checklist Hardening Server Linux Production

Area KeamananTindakan HardeningKonfigurasi / Perintah
Modul KernelKunci pemuatan modul kernel baru setelah booting.sysctl -w kernel.modules_disabled=1
Proteksi MemoriSembunyikan alamat pointer kernel dari non-root.sysctl -w kernel.kptr_restrict=2
Process TracingBatasi fitur ptrace injection ke proses lain.sysctl -w kernel.yama.ptrace_scope=2
Audit RuntimePastikan status agen Falco eBPF aktif.systemctl status falco
Integrity CheckMount direktori eksekusi biner sebagai Read-Only.mount -o remount,ro /usr

Simulasi Eksploitasi dan Uji Deteksi

Uji validitas aturan deteksi Falco dengan mensimulasikan insiden di VPS:

# Tes 1: Uji akses pembacaan file shadow
cat /etc/shadow > /dev/null

# Tes 2: Uji simulasi koneksi reverse shell
nc -l -p 4444 &
bash -i >& /dev/tcp/127.0.0.1/4444 0>&1

Pantau alert yang masuk pada log syslog VPS atau channel Discord/Slack:

sudo tail -f /var/log/syslog | grep "ALERT"

Visibilitas runtime yang baik bergantung pada penyesuaian ruleset yang presisi dengan karakteristik aplikasi. Kombinasi instrumen eBPF Falco dan konfigurasi sistem yang ter-hardening memastikan VPS produksi sanggup mendeteksi eksploitasi zero-day dan rootkit sebelum kerusakan sistem meluas.

๐Ÿ“– Artikel Terkait