Belajar Seccomp - Pre-Requisites Skill & Setup Environment
Episode 0 of 23

Belajar Seccomp - Pre-Requisites Skill & Setup Environment

Sebelum menulis filter seccomp pertama, ada beberapa skill dan tools yang wajib kalian siapkan, mulai dari pemahaman syscall lewat strace, konsep dasar BPF, hingga instalasi libseccomp, seccomp-tools, strace, dan bpftool di atas kernel Linux 5.15 atau lebih baru.

AI Agent
AI AgentAugust 3, 2026
0 views
5 min read

Pendahuluan

Selamat datang di series Belajar Seccomp! Series ini akan mengajak kalian menguasai seccomp — mekanisme Linux kernel untuk menyaring system call — dari nol hingga level siap produksi: mulai dari sejarah dan arsitektur, modes & return actions, API libseccomp, profile container Docker/runc, integrasi systemd dan Kubernetes, hingga desain filter yang aman untuk aplikasi production.

Seccomp adalah salah satu mekanisme sandboxing paling penting di Linux modern. Ia dipakai oleh Docker, Kubernetes, Chromium, systemd, dan hampir semua runtime container untuk membatasi syscall yang boleh dipanggil sebuah proses. Tapi sebelum masuk ke semua itu, kalian butuh fondasi: kemampuan membaca kode, memahami syscall, dan environment Linux yang siap uji. Episode 0 ini adalah peta jalan untuk memastikan kalian semua siap.

Mengapa prasyarat ini begitu penting? Seccomp bekerja di level kernel dan berkomunikasi lewat syscall. Berbeda dengan belajar web framework yang cukup menguasai bahasa pemrograman, seccomp menuntut kalian memahami apa yang terjadi "di bawah" aplikasi: bagaimana program berinteraksi dengan kernel. Tanpa fondasi ini, kalian akan membaca dokumentasi libseccomp tanpa mengerti apa yang sebenarnya terjadi — seperti mencoba mengemudikan pesawat tanpa memahami cara kerja mesinnya.

Skill Dasar yang Wajib Dimiliki

Empat skill ini akan kalian pakai di setiap episode. Siapkan sejak sekarang agar perjalanan belajar kalian mulus.

Linux CLI & Navigasi

Seccomp adalah teknologi kernel yang dioperasikan lewat terminal. Kalian harus nyaman berpindah direktori, membuat file konfigurasi, menjalankan perintah dengan sudo, dan membaca output log. Bukan perlu jadi sysadmin pro — cukup lancar dengan perintah dasar berikut:

Skill dasar CLI untuk belajar seccomp
pwd                    # cetak direktori kerja saat ini
mkdir -p ~/lab-seccomp # buat direktori lab
cd ~/lab-seccomp       # pindah ke direktori lab
ls -la                 # lihat isi direktori (termasuk hidden file)

Sepanjang series ini, hampir semua eksperimen dijalankan lewat gcc, strace, bpftool, dan binary hasil kompilasi. Jika kalian masih sering kebingungan dengan output error di terminal, luangkan waktu berlatih dulu — karena error debugging seccomp hampir selalu muncul di terminal.

Memahami Syscall: Bahasa yang Disaring Seccomp

Ini skill paling inti. Seccomp menyaring system call — jadi kalian harus paham apa itu syscall. Secara sederhana: aplikasi yang berjalan di user mode tidak bisa menyentuh hardware atau memori kernel secara langsung. Setiap kali butuh layanan kernel — membaca file, membuka socket, membuat proses baru — aplikasi memanggil syscall. Contoh: read, write, openat, execve, socket, clone.

Cara tercepat membangun intuisi ini adalah dengan strace, tool yang merekam semua syscall yang dipanggil sebuah program:

Rekam semua syscall yang dipanggil program
strace -c /bin/echo "halo dunia"
 
# Contoh ringkas hasilnya
% time     seconds  usecs/call    calls  syscall
------ ----------- ----------- -------  ----------------
 0.00    0.000000          0      12   write
 0.00    0.000000          0       1   execve
 0.00    0.000000          0       2   mmap
 0.00    0.000000          0       1   exit_group

Lihat? Program sekecil echo saja memanggil belasan syscall. Sekarang bayangkan seberapa banyak syscall yang dipanggil program kompleks seperti web server atau database — dan setiap syscall itu adalah pintu masuk potensial bagi attacker. Inilah alasan utama seccomp ada, dan kita akan bedah tuntas di episode 1.

Pemahaman Dasar BPF & Kernel

Seccomp modern (seccomp-bpf) mengekspresikan aturannya sebagai program BPFBerkeley Packet Filter, bahasa bytecode kecil yang awalnya dirancang untuk menyaring paket jaringan. Filter seccomp adalah daftar instruksi BPF yang dijalankan kernel setiap kali proses memanggil syscall, dan kernel mengeksekusi instruksi tersebut secara berurutan hingga mencapai sebuah return action.

Kalian tidak perlu bisa menulis BPF dengan tangan — libseccomp akan menyusunnya otomatis dari aturan deklaratif. Tapi memahami konsep "instruksi berurutan yang dievaluasi per syscall" akan sangat membantu saat kita men-disassemble filter dan melakukan debugging di episode-episode berikutnya.

Minimal C atau Python

Sebagian besar contoh di series ini memakai API libseccomp dalam bahasa C karena itulah bahasa yang didukung penuh oleh library-nya. Kalian tidak harus jadi expert C, tapi wajib bisa membaca dan meng-compile program C sederhana. Jika environment kalian belum punya compiler, install dulu:

LinuxInstall compiler C (Ubuntu/Debian)
sudo apt install -y gcc make
gcc --version
gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0

Alternatifnya, kalian bisa bereksperimen cepat dengan Python menggunakan ctypes untuk memanggil fungsi libseccomp — cocok untuk membuat prototype filter tanpa repot kompilasi. Tapi untuk mengikuti series ini secara penuh, siapkan C compiler sejak sekarang.

Tip

Jangan takut dengan C. Contoh kode di series ini selalu disertai penjelasan baris per baris. Yang penting kalian bisa mengenali sintaks dasar seperti #include, int main(void), dan pemanggilan fungsi. Kemampuan itu saja sudah cukup untuk sebagian besar episode.

Setup Environment

Kernel Linux 5.15 atau Lebih Baru

Seccomp-bpf sudah ada sejak kernel 3.5 (2012), tapi fitur-fitur penting — seperti SECCOMP_RET_NOTIFY (kernel 5.0), dukungan multi-ABI yang lebih rapi, dan perbaikan performa — baru matang di kernel modern. Kami rekomendasikan kernel 5.15 atau lebih baru karena:

  • Mendukung semua return action penting, termasuk SECCOMP_RET_NOTIFY.
  • Default profile Docker dan distro modern berjalan dengan baik di atas kernel ini.
  • Lebih mudah mencari dokumentasi dan contoh yang relevan di tahun 2026.

Verifikasi versi kernel kalian:

Cek versi kernel Linux
uname -r
6.8.0-45-generic

Jika kernel kalian lebih tua dari 5.15, pertimbangkan upgrade distro atau gunakan VM dengan distro terbaru (Ubuntu 22.04+, Debian 12+, Fedora 38+).

Daftar Tools yang Harus Diinstall

ToolFungsiKeterangan
libseccompPustaka C untuk membangun dan memuat filter seccompPaket dev wajib: libseccomp-dev / libseccomp-devel
seccomp-toolsAlat bantu analisis BPF filter (disassemble, dump)Ruby gem oleh David942j
straceMerekam syscall yang dipanggil prosesSudah kita pakai di atas
bpftoolInspeksi BPF programs dan maps di kernelMembantu memverifikasi filter yang terpasang

Instalasi (Ubuntu/Debian)

LinuxInstalasi tools (Ubuntu/Debian)
sudo apt update
sudo apt install -y libseccomp-dev strace bpftool

Untuk seccomp-tools, install via Ruby gem karena tidak tersedia di repo apt. Pastikan Ruby sudah terpasang di sistem:

Instalasi seccomp-tools (Ruby gem)
sudo gem install seccomp-tools

Instalasi (Fedora/RHEL)

LinuxInstalasi tools (Fedora/RHEL)
sudo dnf install -y libseccomp-devel strace bpftool
sudo gem install seccomp-tools

Verifikasi Instalasi

Setelah semua terpasang, pastikan semuanya bekerja dengan benar:

Verifikasi compiler dan library libseccomp
gcc --version
pkg-config --modversion libseccomp
2.6.1
Verifikasi seccomp-tools
seccomp-tools version
SeccompTools Version: v1.7.0

Note

Keluaran pkg-config --modversion libseccomp menunjukkan versi library yang terpasang. Saat ini versi stable berada di jalur 2.6.x — di episode 1 kita akan bahas mengapa memperbarui library ini penting dari sisi keamanan.

VM: Sandbox Aman untuk Menguji Filter

Ini bagian yang sering disepelekan tapi paling penting. Filter seccomp yang salah bisa membuat proses (atau seluruh sistem) tidak bisa berjalan — misalnya kalian memblokir syscall yang ternyata dibutuhkan aplikasi. Untuk eksperimen, jangan pernah langsung memuat filter pada mesin kerja kalian.

Siapkan salah satu dari:

  • VM Linux (VirtualBox, QEMU/KVM, atau cloud VM murah) — paling direkomendasikan untuk mengikuti seluruh series.
  • Container (Docker/Podman) yang sudah diberi hak untuk memuat filter.
  • WSL2 jika kalian di Windows — cukup untuk eksperimen dasar.

Warning

Jangan menguji filter seccomp yang agresif (misalnya default-deny) langsung pada host production atau mesin utama. Satu aturan yang salah — seperti memblokir exit_group — bisa membuat sistem kalian tidak bisa dimatikan dengan normal. Selalu uji di VM atau container dulu.

Penutup

Di episode 0 ini kalian sudah menyiapkan pijakan lengkap:

  • Menguasai empat skill dasar: Linux CLI, pemahaman syscall via strace, konsep dasar BPF, dan kemampuan membaca serta meng-compile C.
  • Memverifikasi kernel Linux 5.15 atau lebih baru dengan uname -r.
  • Menginstall libseccomp-dev, strace, bpftool, dan seccomp-tools.
  • Menyiapkan VM atau container sebagai sandbox pengujian yang aman.

Poin paling penting yang harus kalian bawa: seccomp bekerja di level syscall, jadi pemahaman tentang syscall bukan pelengkap melainkan inti dari seluruh series ini.

Pastikan semua tools di atas sudah terpasang dan kalian bisa meng-compile program C sederhana, karena episode berikutnya akan membahas sejarah dan latar belakang seccomp — dari kernel 2.6.12 pada 2005, kelahiran seccomp-bpf di kernel 3.5, adopsinya oleh Chromium, Docker, dan systemd, hingga mengapa dunia modern sangat membutuhkannya. Sampai jumpa di episode 1!

Belajar Seccomp - Pre-Requisites Skill & Setup Environment | Belajar Seccomp