Rocky Linux: mode SELinux Enforcing, Permissive dan Disabled
Lebih aman untuk terlebih dahulu memeriksa masalah dan memodifikasi kebijakan yang diperlukan daripada mematikan SELinux (Security-Enhanced Linux) sepenuhnya di Rocky Linux. Jika diperlukan diagnostik, gunakan mode permissive secara sementara, dan pertimbangkan deaktivasi permanen hanya ketika tidak ada solusi lain karena perangkat lunak yang tidak kompatibel.
Perubahan memerlukan hak administratif dan harus sesuai kebijakan serta layanan yang terpasang. Prosedur penonaktifan penuh di bawah merujuk RHEL 9; periksa versi Rocky, pengelola boot dan akses konsol sebelum menerapkannya.
Periksa status SELinux saat ini
getenforce menampilkan mode operasi saat ini dalam satu baris, dan sestatus menampilkan informasi rinci seperti mode dan kebijakan dalam berkas konfigurasi.
getenforce
sestatus
| Mode | Makna |
|---|---|
Enforcing |
Mencatat pelanggaran kebijakan dan benar-benar menegakkannya. Status yang disarankan untuk server produksi. |
Permissive |
Mencatat pelanggaran kebijakan tetapi tidak menegakkannya. Cocok untuk analisis penyebab dan pengujian kebijakan. |
Disabled |
SELinux tidak berfungsi, dan manajemen konteks keamanan berkas juga dihentikan. |
Mode saat ini dapat berbeda dari nilai konfigurasi untuk boot berikutnya. Permissive tidak menghapus izin berkas biasa, aturan firewall, atau pemeriksaan akses lainnya. Dalam keadaan disabled, objek baru dapat tidak memiliki label SELinux yang tepat.
Sementara menggunakan mode Permissive
Ubah hanya untuk boot saat ini
Jika SELinux aktif, perintah berikut mengubah mode sesi yang berjalan menjadi Permissive. Gunakan untuk membandingkan gejala dan kembalikan penegakan setelah verifikasi selesai.
sudo setenforce 0
getenforce
setenforce tidak menyimpan perubahan permanen dan tidak dapat mengaktifkan SELinux yang Disabled. Mode boot berikutnya bergantung pada berkas konfigurasi dan argumen kernel; jangan berasumsi pasti kembali ke Enforcing.
Kembali ke mode Enforcing
sudo setenforce 1
getenforce
Fakta bahwa masalah hilang di mode Permissive hanya menunjukkan potensi masalah terkait SELinux, dan tidak berarti SELinux harus dinonaktifkan. Periksa log audit untuk memodifikasi konteks file, boolean, atau tipe port yang diperlukan.
Periksa penyebab pemblokiran
Lihat catatan penolakan AVC terbaru
Penolakan akses SELinux dicatat dalam log audit sebagai pesan AVC (Access Vector Cache). Catatan terbaru dapat dilihat sebagai berikut.
sudo ausearch -m AVC,USER_AVC -ts recent
Jika ausearch tidak tersedia, periksa paket audit dan status layanannya. Periksa proses dalam log, jalur target, dan izin yang diminta untuk menentukan apakah mereka sesuai dengan perilaku layanan yang sebenarnya.
Bandingkan waktu setelah mereproduksi masalah. Tidak adanya hasil bukan bukti bahwa SELinux tidak terlibat: periksa interval, status audit dan ketersediaan log. Jangan otomatis mengubah setiap penolakan menjadi aturan permisif.
Pemulihan Konteks Keamanan File
Jika konteks keamanan dokumen web atau data layanan tidak benar, lebih mudah untuk mendaftarkan aturan permanen dan menerapkannya dengan restorecon daripada membuat perubahan chcon secara sembarangan.
Periksa label saat ini dengan ls -Zd /srv/www dan pola yang diharapkan dengan matchpathcon /srv/www; sesuaikan jalur. Tinjau aturan lokal yang ada dan gunakan contoh hanya jika tipe tersebut cocok dengan layanan.
sudo semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?'
sudo restorecon -Rv /srv/www
Perintah semanage biasanya disediakan oleh paket policycoreutils-python-utils. Direktori yang memerlukan izin tulis harus diberikan tipe terpisah yang sesuai dengan tujuannya, dan tipe contoh tidak boleh diterapkan secara sembarangan.
httpd_sys_content_t bukan izin tulis umum dan izin Unix tetap diperlukan. Lihat semanage fcontext dan restorecon. Pratinjau dengan sudo restorecon -nRv /srv/www. Untuk membatalkan hanya aturan lokal baru, hapus pola yang tepat dengan sudo semanage fcontext -d '/srv/www(/.*)?' lalu jalankan restorecon lagi; jika aturan sebelumnya diubah, pulihkan nilainya.
Menyesuaikan Boolean dan Port Non-Standar
Mengizinkan Fungsi Layanan dengan Boolean
Fitur yang dapat dipilih yang disediakan oleh kebijakan sebelumnya dapat diaktifkan menggunakan boolean SELinux. Periksa nilai dan deskripsi saat ini, kemudian terapkan secara permanen hanya item yang diperlukan.
getsebool -a | grep httpd
sudo setsebool -P httpd_can_network_connect on
Contoh ini mengizinkan koneksi jaringan untuk domain HTTP sesuai kebijakan, bukan hanya satu tujuan. Catat nilai sebelumnya dan gunakan hanya bila diperlukan. -P menyimpan nilai secara permanen; periksa getsebool httpd_can_network_connect dan pulihkan nilai sebelumnya dengan -P jika perlu.
Mendaftarkan Jenis Port untuk Layanan
Jika sebuah layanan menggunakan port non-default, kebijakan port SELinux mungkin diperlukan selain izin firewall. Periksa pemetaan yang ada terlebih dahulu, kemudian tambahkan yang baru. Untuk kondisi dan prosedur terkait, lihat Cara Mengelola firewalld di Rocky Linux: Zona, Layanan, dan Port.
sudo semanage port -l | grep http_port_t
sudo semanage port -a -t http_port_t -p tcp 8088
Anda mungkin memerlukan -m daripada -a untuk mengubah jenis port yang sudah terdaftar. Pertama, periksa apakah port tersebut digunakan oleh layanan lain.
Kueri pertama hanya memfilter http_port_t; periksa juga daftar lengkap sudo semanage port -l, termasuk rentang dan tipe lain. Jangan gunakan -m tanpa meninjau layanan yang bergantung. Untuk membatalkan hanya penambahan lokal baru, gunakan sudo semanage port -d -p tcp 8088; jika memodifikasi aturan lama, pulihkan tipe sebelumnya. Aturan ini tidak membuka firewall atau mengubah port dengar layanan.
Pertahankan mode Permissive setelah booting
Untuk mempertahankan mode hanya catatan bahkan setelah reboot saat menyelidiki kompatibilitas aplikasi, cadangkan /etc/selinux/config dan atur SELINUX=permissive.
Pastikan hanya ada satu baris aktif SELINUX=. Jika /etc/selinux/config.backup sudah ada, pertahankan dan pilih nama lain pada baris pertama. Jalankan satu baris per satu dan lanjutkan hanya jika pencadangan berhasil; jangan mengubah SELINUXTYPE.
sudo cp -a /etc/selinux/config /etc/selinux/config.backup
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
grep '^SELINUX=' /etc/selinux/config
Baris terakhir seharusnya menunjukkan SELINUX=permissive; jika tidak ada atau ganda, periksa berkas sebelum melanjutkan. Argumen selinux=0 atau enforcing=0 juga memengaruhi boot, jadi catat keduanya.
Berkas konfigurasi menentukan mode boot bersama argumen kernel yang berlaku. Mode saat ini dapat diubah secara terpisah dengan setenforce 0 atau diverifikasi setelah reboot yang direncanakan.
Menonaktifkan dan mengaktifkan kembali sesuai versi
Periksa versi dan pengaturan boot
Penonaktifan penuh berbeda dari Permissive. Dokumentasi RHEL 9 tentang mode dan status SELinux menggunakan selinux=0; jangan menganggap SELINUX=disabled sebagai prosedur identik untuk semua versi Rocky.
cat /etc/rocky-release
rpm -q grubby
cat /proc/cmdline
sudo grubby --info=ALL
Pastikan grubby benar-benar mengelola entri boot sistem ini. Catat argumen setiap entri, simpan cadangan dan uji konsol. ALL memengaruhi semua entri yang dikelola; jika kebijakan antarkernel berbeda, siapkan rencana per entri dan jangan jalankan contoh ini secara menyeluruh.
sudo grubby --update-kernel ALL --args selinux=0
Setelah reboot terjadwal, periksa getenforce dan cat /proc/cmdline. Penonaktifan ini diharapkan menghasilkan Disabled dan argumen selinux=0. Tidak ada penegakan atau audit penolakan AVC SELinux dalam keadaan ini; mekanisme audit lain tetap terpisah.
Aktifkan kembali dalam Permissive dan rencanakan relabel
Berkas yang dibuat saat SELinux nonaktif mungkin tidak berlabel benar. Siapkan utilitas, kebijakan dan cadangan, pertahankan akses konsol, dan rencanakan pemeliharaan; pelabelan ulang dapat memakan waktu lama.
- Atur
SELINUX=permissivepada berkas konfigurasi dan periksa hasilnya. - Hanya jika entri seragam dan argumen ditambahkan oleh perubahan ini, hapus penonaktifan dan siapkan boot pertama Permissive dengan blok berikut. Jika nilai awal atau kebijakan tiap entri berbeda, pulihkan satu per satu berdasarkan catatan awal.
sudo grubby --update-kernel ALL --remove-args selinux
sudo grubby --update-kernel ALL --args enforcing=0
- Reboot dengan konsol pemulihan tersedia. Tunggu pelabelan otomatis jika ada dan pastikan
getenforcemenunjukkanPermissive. Jika masihDisabled, berhenti dan periksa argumen aktif dan kebijakan. - Setelah Permissive terkonfirmasi, jalankan
sudo fixfiles -F onbootuntuk menjadwalkan relabel pada boot berikutnya. Lihat manual fixfiles, reboot pada jadwal pemeliharaan, dan tunggu selesai. - Periksa layanan, konteks, dan AVC dalam Permissive lalu perbaiki seperlunya. Atur
SELINUX=enforcing, hapus hanyaenforcing=0yang ditambahkan prosedur ini, lalu gunakansudo setenforce 1untuk mode saat ini. - Periksa
getenforce,sestatus, argumen boot, dan layanan termasuk setelah reboot terjadwal berikutnya.
--remove-args selinux menghapus parameter tersebut; karena itu perbandingan dengan nilai awal penting. Contoh ini bukan prosedur pemulihan universal untuk setiap bootloader atau kebijakan produksi.
Urutan pemecahan masalah yang disarankan
- Periksa status saat ini dengan
getenforcedansestatus. - Pertama, periksa log layanan, izin file, dan firewall.
- Jika perlu, sementara beralih ke mode Permissive dan bandingkan gejalanya.
- Periksa catatan penolakan yang sebenarnya dengan
ausearch. - Modifikasi hanya lingkup minimum dengan konteks file, Boolean, atau tipe port yang benar.
- Kembali ke mode Enforcing dan verifikasi ulang fungsionalitas dan log.
Dokumen Referensi
Panduan Pembelajaran SELinux Rocky Linux menjelaskan prinsip dasar mode, konteks keamanan, Boolean, dan pemecahan masalah.




