Tutorial Deteksi Intrusi Runtime & Rootkit Linux Pakai Falco eBPF di VPS
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).
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/getdents64untuk menyembunyikan PID dari perkakas analisisps,top, danhtop. - Koneksi Jaringan Tersembunyi: Mengubah pembacaan
/proc/net/tcpuntuk menyembunyikan port listening dan socket reverse shell darinetstatdanss. - 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.logataujournalctl.
Keterbatasan Subsistem Auditd
Perkakas auditing tradisional auditd menggunakan Linux Audit Framework. auditd memiliki kelemahan arsitektur pada server produksi berbeban tinggi:
- Bottleneck Overhead Kinerja:
auditdmengumpulkan 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
auditdatau menghapus aturan audit (auditctl -D) sebelum deteksi terkirim ke penyimpanan eksternal. - Kontekstualisasi Terbatas:
auditdtidak 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
rootatausudo. - 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 falcoKonfigurasi 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.yamlSesuaikan 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: noticeMuat driver eBPF menggunakan skrip pembawa bawaan Falco:
sudo falco-driver-loader ebpfAktifkan dan jalankan layanan systemd Falco:
sudo systemctl enable --now falco
sudo systemctl status falcoVerifikasi bahwa driver eBPF beroperasi tanpa error:
sudo journalctl -u falco -n 50 | grep -i ebpfPenyusunan 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.yamlMasukkan 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 -tBila output mengembalikan status Ok, re-load service Falco:
sudo systemctl reload falcoIntegrasi 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.serviceIsi 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.targetJalankan daemon Falcosidekick:
sudo systemctl daemon-reload
sudo systemctl enable --now falcosidekickHubungkan 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 falcoTuning 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_activitiesOptimasi Penggunaan CPU dan Memory Falco
Pemantauan stream syscall pada server I/O tinggi dapat membebankan CPU. Lakukan optimasi parameter pada /etc/falco/falco.yaml:
- 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) - Pembatasan Frekuensi Alert (Rate Limiting): Batasi jumlah alert untuk menghemat bandwidth I/O dan kuota webhook.
rate_limit: rate: 10 max_burst: 20 - 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 Keamanan | Tindakan Hardening | Konfigurasi / Perintah |
|---|---|---|
| Modul Kernel | Kunci pemuatan modul kernel baru setelah booting. | sysctl -w kernel.modules_disabled=1 |
| Proteksi Memori | Sembunyikan alamat pointer kernel dari non-root. | sysctl -w kernel.kptr_restrict=2 |
| Process Tracing | Batasi fitur ptrace injection ke proses lain. | sysctl -w kernel.yama.ptrace_scope=2 |
| Audit Runtime | Pastikan status agen Falco eBPF aktif. | systemctl status falco |
| Integrity Check | Mount 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>&1Pantau 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.


