Membedah selinuxfs di /sys/fs/selinux sebagai jembatan userspace-kernel, file enforce dan booleans runtime, verifikasi labeling dengan matchpathcon, serta inspeksi live dengan seinfo, sesearch, dan semanage.

Di episode 15 kalian membaca denial dari ausearch, mengubah boolean dengan setsebool, dan menjalankan semanage. Semua itu bekerja — tapi pernahkah kalian bertanya di mana sebenarnya titik pertemuan antara userspace dan kernel? Jawabannya adalah selinuxfs: sebuah virtual filesystem yang dibuka kernel khusus untuk SELinux, dan menjadi tempat libselinux, semua tooling, serta kalian sendiri berbicara dengan kernel.
Episode ini membuka kap mesin. Kita bedah isi /sys/fs/selinux, pahami interaksi userspace-kernel (termasuk cache AVC di userspace), lalu lengkapi dengan toolkit inspeksi runtime: matchpathcon untuk verifikasi label, seinfo untuk menjelajah policy, dan semanage untuk melihat konfigurasi yang benar-benar berlaku di mesin live. Di akhir episode, ketika sebuah mesin "aneh", kalian akan tahu persis dari mana mulai menyelidikinya.
selinuxfs adalah filesystem virtual (tanpa isi di disk) yang dibuat kernel untuk SELinux, biasanya di-mount di /sys/fs/selinux. Konfirmasi:
mount | grep selinuxfsselinuxfs on /sys/fs/selinux type selinuxfs (rw,nosuid,nodev,noexec,relatime)Perhatikan: filesystem ini tidak ada saat SELinux di-set ke disabled — hanya ada saat mode enforcing atau permissive. Ini adalah poin diagnostik yang sangat berguna: jika /sys/fs/selinux tidak ter-mount, SELinux tidak aktif di level kernel, apa pun yang diklaim file konfigurasi.
Isi direktori ini adalah gerbang komunikasi dengan kernel. Beberapa file yang paling penting:
ls /sys/fs/selinux
cat /sys/fs/selinux/enforce
cat /sys/fs/selinux/policyversenforce avc booleans context create deny_unknown policy policy_capabilities policyvers status validatetrans
1
33Makna masing-masing:
enforce — berisi 1 (enforcing) atau 0 (permissive). Menulis 1 atau 0 ke file ini setara setenforce 1/setenforce 0. Inilah "tombol" level terendah.policyvers — versi maksimum policy binary yang didukung kernel (di sini 33 untuk kernel modern). Versi ini menaik setiap kali kernel menambah fitur policy.policy — image policy binary yang sedang dimuat; tooling menyimpannya ke disk sebagai artefak forensik.booleans/ — satu file per boolean; membacanya menunjukkan nilai boolean aktif saat ini di kernel, terlepas dari apa yang diklaim userspace:cat /sys/fs/selinux/booleans/httpd_can_network_connectavc/ — statistik cache AVC kernel (hash_stats, cache_stats). Tingginya angka cache lookups yang lolos berarti policy jarang di-query — normal; yang perlu diperhatikan adalah denial yang muncul bersamaan.Sekarang bagian yang menyatukan semuanya: bagaimana tooling SELinux berbicara dengan kernel? Jawabannya: libselinux — pustaka userspace yang dipakai hampir semua tool — membaca dan menulis file di selinuxfs. Alur untuk satu keputusan akses:
open()).status yang memberikan notifikasi saat policy atau boolean berubah.Artinya, ketika kalian menjalankan setsebool -P, yang terjadi adalah: perubahan ditulis ke store policy (/var/lib/selinux/<policy>/), kernel diberi tahu lewat file boolean di selinuxfs, dan userspace yang sedang menunggu mendapat notifikasi untuk menyegarkan cache-nya. Semua lapisan sinkron — dan selinuxfs adalah sumbu sambungannya.
Tip
Jika kalian mengubah boolean lewat semanage boolean atau setsebool lalu melihat perilaku aplikasi tidak berubah, bandingkan nilai di cat /sys/fs/selinux/booleans/<nama> dengan nilai di store. Yang aktif di kernel adalah kebenaran; nilai di file konfigurasi hanyalah keinginan.
Di episode 5 kita memperkenalkan restorecon. Sekarang kita gunakan alat pembandingnya untuk verifikasi tanpa mengubah apa pun: matchpathcon mencocokkan path dengan konteks default yang seharusnya menurut semanage fcontext:
matchpathcon /var/www/html/index.html
matchpathcon -V /var/www/html/var/www/html/index.html verified.-V memverifikasi seluruh isi direktori terhadap konteks default — dan hanya melaporkan yang tidak cocok, tanpa mengubah apa pun. Ini adalah alat audit labeling paling aman yang ada: tidak menulis, hanya membandingkan. Bandingkan dengan restorecon -n yang menampilkan apa yang akan diubah tanpa menerapkannya:
restorecon -n -R -v /var/www/htmlseinfo (bagian dari setools) membaca policy aktif dan menjawab pertanyaan katalogikal: "berapa banyak tipe? boolean apa saja? atribut apa yang dimiliki tipe ini?" Dua bentuk yang paling berguna:
seinfo -t
seinfo -bBooleans: 294Dengan bendera -x (expand), seinfo menampilkan detail per tipe — termasuk atribut yang dimilikinya. Ini sangat berguna saat kalian menemukan denial dan ingin tahu "tipe ini bagian dari atribut apa?":
seinfo -xtype httpd_tJika seinfo adalah kamus policy, sesearch adalah penyelidiknya — kita sudah memakainya di episode 13 dan 14 untuk menemukan aturan. Kombinasi keduanya adalah toolkit analisis statis: seinfo untuk struktur, sesearch untuk perilaku.
Inspeksi runtime tidak lengkap tanpa melihat apa yang berubah dari default. Di sinilah flag -C (custom) pada semanage menjadi emas — ia menampilkan hanya entri yang kalian (atau seseorang) tambahkan ke store, bukan seluruh database:
semanage fcontext -l -C
semanage boolean -l -C
semanage port -l -C
semanage permissive -l
semanage login -lsemanage fcontext -l -C
/data/vms(/.*)? all files system_u:object_r:virt_image_t:s0Empat perintah tersebut adalah "snapshot kesehatan konfigurasi": file context kustom, boolean yang diubah, port yang dilabel ulang, dan domain permissive. Jika ada sesuatu yang "tidak kalian ingat pernah pasang", ini baris pertama bukti penyelidikan — persis seperti yang kita lakukan di forensik episode 15.
Satu lagi yang sering dilupakan saat inspeksi live: sestatus -v menampilkan konteks dari proses dan file penting (sshd, cron, /etc/shadow) sekaligus memverifikasinya sekaligus. Untuk host yang dikelola banyak orang, menjalankan lima perintah -C di atas setiap kali ada perubahan besar adalah kebiasaan yang murah dan sangat bernilai.
Pada episode 16 ini kalian telah membuka kap mesin SELinux: memahami selinuxfs sebagai virtual filesystem jembatan userspace-kernel (dan bukti diagnostik bahwa SELinux aktif), membaca dan menulis file enforce, memeriksa policyvers dan boolean langsung dari kernel, memahami sinkronisasi cache AVC lewat notifikasi netlink, memverifikasi labeling dengan matchpathcon dan restorecon -n, menjelajah katalog policy dengan seinfo -t/seinfo -b/seinfo -xtype, serta melakukan inspeksi live dengan semanage ... -l -C untuk menemukan setiap perubahan kustom.
Inti yang harus kalian bawa:
/sys/fs/selinux.selinuxfs (enforce, booleans) adalah kebenaran runtime; file konfigurasi hanyalah keinginan.matchpathcon -V memverifikasi label tanpa mengubah apa pun — alat audit teraman.seinfo untuk struktur policy, sesearch untuk perilakunya.semanage ... -l -C adalah kamera pengintai untuk setiap perubahan kustom di store.Sekarang kalian bisa membedah mesin hidup sampai ke jembatan kernel-nya. Tapi semua tooling ini memakai policy yang sudah jadi. Bagaimana jika kalian ingin membangun policy berskala besar dengan kontrol penuh — bukan satu modul kecil seperti episode 12, melainkan arsitektur policy berlapis? Di episode 17 berikutnya kita masuk Advanced Policy Development (CIL & Module Layers): bahasa CIL modern, kompilasi dengan secilc, hierarki policy modular, perbedaan modul .pp dan CIL, pengelolaan dependensi, hingga best practices maintainability untuk policy produksi. Sampai jumpa di episode 17!