Mengubah Status dan Mode SELinux
Perubahan permanen pada status dan mode SELinux
Seperti yang dibahas dalam Memulai dengan SELinux, SELinux dapat diaktifkan atau dinonaktifkan. Ketika diaktifkan, SELinux memiliki dua mode: enforcing dan permissive.
Gunakan perintah getenforce atau sestatus untuk memeriksa mode di mana SELinux sedang berjalan. Perintah getenforce akan menampilkan Enforcing, Permissive, atau Disabled.
Perintah sestatus menampilkan status SELinux dan kebijakan SELinux yang sedang digunakan:
[~]$ sestatus
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: 31
|
Ketika sistem menjalankan SELinux dalam mode permissive, pengguna dan proses dapat memberi label objek sistem berkas secara tidak benar. Objek sistem berkas yang dibuat saat SELinux dinonaktifkan tidak akan memiliki label sama sekali. Perilaku ini menyebabkan masalah saat beralih ke mode enforcing karena SELinux bergantung pada label objek sistem berkas yang benar. Untuk mencegah file yang tidak berlabel atau salah label menyebabkan masalah, sistem berkas akan secara otomatis diberi label ulang saat beralih dari status dinonaktifkan ke mode permissive atau enforcing. Dalam mode permissive, gunakan perintah |
Mengaktifkan SELinux
Saat diaktifkan, SELinux dapat berjalan dalam salah satu dari dua mode: enforcing atau permissive. Bagian berikut menunjukkan cara mengubah mode ini secara permanen.
Saat mengaktifkan SELinux pada sistem yang sebelumnya dinonaktifkan, untuk menghindari masalah seperti sistem gagal boot atau kegagalan proses, ikuti prosedur berikut.
-
Pastikan paket
selinux-policy-targeted,selinux-policy,libselinux-utils, dangrubbytelah terpasang. Untuk memeriksa apakah paket tertentu sudah terpasang:$ rpm -q package_name
-
Jika sistem Anda memiliki SELinux yang dinonaktifkan di level kernel (cara ini direkomendasikan, lihat [_disabling_selinux]), ubah ini terlebih dahulu. Periksa apakah terdapat opsi
selinux=0pada baris perintah kernel:$ cat /proc/cmdline BOOT_IMAGE=... ... selinux=0
-
Hapus opsi
selinux=0dari konfigurasi bootloader menggunakangrubby:$ sudo grubby --update-kernel ALL --remove-args selinux
-
Perubahan ini akan berlaku setelah Anda memulai ulang sistem pada langkah berikutnya.
-
-
Pastikan sistem berkas diberi label ulang pada saat boot berikutnya:
$ sudo fixfiles onboot
-
Aktifkan SELinux dalam mode permissive. Untuk informasi lebih lanjut, lihat [_changing_to_permissive_mode].
-
Mulai ulang sistem Anda:
$ reboot
-
Periksa pesan penolakan SELinux.
$ sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts recent
-
Jika tidak ada penolakan, ubah ke mode enforcing. Untuk informasi lebih lanjut, lihat [_changing_to_enforcing_mode].
Untuk menjalankan aplikasi kustom dengan SELinux dalam mode enforcing, pilih salah satu skenario berikut:
-
Jalankan aplikasi Anda dalam domain
unconfined_service_t. -
Tulis kebijakan baru untuk aplikasi Anda. Lihat bab Menulis kebijakan SELinux kustom dalam dokumen RHEL 8 Menggunakan SELinux untuk informasi lebih lanjut.
Mengubah ke mode permissive
Gunakan prosedur berikut untuk mengubah mode SELinux menjadi permissive secara permanen. Saat SELinux berjalan dalam mode permissive, kebijakan SELinux tidak diterapkan. Sistem tetap beroperasi dan SELinux tidak menolak operasi apa pun, tetapi hanya mencatat pesan AVC, yang kemudian dapat digunakan untuk pemecahan masalah, debug, dan peningkatan kebijakan SELinux. Setiap AVC hanya dicatat satu kali dalam kasus ini.
-
Paket
selinux-policy-targeted,libselinux-utils, danpolicycoreutilstelah terpasang di sistem Anda. -
Parameter kernel
selinux=0atauenforcing=0tidak digunakan.
-
Buka file
/etc/selinux/configmenggunakan editor teks pilihan Anda, misalnya:
# vi /etc/selinux/config
-
Atur opsi
SELINUX=permissive:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=*permissive* # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
-
Mulai ulang sistem:
# reboot
Mengubah ke mode enforcing
Gunakan prosedur berikut untuk mengalihkan SELinux ke mode enforcing. Saat SELinux berjalan dalam mode enforcing, sistem akan menerapkan kebijakan SELinux dan menolak akses berdasarkan aturan kebijakan tersebut. Di Fedora, mode enforcing diaktifkan secara bawaan ketika sistem pertama kali diinstal dengan SELinux.
-
Paket
selinux-policy-targeted,libselinux-utils, danpolicycoreutilstelah terpasang di sistem Anda. -
Parameter kernel
selinux=0atauenforcing=0tidak digunakan.
-
Buka file
/etc/selinux/configmenggunakan editor teks pilihan Anda, misalnya:# vi /etc/selinux/config
-
Atur opsi
SELINUX=enforcing:# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
-
Simpan perubahan, lalu mulai ulang sistem:
# reboot
Pada boot berikutnya, SELinux akan memberi label ulang semua file dan direktori dalam sistem serta menambahkan konteks SELinux untuk file dan direktori yang dibuat ketika SELinux dinonaktifkan.
-
Setelah sistem dimulai ulang, pastikan perintah
getenforcemenampilkan hasilEnforcing:$ getenforce Enforcing
|
Setelah beralih ke mode enforcing, SELinux mungkin menolak beberapa tindakan karena aturan kebijakan SELinux yang salah atau hilang. Untuk melihat tindakan apa yang ditolak SELinux, masukkan perintah berikut sebagai root: # ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today Sebagai alternatif, dengan paket # grep "SELinux is preventing" /var/log/messages Pengguna standar dapat menggunakan antarmuka grafis Jika SELinux aktif dan layanan Audit daemon (auditd) tidak berjalan di sistem Anda, cari pesan SELinux tertentu di keluaran perintah dmesg: # dmesg | grep -i -e type=1300 -e type=1400 Jika SELinux menolak beberapa tindakan, lihat bab Mengatasi masalah yang terkait dengan SELinux dalam dokumen RHEL 8 Menggunakan SELinux untuk informasi tentang pemecahan masalah. |
Menonaktifkan SELinux
Gunakan prosedur berikut untuk menonaktifkan SELinux secara permanen.
|
Ketika SELinux dinonaktifkan, kebijakan SELinux tidak dimuat sama sekali; kebijakan tidak diterapkan dan pesan AVC tidak dicatat. Oleh karena itu, semua manfaat menjalankan SELinux yang tercantum dalam Manfaat SELinux akan hilang. Disarankan untuk menggunakan mode permissive daripada menonaktifkan SELinux secara permanen. Lihat [_changing_to_permissive_mode] untuk informasi lebih lanjut tentang mode permissive. |
|
Menonaktifkan SELinux menggunakan opsi SELINUX=disabled dalam file /etc/selinux/config menyebabkan proses di mana kernel melakukan boot dengan SELinux aktif lalu beralih ke mode nonaktif di kemudian saat proses boot. Karena hal ini dapat menyebabkan kebocoran memori dan kondisi balapan yang menimbulkan kernel panic, sebaiknya nonaktifkan SELinux dengan menambahkan parameter selinux=0 pada baris perintah kernel seperti dijelaskan dalam bagian Mengubah mode SELinux saat boot, jika memang skenario Anda benar-benar memerlukan penonaktifan penuh SELinux. |
-
Paket
grubbytelah terpasang:$ rpm -q grubby grubby-version
-
Buka file
/etc/selinux/configmenggunakan editor teks pilihan Anda, misalnya:# vi /etc/selinux/config
-
Atur opsi SELINUX=disabled:
# File ini mengontrol status SELinux pada sistem. # SELINUX= dapat menggunakan salah satu dari tiga nilai berikut: # enforcing - Kebijakan keamanan SELinux diterapkan. # permissive - SELinux hanya menampilkan peringatan, tidak menerapkan kebijakan. # disabled - Tidak ada kebijakan SELinux yang dimuat. SELINUX=disabled # SELINUXTYPE= dapat menggunakan salah satu dari dua nilai berikut: # targeted - Proses-proses tertentu dilindungi, # mls - Perlindungan Multi Level Security. SELINUXTYPE=targeted
-
Simpan perubahan, lalu mulai ulang sistem Anda:
# reboot
-
Setelah boot ulang, pastikan perintah
getenforcemenampilkan hasilDisabled:$ getenforce Disabled
Mengubah Mode SELinux saat Boot
Saat boot, Anda dapat menetapkan beberapa parameter kernel untuk mengubah cara kerja SELinux:
- enforcing=0
-
Menetapkan parameter ini menyebabkan sistem memulai dalam mode permissive, yang berguna saat memecahkan masalah. Menggunakan mode permissive mungkin menjadi satu-satunya cara untuk mendeteksi masalah jika sistem berkas Anda terlalu rusak. Selain itu, dalam mode permissive, sistem tetap membuat label dengan benar. Pesan AVC yang dihasilkan pada mode ini dapat berbeda dari yang ada pada mode enforcing.
Dalam mode permissive, hanya penolakan pertama dari serangkaian penolakan yang sama yang akan dilaporkan. Namun, dalam mode enforcing, Anda mungkin mendapatkan penolakan terkait pembacaan direktori, dan aplikasi akan berhenti. Dalam mode permissive, Anda akan mendapatkan pesan AVC yang sama, tetapi aplikasi tetap melanjutkan membaca file dalam direktori tersebut dan menghasilkan pesan AVC untuk setiap penolakan tambahan.
- selinux=0
-
Parameter ini menyebabkan kernel tidak memuat bagian mana pun dari infrastruktur SELinux. Skrip init mendeteksi bahwa sistem melakukan boot dengan parameter
selinux=0dan membuat file/.autorelabel. Hal ini menyebabkan sistem secara otomatis melakukan pelabelan ulang pada saat berikutnya Anda melakukan boot dengan SELinux diaktifkan.Penggunaan parameter
selinux=0tidak direkomendasikan. Untuk melakukan debug pada sistem Anda, sebaiknya gunakan mode permissive. - autorelabel=1
-
Parameter ini memaksa sistem untuk melakukan pelabelan ulang dengan cara yang serupa dengan perintah berikut:
# touch /.autorelabel # reboot
Jika suatu sistem berkas berisi banyak objek yang salah label, jalankan sistem dalam mode permissive agar proses pelabelan ulang otomatis (autorelabel) dapat berhasil.
Untuk parameter boot kernel tambahan yang terkait dengan SELinux, seperti checkreqprot, lihat file kernel-parameters.txt. File ini tersedia di paket sumber kernel Linux Anda (.src.rpm). Untuk mengunduh paket sumber yang berisi kernel yang sedang digunakan:
[~]# dnf download --source kernel
Want to help? Learn how to contribute to Fedora Docs ›