Lewati ke konten utama

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)

info

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:

/etc/selinux/config
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