Menguasai lapisan keamanan terkuat AlmaLinux: memahami perbedaan MAC dan DAC, mengelola mode enforcing, permissive, dan disabled, membaca dan memperbaiki security context, mengatur boolean, serta troubleshooting service yang diblokir lewat ausearch dan sealert.

Di episode 12 sebelumnya kita merapikan logging, time sync, dan automation. Sekarang kita masuk ke lapisan yang membedakan AlmaLinux dari distro mainstream: SELinux. Ini adalah Mandatory Access Control (MAC) yang aktif secara default di AlmaLinux dalam mode enforcing — dan salah satu alasan utama mengapa ekosistem RHEL dikenal aman.
Episode ini membedah perbedaan MAC dan DAC, tiga mode SELinux, struktur security context, boolean, dan — yang paling penting — pola troubleshooting ketika SELinux memblokir service kalian.
Kalian sudah akrab dengan DAC (Discretionary Access Control) sejak episode 6: permission rwx yang dikendalikan pemilik file. Nama "discretionary" merujuk pada kenyataan bahwa pemilik objek bebas menentukan akses.
MAC (Mandatory Access Control) bekerja di atas DAC. Akses ditentukan oleh kebijakan terpusat berdasarkan label konteks — bukan oleh kehendak pemilik file. Dua perbedaan krusial:
Analoginya: DAC adalah kunci rumah yang bisa disalin pemiliknya; MAC adalah satpam gedung yang punya daftar resmi siapa boleh masuk ruangan mana — daftar yang tidak bisa diubah pemilik ruangan.
| Aspek | DAC | MAC (SELinux) |
|---|---|---|
| Penentu akses | Pemilik objek | Kebijakan terpusat |
| Basis keputusan | User dan group | Label konteks |
| Root | Tidak dibatasi | Dibatasi |
| Prinsip default | Terbuka kecuali dikunci | Tertutup kecuali diizinkan |
SELinux punya tiga mode yang bisa kalian temui:
| Mode | Perilaku |
|---|---|
| Enforcing | Policy ditegakkan; akses terlarang diblokir dan dicatat |
| Permissive | Pelanggaran dicatat tapi tidak diblokir |
| Disabled | SELinux mati total |
getenforce
sestatusgetenforce menampilkan mode berjalan; sestatus menampilkan status lengkap termasuk policy yang dimuat. Untuk berpindah mode tanpa reboot:
sudo setenforce 0
sudo setenforce 1setenforce 0 memakai mode permissive, setenforce 1 kembali enforcing. Ini mengubah mode berjalan saja — mode permanen dikendalikan di /etc/selinux/config.
Danger
Jangan pernah menonaktifkan SELinux di /etc/selinux/config dengan SELINUX=disabled sebagai solusi masalah. Denial SELinux adalah informasi — bukan musuh. Ikuti pola troubleshooting di bawah, bukan jalan pintas yang membuka lubang keamanan.
Setiap proses dan objek di SELinux punya security context — label yang menjadi dasar keputusan akses. Formatnya:
user:role:type:sensitivity
system_u:object_r:httpd_sys_content_t:s0Empat field: user, role, type, dan sensitivity. Yang paling sering kalian urus adalah type — untuk proses disebut domain. Lihat context dengan flag -Z:
ls -Z /var/www/html
ps -eZ | grep httpdMasalah SELinux paling umum: file disalin atau dipindahkan membawa label lama. Perbaiki dengan restorecon:
sudo restorecon -Rv /var/www/html-R rekursif, -v verbose. restorecon mengembalikan label sesuai aturan fcontext yang terdaftar.
Untuk direktori di luar lokasi standar, daftarkan aturan fcontext dengan semanage:
sudo semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"
sudo restorecon -Rv /srv/wwwsemanage fcontext -a menambahkan aturan label, lalu restorecon menerapkannya. Ini pola wajib saat menaruh konten web di lokasi non-standar.
Boolean adalah saklar on/off yang mengubah bagian dari policy tanpa menulis aturan baru — misalnya mengizinkan httpd mengakses jaringan:
getsebool -a | grep httpd
sudo setsebool -P httpd_can_network_connect onFlag -P membuat perubahan persisten (bertahan reboot). Tanpa -P, perubahan hanya berlaku sampai reboot — sering menjadi sumber kebingungan saat konfigurasi "tidak nyantol".
Ketika service tiba-tiba gagal — biasanya di log muncul permission denied misterius — langkah pertama: cek apakah SELinux yang memblokir.
sudo ausearch -m avc -ts recentsudo setenforce 0
systemctl restart myappPola diagnosis yang benar:
ausearch -m avc -ts recent.Untuk interpretasi ramah-manusia, pasang setroubleshoot yang menyediakan sealert:
sudo dnf5 install -y setroubleshoot-server
sudo sealert -a /var/log/audit/audit.logsealert -a menganalisis seluruh log audit dan memberikan rekomendasi langkah demi langkah — termasuk perintah restorecon atau setsebool yang tepat untuk memperbaiki masalah.
sudo aureport -a --summaryaureport -a --summary merangkum semua peristiwa audit — cara cepat melihat pola denial yang berulang.
setenforce 0 sebagai solusi permanen. Itu hanya sementara dan hilang saat reboot — perbaiki akar masalahnya.-P di setsebool. Tanpa -P, perubahan boolean hilang saat reboot.restorecon. Label ikut terbawa — selalu restore label di lokasi baru.ausearch. Setiap denial terekam; polanya adalah petunjuk diagnosis terbaik.Pada episode 13 ini kalian telah menguasai SELinux dan MAC: perbedaan mendasar MAC vs DAC, tiga mode enforcing, permissive, dan disabled, struktur security context, perbaikan label dengan restorecon dan semanage fcontext, pengaturan boolean, serta pola troubleshooting denial dengan ausearch dan sealert.
Inti yang harus dibawa pulang:
user:role:type:sensitivity — urus type-nya.restorecon memperbaiki label; semanage fcontext untuk lokasi kustom.-P untuk persisten.Dengan SELinux terkendali, kalian siap mengamankan akses jarak jauh. Di episode 14 selanjutnya, kita akan membahas SSH Hardening & Remote Access — konfigurasi sshd modern dengan kunci ed25519, menonaktifkan password dan root, Match untuk aturan kondisional, tunneling, serta hardening dengan Fail2ban dan AllowUsers. Sampai jumpa!