RHEL8 İşletim Sisteminde SELinux Devre Dışı Bırakılması

Security Enhanced Linux veya SELinux, RHEL tabanlı işletim sistemleri tarafından kullanılan Linux çekirdeğinde yerleşik bir güvenlik mekanizmasıdır. SELinux, sistem yöneticilerin ve kullanıcıların politika kurallarına dayalı olarak nesnelere erişimini kontrol eden ve bu nesnelere izin vererek sisteme ek bir güvenlik katmanı sağlar. SELinux kuralları, süreçlerin ve kullanıcıların birbirleriyle nasıl etkileşime girdiğini, süreçlerin ve kullanıcıların dosyalarla nasıl etkileşimde bulunduğunu belirtir. Bir nesneye erişime açık bir şekilde izin veren bir kural olmadığında, örneğin bir dosyayı açan bir işlem gibi, erişim reddedilir.

SELinux, Mandatory Access Control (zorunlu erişim denetimi) (MAC) uygulayarak bir sistemi güvence altına alan bir mekanizmadır. SELinux, CentOS 8 sistemlerinde varsayılan olarak etkindir, ancak konfigürasyon dosyasını düzenleyerek ve sistemi yeniden başlatarak devre dışı bırakılabilir.

SELinux’un üç farklı çalışma modu vardır, Bunlar;

  • Enforcing: Bu seçenek ile SELinux politika kurallarına dayalı erişime izin verir. Bu modda, SELinux etkindir ve politikaların tamamı uygulanır. Bu SELinux’un izin vermeyeceği işlemlere izin verilemeyeceği anlamına gelir. Örneğin; bir uygulamada varsayılan olarak belirli bir network portları (mesela port 80’den çalışan) üzerinden çalışacak şekilde yapılandırılmış ve kullanılan bu portu başka bir şeye değiştirilmesi durumunda; SELinux uygulamanın çalışmasına izin vermeyecektir.
  • Permissive: SELinux, yalnızca zorlama modunda çalıştırıldığında reddedilecek eylemleri loglara kaydeder. Bu mode, hata ayıklamak ve yeni kuralları oluşturmak için kullanışlıdır.
  • Disabled: SELinux politikası yüklenmez ve hiçbir mesaj günlüğe kaydedilmez.

Varsayılan ayarlarda CentOS 8’de SELinux etkindir ve Enforcing modundadır. SELinux’u Enforcing modunda tutmanızı tavsiye edilir. Bununla birlikte, bazen bazı uygulamaların işleyişine müdahale edebilir ve bunu izin verilen moda ayarlamanız veya tamamen devre dışı bırakmanız gerekir. Tüm uygulamalar SELinux’u desteklemez. Bu nedenle SELinux, yazılım paketlerinin düzenli kullanımı ve kurulumu sırasında gerekli işlemleri sonlandırabilir. Bu durumlarda, bu hizmeti kapatmanızı tavsiye ederiz.

Bu makalemde; SELinux’u CentOS 8’de devre dışı bırakmayı açıklayacağız. Bu işlemi yapabilmek için işletim sistemi üzerinde root kullanıcı veya sudo ayrıcalıklarına sahip bir kullanıcı hesabı ile SELinux modunu değiştirebilir.

SELinux’un çalıştığı durumu ve modu kontrol etmek için “sestatus” komutunu kullanabiliriz. Aşağıdaki ekran görüntüsünde SELinux modunun aktif ve “enforcing” modunda olduğunu kontrol edebilirsiniz.

Servislerin düzgün çalışmadığını fark ederseniz, SELinux log’larını kontrol ediniz. Log dosyaları “/var/log/audit/audit.log” dizinin içindedir. En yaygın karşılaşılan log mesajları “AVC” olarak etiketlenir. Herhangi bir log kaydı bulamazsanız eğer  “/var/log/messages” dizinine bakılmasını tavsiye ederim.

SELinux Modunu “Permissive” Olarak Değiştirilmesi;

SELinux varsayılan ayarlardaki “enforcing” mode ’dan veya “Permissive” moda tek bir komut ile değiştirebilirsiniz. “sudo setenforce 0” komut ile; modu geçici olarak hedeflenen moddan “Permissive” moda değiştirebilirsiniz. Ancak, bu değişiklik sadece geçerli kullanıcı hesabının çalışma zamanı oturum süresi için geçerlidir ve işletim sistemi yeniden başlarılması durumunda tekrardan eski durumuna geçecektir. Kalıcı değildir.

SELinux modunu kalıcı olarak “Disabled” olarak ayarlamak için aşağıdaki işlemler sırasıyla yapılmalıdır.

Öncelikle metin editörü ile “/etc/selinux/config” dosyasından “SELINUX=enforcing” satırına gidilir.

Bu satırda yer alan “enforcing” bilgisi “permissive” olarak değiştirilir. Sonrasında “config” dosyayı kaydedin ve mevcut oturum için SELinux modunu değiştirmek için bir “setenforce 0” komutunu çalıştırınız.

İşletim sistemini başlatmak için “sudo shutdown -r now” komutunu çalıştırabilirsiniz.

SELinux’un Devre Dışı Bırakılması;

İşletim sistemi güvenliği nedeniyle SELinux’u devre dışı bırakmak yerine, modu permissive olarak değiştirmenizi tavsiye ederim. SELinux’u yalnızca uygulamanızın düzgün çalışması için gerektiğinde devre dışı bırakabilirsiniz. SELinux’u CentOS 8 işletim sisteminizde kalıcı olarak devre dışı bırakmak için aşağıdaki adımları uygulayınız gerekecektir.

Metin editörü ile “/etc/selinux/config” dosyasını açınız ve SELINUX değerini “disabled” olarak değiştiriniz. Yapılan bu değişiklikten sonra config dosyasını kaydedin ve sistemi yeniden başlatmak için “sudo shutdown -r now”” komutunu çalıştırınız.

İşletim sistemi açıldığında, SELinux’un devre dışı bırakıldığını doğrulamak için tekrardan “sestatus” komutunu çalıştırınız. Bu komutun çıktısının aşağıdaki gibi olması gerekiyor.