Belajar OpenBSD - Konsep Dasar & Arsitektur Utama
Episode 2 of 23

Belajar OpenBSD - Konsep Dasar & Arsitektur Utama

Membongkar arsitektur OpenBSD: pemisahan base system dari packages, perbedaan release, snapshot, dan -current, serta peran komponen inti seperti kernel dengan KARL, pf, OpenSSH, LibreSSL, OpenSMTPD, httpd, relayd, tmux, doas, dan sandboxing pledge/unveil.

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

Pendahuluan

Di episode 1 sebelumnya, kalian sudah memahami sejarah dan filosofi secure by default yang menjiwai OpenBSD. Sekarang waktunya membongkar arsitektur — bagaimana sistem ini disusun sehingga filosofi itu bisa dijalankan. Setelah episode ini, kalian akan tahu mengapa OpenBSD terasa "bersih" dan mudah dipahami dibanding sistem lain yang menumpuk lapisan demi lapisan.

Arsitektur OpenBSD bisa diringkas dalam satu kalimat: base system yang lengkap dan teruji dipisahkan secara tegas dari package pihak ketiga, dengan kernel dan userland yang dirancang saling melengkapi demi keamanan.

Konsep Dasar & Arsitektur Utama

Sebelum menyelam ke komponen satu per satu, ada baiknya kalian mengunci tiga konsep dasar yang menjadi tulang punggung arsitektur OpenBSD:

  • Base system vs packages: sistem inti yang diaudit tim OpenBSD dipisahkan tegas dari aplikasi pihak ketiga. Dua dunia ini berbeda tingkat kepercayaannya, dan batas di antara keduanya selalu dijaga.
  • Release, snapshot, dan -current: model pengembangan tiga jalur menentukan dari mana kalian mengambil kode — mulai dari rilis stabil yang dipakai produksi hingga cabang pengembangan untuk penguji dan pemburu bug.
  • Kernel dengan KARL dan KASLR: mitigasi memory corruption sudah aktif sejak boot; kernel di-link ulang secara acak setiap kali reboot sehingga tata letak memorinya tidak bisa ditebak oleh penyerang.

Ketiga konsep ini akan kembali muncul di hampir semua episode series ini. Memahaminya sejak awal membuat perintah-perintah yang terlihat teknis terasa seperti lanjutan logis dari satu desain, bukan sekadar kumpulan trik.

Base System vs Packages

Konsep yang paling membedakan OpenBSD dari kebanyakan distribusi Linux adalah pembagian yang tegas antara dua dunia:

  • Base system: kernel + userland + utilitas inti yang dikelola tim OpenBSD sendiri. Ini termasuk sh, ksh, vi, kompiler C, pf, OpenSSH, LibreSSL, dan semua yang dibutuhkan sistem untuk hidup. Base system diinstal dari file set seperti base74.tgz dan diperbarui lewat sysupgrade atau syspatch.
  • Packages: aplikasi pihak ketiga (nginx, postgresql, dll.) yang dikompilasi dari ports. Diinstal dengan pkg_add ke /usr/local, terpisah dari base system.

Pemisahan ini penting secara keamanan dan operasional. Base system dipercaya dan diaudit; package adalah kode pihak ketiga yang hidup di lingkungan "pengguna". Kalian bisa melihat batasnya dengan pkg_info — package yang terinstal dilaporkan di sana, bukan di base system.

Release, Snapshot, dan -current

OpenBSD memakai model pengembangan yang jelas:

KategoriDeskripsiKapan Dipakai
-releaseRilis stabil yang dirilis setiap 6 bulan (contoh 7.4)Produksi, kebanyakan pengguna
-stableRilis yang menerima patch keamanan lewat syspatchProduksi yang butuh patch tanpa upgrade
snapshotBuild harian dari cabang -currentPengujian fitur terbaru, development
-currentCabang pengembangan utamaPengembang, penguji, pemburu bug

Pemilihan antara -release/-stable dan -current akan dibahas mendalam di episode 20. Untuk sekarang, ingat: produksi memakai -stable, dan syspatch adalah mekanisme resmi untuk patch keamanan tanpa mengubah versi rilis.

Kernel: Jantung OpenBSD

Kernel OpenBSD adalah monolitik namun dirancang dengan praktik keamanan yang modern. Beberapa fitur yang patut dikenal sejak awal:

  • rthreads: kernel yang mendukung threading dan SMP (symmetric multiprocessing) dengan matang — dasar bagi kinerja modern.
  • KARL (Kernel Address Randomization Link): setiap kali reboot, kernel di-link ulang sehingga alamat internalnya berubah secara acak. Ini membuat eksploitasi bug kernel jauh lebih sulit karena penyerang tidak tahu tata letak memorinya.
  • W^X: memori tidak pernah writable dan executable sekaligus, memblokir banyak kelas serangan.
  • Randomisasi pada stack, heap, dan PIE (position-independent executable).

Konsultasikan konfigurasi kernel berjalan lewat sysctl kern.osrelease dan lihat parameter keamanan dengan sysctl kern. Detail hardening dibahas di episode 15.

KARL dan KASLR

KARL (Kernel Address Randomized Link) adalah jawaban OpenBSD untuk kernel ASLR (KASLR). Pada setiap boot, kernel di-link ulang dalam urutan yang acak oleh reorder_kernel, sehingga susunan simbol, fungsi, dan struktur datanya berubah tiap kali sistem dinyalakan. Akibatnya, teknik eksploitasi yang bergantung pada alamat tetap di dalam kernel kehilangan pijakannya — penyerang tidak bisa memprediksi di mana fungsi penting berada.

Bandingkan dengan ASLR pada proses userland: setiap program dimuat di alamat yang acak setiap kali dijalankan. Kombinasi keduanya membuat lapisan memori OpenBSD sulit dipetakan dari luar. Kalian bisa membuktikan efek KARL secara langsung dengan membandingkan hash kernel sebelum dan sesudah reboot:

Bukti KARL bekerja
sha256 /bsd
ls -l /bsd

Catat hash dari sha256 /bsd, lalu reboot mesin kalian. Setelah reboot, hash tersebut akan berbeda — bukti bahwa kernel yang sedang berjalan adalah hasil link ulang yang berubah dari boot sebelumnya.

Userland yang Teruji

Di atas kernel ada userland: program-program yang berinteraksi dengan kalian setiap hari — shell, kompiler, utilitas, daemon. Yang membuat userland OpenBSD istimewa adalah ia dikelola langsung oleh tim yang sama dengan kernel, dengan satu standar kode dan satu gaya. Tidak ada "ekosistem pihak ketiga" di dalam base system; semuanya adalah satu kesatuan yang diperbarui, di-audit, dan dirilis bersama. Inilah yang membuat OpenBSD terasa begitu koheren dibanding sistem yang menyatukan ribuan proyek berbeda.

Komponen Utama Base System

Satu instalasi default sudah membawa ekosistem server yang lengkap. Berikut peta komponen yang akan kalian pelajari di series ini:

KomponenFungsiEpisode
pfPacket filter: firewall, NAT, load balancing dasar12-13
OpenSSHSSH server dan klien yang aman, lahir dari OpenBSD14
LibreSSLFork OpenSSL untuk TLS yang lebih bersih dan aman10
OpenSMTPDMail server sederhana dan aman17
httpdWeb server native yang ringan9
relaydRelay dan load balancer layer 4/716
tmuxTerminal multiplexer bawaandipakai lintas episode
doasPengganti sudo untuk privilege escalation5
vmm/vmdHypervisor tipe 1 untuk virtualisasi18

Tidak ada yang harus diinstal untuk menjalankan layanan dasar — ini salah satu keunggulan OpenBSD.

Sandboxing Syscall: pledge dan unveil

Dua fitur yang mungkin paling ikonik dari OpenBSD adalah mekanisme sandboxing yang bekerja di userland:

  • pledge(2): proses dapat "berjanji" syscall apa saja yang akan dipakainya. Begitu janji diucapkan, syscall di luar itu ditolak dengan cepat. Contoh: pledge("stdio rpath", NULL) berarti proses hanya boleh memakai I/O standar dan membaca file.
  • unveil(2): proses membatasi akses filesystem — hanya path yang di-unveil yang bisa diakses, dan hanya dengan izin yang diberikan (read, write, execute).

Keduanya akan dibahas secara praktis di episode 15. Yang perlu dipahami sekarang: setiap program serius di OpenBSD diharapkan memakai pledge dan unveil, termasuk banyak program di base system.

Mengapa Arsitektur Ini Membantu Kalian Belajar

Pemisahan tegas antara base system dan packages, serta konsistensi antar komponen, membuat OpenBSD sangat mudah dipelajari. Ketika kalian belajar rcctl untuk satu service, kalian tahu semua service lain mengikuti pola yang sama. Ketika kalian belajar konfigurasi satu daemon, formatnya mirip dengan yang lain. Pola berulang inilah yang mempercepat penguasaan: sekali paham logikanya, sisanya tinggal mengikuti.

Bagaimana Semua Terhubung

Bayangkan alur sebuah permintaan ke web server OpenBSD. Trafik masuk lewat antarmuka jaringan, dicek pf dengan ruleset ketat, dilayani httpd yang sudah di-pledge dan di-unveil, berkomunikasi lewat LibreSSL untuk TLS, dan diawasi lewat log syslog yang dipisahkan oleh newsyslog. Di belakangnya, sshd hanya menerima kunci ed25519, dan setiap perintah administratif melewati doas yang tercatat.

Semua lapisan ini bekerja bersama tanpa pihak ketiga wajib. Inilah arsitektur yang membuat OpenBSD mampu menjanjikan keamanan secara bawaan.

Verifikasi komponen yang sedang berjalan di sistem kalian:

Lihat layanan dan kernel yang aktif
uname -r
sysctl kern.syncdelay
ls /etc/rc.d

Penutup

Di episode 2 ini kalian memahami kerangka berpikir arsitektur OpenBSD: base system yang lengkap terpisah tegas dari packages, model release/stability/current yang jelas, kernel dengan mitigasi modern seperti KARL dan W^X, serta ekosistem tooling bawaan yang saling melengkapi.

Inti yang harus dibawa pulang:

  • Base system dan packages adalah dua dunia terpisah; package hidup di /usr/local.
  • Produksi memakai -release/-stable, bukan -current.
  • Kernel menerapkan mitigasi proaktif: KARL, W^X, dan randomisasi memori.
  • pf, OpenSSH, LibreSSL, httpd, relayd, OpenSMTPD, dan tmux sudah ada di base system.

Di episode 3 selanjutnya, kita akan menginstal OpenBSD dan membuat partisi — langkah demi langkah lewat installer, memahami file set, fdisk dengan GPT, disklabel, filesystem FFS2, dan swap. Pastikan VM dari episode 0 sudah siap boot!