Mengenal SELinux: Fungsi, Cara Kerja, dan Kenapa Penting untuk Keamanan Server
Apa Itu SELinux?
SELinux (Security-Enhanced Linux) adalah mekanisme keamanan berbasis Mandatory Access Control (MAC) yang berjalan langsung di level kernel Linux.
Berbeda dengan sistem permission biasa seperti chmod, SELinux memberikan lapisan keamanan tambahan yang mengatur siapa boleh mengakses apa, bahkan jika proses tersebut sudah memiliki hak akses sebagai root.
Singkatnya:
SELinux membatasi dampak ketika sistem sudah berhasil diretas.
Kenapa Permission Linux Biasa Tidak Cukup?
Secara default, Linux menggunakan model keamanan bernama DAC (Discretionary Access Control).
Contoh DAC:
chmod 600 file.txt
chown user:group file.txt
Masalahnya:
- Jika sebuah service diretas, attacker bisa bergerak sesuai permission user tersebut.
- Root bisa mengakses hampir semua hal.
- Tidak ada pembatasan granular antar service.
Di sinilah SELinux berperan.
Bagaimana Cara Kerja SELinux?
SELinux bekerja dengan konsep:
- Subject → Proses (contoh: httpd, nginx, mysql)
- Object → File, port, socket, device
- Type → Label keamanan
- Policy → Aturan siapa boleh akses apa
Setiap file dan proses memiliki security context.
Contoh melihat context:
ls -Z
Format context:
user:role:type:level
Yang paling penting adalah bagian type.
Contoh Type yang Sering Ditemui
Berikut beberapa contoh type yang umum digunakan di server Linux:
httpd_t→ Domain proses Apache/Web Serverhttpd_sys_content_t→ File yang boleh dibaca web servermysqld_t→ Domain proses MySQL/MariaDBvar_log_t→ File log sistemshadow_t→ File sensitif seperti/etc/shadowuser_home_t→ File di direktori home user
Contoh praktis:
Jika proses httpd_t mencoba membaca file dengan type httpd_sys_content_t, maka diizinkan.
Namun jika httpd_t mencoba membaca file dengan type shadow_t, maka akan ditolak dan muncul log:
avc: denied
Inilah inti dari Type Enforcement — akses ditentukan berdasarkan type, bukan hanya permission file biasa.
Contoh aturan sederhana:
httpd_tboleh membacahttpd_sys_content_thttpd_ttidak boleh membacashadow_t
Jika dilanggar, akan muncul:
avc: denied
Mode SELinux
Ada tiga mode utama:
- Enforcing → Aktif dan memblokir akses yang tidak sesuai policy
- Permissive → Hanya mencatat log tanpa memblokir
- Disabled → SELinux tidak aktif
Cek status:
getenforce
Ubah sementara:
setenforce 0 # permissive
setenforce 1 # enforcing
Fungsi Utama SELinux
Containment (Pembatasan Dampak)
Jika web server terkena exploit, attacker tetap terkunci dalam domain web server tersebut.
Isolasi Antar Service
Service tidak bisa sembarangan membaca file service lain.
Mencegah Privilege Escalation
Walaupun attacker mendapatkan akses tertentu, ia tetap dibatasi oleh policy SELinux.
Keamanan Container
SELinux sangat penting untuk isolasi container agar tidak bisa mengakses host atau container lain.
Digunakan di Android
Android menggunakan SELinux dalam mode enforcing untuk memastikan setiap aplikasi tetap berada dalam sandbox-nya.
Contoh Kasus Nyata
Misalnya Apache diarahkan ke folder baru tanpa context yang benar.
Apache akan gagal membaca file tersebut meskipun permission sudah 777.
Solusi:
restorecon -Rv /var/www/html
Artinya, SELinux lebih kuat daripada permission biasa.
Apakah SELinux Menggantikan Firewall atau Antivirus?
Tidak.
SELinux bukan firewall dan bukan antivirus.
Ia adalah sistem policy enforcement yang berjalan di kernel untuk mengontrol akses antar proses dan resource.
Kesimpulan
SELinux adalah lapisan keamanan tambahan yang sangat penting dalam sistem Linux modern.
Ia tidak mencegah sistem diretas sepenuhnya, tetapi membatasi kerusakan yang dapat terjadi jika sebuah service berhasil dieksploitasi.
Untuk server production, container environment, maupun sistem Android, SELinux menjadi komponen penting dalam strategi keamanan berlapis (defense in depth).