Sebelum masuk lebih dalam ke SELinux, ada beberapa skill dasar Linux yang wajib kalian kuasai terlebih dahulu: CLI dan shell, manajemen service systemd, permission file, hingga package manager dnf. Episode ini juga memandu kalian menyiapkan environment lab yang aman, menginstall tools userspace SELinux, dan memverifikasi bahwa SELinux aktif di sistem.

Selamat datang di series Belajar SELinux! Series ini akan membawa kalian memahami SELinux (Security-Enhanced Linux) — Linux Security Module yang menyediakan Mandatory Access Control (MAC) berbasis Type Enforcement — dari nol hingga level siap produksi. Total ada 23 episode yang akan menuntun kalian mulai dari memahami denial pertama hingga mengelola policy production yang aman, teraudit, dan siap dipakai di dunia nyata.
Sebelum mengetik getenforce pertama atau membaca log AVC yang berisi denial, ada beberapa skill dasar dan tools yang wajib kalian miliki terlebih dahulu. Mengapa prasyarat ini begitu penting? SELinux bukan fitur yang berdiri sendiri — ia berjalan di atas fondasi Linux yang sudah kalian kenal: permission file, systemd, package manager, dan CLI. Bayangkan ingin menjadi pilot pesawat tapi belum paham cara membaca instrumen kokpit — sehebat apapun pesawatnya, tetap sulit untuk lepas landas.
Episode 0 ini akan menjadi peta jalan: memastikan skill kalian sudah cukup, menyiapkan environment lab yang aman dengan distro yang SELinux-nya aktif, menginstall tools userspace, lalu memverifikasi bahwa sistem kalian siap. Setelah episode ini selesai, kalian sudah benar-benar siap melangkah ke episode 1 yang membahas sejarah dan latar belakang mengapa SELinux ada.
Kita mulai dari skill. Tanpa skill ini, tools secanggih apapun tidak akan berguna.
Kalian akan menghabiskan hampir seluruh waktu series ini di terminal. SELinux dikelola lewat perintah-perintah CLI seperti semanage, sesearch, restorecon, dan audit2allow — tanpa kenyamanan dengan baris perintah, semua tools itu hanya akan terasa seperti mantra ajaib tanpa makna. Pastikan kalian sudah nyaman dengan:
ls, cd, cat, grep, less, tail, dan find.| untuk merangkai perintah kecil menjadi satu pekerjaan kompleks.Tidak perlu menjadi script master. Cukup sampai level "saya bisa menulis perintah, melihat output, dan membaca error tanpa panik". Selebihnya akan terbentuk dengan sendirinya sepanjang series ini.
SELinux tidak bekerja sendirian — ia sangat bergantung pada layanan di bawahnya, dan hampir semua layanan itu dikelola oleh systemd. Kalian akan sering berinteraksi dengan service seperti auditd, sshd, dan httpd di episode-episode berikutnya. Kuasai empat operasi dasar berikut:
| Perintah | Fungsi |
|---|---|
systemctl status <service> | Melihat status, PID, dan log terbaru sebuah service |
systemctl start <service> | Menjalankan service |
systemctl enable --now <service> | Menjadikan service aktif dan berjalan otomatis saat boot |
systemctl restart <service> | Me-restart service setelah konfigurasi diubah |
Satu hal yang perlu kalian catat sejak sekarang: di dunia SELinux, setiap proses service berjalan dalam sebuah domain — istilah yang akan sangat sering kalian temui mulai episode 2. systemd dan SELinux adalah dua dunia yang saling beririsan, jadi pahami keduanya.
Ini adalah fondasi paling penting. Sebelum memahami MAC (Mandatory Access Control) milik SELinux, kalian harus paham dulu DAC (Discretionary Access Control) bawaan Linux — permission rwx untuk user, group, dan other yang selama ini kalian pakai dengan chmod dan chown. Ingat satu prinsip: SELinux bekerja di atas DAC, bukan menggantikannya. Sebuah akses harus lolos dua gerbang berlapis: DAC dulu, baru MAC.
chmod 750 /srv/www
chown arman:devops /srv/www
umask 022chmod 750 berarti pemilik boleh penuh, group boleh baca dan eksekusi, dan lainnya tanpa akses. umask 022 memastikan file baru tidak terbuka lebar secara tidak sengaja. Jika konsep ini masih terasa asing, sempatkan membaca ulang materi permission Linux sebelum lanjut — karena di episode 1 nanti kita akan membahas mengapa DAC saja tidak cukup untuk sistem yang benar-benar aman.
Series ini fokus pada ekosistem Red Hat, jadi dnf adalah teman harian kalian. Kalian akan menginstall tools userspace SELinux, mengupdate policy package, dan kadang menginstall package policy tambahan untuk aplikasi tertentu. Selain itu, pahami cara melihat proses dengan ps aux dan mematikan proses dengan kill — karena label konteks SELinux melekat pada proses, bukan pada perintah.
| Perintah | Fungsi |
|---|---|
sudo dnf install <package> | Menginstall package beserta dependensinya |
sudo dnf update | Memperbarui seluruh package sistem |
ps aux | Melihat seluruh proses yang berjalan |
kill <pid> | Menghentikan proses berdasarkan PID |
Setelah skill dasar siap, sekarang saatnya menyiapkan environment tempat kalian akan berlatih. Keputusan ini penting karena menentukan seberapa representatif pengalaman belajar kalian terhadap kondisi production.
SELinux adalah fitur yang paling matang di ekosistem Red Hat. Rekomendasi distro untuk series ini, urut dari yang paling disarankan:
Penting untuk dipahami: distro di luar keluarga Red Hat seperti Ubuntu dan Debian secara default menggunakan AppArmor, bukan SELinux. Mengaktifkan SELinux di sana membutuhkan langkah konfigurasi tambahan dan tidak disarankan untuk belajar — fokuslah pada satu ekosistem agar konsisten.
Praktik terbaik: jangan pernah belajar SELinux di host utama atau di server production. Gunakan Virtual Machine (VM). Di dalam VM, kalian bebas mengubah mode enforcing ke permissive, mengganti label konteks file sesuka hati, bahkan mematikan sistem sampai tidak bisa boot — dan semuanya tidak akan memengaruhi komputer utama kalian.
Satu kebiasaan yang akan sangat menyelamatkan kalian: buat snapshot sebelum bereksperimen. Label yang salah dengan chcon atau relabeling penuh dengan fixfiles bisa membuat sistem tidak berfungsi — dan snapshot adalah tombol undo kalian. Kalau rusak, restore saja.
Kernel hanyalah enforcer; tools untuk membaca policy, mengubah konteks, dan troubleshooting semuanya ada di package userspace. Setelah sistem bersih terinstall, install package berikut:
sudo dnf install -y selinux-policy-targeted policycoreutils-python-utils setools-console auditBerikut peran masing-masing package — kenali mereka karena akan menemani kalian sepanjang series ini:
| Package | Peran |
|---|---|
selinux-policy-targeted | Policy default (targeted) yang memuat aturan perlindungan |
policycoreutils-python-utils | Tools utama: semanage, audit2allow, restorecon |
setools-console | Tools analisis policy: sesearch, seinfo |
audit | Sistem audit: auditd dan ausearch, sumber log AVC |
Setelah install selesai, pastikan service auditd berjalan karena log denial SELinux ditulis lewat dia:
sudo systemctl enable --now auditdSaatnya memastikan semuanya siap. Pertama, cek mode SELinux yang sedang berjalan:
getenforceOutput Enforcing berarti SELinux aktif dan memblokir akses yang tidak diizinkan policy. Selanjutnya, lihat status lengkap:
sestatusSELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Memory protection checking: actual (secure)
Max kernel policy version: 34Tiga baris yang wajib kalian perhatikan: SELinux status: enabled (kernelnya aktif), Loaded policy name: targeted (policy yang dimuat), dan Current mode: enforcing (mode yang sedang berjalan). Jika ketiganya sesuai seperti di atas, environment kalian sudah resmi siap.
getenforce bahkan tidak akan ada. Pastikan kalian di keluarga RHEL/Fedora.semanage atau sesearch tidak ditemukan, kalian belum menginstall policycoreutils-python-utils dan setools-console.Di episode 0 ini kita sudah menyiapkan pijakan yang kokoh untuk seluruh perjalanan: memastikan kalian menguasai skill dasar Linux (CLI, systemd, permission, dnf), memilih distro keluarga Red Hat dengan SELinux aktif, menyiapkan lab VM yang aman, menginstall tools userspace, dan memverifikasi bahwa SELinux berjalan dalam mode enforcing.
Poin penting yang harus kalian bawa:
semanage, sesearch, audit2allow, ausearch) adalah senjata utama kalian — pastikan terinstall.getenforce dan sestatus.Ingat, series Belajar SELinux terdiri dari 23 episode yang saling membangun. Pastikan environment kalian sudah siap, karena di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa dunia butuh SELinux — mulai dari keterbatasan DAC, bagaimana NSA bersama Red Hat melahirkan proyek ini di awal 2000-an, hingga integrasinya ke kernel Linux 2.6 pada 2003. Pastikan tetap semangat, karena perjalanan belajar SELinux baru saja dimulai!