SELinux
SELinux adalah mekanisme keamanan tingkat kernel di Linux yang memberikan kontrol akses berbasis kebijakan (Mandatory Access Control/MAC). SELinux membantu membatasi proses dan pengguna agar hanya bisa mengakses sumber daya yang diperbolehkan, sehingga mencegah penyalahgunaan sistem bahkan jika service terkena exploit.
Cek Status SELinux
Jalankan perintah berikut
sestatus
Berikut hasil outputnya:
SELinux 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
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 33
Atau bisa juga menggunakan perintah berikut yang lebih simpel dan lansung menampilkan statusnya
getenforce
Contoh:
Enforcing
Berikut penjelasan output dari SELinux:
-
Enforcing
→ Aktif dan memblokir akses tak sesuai kebijakan. -
Permissive
→ Log saja (tidak memblokir). -
Disabled
→ Tidak aktif.
Mengubah Mode SELinux (Sementara)
Perubahan ini akan hilang setelah reboot.
Jalankan perintah berikut untuk mengubah ke mode Permissive
setenforce 0
Jalankan perintah berikut untuk mengubah ke mode Enforcing
setenforce 1
Mengubah Mode SELinux (Permanen)
Edit file konfigurasi SELinux berikut:
nano /etc/selinux/config
Untuk disable SELinux silahkan isi parameter berikut atau ubah parameter yang sudah ada menjadi:
SELINUX=disabled # Ubah ke permissive atau disabled jika perlu
SELINUXTYPE=targeted
Pilihan value pada SELinux:
-
enforcing
-
permissive
-
disabled
Jenis policy SELinux:
-
targeted
→ Default, hanya melindungi service tertentu (Apache, SSH, dsb). -
mls
→ Multi-Level Security, kompleks, untuk sistem keamanan tinggi (jarang digunakan umum).
Setelah mengubah SELinux silahkan reboot server:
reboot -h now
Cek Log pada SELinux
Log SELinux tersimpan di /var/log/audit.log
. Gunakan ausearch atau sealert (jika terinstal):
ausearch -m avc -ts recent
Atau untuk menganalisis:
sealert -a /var/log/audit/audit.log
Bisa menggunakan tail
sebagai berikut:
tail -f /var/log/audit/audit.log
Mengelola Boolean SELinux
Ada sebuah kasus dimana ketika SELinux dalam keadaan aktif dan kita menginstall Apache/HTTPD daemon tersebut tidak mengakses folder diluar direktori defaultnya. Maka jika ingin mengizinkan Apache mengakses folder luar silahkan jalankan perintah berikut:
chcon -Rt httpd_sys_content_t /var/www/custom-folder
setsebool -P httpd_read_user_content on
Lihat semua boolean:
getsebool -a
Lihat boolean spesifik:
getsebool httpd_can_network_connect
Aktifkan boolean. -P
agar permanen setelah reboot:
setsebool -P httpd_can_network_connect on