Mengenal boolean dan tunable SELinux sebagai saklar perilaku policy yang bisa diubah tanpa menulis ulang modul: cara membaca status dengan getsebool, mengubah secara sementara dan persisten dengan setsebool -P, boolean umum untuk web, samba, dan FTP, serta cara mengaudit perubahan yang pernah dilakukan.

Di episode 5, kalian melihat bagaimana policy module mengatur domain: setiap proses memakai domain tertentu, dan aturan allow menentukan apa yang boleh dilakukan domain itu. Ketika muncul denial, naluri pertama adalah membuka policy dan menulis modul baru. Padahal, dalam banyak kasus ada jalan yang jauh lebih cepat dan aman: boolean.
Boolean SELinux adalah saklar perilaku policy yang sudah disiapkan oleh pembuat policy. Kalian tidak perlu menulis satu baris aturan pun — cukup nyalakan saklarnya.
Bayangkan policy SELinux seperti instalasi listrik rumah. Boolean adalah saklar lampu: posisinya bisa diubah kapan saja tanpa mematikan sumber listrik rumah. Tunable adalah pekerjaan rewiring di panel listrik: mengubahnya memerlukan pekerjaan menyeluruh karena melibatkan compile ulang policy. Keduanya menghasilkan perilaku yang berbeda — aliran listrik yang berbeda — tetapi biaya dan cara mengubahnya tidak sama.
Di level teknis, boolean hidup dalam blok if di dalam policy:
if (httpd_can_network_connect) {
allow httpd_t http_client_port_t:tcp_socket name_connect;
}Jika boolean bernilai true, cabang aturan di atas ikut dimuat dan denial hilang. Jika false, aturan itu tidak ada. Nilai inilah yang kalian ubah dengan perintah setsebool, bukan dengan memodifikasi modul.
Tunable dibedakan oleh bendera khusus di dalam policy. Saat policy di-compile, cabang tunable yang mati bahkan dibuang dari policy final — konsekuensinya, mengubah tunable membutuhkan reload policy, tidak semudah membalik saklar. Untuk praktik sehari-hari, anggap saja: boolean bisa diubah kapan saja, tunable hanya diubah saat ada alasan kuat.
Note
Cara cepat membedakannya: semua tunable ikut tampil di getsebool -a, tetapi dalam semanage boolean -l muncul dengan penanda khusus. Fokus utama kalian sebagai administrator adalah boolean biasa — karena itulah alat yang paling sering dipakai menyelesaikan denial produksi tanpa downtime.
Sebelum mengubah apa pun, lihat dulu nilai sekarang. Dua perintah yang wajib hafal:
getsebool -a untuk daftar semua boolean dan nilai saat ini.semanage boolean -l untuk daftar lengkap beserta deskripsi singkat.getsebool -a | grep httpdOutput semanage boolean -l kira-kira seperti ini (disederhanakan):
httpd_can_network_connect (on, on) httpd can make network connections
httpd_can_network_connect_db (off, off) httpd can connect to database
httpd_enable_homedirs (off, off) support httpd in home dirsPerhatikan kolom terakhir: deskripsi adalah kalimat singkat dari pembuat policy. Ini bukan hiasan — ia adalah dokumentasi resmi tentang efek boolean itu. Biasakan membaca deskripsi sebelum menyalakan apa pun. Kolom (on, on) menunjukkan nilai saat ini dan nilai default; membandingkan keduanya cepat memberi tahu konfigurasi mana yang menyimpang dari bawaan.
Ada dua cara menyalakan boolean, dan keduanya punya efek yang sangat berbeda:
sudo setsebool httpd_can_network_connect on
sudo setsebool -P httpd_can_network_connect onPerintah pertama hanya berlaku hingga sistem reboot — bagus untuk uji coba cepat: kalau ternyata bukan itu penyebabnya, tinggal reboot atau setel kembali ke off. Perintah kedua dengan flag -P (persistent) menulis nilai itu ke policy store sehingga bertahan lintas reboot.
Nilai persisten disimpan sebagai file teks sederhana di dalam policy store, biasanya /var/lib/selinux/targeted/active/booleans.local:
httpd_can_network_connect=1
samba_enable_home_dirs=1Karena isinya hanyalah teks, kalian bisa menjadikannya bagian dari konfigurasi versi: gunakan semanage boolean -E untuk mengekspor pengaturan boolean saat ini ke file, dan semanage boolean -F untuk mengimpornya kembali. Inilah dasar dari pendekatan policy-as-code yang akan kita dalami di episode-episode akhir series ini.
Warning
Hati-hati dengan keliru memakai mode. Jika kalian hanya menjalankan setsebool tanpa -P di server produksi lalu lupa, perubahan itu hilang diam-diam saat reboot — dan incident yang semula sudah "diatasi" akan muncul lagi. Kebiasaan yang baik: gunakan -P hanya setelah pengujian selesai, dan catat setiap perubahan di changelog. Untuk banyak host, jangan set manual satu per satu — gunakan Ansible atau tooling config management yang akan kita bahas di episode khusus.
Beberapa boolean muncul berulang kali di hampir semua job desk sysadmin. Tabel berikut adalah "kamus saku" yang perlu kalian hafal:
| Boolean | Efek | Contoh penggunaan |
|---|---|---|
httpd_can_network_connect | izinkan httpd membuat koneksi keluar | reverse proxy ke aplikasi backend |
httpd_can_network_connect_db | izinkan httpd terhubung ke database | aplikasi web memakai MySQL atau PostgreSQL |
httpd_enable_homedirs | izinkan httpd membaca direktori home | web hosting per user |
httpd_enable_cgi | izinkan eksekusi script CGI | aplikasi berbasis CGI |
samba_enable_home_dirs | izinkan samba membaca direktori home | file server untuk home user |
ftpd_anon_write | izinkan penulisan oleh anonymous FTP | FTP server untuk upload |
container_connect_any | izinkan container menghubungi port mana pun | workload container dengan port dinamis |
Tip
Pola pemecahan masalah yang benar: denial muncul, lihat deskripsi boolean yang paling cocok dengan gejala, aktifkan hanya boolean itu, lalu verifikasi denial hilang dengan ausearch atau log aplikasi. Jangan pernah "nyalakan semua boolean" untuk menghentikan error — itu sama saja mematikan SELinux sepotong demi sepotong, dan meniadakan proteksi yang sedang kalian bangun.
Boolean adalah konfigurasi yang mudah dicabut dan dipasang — dan karena itu juga mudah disalahgunakan. Audit log mencatat setiap pemuatan policy baru, termasuk yang dipicu oleh setsebool -P. Periksa riwayatnya dengan:
ausearch -m MAC_POLICY_LOAD -ts recentJadikan ini bagian dari alur investigasi: kapan boolean berubah, apakah perubahan itu berkorelasi dengan mulai munculnya masalah, dan siapa yang melakukannya. Tanpa jejak audit, debugging masalah keamanan yang aneh hanya akan menjadi tebak-tebakan.
Pada episode 6 ini kalian sudah memahami bahwa boolean adalah saklar perilaku policy yang tidak memerlukan penulisan ulang modul: cara membacanya dengan getsebool dan semanage boolean -l, cara mengubahnya secara sementara maupun persisten dengan setsebool -P, kamus boolean yang paling sering dipakai, serta cara mengaudit perubahan lewat log.
Kunci yang harus dibawa pulang:
setsebool tanpa -P dulu, baru persistenkan setelah terbukti.Ada kalanya boolean tidak menyediakan saklar yang kalian butuhkan, dan denial tetap muncul meski semua boolean relevan sudah on. Saat itulah kalian masuk ke dunia pembuatan policy lokal. Di episode 7, kita akan membongkar audit2allow & Local Policy Generation: workflow debug denial yang benar, dari membaca log audit, meminta saran aturan ke audit2allow, hingga membuat dan menginstall modul policy sendiri dengan audit2allow -M dan semodule -i, beserta best practice agar kalian tidak sekadar generate policy secara buta.