Secara global disini maksudnya agar rule dari SELinux ini aktif dan berlaku untuk seluruh service yang berjalan.
Pertama, pastikan selinux kalian sudah aktif. Cek dengan perintah
sestatus
Jika statusnya belum enable, kita aktifkan terlebih dahulu selinux secara global dengan perintah
sudo setenforce Enforcing
Atau aktifkan secara permanen dengan cara mengedit file
/etc/selinux/config dan ubah baris Ubah baris
SELINUX, ubah nilainya menjadi menjadi
SELINUX=enforcing.
Install sealert
Kedua tool ini berguna untuk memeriksa kesalahan kesalahan konfigurasi dari aplikasi.
sudo yum install policycoreutils-python setroubleshoot-server
Atur Mode Permissive di Nginx
Selanjutnya adalah mengubah (sementara) mode selinux di Nginx ke
permissive. Tujuannya agar kita bisa memeriksa apakah rule dari SELinux berbenturan dengan konfigurasi yang kita tetapkan di Nginx. Di mode permissive saat ada kesalahan konfigurasi atau ada konfigurasi di Nginx yang tidak memenuhi standar keamanan menurut SELinux, SELinux tidak akan mentrigger firewall yang menyebabkan Nginx menjadi error, namun hanya akan mencatat seluruh kesalahan tersebut dalam file log. Gunakan
semanage untuk mengatur mode permissive di selinux Nginx.
sudo semanage permissive -a httpd_t
Ok, sekarang seluruh kesalahan konfigurasi akan dicatat dalam file log, namun Nginx masih bisa berjalan normal tanpa diblokir oleh selinux.
Melihat Peletakan Konfigurasi yang Benar
Maksud dari peletakan konfigurasi yang benar disini adalah tempat tempat file ataupun direktori nginx yang sesuai dengan selinux. Misal direktori standard untuk web server adalah di
/usr/share/nginx/html.
sudo semanage fcontext -l | grep nginx
Memeriksa Kesalahan Konfigurasi
Gunakan perintah
sudo sealert -a /var/log/audit/audit.log
Contoh output:
Well, error tersebut disebabkan karena saya menggunakan direktori Nginx yang non standard. Saya menggunakan lokasi file web di /server/labs-server yangmana menyalahi aturan dari SELinux.
Solusinya adalah mengubah direktori web server ke lokasi default di
/usr/share/nginx, atau mengijinkan SELinux menggunakan direktori non standard. Untuk opsi kedua, gunakan perintah
sudo semanage fcontext -a -t httpd_sys_content_t "/server(/.*)?"
sudo restorecon -R -v /server
Mengembalikan Nginx ke Mode Enforcing
Jika semuanya sudah oke, tidak ada yang error lagi, jalankan perintah berikut untuk menjalankan mode enforcing di Nginx.
sudo semanage permissive -d httpd_t
Untuk beberapa perintah atau opsi yang bisa digunakan, kalian bisa cek dengan command
man httpd_selinux
Oke mungkin sekian tutorial kali ini, semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.
Referensi:
- https://www.getpagespeed.com/server-setup/nginx/nginx-selinux-configuration
- https://www.rootusers.com/how-to-enable-or-disable-selinux-in-centos-rhel-7/
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/index
- https://www.nginx.com/blog/using-nginx-plus-with-selinux/
Comments
Post a Comment