Menelusuri mengapa dunia butuh SELinux: keterbatasan DAC yang hanya membatasi berdasarkan user dan group, kelahiran proyek SELinux oleh NSA bersama Red Hat, integrasinya ke kernel Linux 2.6 pada 2003, hingga ekosistem modern userspace 3.11 yang dipakai hari ini.

Di episode 0 sebelumnya kita menyiapkan environment: menginstall tools userspace SELinux dan memverifikasi bahwa sistem berjalan dalam mode enforcing. Pada episode kali ini kita akan menarik napas sejenak dari hands-on dan menjawab pertanyaan paling mendasar: mengapa SELinux ada? Tanpa memahami masalah yang ingin dipecahkan, kalian hanya akan menghafal perintah tanpa pernah paham kapan dan kenapa perintah itu diperlukan.
Kita akan menelusuri sejarah kelahiran SELinux, memahami keterbatasan sistem permission klasik Linux (DAC), dan melihat bagaimana Mandatory Access Control (MAC) mengubah aturan main keamanan di level sistem operasi. Seperti kata pepatah, kita perlu memahami masa lalu agar tidak mengulangi kesalahan yang sama di masa depan.
Sebelum SELinux lahir, Linux mengandalkan DAC (Discretionary Access Control) — sistem permission yang sudah kalian pelajari di episode 0: file punya pemilik, dan pemilik berhak menentukan siapa yang boleh mengakses. Ini disebut discretionary karena keputusan akses ada di tangan pemilik objek (user), yang bisa "memberi" akses ke siapa pun sesuka hatinya.
Masalahnya, DAC memiliki tiga kelemahan fundamental:
chmod tidak berlaku untuknya. Ini seperti memberi satu orang kunci ke seluruh gedung.Analogi paling pas: DAC itu seperti pintu gedung dengan kartu identitas. Selama kalian punya kartu (user yang valid), kalian bisa masuk ke ruangan mana pun yang pintunya tidak dikunci — bahkan ruangan yang isinya sama sekali tidak berhubungan dengan pekerjaan kalian. Kartu di tangan penjahat pun tetap berfungsi sama baiknya.
Dari keterbatasan itulah lahir konsep MAC (Mandatory Access Control). Berbeda dengan DAC yang "discretionary" (terserah pemilik), MAC bersifat "mandatory" (wajib): aturan akses ditentukan oleh kebijakan terpusat, bukan oleh pemilik objek. Pemilik file tidak bisa "memberi" akses lebih dari yang diizinkan kebijakan.
Prinsip kunci yang wajib kalian ingat sepanjang series ini:
Dengan MAC, bahkan root pun dibatasi oleh kebijakan.
Ini lompatan besar. Di dunia MAC, setiap proses dan setiap objek diberi label konteks (security context). Kebijakan (policy) menentukan pasangan proses-label mana yang boleh berinteraksi dengan objek-label mana. Root pun hanyalah salah satu proses berlabel — jika kebijakan tidak mengizinkannya mengakses sesuatu, akses itu akan ditolak, sekalipun UID-nya nol.
Untuk memperjelas perbedaan kedua dunia ini, mari bandingkan DAC dan MAC secara berdampingan:
| Aspek | DAC (klasik) | MAC (SELinux) |
|---|---|---|
| Penentu akses | Pemilik objek (user) | Kebijakan terpusat (policy) |
| Basis keputusan | User dan group | Label konteks proses dan objek |
| Root | Tidak dibatasi | Dibatasi oleh policy |
| Pemilik file | Bebas mengubah izinnya | Tidak bisa memberi akses melebihi policy |
| Prinsip default | Akses terbuka kecuali dikunci | Tertutup kecuali diizinkan |
Pertimbangkan satu skenario untuk merasakan perbedaannya. Bayangkan sebuah web server yang dieksploitasi penyerang: di dunia DAC, proses web server berjalan sebagai user www-data — begitu aplikasi di-exploit, penyerang bisa membaca file apa pun yang bisa dibaca www-data, termasuk file konfigurasi aplikasi, kredensial database, bahkan data pengguna jika permission-nya longgar. Di dunia MAC, proses tersebut berjalan dalam domain berlabel httpd_t — penyerang tetap terjebak di domain itu, dan tidak bisa menyentuh file berlabel passwd_t atau shadow_t, apa pun permission file-nya. Itulah kekuatan yang ingin dibawa SELinux ke Linux: membatasi kerusakan, bukan hanya mencegah serangan.
Sebelum melangkah lebih jauh, mari buang beberapa miskonsepsi yang sering membuat orang takut pada SELinux:
chmod dan chown.SELinux adalah implementasi MAC untuk Linux yang dikembangkan oleh National Security Agency (NSA) bekerja sama dengan Red Hat dan komunitas Linux. Proyek ini dimulai pada awal 2000-an, dengan tujuan membawa keamanan ala lembaga pertahanan (yang sudah lama diterapkan di sistem operasi khusus) ke Linux arus utama.
Perjalanannya ringkas:
| Tahun | Tonggak |
|---|---|
| 2000-an awal | NSA dan Red Hat mulai mengembangkan SELinux sebagai proyek bersama |
| 2003 | SELinux diintegrasikan ke kernel Linux 2.6 — tersedia untuk semua distro |
| 2004–2005 | Red Hat Enterprise Linux mengaktifkan SELinux secara default |
| 2013-an | SEAndroid membawa SELinux ke Android — kini dipakai miliaran perangkat |
Saat ini, SELinux menjadi default enforcing di RHEL, Fedora, dan CentOS. Di Debian, statusnya sebaliknya — minimal dan tidak default (mereka memilih AppArmor). Android sendiri menjalankan SEAndroid, varian SELinux yang dioptimalkan untuk perangkat mobile — jadi perangkat di saku kalian sehari-hari sebenarnya sudah menjalankan teknologi ini.
Sebagai gambaran, berikut potongan log yang akan sangat akrab bagi kalian di episode-episode troubleshooting nanti — contoh denial AVC (Access Vector Cache) saat sebuah proses ditolak:
type=AVC msg=audit(1754256000.123:456): avc: denied { read } for pid=1234 comm="nginx" name="index.html" dev="sda1" ino=5678 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:user_home_t:s0 tclass=filePerhatikan bagian scontext (konteks subjek/proses) dan tcontext (konteks target/objek): proses berlabel httpd_t menolak membaca file berlabel user_home_t. Inilah inti MAC — bukan siapa user-nya, melainkan label apa yang terlibat. Kita akan membedah setiap bagian log ini di episode 2 dan 3.
SELinux bukan sekadar kernel — ia adalah ekosistem lengkap yang terus berevolusi. Pada Juli 2026, userspace SELinux mencapai versi 3.11, dengan seperangkat tools modern yang justru akan kalian pakai setiap hari:
semodule — mengelola modul policy: menginstall, menghapus, dan menonaktifkan modul.semanage — mengelola konfigurasi runtime seperti pemetaan label filesystem, port, dan user.audit2allow — membaca log denial dan menghasilkan aturan policy yang mengizinkan — tools yang akan kita dalami di episode-episode berikutnya.Tools inilah yang membedakan SELinux modern dari citra lamanya yang "sulit dan menyeramkan". Dengan userspace yang matang, mengelola policy SELinux hari ini jauh lebih mudah daripada sepuluh tahun lalu — dan itulah salah satu alasan series ini layak kalian pelajari dari nol.
chmod/firewall. Ketiganya bekerja di lapisan berbeda. Kalian tetap butuh DAC, tetap butuh firewall — SELinux melengkapi, bukan menggantikan.Pada episode 1 ini kita telah menelusuri mengapa SELinux lahir: keterbatasan DAC yang hanya membatasi berdasarkan user dan group, konsep MAC yang membatasi semua orang — termasuk root — berdasarkan kebijakan terpusat dan label konteks, sejarah pengembangan NSA bersama Red Hat sejak awal 2000-an, integrasi ke kernel 2.6 pada 2003, hingga ekosistem userspace 3.11 modern yang dipakai hari ini.
Inti yang harus kalian bawa:
scontext dan tcontext — bukan musuh, melainkan data untuk didiagnosis.Pemahaman "mengapa" ini menjadi fondasi untuk memahami "bagaimana" SELinux bekerja. Di episode 2 selanjutnya, kita akan membahas konsep dasar & arsitektur utama — membedah Type Enforcement, membongkar format security context user:role:type:sensitivity, memahami peran AVC, hingga struktur kernel LSM dan tools userspace yang menyusun keseluruhan sistem. Pastikan tetap semangat, karena dari sinilah kalian mulai benar-benar memahami cara kerja SELinux dari dalam!