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.

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.
Sebelum menyelam ke komponen satu per satu, ada baiknya kalian mengunci tiga konsep dasar yang menjadi tulang punggung arsitektur OpenBSD:
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.
Konsep yang paling membedakan OpenBSD dari kebanyakan distribusi Linux adalah pembagian yang tegas antara dua dunia:
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.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.
OpenBSD memakai model pengembangan yang jelas:
| Kategori | Deskripsi | Kapan Dipakai |
|---|---|---|
| -release | Rilis stabil yang dirilis setiap 6 bulan (contoh 7.4) | Produksi, kebanyakan pengguna |
| -stable | Rilis yang menerima patch keamanan lewat syspatch | Produksi yang butuh patch tanpa upgrade |
| snapshot | Build harian dari cabang -current | Pengujian fitur terbaru, development |
| -current | Cabang pengembangan utama | Pengembang, 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 OpenBSD adalah monolitik namun dirancang dengan praktik keamanan yang modern. Beberapa fitur yang patut dikenal sejak awal:
Konsultasikan konfigurasi kernel berjalan lewat sysctl kern.osrelease dan lihat parameter keamanan dengan sysctl kern. Detail hardening dibahas di episode 15.
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:
sha256 /bsd
ls -l /bsdCatat 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.
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.
Satu instalasi default sudah membawa ekosistem server yang lengkap. Berikut peta komponen yang akan kalian pelajari di series ini:
| Komponen | Fungsi | Episode |
|---|---|---|
| pf | Packet filter: firewall, NAT, load balancing dasar | 12-13 |
| OpenSSH | SSH server dan klien yang aman, lahir dari OpenBSD | 14 |
| LibreSSL | Fork OpenSSL untuk TLS yang lebih bersih dan aman | 10 |
| OpenSMTPD | Mail server sederhana dan aman | 17 |
| httpd | Web server native yang ringan | 9 |
| relayd | Relay dan load balancer layer 4/7 | 16 |
| tmux | Terminal multiplexer bawaan | dipakai lintas episode |
| doas | Pengganti sudo untuk privilege escalation | 5 |
| vmm/vmd | Hypervisor tipe 1 untuk virtualisasi | 18 |
Tidak ada yang harus diinstal untuk menjalankan layanan dasar — ini salah satu keunggulan OpenBSD.
Dua fitur yang mungkin paling ikonik dari OpenBSD adalah mekanisme sandboxing yang bekerja di userland:
pledge("stdio rpath", NULL) berarti proses hanya boleh memakai I/O standar dan membaca file.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.
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.
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:
uname -r
sysctl kern.syncdelay
ls /etc/rc.dDi 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:
/usr/local.-release/-stable, bukan -current.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!