:::: MENU ::::

SELinux Nedir?

SELinux

SELinux (Security-Enhanced Linux) Linux’ da zorunlu erişim denetimi (MAC) mekanizmasına gerçekleşmesini sağlayan bir projedir.

DAC ve MAC

İsteğe bağlı erişim denetimi (DAC) altında, bir kullanıcı veya sürecin dosyalara, socketlere ve diğer kaynaklara erişip erişemeyeceği  kullanıcı sahipliğine veya izinlere bakarak belirlenir.

Zorunlu erişim denetimi ise  (MAC) kullanıcıların (subjects) oluşturdukları nesnelern (objects) üzerindeki denetim düzeyini kısıtlayan bir güvenlik mekanizmasıdır. İsteğe bağlı erişim denetimi kontrolünde kullanıcılar kendi dosya, dizin, vb üzerinde tam denetime sahipken, zorunlu erişim denetimi tüm dosya sistemi nesneleri için, ek etiket ya da kategori ekler. Kullanıcılar ve süreçlerin bu nesnelerle erişebilmesi için bu kategorilere uygun erişim hakları olmalıdır.

İsteğe bağlı erişim kontrolünde tüm erişim kararları kullancının kimliği ve sahipliğine göre verilir. Bu da güvenlik açığından faydalanılıp kötü amaçlı kullanılan bir uygulamanın kullanıcısının sahibi olduğu ve erişebildiği tüm kaynakları dilediği gibi kullanacağı anlamına gelmektedir. SELinux ile kullanıcı ve o kullanıcının sahip olduğu haklar farklılaştırılabilir. Örneğin; bir bir shell veya GUI aracılığı ile sistemde oturum açmış kullanıcı kendi ev dizininde istediğini yapmasına izin verilebilirken, o kullanıcının çalıştırdığı bir uygulamanın bu ev dizininde bazı dosya veya dizinlere erişimi kısıtlanabilir.

SELinux Nasıl Çalışır ?

selinux

 

Bir subject (örneğin bir uygulama) bir objecte (örneğin bir dosya) erişmeye çalıştığında çekirdekteki politika uygulama sunucusu subject ve object izinleri için öncelikle erişim vektörü önbelleğini (Access Vector Cache) kontrol eder. Eğer önbelleğe bakılarak karar verilemezse sunucu güvenlik politikalarına göre erişimin gerçekleşip gerçekleşmeyeceğini belirler. Ayrıca söylemekte fayda var SELinux DAC’ta belirlenen erişim kurallarını ezmez.

SELinux Modları

SELinux’un 3 modu vardır. Bunlar:

  • enforcing: Kaynaklara erişimin SELinux politikasına göre belirlendiği moddur.

  • permissive: Bu modda erişimler SELinux politikası zorlanmaz. Ancak erişim politikasına uymayan durumlar bir günlük dosyasına yazılır. (Redhat’te /var/log/audit/audit.log dosyasına varsayılan olarak yazılır)

  • disabled: SELinux tamamen devre dışıdır. Sadece DAC kuralları geçerlidir.

SELinux’u /etc/selinux/config dosyasını kullanarak yapılandırabilirsiniz.

SELINUX seçeneği ile SELinux’ un hangi modda çalışağını söylüyoruz. SELINUXTYPE ile de hangi SELinux politikasının uygulanacağını belirtmiş oluyoruz. Bunlar:

* stricted: Erişim politikası sistemdeki tüm süreçler için işler.

* targeted: Erişim politikası sadece hedeflenen süreçler için işler. (dhcpd, httpd, named, nscd, ntpd gibi)

* mls: Çok seviyeli güvenlik koruması

getenforce ve sestatus komutları SELinux’un hangi modda olduğunu öğrenmek için kullanılabilir.

SELinux’ un Redhat’te varsayılan olarak enforced modda gelmektedir. Sunucu üzerinde bir daemon için SELinux politikasında tanımlı olmayan port kullandığımda veya web sunucusunun mail sunucusunu kullanarak mail atmaya çalıştığında permission denied şeklinde uyarılar alıyordum. Böyle bir durumda /var/log/audit/audit.log günlük dosyasına bakarak politikaya uymayan erişim isteklerini görebiliriz.

audit.log dosyasından örnek bir satır:

Bu satır bize pid:2591 olan httpd isimli süreç 25 numaralı porta porta bağlanmaya çalıştığını ancak erişimin reddedildiğini söylüyor.


So, what do you think ?

You must be logged in to post a comment.