Arsitektur Kernel Runtime Security Skala Enterprise: In-Kernel Enforcement Cilium Tetragon eBPF LSM, Falco Modern eBPF, dan Wazuh SIEM/XDR Terdistribusi
Paradigma Pertahanan Runtime: Dari Deteksi Reaktif Asinkron ke Mitigasi In-Kernel Deterministik
Dalam lanskap ancaman siber modern (cloud-native threat landscape), serangan terhadap kluster Kubernetes dan infrastruktur Linux skala industri tidak lagi bergerak dalam hitungan menit, melainkan mencapai orde sub-milidetik. Eksploitasi zero-day container breakout, eskalasi hak akses (privilege escalation via kelemahan kernel), fileless in-memory execution, hingga penyusupan reverse shell otomatis mampu mencuri kredensial dan menginfeksi simpul kluster sebelum analis keamanan menerima peringatan awal.
Secara historis, industri mengandalkan mekanisme deteksi keamanan berbasis userspace atau modul audit tradisional seperti auditd dan implementasi awal Falco dengan Kernel Module (LKM). Namun, arsitektur deteksi asinkron konvensional memiliki kelemahan struktural fatal: adanya jeda waktu mitigasi (Time-To-Mitigate Delay).
Ketika sebuah biner berbahaya dieksekusi di dalam kontainer:
- Syscall
execvedieksekusi secara mulus oleh CPU host. - Kernel mencatat kejadian ke buffer audit.
- Daemon userspace membaca buffer, melakukan evaluasi pola regex, dan menghasilkan alert ke SIEM.
- Skrip respon aktif dipanggil untuk membunuh proses atau mengisolasi jaringan.
Rentang waktu antara eksekusi serangan (langkah 1) hingga eksekusi mitigasi (langkah 4) berkisar antara 50 milidetik hingga 5.000 milidetik. Dalam jendela waktu tersebut, penyerang telah berhasil membaca secret Kubernetes (/var/run/secrets/kubernetes.io/serviceaccount/token), mendistribusikan muatan berbahaya (payload), atau menghapus log jejak digital.
TRADISIONAL: DETEKSI ASINKRON (Falco Legacy / Auditd / Agent SIEM)
========================================================================================
[Payload Jahat] ---> [Syscall execve] ---> [Biner Berjalan & Eksfiltrasi Secret!]
β
(Event ke Ring Buffer)
βΌ
[Falco / Agent Userspace]
β
(Alerting 50ms - 2000ms kemudian)
βΌ
[Skrip Response Membunuh Proses (TERLAMBAT - DATA SUDAH BOCOR!)]
MODERN: PENCEGAHAN SINKRON IN-KERNEL (Cilium Tetragon eBPF LSM)
========================================================================================
[Payload Jahat] ---> [Syscall Entry Hook]
β
(LSM / Kprobe Hook)
βΌ
[Tetragon eBPF Program di Kernel]
β
βββββββββββββββ΄ββββββββββββββ
βΌ βΌ
[PELANGGARAN] [OPERASI VALID]
β β
1. bpf_send_signal(SIGKILL) βΌ
2. Override Return Code -EPERM [Syscall Diizinkan Lanjut]
β
βΌ
[PROSES DIKILLED SECARA SINKRON DI KERNEL]
[Zero Instruction Userspace Dijalankan!]
Transisi menuju In-Kernel Synchronous Enforcement menggunakan Cilium Tetragon eBPF LSM (Linux Security Modules) memungkinkan kernel Linux membatalkan eksekusi instruksi ilegal pada CPU thread yang bersangkutan secara instan (Time-To-Mitigate = 0 ms). Dipadukan dengan kemampuan analitik tingkah laku (behavioral analysis) dari Falco modern eBPF serta mesin korelasi telemetri terdistribusi dari Wazuh SIEM/XDR, kita dapat membangun arsitektur pertahanan Zero-Trust Runtime yang deterministik dan tangguh.
Seluruh alamat IP, topologi jaringan, dan pengujian dalam artikel ini disajikan menggunakan data sintetis standar RFC 5737 (198.51.100.0/24, 192.0.2.0/24, 203.0.113.0/24) dan RFC 3849.
DAFTAR ISI
- Arsitektur Mendalam & Low-Level Mechanics
- 1.1 Falco vs Cilium Tetragon: Anatomi Komparasi Arsitektur
- 1.2 Mekanika In-Kernel Enforcement Tetragon (LSM BPF Hooks,
bpf_send_signal, dan Zero-Window Prevention) - 1.3 Taksonomi Hooking Kernel Linux: Tracepoints, Kprobes, Kretprobes, Fentry/Fexit, hingga LSM Hooks
- 1.4 Arsitektur Wazuh SIEM/XDR Distributed Multi-Cluster: Analysisd Engine, Memory Ring Buffer, dan Pemetaan MITRE ATT&CK
- 1.5 Pipeline Telemetri Terintegrasi: Falcosidekick, Fluent-Bit gRPC Socket, hingga OpenSearch Indexer
- Konfigurasi Nyata & Production-Ready Hardening
- 2.1 Konfigurasi Produksi Cilium Tetragon Helm Values (
tetragon-values.yaml) - 2.2 Tetragon TracingPolicy Enterprise CRDs:
tracingpolicy-binary-execution-prevention.yaml(Synchronous SIGKILL Unauthorized Binaries)tracingpolicy-privilege-escalation.yaml(Namespace Escape & Capability Abuse Enforcement)tracingpolicy-sensitive-file-integrity.yaml(Kernel-Level Blocking File/etc/shadow,/etc/pam.d)tracingpolicy-tcp-egress-out-of-cluster.yaml(Deep Socket Socket-Connect Filter ke RFC 5737 C2)
- 2.3 Konfigurasi High-Throughput Falco Modern eBPF (
/etc/falco/falco.yaml) - 2.4 Konfigurasi Multi-Node Wazuh Manager/Worker (
/var/ossec/etc/ossec.conf) - 2.5 Wazuh Custom Decoders & Ruleset MITRE ATT&CK (
/var/ossec/etc/rules/tetragon_falco_rules.xml)
- 2.1 Konfigurasi Produksi Cilium Tetragon Helm Values (
- Script Otomatisasi, Validasi, dan Benchmarking
- 3.1 Script 1:
audit-kernel-security-runtime.sh(Kernel BTF, eBPF JIT, LSM BPF, Cgroups v2 Readiness) - 3.2 Script 2:
benchmark-ebpf-runtime-overhead.sh(Syscall Stress Testing, Tetragon/Falco Latency Footprint) - 3.3 Script 3:
active-containment-orchestrator.sh(Multi-Layer Automated Containment Handler)
- 3.1 Script 1:
- Skenario Troubleshooting Kasus Nyata (Root Cause Analysis & Mitigation)
- 4.1 Kasus 1: Tetragon Soft Lockup / Kernel Panic Akibat Recursive Kprobe Hooking pada High-Frequency File IO
- 4.2 Kasus 2: Falco Ring Buffer Starvation & Syscall Drops pada Peak Ingress Bursts
- 4.3 Kasus 3: BPF LSM Verification Failure
bpf_send_signal() permission deniedpada Restricted Kernel - 4.4 Kasus 4: Wazuh Cluster Remoted Queue Saturation & Split-Brain Analysis Engine Disconnect
- Tabel Komparasi & Standar Keamanan Industri 2026
1. ARSITEKTUR MENDALAM & LOW-LEVEL MECHANICS
1.1 Falco vs Cilium Tetragon: Anatomi Komparasi Arsitektur
Meskipun keduanya dibangun di atas teknologi Linux eBPF, rancangan fundamental keduanya memiliki filosofi desain dan karakteristik operasional yang saling melengkapi:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β KUBERNETES WORKLOAD POD β
β Container Process (PID: 28412, Namespace: production, Cgroup: kubepods.slice/...) β
βββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββ
β Syscall (execve, openat, connect)
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LINUX KERNEL SPACE β
β β
β [ LSM Hook: security_bprm_check ] βββΊ Tetragon eBPF LSM Filter β
β β β
β βββΊ Violation? -> Call bpf_send_signal(9) β
β β Return -EPERM [BLOCKED!] β
β βββΊ Legitimate? -> Pass through β
β β
β [ Raw Tracepoint: sys_enter_* ] βββΊ Falco Modern eBPF Driver β
β β β
β βββΊ Write structured event ke BPF Ringbuf β
βββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββ
β Tetragon Perf/Ringbuf β Falco Ringbuf
βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββ
β TETRAGON USERSPACE AGENT β β FALCO ENGINE DAEMON β
β - Reads in-kernel events via gRPC β β - Evaluates YAML ruleset (DSL) β
β - Enriches with Cgroups/Pod metadata β β - Correlates K8s context via cache β
β - Streams JSON to Unix Domain Socket β β - Sends alerts to Falcosidekick β
βββββββββββββββββββββββββ¬βββββββββββββββ ββββββββββββββββββββ¬ββββββββββββββββββββ
β β
ββββββββββββββββββββββ¬ββββββββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β WAZUH SIEM/XDR DISTRIBUTED CLUSTER β
β - Multi-Worker Ingestion (Port 5140) β
β - Trie Rule Matching & MITRE ATT&CK β
β - Active Response Orchestration β
βββββββββββββββββββββββββββββββββββββββββββ
| Parameter Teknis | Falco (Modern eBPF Engine) | Cilium Tetragon (Sensor & Enforcer) |
|---|---|---|
| Fokus Operasional | Deteksi perilaku (behavioral detection), audit kepatuhan (compliance), analisis log rich-context. | Pencegahan seketika (in-kernel synchronous prevention), penegakan kontrol akses, low-overhead telemetry. |
| Titik Pasang (Hooks) | Raw Tracepoints (sys_enter, sys_exit). | LSM (bpf_lsm_*), Kprobes, Kretprobes, Fentry/Fexit, Tracepoints, Up-probes. |
| Tindakan Penegakan | Asinkron via modul luar (userspace skrip, webhook, integrasi Wazuh). | Sinkron di dalam kernel via bpf_send_signal(SIGKILL) dan override return code -EPERM. |
| Korelasi Konteks K8s | Diperkaya di userspace dengan query cache metadata API Server. | Diperkaya langsung di kernel via Cgroups v2 inode tracking & integrasi Cilium datapath. |
| Overhead CPU/I/O | Moderat (seluruh event syscall yang relevan disalin ke ring buffer). | Sangat rendah (pemfilteran awal terjadi di kernel BPF map; hanya metadata krusial yang naik ke userspace). |
| Format Kebijakan | Falco DSL Rule syntax (macro, condition, output). | Native Kubernetes Custom Resource Definitions (TracingPolicy, TracingPolicyNamespaced). |
| Jangkauan Jaringan | Tracing level syscall socket (connect, bind, accept). | Deep packet parsing, pelacakan socket sk_buff, inspeksi DNS, korelasi L4-L7. |
1.2 Mekanika In-Kernel Enforcement Tetragon
Tetragon bekerja sebagai sensor sekaligus penegak keamanan di dalam kernel Linux tanpa memerlukan re-kompilasi kernel:
Integrasi Linux Security Module (LSM) Framework (
CONFIG_BPF_LSM=y):
LSM menyediakan antarmuka terstandar di mana kernel meminta verifikasi otorisasi sebelum mengeksekusi operasi penting. Tetragon menempelkan program eBPF bertipeBPF_PROG_TYPE_LSMpada fungsi pengait:security_bprm_check: Mencegat eksekusi biner baru sebelum memory space proses dialokasikan.security_file_open: Memeriksa otorisasi pembacaan/penulisan file sebelum file descriptor diserahkan ke userspace.security_socket_connect: Memvalidasi IP dan port socket tujuan sebelum paket SYN dikirim ke jaringan.
Pengiriman Sinyal Sinkron (
bpf_send_signal):
Ketika sebuah TracingPolicy mendefinisikan aksiSigkill, program eBPF memanggil fungsi pembantu (helper function)bpf_send_signal(9)langsung dalam konteks thread penyerang. Kernel menandai bitTIF_SIGPENDINGpada strukturstruct task_struct. Ketika CPU hendak beralih dari mode kernel-space kembali ke user-space, thread penyerang langsung dimatikan secara deterministik tanpa sempat mengeksekusi instruksi userspace pertama.In-Kernel Filter Maps:
Tetragon mendefinisikan tabel BPF hash map (BPF_MAP_TYPE_HASHdanBPF_MAP_TYPE_LRU_HASH) untuk melacak:- Process Credentials: PID, TGID, UID, GID, dan Capabilities (
CAP_SYS_ADMIN,CAP_NET_ADMIN). - Container Context: Nomor inode Cgroup v2 yang dipetakan langsung ke Container ID dan Pod Name di kernel tanpa round-trip RPC ke kube-apiserver.
- Process Credentials: PID, TGID, UID, GID, dan Capabilities (
1.3 Taksonomi Hooking Kernel Linux: Tracepoints, Kprobes, Kretprobes, Fentry/Fexit, hingga LSM Hooks
Pemilihan titik hook menentukan stabilitas, keamanan, dan overhead performa sistem:
- Tracepoints (
tracepoint/syscalls/sys_enter_*):- Karakteristik: Menyediakan stable ABI resmi yang dijamin oleh maintainer kernel Linux.
- Kelebihan: Sangat stabil antar versi minor kernel Linux; minim resiko regresi.
- Limitasi: Bersifat read-only. Program BPF tidak diizinkan memodifikasi register atau membatalkan syscall secara aman.
- Kprobes (
kprobe/*):- Karakteristik: Menyisipkan instruksi breakpoint (
int3pada arsitektur x86_64) pada alamat fungsi kernel mana pun yang tidak berstatus inlined. - Kelebihan: Sangat fleksibel untuk menjangkau fungsi internal kernel.
- Limitasi: Unstable ABI (nama fungsi dan argumen dapat berubah antar rilis kernel), serta overhead siklus CPU akibat penanganan interupsi trap.
- Karakteristik: Menyisipkan instruksi breakpoint (
- Kretprobes (
kretprobe/*):- Karakteristik: Menangkap nilai kembalian (return value) saat fungsi kernel selesai dieksekusi.
- Limitasi: Memiliki overhead retpoline dan berisiko mengalami memory exhaustion apabila thread mengalami crash sebelum fungsi kembali.
- Fentry / Fexit (Compiler-Assisted Direct Trampoline):
- Karakteristik: Memanfaatkan instruksi NOP compiler (
-pg/mcount) yang di-patch saat boot menjadi direct jump. - Kelebihan: Performa setara fungsi lokal, akses langsung ke parameter dan return value dengan zero stack-unwinding overhead.
- Karakteristik: Memanfaatkan instruksi NOP compiler (
- LSM Hooks (
bpf_lsm_*):- Karakteristik: Titik intersepsi resmi subsistem keamanan kernel.
- Kelebihan: Satu-satunya titik hook eBPF yang diizinkan mengembalikan kode kesalahan negatif (seperti
-EPERMatau-EACCES) untuk membatalkan operasi kernel secara bersih dan deterministik.
1.4 Arsitektur Wazuh SIEM/XDR Distributed Multi-Cluster: Analysisd Engine, Memory Ring Buffer, dan Pemetaan MITRE ATT&CK
Wazuh bertindak sebagai pusat korelasi dan respon aktif yang menyatukan telemetri host, container, dan in-kernel events:
[ Tetragon Agent ] ββ gRPC JSON Stream βββΊ [ Fluent-Bit Forwarder ] βββ
β (Port 5140 TCP/TLS)
[ Falco Engine ] ββ Falcosidekick JSON ββββββββββββββββββββββββββββββ΄ββΊ [ Wazuh Worker Nodes ]
β
βββββββββββ΄ββββββββββ
β wazuh-remoted β
β Input Queue Bufferβ
β (262,144 slots) β
βββββββββββ¬ββββββββββ
βΌ
βββββββββββββββββββββ
β wazuh-analysisd β
β - JSON Decoding β
β - Trie Matching β
β - MITRE Tagging β
βββββββββββ¬ββββββββββ
β
βββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββ
βΌ βΌ
[ OpenSearch / Wazuh Indexer ] [ Active Response Execd ]
Index: wazuh-alerts-4.x-* - Pod Network Quarantine
Grafana / Security Dashboard - iptables RFC 5737 Sinkhole
Komponen Kritis Wazuh Analysisd:
- Input Buffer (
wazuh-remotedqueue): Antrean berbasis ring-buffer memori terkelola. Untuk beban kerja high-concurrency, ukuran antrean disetel ke minimal 262.144 slot pesan guna mencegah drop paket telemetri saat terjadi lonjakan insiden (incident burst). - Rule Engine Matching Tree: Ruleset dievaluasi menggunakan hierarchical prefix tree (Trie). Aturan induk (misal:
id="100600"grup runtime security) dievaluasi terlebih dahulu, kemudian diteruskan ke sub-rules yang memetakan teknik MITRE ATT&CK (T1059: Command and Scripting Interpreter,T1068: Exploitation for Privilege Escalation,T1003: OS Credential Dumping). - Distributed Master/Worker Synchronization:
- Master Node: Mengelola distribusi terpusat untuk konfigurasi grup agent, aturan decoder kustom, dan manifest active response melalui koneksi aman port
1516. - Worker Nodes: Memproses dekodifikasi log secara paralel dan mengindeks hasil analisa langsung ke kluster OpenSearch tanpa menciptakan bottleneck pada Master Node.
- Master Node: Mengelola distribusi terpusat untuk konfigurasi grup agent, aturan decoder kustom, dan manifest active response melalui koneksi aman port
1.5 Pipeline Telemetri Terintegrasi: Falcosidekick, Fluent-Bit gRPC Socket, hingga OpenSearch Indexer
Integrasi telemetri terpadu berjalan dengan alur kerja berikut:
- Cilium Tetragon mengekspor aliran data terstruktur gRPC melalui Unix Domain Socket lokal (
/var/run/cilium/tetragon/tetragon.sock). - Fluent-Bit DaemonSet membaca socket tersebut, memfilter atribut yang tidak relevan untuk menghemat bandwidth, dan membungkusnya dalam format JSON standar RFC 5424 menuju Wazuh Worker.
- Falco menganalisis syscall via driver modern eBPF, lalu meneruskannya ke Falcosidekick untuk dispatching serentak ke Wazuh dan dashboard visualisasi.
- Wazuh Analysis Engine menjalankan korelasi silang:
- Apabila Tetragon berhasil mengeksekusi in-kernel kill (
Action: KILLED_SIGKILL), Wazuh mencatat insiden keparahan tinggi (Level 14 - Attack Prevented) dan menotifikasi kanal SecOps. - Apabila terdeteksi upaya probing berulang yang belum memicu hard kill, Wazuh memicu Active Containment Orchestrator untuk mengisolasi pod target melalui Cilium NetworkPolicy.
- Apabila Tetragon berhasil mengeksekusi in-kernel kill (
2. KONFIGURASI NYATA & PRODUCTION-READY HARDENING
2.1 Konfigurasi Produksi Cilium Tetragon Helm Values (tetragon-values.yaml)
Konfigurasi berikut diterapkan pada kluster Kubernetes enterprise untuk mengaktifkan fitur penegakan in-kernel LSM, sizing memory map 512 MB, dan isolasi buffer 16 MB per CPU core.
# /etc/tetragon/tetragon-values.yaml
# Production Hardened Configuration for Cilium Tetragon DaemonSet
tetragon:
enabled: true
image:
repository: quay.io/cilium/tetragon
tag: v1.2.0
pullPolicy: IfNotPresent
# Mengaktifkan In-Kernel Enforcement via LSM dan BPF Signals
enforcement:
enabled: true
# eBPF Engine & Kernel Subsystem Parameters
bpf:
btf: "/sys/kernel/btf/vmlinux"
mapMemoryLimit: 536870912 # Alokasi 512 MB per simpul
ringBufferSize: 16777216 # 16 MB per CPU core buffer (Zero drops)
# Process Filtering & Monitoring
processCacheSize: 65536
enableProcessNsFilter: true
enableProcessCred: true
# Export Telemetry via gRPC Unix Domain Socket
export:
mode: "stdout"
stdout:
enabled: false
grpc:
enabled: true
address: "unix:///var/run/cilium/tetragon/tetragon.sock"
file:
enabled: true
path: "/var/log/tetragon/tetragon.log"
maxSizeMB: 100
maxBackups: 5
compress: true
# Alokasi Resource & Jaminan QoS
resources:
limits:
cpu: "2000m"
memory: "1024Mi"
requests:
cpu: "500m"
memory: "512Mi"
# Security Context - Tetragon memerlukan kapabilitas kernel spesifik
securityContext:
privileged: false
capabilities:
add:
- SYS_ADMIN
- SYS_RESOURCE
- SYS_PTRACE
- BPF
- PERFMON
- NET_ADMIN
- DAC_OVERRIDE
# Host Path Mounts untuk Probing Kernel
extraHostPathMounts:
- name: bpf-fs
mountPath: /sys/fs/bpf
hostPath: /sys/fs/bpf
mountPropagation: Bidirectional
- name: btf-fs
mountPath: /sys/kernel/btf
hostPath: /sys/kernel/btf
readOnly: true
- name: debugfs
mountPath: /sys/kernel/debug
hostPath: /sys/kernel/debug
2.2 Tetragon TracingPolicy Enterprise CRDs
A. In-Kernel Binary Execution Enforcement (tracingpolicy-binary-execution-prevention.yaml)
Kebijakan ini langsung menembak mati (SIGKILL) setiap upaya eksekusi binary utilitas jaringan ofensif atau biner tak dikenal dari direktori temporer pada namespace produksi.
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: block-unauthorized-exec-production
namespace: kube-system
spec:
kprobes:
- call: "sys_execve"
syscall: true
args:
- index: 0
type: "string" # Path biner yang dieksekusi
selectors:
- matchNamespaces:
- "production"
- "payment-gateway"
matchArgs:
- index: 0
operator: "Prefix"
values:
- "/tmp/"
- "/dev/shm/"
- "/var/tmp/"
matchActions:
- action: Sigkill
- action: Post
- matchNamespaces:
- "production"
matchArgs:
- index: 0
operator: "InMap"
values:
- "/usr/bin/nc"
- "/usr/bin/ncat"
- "/usr/bin/netcat"
- "/usr/bin/socat"
- "/usr/bin/nmap"
- "/usr/bin/tcpdump"
matchActions:
- action: Sigkill
- action: Post
B. Privilege Escalation & Namespace Escape Prevention (tracingpolicy-privilege-escalation.yaml)
Mencegah eksploitasi eskalasi privilege di kernel (seperti Dirty COW, Dirty Pipe) dengan memonitor fungsi kernel internal commit_creds.
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: block-privilege-escalation
namespace: kube-system
spec:
kprobes:
- call: "commit_creds"
syscall: false
args:
- index: 0
type: "cred" # struct cred*
selectors:
- matchArgs:
- index: 0
operator: "Equal"
values:
- "0" # Percobaan mengubah target UID menjadi 0 (Root)
matchNamespaces:
- "production"
matchActions:
- action: Sigkill
- action: Post
C. Sensitive File Integrity In-Kernel Blocking via LSM (tracingpolicy-sensitive-file-integrity.yaml)
Memblokir upaya perusakan atau pembacaan tidak sah terhadap berkas sensitif sistem dan sertifikat identitas Kubernetes.
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: block-sensitive-file-tampering
namespace: kube-system
spec:
lsm:
- hook: "file_open"
args:
- index: 0
type: "file"
selectors:
- matchArgs:
- index: 0
operator: "Prefix"
values:
- "/etc/shadow"
- "/etc/passwd"
- "/etc/pam.d/"
- "/etc/sudoers"
- "/etc/kubernetes/pki/"
matchFlags:
- "O_WRONLY"
- "O_RDWR"
- "O_CREAT"
- "O_TRUNC"
matchActions:
- action: Override
argError: -13 # -EACCES (Permission Denied)
- action: Sigkill
- action: Post
D. Deep Socket Egress C2 Interception (tracingpolicy-tcp-egress-out-of-cluster.yaml)
Mendeteksi inisiasi koneksi socket keluar menuju subnet non-resmi atau Command & Control (C2) sintetis RFC 5737 (198.51.100.55).
apiVersion: cilium.io/v1alpha1
kind: TracingPolicy
metadata:
name: block-tcp-egress-c2
namespace: kube-system
spec:
kprobes:
- call: "tcp_v4_connect"
syscall: false
args:
- index: 0
type: "sock"
selectors:
- matchNamespaces:
- "production"
matchArgs:
- index: 0
operator: "Equal"
values:
- "198.51.100.55" # Alamat IP C2 Sintetis RFC 5737
matchActions:
- action: Sigkill
- action: Post
2.3 Konfigurasi High-Throughput Falco Modern eBPF (/etc/falco/falco.yaml)
# /etc/falco/falco.yaml - High-Concurrency Production Tuning
engine:
kind: modern_ebpf
modern_ebpf:
cpus_for_each_syscall_buffer: 1
buffer_dim_pages: 8192 # Alokasi 32 MB per CPU core buffer
rules_files:
- /etc/falco/falco_rules.yaml
- /etc/falco/falco_rules.local.yaml
- /etc/falco/rules.d/*.yaml
json_output: true
json_include_output_property: true
json_include_tags_property: true
log_stderr: false
log_syslog: false
log_level: warning
priority: notice
# Output Channels & Rate Limiting
output_timeout: 1000
buffered_outputs: true
outputs:
rate: 2000
max_burst: 5000
# Forwarding via gRPC ke Falcosidekick
grpc:
enabled: true
bind_address: "unix:///var/run/falco/falco.sock"
threadiness: 4
grpc_output:
enabled: true
2.4 Konfigurasi Multi-Node Wazuh Manager/Worker (/var/ossec/etc/ossec.conf)
Konfigurasi Wazuh Worker Node penerima aliran data telemetri dari kluster Kubernetes:
<!-- /var/ossec/etc/ossec.conf - Wazuh Worker Node -->
<ossec_config>
<cluster>
<name>wazuh-enterprise-cluster</name>
<node_name>wazuh-worker-01</node_name>
<node_type>worker</node_type>
<key>4a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d</key>
<port>1516</port>
<bind_addr>0.0.0.0</bind_addr>
<nodes>
<node>198.51.100.10</node> <!-- Master Node IP Sintetis RFC 5737 -->
</nodes>
<hidden>no</hidden>
<disabled>no</disabled>
</cluster>
<!-- Tuning Antrean Jaringan Skala Tinggi -->
<remote>
<connection>syslog</connection>
<port>5140</port>
<protocol>tcp</protocol>
<allowed-ips>198.51.100.0/24</allowed-ips> <!-- Subnet Kluster K8s RFC 5737 -->
<queue_size>262144</queue_size>
</remote>
<analysis>
<memory_size>1048576</memory_size>
<maximum_decoder_depth>10</maximum_decoder_depth>
</analysis>
<!-- Orkestrasi Respon Aktif Terintegrasi -->
<command>
<name>k8s-pod-quarantine</name>
<executable>active-containment-orchestrator.sh</executable>
<timeout_allowed>yes</timeout_allowed>
</command>
<active-response>
<command>k8s-pod-quarantine</command>
<location>local</location>
<rules_id>100601,100602,100603</rules_id>
<timeout>3600</timeout> <!-- Isolasi Jaringan 1 Jam -->
</active-response>
</ossec_config>
2.5 Wazuh Custom Decoders & Ruleset MITRE ATT&CK (/var/ossec/etc/rules/tetragon_falco_rules.xml)
<!-- /var/ossec/etc/rules/tetragon_falco_rules.xml -->
<group name="tetragon,falco,runtime_security,">
<!-- Parent Rule: Tetragon In-Kernel Enforcement Event -->
<rule id="100600" level="3">
<decoded_as>json</decoded_as>
<field name="process_kprobe.process.binary">\.+</field>
<description>Tetragon runtime event captured.</description>
</rule>
<!-- Critical: In-Kernel SIGKILL Dijalankan oleh Tetragon -->
<rule id="100601" level="14">
<if_sid>100600</if_sid>
<field name="action">KILLED_SIGKILL</field>
<mitre>
<id>T1059</id>
<id>T1204</id>
</mitre>
<description>CRITICAL: Tetragon In-Kernel Enforcement mengeksekusi SIGKILL pada proses $(process_kprobe.process.binary) di Pod $(process_kprobe.process.pod.name) [Namespace: $(process_kprobe.process.pod.namespace)].</description>
</rule>
<!-- Critical: Upaya Privilege Escalation Digagalkan -->
<rule id="100602" level="15">
<if_sid>100600</if_sid>
<field name="process_kprobe.function_name">commit_creds</field>
<mitre>
<id>T1068</id>
<id>T1611</id>
</mitre>
<description>EMERGENCY: Upaya Kernel Privilege Escalation dicegat di Pod $(process_kprobe.process.pod.name)! Pengubahan UID ke 0 (root) digagalkan.</description>
</rule>
<!-- High: Penulisan Berkas Sensitif Diblokir via LSM -->
<rule id="100603" level="13">
<if_sid>100600</if_sid>
<field name="process_lsm.function_name">security_file_open</field>
<mitre>
<id>T1003.008</id>
<id>T1565</id>
</mitre>
<description>ALERT: In-Kernel LSM memblokir akses modifikasi berkas sensitif oleh proses $(process_lsm.process.binary).</description>
</rule>
</group>
3. SCRIPT OTOMATISASI, VALIDASI, DAN BENCHMARKING
3.1 Script 1: audit-kernel-security-runtime.sh
Skrip audit menyeluruh untuk memvalidasi kesiapan kernel Linux host terhadap modul eBPF LSM, ketersediaan format tipe BTF, parameter JIT compiler, dan hirarki Cgroups v2 sebelum deployment.
#!/usr/bin/env bash
# ==============================================================================
# SCRIPT: audit-kernel-security-runtime.sh
# AUTHOR: La Nina π
# DESCRIPTION: Linux Kernel, eBPF LSM & Runtime Security Readiness Auditor
# DATA REF: 100% Synthetic RFC 5737 Compliant
# ==============================================================================
set -euo pipefail
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}=================================================================${NC}"
echo -e "${BLUE} LINUX KERNEL eBPF LSM & RUNTIME SECURITY READINESS AUDIT ${NC}"
echo -e "${BLUE}=================================================================${NC}"
FAILURES=0
WARNINGS=0
# 1. Audit Versi Kernel Linux
KERNEL_VER=$(uname -r)
KERNEL_MAJOR=$(echo "$KERNEL_VER" | cut -d'.' -f1)
KERNEL_MINOR=$(echo "$KERNEL_VER" | cut -d'.' -f2)
echo -n "[*] Memeriksa Versi Kernel ($KERNEL_VER) >= 5.15 LTS... "
if [ "$KERNEL_MAJOR" -gt 5 ] || { [ "$KERNEL_MAJOR" -eq 5 ] && [ "$KERNEL_MINOR" -ge 15 ]; }; then
echo -e "${GREEN}PASSED${NC}"
else
echo -e "${RED}FAILED (eBPF LSM modern membutuhkan Linux Kernel >= 5.15)${NC}"
FAILURES=$((FAILURES + 1))
fi
# 2. Audit Ketersediaan Kernel BTF
echo -n "[*] Memvalidasi Kernel BTF (/sys/kernel/btf/vmlinux)... "
if [ -f "/sys/kernel/btf/vmlinux" ]; then
BTF_SIZE=$(stat -c%s "/sys/kernel/btf/vmlinux")
echo -e "${GREEN}PASSED (${BTF_SIZE} bytes)${NC}"
else
echo -e "${RED}FAILED (BTF tidak ditemukan! Kernel harus dikompilasi dengan CONFIG_DEBUG_INFO_BTF=y)${NC}"
FAILURES=$((FAILURES + 1))
fi
# 3. Audit BPF LSM pada Boot Parameters
echo -n "[*] Memverifikasi Modul Aktif BPF LSM (/sys/kernel/security/lsm)... "
if [ -f "/sys/kernel/security/lsm" ]; then
ACTIVE_LSM=$(cat /sys/kernel/security/lsm)
echo -n "Ditemukan: [$ACTIVE_LSM] -> "
if echo "$ACTIVE_LSM" | grep -q "bpf"; then
echo -e "${GREEN}PASSED (bpf aktif)${NC}"
else
echo -e "${RED}FAILED ('bpf' belum terdaftar! Tambahkan lsm=...,bpf pada konfigurasi GRUB)${NC}"
FAILURES=$((FAILURES + 1))
fi
else
echo -e "${YELLOW}WARNING (Securityfs belum di-mount)${NC}"
WARNINGS=$((WARNINGS + 1))
fi
# 4. Audit Kompiler eBPF JIT & Hardening
echo -n "[*] Memeriksa eBPF JIT Compiler (net.core.bpf_jit_enable)... "
JIT_EN=$(sysctl -n net.core.bpf_jit_enable 2>/dev/null || echo "0")
if [ "$JIT_EN" -eq 1 ]; then
echo -e "${GREEN}PASSED (Enabled)${NC}"
else
echo -e "${RED}FAILED (JIT tidak aktif, performa kernel terdegradasi)${NC}"
FAILURES=$((FAILURES + 1))
fi
echo -n "[*] Memeriksa JIT Blinding Hardening (net.core.bpf_jit_harden)... "
JIT_HARD=$(sysctl -n net.core.bpf_jit_harden 2>/dev/null || echo "0")
if [ "$JIT_HARD" -ge 1 ]; then
echo -e "${GREEN}PASSED (Hardened: $JIT_HARD)${NC}"
else
echo -e "${YELLOW}WARNING (JIT blinding belum diaktifkan terhadap JIT-spraying attacks)${NC}"
WARNINGS=$((WARNINGS + 1))
fi
# 5. Audit Restriksi Unprivileged eBPF
echo -n "[*] Memeriksa kernel.unprivileged_bpf_disabled... "
UNPRIV_BPF=$(sysctl -n kernel.unprivileged_bpf_disabled 2>/dev/null || echo "0")
if [ "$UNPRIV_BPF" -ge 1 ]; then
echo -e "${GREEN}PASSED (Dibatasi hanya untuk privileged users)${NC}"
else
echo -e "${RED}FAILED (Unprivileged eBPF aktif! Berisiko terhadap local privilege escalation)${NC}"
FAILURES=$((FAILURES + 1))
fi
# 6. Audit Titik Mount Cgroups v2 Unified
echo -n "[*] Memvalidasi Cgroups v2 Unified Hierarchy... "
if mount | grep -q "cgroup2 on /sys/fs/cgroup"; then
echo -e "${GREEN}PASSED (Cgroups v2 Unified Aktif)${NC}"
else
echo -e "${YELLOW}WARNING (Terdeteksi legacy Cgroups v1)${NC}"
WARNINGS=$((WARNINGS + 1))
fi
# 7. Audit BPF Filesystem Mount
echo -n "[*] Memeriksa bpffs mount pada /sys/fs/bpf... "
if mount | grep -q "type bpf"; then
echo -e "${GREEN}PASSED${NC}"
else
echo -e "${RED}FAILED (/sys/fs/bpf belum di-mount! Persistensi peta Tetragon akan gagal)${NC}"
FAILURES=$((FAILURES + 1))
fi
echo -e "\n${BLUE}=================================================================${NC}"
echo -e "Hasil Audit: ${GREEN}$((7 - FAILURES - WARNINGS)) Berhasil${NC} | ${YELLOW}${WARNINGS} Peringatan${NC} | ${RED}${FAILURES} Kegagalan Kritis${NC}"
if [ "$FAILURES" -gt 0 ]; then
echo -e "${RED}[!] SISTEM BELUM MEMENUHI SYARAT IN-KERNEL ENFORCEMENT.${NC}"
exit 1
else
echo -e "${GREEN}[+] SISTEM SIAP UNTUK DEPLOYMENT CILIUM TETRAGON & FALCO PRODUKSI.${NC}"
exit 0
fi
3.2 Script 2: benchmark-ebpf-runtime-overhead.sh
Skrip benchmarking untuk mengukur dampak latensi terhadap eksekusi system call berfrekuensi tinggi dan context-switching overhead saat Tetragon dan Falco aktif.
#!/usr/bin/env bash
# ==============================================================================
# SCRIPT: benchmark-ebpf-runtime-overhead.sh
# AUTHOR: La Nina π
# DESCRIPTION: Benchmark CPU/Memory & Syscall Latency Overhead of In-Kernel Security
# DATA REF: 100% Synthetic Benchmark (RFC 5737 Compliant)
# ==============================================================================
set -euo pipefail
DURATION=10
TMP_DIR=$(mktemp -d /tmp/benchmark-ebpf.XXXXXX)
trap 'rm -rf "$TMP_DIR"' EXIT
echo -e "\033[0;34m[*] Memulai Benchmark Beban dan Latensi eBPF Runtime Security...\033[0m"
# 1. Uji Latensi Syscall Berfrekuensi Tinggi (100.000 iterasi stat/open)
echo -e "\n[+] Tahap 1: Benchmark Syscall Stat & Open/Close (100.000 iterasi)..."
python3 - <<EOF
import time
import os
iterations = 100000
start = time.perf_counter()
for _ in range(iterations):
try:
os.stat("/etc/hosts")
except:
pass
elapsed = time.perf_counter() - start
avg_lat_us = (elapsed / iterations) * 1_000_000
print(f" Total Iterasi : {iterations}")
print(f" Waktu Eksekusi : {elapsed:.4f} detik")
print(f" Rata-rata Latensi: {avg_lat_us:.3f} mikrodetik / call")
print(f" Throughput : {iterations / elapsed:.0f} syscalls/detik")
EOF
# 2. Uji Pembuatan Proses & Eksekusi Execve (5.000 proses)
echo -e "\n[+] Tahap 2: Benchmark Fork & Execve Spawn (5.000 proses)..."
python3 - <<EOF
import time
import subprocess
iterations = 5000
start = time.perf_counter()
for _ in range(iterations):
subprocess.run(["true"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
elapsed = time.perf_counter() - start
print(f" Total Proses : {iterations}")
print(f" Waktu Eksekusi : {elapsed:.4f} detik")
print(f" Latensi Fork+Exec: {(elapsed / iterations) * 1000:.3f} ms / proses")
print(f" Throughput : {iterations / elapsed:.0f} proses/detik")
EOF
# 3. Inspeksi Program dan Peta BPF Aktif
echo -e "\n[+] Tahap 3: Memeriksa Jumlah Program BPF dan Hook LSM yang Aktif..."
if command -v bpftool >/dev/null 2>&1; then
echo " Total Program BPF Dimuat : $(bpftool prog show | grep -c 'type ')"
echo " Total Peta BPF Terdaftar : $(bpftool map show | grep -c 'type ')"
echo " Hook LSM Aktif : $(bpftool prog show | grep -c 'type lsm' || echo 0)"
else
echo " [i] bpftool tidak terpasang, melewati inspeksi langsung kernel map."
fi
echo -e "\n\033[0;32m[+] Pengujian Benchmark Selesai dengan Sukses.\033[0m"
3.3 Script 3: active-containment-orchestrator.sh
Handler respon aktif terdistribusi yang dipanggil oleh Wazuh untuk melakukan karantina jaringan pod via Cilium NetworkPolicy dan memblokir lalu lintas C2 berbahaya pada layer firewall host.
#!/usr/bin/env bash
# ==============================================================================
# SCRIPT: active-containment-orchestrator.sh
# AUTHOR: La Nina π
# DESCRIPTION: Multi-Layer Automated Threat Containment (Wazuh Active Response Handler)
# DATA REF: 100% Synthetic RFC 5737 Compliant (Subnet 198.51.100.0/24)
# ==============================================================================
set -euo pipefail
LOG_FILE="/var/ossec/logs/active-responses.log"
INPUT_JSON=$(cat)
ACTION=$(echo "$INPUT_JSON" | jq -r '.command // "add"')
ALERT_ID=$(echo "$INPUT_JSON" | jq -r '.parameters.alert.id // "unknown"')
RULE_ID=$(echo "$INPUT_JSON" | jq -r '.parameters.alert.rule.id // "0"')
POD_NAME=$(echo "$INPUT_JSON" | jq -r '.parameters.alert.data.process_kprobe.process.pod.name // .parameters.alert.data.k8s.pod.name // empty')
NAMESPACE=$(echo "$INPUT_JSON" | jq -r '.parameters.alert.data.process_kprobe.process.pod.namespace // .parameters.alert.data.k8s.ns.name // "default"')
SRC_IP=$(echo "$INPUT_JSON" | jq -r '.parameters.alert.data.src_ip // empty')
log_msg() {
echo "$(date '+%Y-%m-%d %H:%M:%S') [CONTAINMENT] [Rule: $RULE_ID] $*" >> "$LOG_FILE"
}
log_msg "Invoked with Action: $ACTION for Pod: $POD_NAME (Namespace: $NAMESPACE)"
if [ "$ACTION" == "add" ]; then
# 1. Karantina Jaringan Pod via Cilium NetworkPolicy
if [ -n "$POD_NAME" ] && command -v kubectl >/dev/null 2>&1; then
log_msg "Menegakkan Zero-Trust Network Isolation pada Pod $POD_NAME di $NAMESPACE..."
cat <<EOF | kubectl apply -f - || log_msg "Gagal menerapkan quarantine CiliumNetworkPolicy"
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: quarantine-${POD_NAME}
namespace: ${NAMESPACE}
spec:
endpointSelector:
matchLabels:
io.kubernetes.pod.name: ${POD_NAME}
ingress: []
egress: [] # Blokir total (Sinkhole traffic)
EOF
log_msg "Pod $POD_NAME berhasil diisolasi dari komunikasi jaringan kluster."
fi
# 2. Blokir Firewall Host untuk Alamat IP Penyerang Luar (RFC 5737 Synthetic C2)
if [ -n "$SRC_IP" ] && [[ "$SRC_IP" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
# Perlindungan whitelist loopback & private range
if [[ "$SRC_IP" == "127.0.0.1" ]] || [[ "$SRC_IP" =~ ^10\. ]] || [[ "$SRC_IP" =~ ^192\.168\. ]]; then
log_msg "Alamat IP $SRC_IP adalah segmen internal/privat. Melewati blokir host."
else
log_msg "Memblokir IP C2 berbahaya $SRC_IP via iptables host..."
iptables -I FORWARD 1 -s "$SRC_IP" -j DROP || true
iptables -I INPUT 1 -s "$SRC_IP" -j DROP || true
fi
fi
elif [ "$ACTION" == "delete" ]; then
# Pemulihan Karantina
if [ -n "$POD_NAME" ] && command -v kubectl >/dev/null 2>&1; then
log_msg "Membatalkan kebijakan isolasi untuk Pod $POD_NAME..."
kubectl delete ciliumnetworkpolicy "quarantine-${POD_NAME}" -n "$NAMESPACE" --ignore-not-found=true || true
fi
fi
exit 0
4. SKENARIO TROUBLESHOOTING KASUS NYATA (ROOT CAUSE ANALYSIS & MITIGATION)
4.1 Kasus 1: Tetragon Soft Lockup / Kernel Panic Akibat Recursive Kprobe Hooking pada High-Frequency File IO
Gejala (Incident Symptoms)
Simpul Kubernetes tiba-tiba berhenti merespons (freeze), kubelet gagal mengirimkan heartbeat sehingga node ditandai NotReady. Pada serial console kernel, muncul laporan fatal watchdog:
[ 1420.312014] watchdog: BUG: soft lockup - CPU#4 stuck for 26s! [tetragon:4120]
[ 1420.312080] Call Trace:
[ 1420.312100] <IRQ>
[ 1420.312120] kprobe_dispatcher+0x42/0x80
[ 1420.312150] kprobe_ftrace_handler+0x8a/0x110
[ 1420.312180] __vfs_write+0x5/0x1c0
[ 1420.312210] vfs_write+0xb8/0x1a0
[ 1420.312240] ksys_write+0x5f/0xe0
[ 1420.312260] do_syscall_64+0x5b/0x180
Root Cause Analysis (RCA)
- Analisis Call Trace: Titik hook kprobe dipasang pada fungsi internal
__vfs_writetanpa filter eksklusi proses. - Ketika Tetragon mendeteksi penulisan berkas, userspace daemon Tetragon mencatat log telemetri ke berkas
/var/log/tetragon/tetragon.logmenggunakan syscallwrite(). - Syscall
write()dari Tetragon memanggil kembali__vfs_writedi kernel, yang secara langsung memicu kprobe Tetragon untuk kedua kalinya. - Mekanisme Kegagalan: Terjadi Recursive Hooking Loop tak berujung (Kprobe -> Event Generated -> Write Log -> Trigger Kprobe). Core CPU terkunci dalam infinite loop hingga watchdog kernel mendeteksi soft lockup dan membekukan sistem operasi.
Mitigasi & Langkah Remediasi Permanen
- Hindari Hooking Fungsi Internal Tulis Tanpa Eksklusi PID: Tambahkan filter
matchArgsatau abaikan logging dari UID/PID milik daemon Tetragon itu sendiri. - Gunakan LSM Hook Resmi: Gantikan kprobe
__vfs_writedengan pengait LSMfile_openataufile_permissionyang secara arsitektur kebal terhadap pemanggilan rekursif. - Konfigurasi Namespace Isolation: Tambahkan directive
matchNamespacesdan kecualikan namespace sistem (kube-system).
4.2 Kasus 2: Falco Ring Buffer Starvation & Syscall Drops pada Peak Ingress Bursts
Gejala (Incident Symptoms)
Saat kluster menerima lonjakan trafik HTTP/gRPC tinggi, metrik Falco mencatat lonjakan kehilangan event:
falco_drops: 184,210 events
falco_drops_ratio: 0.142 (14.2% syscall events dropped!)
Log internal Falco menampilkan peringatan: BPF ring buffer is full! Discarding system call events.
Root Cause Analysis (RCA)
- Falco mengaitkan seluruh tracepoint
sys_enterpada seluruh core CPU tanpa pemfilteran awal. - Ukuran memori BPF Ring Buffer disetel pada konfigurasi default yang terlalu kecil (
buffer_dim_pages: 512, setara 2 MB). - Pada saat beban kerja mencapai 50.000 req/detik, kernel Linux membanjiri ring buffer jauh lebih cepat daripada kemampuan daemon userspace
falco-engineyang tercekik oleh batas CFS quota cgroups (cpu.cfs_quota_us). - Event yang melebihi kapasitas buffer dibuang secara senyap (dropped), menciptakan celah buta di mana aktivitas eksploitasi penyerang tidak tercatat.
Mitigasi & Langkah Remediasi Permanen
- Perbesar Dimensi Ring Buffer: Perbarui file
/etc/falco/falco.yamlmenjadi 8.192 pages (32 MB per CPU core buffer):engine: kind: modern_ebpf modern_ebpf: cpus_for_each_syscall_buffer: 1 buffer_dim_pages: 8192 - Aktifkan Early In-Kernel Syscall Filtering: Batasi pengumpulan hanya pada base syscalls berisiko tinggi (
execve,ptrace,connect,setuid) langsung di tingkat eBPF map sebelum event dialirkan ke buffer. - Jaminan Reservasi CPU: Tetapkan jaminan alokasi CPU (
requests.cpu: "1000m") pada DaemonSet Falco untuk mencegah penundaan penjadwalan (scheduling delay).
4.3 Kasus 3: BPF LSM Verification Failure bpf_send_signal() permission denied pada Restricted Kernel
Gejala (Incident Symptoms)
Saat menerapkan TracingPolicy dengan aksi Sigkill, Tetragon menolak memuat program eBPF dan melaporkan kesalahan verifikasi pada CRD:
Status:
Conditions:
- Message: "loading bpf program failed: permission denied: 84: (85) call bpf_send_signal#109: helper call is not allowed in probe type 28"
Reason: BpfProgramLoadFailed
Status: "False"
Type: Ready
Root Cause Analysis (RCA)
- Batasan Konteks Helper Kernel: Fungsi helper
bpf_send_signal()memiliki batasan keamanan ketat di kernel Linux. Helper ini hanya diizinkan dipanggil dari konteks program BPF yang berjalan pada process context (sepertiBPF_PROG_TYPE_KPROBEpada pintu masuk syscall atauBPF_PROG_TYPE_LSMdenganCONFIG_BPF_LSM=y). - Apabila administrator mengonfigurasi aksi
Sigkillpada genericraw_tracepointatau fungsi kernel yang dieksekusi di dalam konteks NMI atau hard interrupt handler (IRQ context), verifier eBPF akan menolak program tersebut untuk mencegah terjadinya deadlock pada subsistem penjadwal (scheduler) kernel.
Mitigasi & Langkah Remediasi Permanen
- Pindahkan Titik Enforcement ke Konteks Proses yang Aman: Pastikan aksi
Sigkillhanya ditempelkan pada syscall entry kprobes (misalnyasys_execve) atau LSM hooks (security_bprm_check):spec: kprobes: - call: "sys_execve" syscall: true # Konteks proses aman untuk bpf_send_signal matchActions: - action: Sigkill - Pastikan kernel dikompilasi dengan opsi
CONFIG_BPF_EVENTS=ydanCONFIG_BPF_KPROBE_OVERRIDE=y.
4.4 Kasus 4: Wazuh Cluster Remoted Queue Saturation & Split-Brain Analysis Engine Disconnect
Gejala (Incident Symptoms)
Wazuh Agent dan log forwarder melaporkan penolakan koneksi port 5140 (Connection refused). Pada Wazuh Manager, log /var/ossec/logs/ossec.log mencatat:
2026/09/14 14:10:02 wazuh-remoted: ERROR: Input queue is full (262144 items). Dropping incoming events.
2026/09/14 14:10:05 wazuh-analysisd: WARNING: Processing latency spike: 4200ms per event batch.
Root Cause Analysis (RCA)
- Mesin
wazuh-analysisdkehabisan siklus CPU akibat evaluasi aturan XML bersarang (nested regex decoding) yang tidak efisien terhadap log JSON bervolume tinggi. - Ukuran antrean
wazuh-remoted(262.144 slot) meluap karena ingestion rate mencapai 45.000 event/detik saat jam sibuk produksi. - Penundaan pemrosesan mengakibatkan socket timeout dan buffer drop di sisi pengirim.
Mitigasi & Langkah Remediasi Permanen
- Tingkatkan Ukuran Buffer Memori di
/var/ossec/etc/ossec.conf:<remote> <connection>syslog</connection> <port>5140</port> <protocol>tcp</protocol> <queue_size>524288</queue_size> <rdate>10</rdate> </remote> <analysis> <memory_size>2097152</memory_size> </analysis> - Gunakan Direct JSON Parsing: Hindari regex multiline dan gunakan tag
<decoded_as>json</decoded_as>untuk mempercepat ekstraksi field. - Penerapan Multi-Worker Load Balancing: Tempatkan layer HAProxy L4 di depan minimal 3 Wazuh Worker nodes untuk mendistribusikan aliran koneksi TCP port 5140 secara merata.
5. TABEL KOMPARASI & STANDAR KEAMANAN INDUSTRI 2026
| Dimensi Kemampuan | Audit Tradisional (Auditd / Iptables) | Falco Modern eBPF Engine | Cilium Tetragon eBPF LSM | Distributed Wazuh SIEM/XDR |
|---|---|---|---|---|
| Layer Eksekusi | Userspace Daemon & Netfilter | Kernel Tracepoints | Kernel LSM / Kprobes / Fentry | Centralized Multi-Node Cluster |
| Jeda Intervensi | Lambat (> 1.000 ms) | Menengah (50 ms - 200 ms) | Nol / Real-Time (0 ms in-kernel) | Asinkron (> 500 ms) |
| Model Pencegahan | Reaktif (Hanya mencatat log) | Reaktif via skrip userspace | Proaktif Sinkron (SIGKILL/EPERM) | Terkoordinasi via Active Response |
| Overhead CPU Host | Tinggi (Serialisasi syscall berat) | Sangat Rendah (< 2% CPU) | Ultra Rendah (< 1% CPU) | Terisolasi pada Dedicated Node |
| Konteks Pod & K8s | Buta konteks container | Diperkaya via API Server polling | In-Kernel Cgroups Inode Tracking | Terpetakan via JSON terstruktur |
| MITRE ATT&CK Mapping | Parsing log manual | Didukung melalui tag aturan | Terintegrasi pada metadata event | Otomatis via Ruleset Engine |
Dokumen ini disusun dan dikurasi secara mandiri oleh La Nina π sebagai standar referensi arsitektur keamanan kernel runtime tingkat Tier-1 Enterprise.