Di artikel sebelumnya, kita sudah membahas Jaeger sebagai tool untuk membaca distributed tracing. Dengan Jaeger, kita bisa melihat perjalanan sebuah request dari satu service ke service lain, melihat latency, dan memahami bagian mana yang menjadi bottleneck.

Namun observability tidak hanya berhenti di performance.

Kadang, hal yang perlu kita lihat bukan hanya:

Kenapa request ini lambat?

Tetapi juga:

Kenapa ada shell yang terbuka di dalam container?
Kenapa ada process mencurigakan yang berjalan?
Kenapa ada file sensitif yang dibaca?
Kenapa workload mencoba mengakses path yang tidak seharusnya?

Pertanyaan seperti ini masuk ke area security observability.

Di sinilah Falco mulai menarik.

Falco membantu kita membaca perilaku runtime dari sistem yang sedang berjalan. Bukan hanya apa yang aplikasi tulis di log, tetapi apa yang benar-benar terjadi di level sistem, container, dan Kubernetes workload.

Recap: Observability Tidak Hanya Tentang Performance

Ketika membahas observability, kita biasanya mulai dari tiga sinyal utama:

  • logs
  • metrics
  • traces

Logs membantu membaca event yang ditulis oleh aplikasi. Metrics membantu melihat pola angka secara agregat. Traces membantu memahami perjalanan request antar service.

Tetapi dalam konteks platform dan security, ada sinyal lain yang juga penting: runtime security events.

Runtime security events membantu menjawab pertanyaan seperti:

  • apakah ada command tidak biasa yang dijalankan di container?
  • apakah ada file sensitif yang diakses?
  • apakah ada process yang tidak sesuai dengan behavior normal aplikasi?
  • apakah ada aktivitas yang mengarah ke privilege escalation?
  • apakah workload melakukan hal yang tidak diharapkan setelah berjalan?

Aplikasi mungkin tidak pernah menulis event seperti ini ke log. Tetapi dari sisi security, event tersebut sangat penting.

Falco hadir untuk membantu membaca sinyal semacam ini.

Masalah yang Coba Diselesaikan Falco

Di environment modern, terutama Kubernetes, workload berjalan secara dinamis.

Pod bisa dibuat dan dihancurkan dengan cepat. Container bisa pindah node. Deployment bisa berubah berkali-kali dalam satu hari. Service bisa scale up dan scale down secara otomatis.

Di satu sisi, ini bagus untuk agility. Di sisi lain, ini membuat security monitoring menjadi lebih menantang.

Misalnya, jika seseorang masuk ke dalam container dan menjalankan shell, apakah kita akan tahu?

Jika ada process yang mencoba membaca file sensitif seperti /etc/shadow, apakah kita akan sadar?

Jika container mencoba mengakses path host yang tidak seharusnya, apakah ada alert?

Jika ada binary mencurigakan yang dijalankan di dalam pod, apakah event itu terlihat?

Tanpa runtime security monitoring, banyak aktivitas seperti ini bisa lewat begitu saja.

Log aplikasi belum tentu mencatatnya. Metric belum tentu menunjukkannya. Trace juga belum tentu menangkapnya.

Falco mencoba mengisi gap tersebut.

Apa Itu Falco?

Falco adalah runtime security tool yang digunakan untuk mendeteksi aktivitas mencurigakan pada Linux, container, dan Kubernetes.

Falco bekerja dengan membaca event dari sistem, lalu mencocokkannya dengan rule. Jika sebuah event cocok dengan rule tertentu, Falco akan menghasilkan alert.

Secara sederhana:

Runtime event
→ Falco rule
→ Security alert

Falco bisa mendeteksi berbagai aktivitas seperti:

  • shell dijalankan di dalam container
  • file sensitif dibaca
  • process mencurigakan dijalankan
  • container mencoba akses host filesystem
  • workload melakukan outbound connection yang tidak biasa
  • privilege escalation behavior
  • aktivitas yang tidak sesuai dengan baseline normal aplikasi

Falco tidak menggantikan log, metric, atau trace. Falco menambahkan layer security signal dari runtime behavior.

Bagaimana Falco Bekerja?

Secara high-level, Falco bekerja seperti ini:

Linux / Container / Kubernetes Runtime
→ system events
→ Falco engine
→ Falco rules
→ alerts / logs / notifications

Falco membaca event dari runtime, misalnya syscall atau event dari Kubernetes audit log. Event tersebut kemudian dievaluasi menggunakan rule.

Jika event cocok dengan kondisi rule, Falco menghasilkan output berupa alert.

Contohnya:

A shell was spawned in a container

Atau:

Sensitive file opened for reading by a non-trusted process

Alert ini bisa dikirim ke berbagai destination, tergantung setup yang digunakan. Bisa ke stdout, file, syslog, webhook, Slack, event pipeline, SIEM, atau observability stack lain.

Dalam praktik production, Falco biasanya tidak berdiri sendirian. Falco lebih berguna jika alert-nya masuk ke workflow investigasi yang jelas.

Konsep Dasar Falco

Sebelum memakai Falco, ada beberapa konsep dasar yang perlu dipahami.

Runtime Event

Runtime event adalah aktivitas yang terjadi saat sistem sedang berjalan.

Contoh runtime event:

  • process dibuat
  • file dibuka
  • network connection dibuat
  • command dijalankan
  • container dibuat
  • Kubernetes resource berubah

Falco membaca event seperti ini untuk mendeteksi perilaku yang mencurigakan.

Syscall

Syscall adalah cara program berinteraksi dengan kernel Linux.

Ketika sebuah process membaca file, membuka network connection, membuat process baru, atau menjalankan command, aktivitas tersebut bisa muncul sebagai syscall.

Falco bisa menggunakan syscall sebagai sumber sinyal untuk mendeteksi aktivitas di level runtime.

Ini yang membuat Falco berbeda dari sekadar application logging. Falco tidak hanya bergantung pada apa yang aplikasi tulis. Falco melihat perilaku yang terjadi di level sistem.

Rule

Rule adalah aturan yang digunakan Falco untuk menentukan apakah sebuah event mencurigakan atau tidak.

Rule biasanya berisi:

  • nama rule
  • kondisi
  • output alert
  • priority
  • tag

Contoh konsepnya:

Jika shell dijalankan di dalam container,
dan container bukan bagian dari workload yang memang membutuhkan shell,
maka buat alert.

Rule membuat Falco bisa disesuaikan dengan kebutuhan environment.

Condition

Condition adalah bagian dari rule yang menentukan kapan alert harus dibuat.

Misalnya:

event type adalah execve
dan process name adalah bash
dan workload berjalan di container

Condition harus dirancang dengan hati-hati. Kalau terlalu longgar, alert bisa terlalu banyak. Kalau terlalu ketat, event penting bisa tidak terdeteksi.

Output

Output adalah pesan alert yang dihasilkan ketika rule cocok.

Output harus cukup informatif agar engineer bisa melakukan investigasi.

Contoh informasi yang berguna:

  • nama rule
  • nama process
  • command yang dijalankan
  • container name
  • pod name
  • namespace
  • user
  • node
  • severity
  • timestamp

Output yang bagus membantu mempercepat triage.

Priority

Priority menunjukkan tingkat pentingnya alert.

Contoh priority:

  • DEBUG
  • INFORMATIONAL
  • NOTICE
  • WARNING
  • ERROR
  • CRITICAL

Tidak semua alert harus dianggap incident besar. Priority membantu membedakan mana yang perlu investigasi cepat dan mana yang hanya perlu observasi.

Contoh Aktivitas yang Bisa Dideteksi Falco

Falco bisa digunakan untuk mendeteksi banyak aktivitas runtime.

Beberapa contoh yang umum:

Shell Dibuka di Dalam Container

Di production, container biasanya menjalankan aplikasi utama, bukan interactive shell.

Jika tiba-tiba ada bash atau sh yang dijalankan di dalam container, itu bisa menjadi sinyal penting.

Bukan berarti selalu malicious. Bisa saja engineer sedang debugging. Tetapi tetap perlu terlihat.

A shell was spawned in a container

Alert seperti ini membantu platform atau security team mengetahui bahwa ada aktivitas manual di workload.

File Sensitif Dibaca

Falco juga bisa mendeteksi akses ke file sensitif.

Contoh:

/etc/shadow
/etc/passwd
/root/.ssh
/proc

Tidak semua akses file sensitif selalu berbahaya, tetapi akses semacam ini perlu diperhatikan, terutama jika dilakukan oleh process yang tidak biasa.

Process Tidak Biasa Berjalan

Sebuah container biasanya punya behavior yang cukup predictable.

Misalnya API service hanya menjalankan binary aplikasi. Jika tiba-tiba ada process lain seperti curl, wget, nc, atau shell tool lain, itu bisa menjadi sinyal mencurigakan.

Falco bisa membantu mendeteksi aktivitas semacam ini.

Akses ke Host Path

Container yang mencoba mengakses host filesystem bisa menjadi sinyal serius, terutama jika workload tersebut tidak seharusnya punya akses ke host.

Falco bisa membantu mendeteksi aktivitas yang mengarah ke container escape atau privilege misuse.

Outbound Connection Mencurigakan

Falco juga bisa digunakan untuk mendeteksi koneksi network yang tidak biasa.

Misalnya sebuah service yang biasanya hanya berbicara ke database internal tiba-tiba membuka koneksi ke endpoint eksternal yang tidak dikenal.

Ini bisa menjadi sinyal untuk investigasi lebih lanjut.

Falco di Kubernetes

Falco sering digunakan di Kubernetes karena Kubernetes environment sangat dinamis.

Di Kubernetes, Falco bisa membantu memberikan konteks tambahan seperti:

  • namespace
  • pod name
  • container name
  • image
  • node
  • labels
  • Kubernetes resource context

Konteks ini penting karena alert yang hanya mengatakan:

shell spawned

kurang cukup untuk investigasi.

Alert yang lebih berguna adalah:

shell spawned in pod payment-api-7d9f9c in namespace production on node ip-10-0-1-20

Dengan konteks Kubernetes, engineer bisa lebih cepat memahami workload mana yang perlu dicek.

Falco juga membantu platform team melihat aktivitas runtime yang mungkin tidak terlihat dari deployment manifest saja.

Manifest bisa terlihat aman, tetapi behavior runtime tetap perlu dipantau.

Falco dan Security Logs

Falco menghasilkan security logs atau security alerts berdasarkan behavior runtime.

Ini berbeda dari application logs.

Application logs biasanya menjawab:

Apa yang aplikasi katakan sedang terjadi?

Falco alerts menjawab:

Apa yang sistem lihat sedang terjadi?

Keduanya penting.

Aplikasi mungkin tidak pernah menulis log ketika seseorang membuka shell di container. Tetapi Falco bisa melihat event runtime tersebut.

Aplikasi mungkin tidak mencatat bahwa process tertentu membaca file sensitif. Tetapi Falco bisa mendeteksinya dari aktivitas sistem.

Karena itu, Falco cocok ditempatkan sebagai bagian dari security observability.

Kapan Falco Sangat Membantu?

Falco sangat membantu ketika kita ingin punya visibility terhadap runtime behavior.

Contoh use case:

  • mendeteksi aktivitas manual di production container
  • mendeteksi command mencurigakan di pod
  • melihat akses ke file sensitif
  • mendeteksi privilege escalation behavior
  • mendeteksi container yang mencoba akses host path
  • memperkaya security incident investigation
  • mengirim runtime security alert ke SIEM atau alerting pipeline
  • membantu compliance dan audit trail runtime

Falco juga berguna untuk platform engineer karena membantu menjawab pertanyaan:

Apa yang sebenarnya terjadi di workload setelah deployment berjalan?

Bukan hanya:

Apa yang tertulis di manifest?

Hal yang Perlu Diperhatikan Saat Menggunakan Falco

Falco sangat powerful, tetapi ada beberapa hal yang perlu diperhatikan.

Alert Fatigue

Jika rule terlalu banyak atau terlalu sensitif, Falco bisa menghasilkan terlalu banyak alert.

Jika alert terlalu banyak, engineer bisa mulai mengabaikannya.

Ini berbahaya karena alert penting bisa tenggelam di antara noise.

False Positive

Tidak semua alert berarti incident.

Contohnya, shell di container bisa saja bagian dari proses debugging yang sah. Akses file tertentu bisa saja normal untuk workload tertentu.

Karena itu, rule perlu disesuaikan dengan baseline environment.

Rule Tuning

Falco akan jauh lebih berguna jika rule disesuaikan dengan konteks organisasi.

Default rule bisa menjadi awal yang baik, tetapi production environment biasanya membutuhkan tuning.

Rule tuning membantu membedakan behavior normal dan behavior mencurigakan.

Sensitive Data di Alert

Output alert harus informatif, tetapi tidak boleh membocorkan data sensitif.

Hindari memasukkan token, secret, password, personal data, atau payload sensitif ke dalam alert output.

Security tool juga harus tetap aman dalam cara menyimpan dan mengirim data.

Response Workflow

Alert tanpa workflow hanya akan menjadi noise.

Sebelum menggunakan Falco secara serius, perlu jelas:

  • alert dikirim ke mana?
  • siapa yang menerima alert?
  • kapan alert perlu diinvestigasi?
  • bagaimana cara menentukan severity?
  • apa langkah response awal?
  • kapan perlu eskalasi?

Falco bukan hanya soal instalasi tool. Falco perlu masuk ke workflow operasi dan security response.

Falco Bukan Silver Bullet

Falco membantu runtime security monitoring, tetapi bukan solusi tunggal untuk semua masalah security.

Falco tidak menggantikan:

  • image scanning
  • dependency scanning
  • secret scanning
  • network policy
  • RBAC hardening
  • admission control
  • vulnerability management
  • secure CI/CD
  • audit logging

Falco lebih tepat dilihat sebagai salah satu layer pertahanan.

Di security, visibility adalah bagian penting dari defense. Tetapi visibility harus digabung dengan prevention, hardening, response, dan continuous improvement.

Penutup

Falco membantu kita melihat security signal dari runtime behavior.

Jika logs memberi tahu apa yang aplikasi tulis, metrics memberi tahu pola angka, dan traces memberi tahu perjalanan request, maka Falco membantu melihat aktivitas mencurigakan yang terjadi saat workload berjalan.

Di Kubernetes dan Linux environment, visibility seperti ini sangat penting.

Karena tidak semua aktivitas penting muncul dari application logs. Kadang, sinyal paling penting justru datang dari behavior sistem itu sendiri.

Falco membuat sinyal tersebut lebih mudah terlihat, dipahami, dan ditindaklanjuti.

Pada akhirnya, tujuan menggunakan Falco bukan untuk membuat sistem terlihat lebih kompleks. Tujuannya adalah membuat kita lebih cepat sadar ketika ada sesuatu yang tidak biasa terjadi di runtime.

Dan dalam security, kemampuan untuk melihat lebih cepat sering kali menjadi pembeda antara incident kecil dan masalah besar.