SELinux

Tunahan Güral
3 min readAug 6, 2020

--

Selinux, asıl açılımı Security-Enhanced Linux olması ile birlikte, 1998 yılında Amerikan Uluslararası Güvenlik Ajansı(NSA) ve RedHat tarafından geliştirilmiş çekirdek tabanlı güvenlik uygulamasıdır. Tüm unix mimarisinde kullanılabilecek şekilde tasarlanmıştır. 2000 yılında GPL lisansı ile kaynak kodları paylaşıma açılmıştır. Şuan Red Hat ailesi ile birlikte dağıtımı devam etmektedir. Ayrıca Android Jelly Bean sürümünden itibaren android işletim sistemlerinde de kullanılmaktadır.

Selinux’un 3 farklı modu vardır. Bunlar enforcing, permissive ve disabled

Enforcing : Selinux ve politikaları aktif olarak çalışır.

Permissive : Selinux ve kuralları monitör modda çalışır, tüm aktiviteleri loglar ama engellemez.

Disabled : Bu modda ise politikalar ve selinux çalışmaz. Yapılan hiçbir aktiviteyi loglamaz.

Bunlar genel bilgilerdi, selinux diye arama motorunda arattığımızda en çok karşımıza çıkan “Selinux nasıl disable edilir? Nasıl kapatılır? Nasıl yok edilir?” gibi bilgiler içeren makaleler görürüz. Şahsen ben nasıl kapatılır değil de, neye kızıyor ? nelere nasıl izin verebiliriz? gibi soruları karşılamak için bu makaleyi yazıyorum. Ancak halen ısrarla nasıl kapatıcam diyen arkadaşlarımız olabilir onlara kısaca hemen kısaca açıklayayım:

SElinux isimli gariban arkadaşımızı iki şekilde durdura biliriz. Birinci yol: komut girerek, ikinci yol ise; uygulamaya ait konfigurasyon dosyasındaki status değişkenini düzenleyerek. Birinci yolu şu şekilde yapabiliriz:

[root@localhost]# setenforce 0

Bu komutu girdikten sonra SElinux uygulamamız Permissive moda geçecektir. Bunuda getenforce komutu ile kontrol edebiliriz.

Not: getenforce komutu selinux’un o anda ki durumunu gösteren komuttur.
Not2: Persmissive modda iken loglama devam ettiği için log dosyalarında anlamsız bir büyüme görülebilir.

setenforce ve getenforce kullanımını gösteren resim

SElinux’u devre dışı bırakmanın ikinci yoluda aşağıdaki gibi uygulamaya ait konfigurasyon dosyasını düzenlemek.

!#Acıklı Açıklama: Arkadaşlar burada vi falan diyorum ama vi’a girip çıkamayış yapıp içeride mazlum mahsun kalan lider ülkelerdeniz haberiniz olsun. Basit bir şekilde vi kullanımını ile ilgili makaleleri okumanızı tavsiye ederim.

bu tablo vi uygulamasında mahsur kalıp google’da yardıra yardıra “nasıl çıkarım vi cehenneminden” diye aratanların listesi. Tekrar söylüyorum ÜLKE OLARAK İKİNCİ SIRADAYIZ.

Aşağıdaki gibi etc altında selinux klasörüne gelip burada selinux’e ait config isimli dosyayı vi ile açıyoruz,

[root@localhost]# vi /etc/selinux/config

aşağıdaki gibi bir ekranla karşılaşacaksınız;

SELinux’e ait konfigurasyon dosyasının içeriği bundan farklı bir şeyle karşılaşırsanız derhal orayı terk edin

burada SELINUX=enforcing kısmına gelip “i” tuşuna basarak vi’de edit moda geçiyoruz ve SELINUX=disabled olarak değiştiriyoruz. vi’dan çıkış için “ESC” tuşuna basıyoruz sonra hiçbir şeye dokunmadan “:x” bu değerleri girip çıkış yapıyoruz ve bu şekilde selinux’u disable etmiş oluyoruz. Buraya kadar eşlik eden arkadaşlara sonsuz teşekkürlerimi iletiyorum. Buradan sonra selinux yönetimi ile ilgili paragraflar yer alacaktır.

Genel Hatları ile SELinux

Selinux güvenlik olarak bizlere sağladığı en önemli özellik uygulamanın haddini aşan bazı davranışları yapmasını engellemektedir. Örnek veriyorum ki sunucumuzda bir web uygulaması kurulu olsun apache veya nginx olabilir. Bu uygulamaların birlikte çalışacağı dizin ve dosyalar zaten bellidir. Bunlar haricinde sistem ile ilgili ihtiyaç dışındaki bir klasöre erişmesi şüpheli aktiviteyi tetikler ve burada selinux devreye girer. Böylelikle sizin web sunucunuz saldırganlar tarafından ele geçirilse bile hükmedeceği alanları selinux ile sınırlandırmış oluruz ve böylelikle tahribat yüzdesi epeyce azalmış olur.

Selinux’un iki farklı şekilde güvenlik strateji üzerine kurulmuştur bunlar MAC ve DAC olarak ikiye ayrılır.

MAC: (Mandatory Access Control) Uygulama kurulurken oluşan nesneler etiketlerin aslında uygulamanın yetkileriyle etiketlemeler yapılır ve bu nesnelerin izni olur buna göre erişimler gerçekleşir.

DAC: (Directory Access Control) Bu tamamen kullanıcı hakkıyla hareket eder, kullanıcıya atanan etiket seviyesinde yetkilendirme ve erişimler verilir böylelikle kullanıcı tarafındada erişimlerin kontrolü sağlanmış olur.

Evet arkadaşlar bu yazımızın sonuna geldik, umarım kafanızda birtakım teorik bilgiler kalıcı olarak kalmış bulunur, bu makaleden sonra selinux ile ilgili hata ayıklama ve selinux yönetimine ait iki makale daha yayınlanacak, faydalı olması dileği ile buraya kadar sabır taşını zorlayan arkadaşlara çok teşekkür ederim :)

--

--

Tunahan Güral

I am ‘root’ in my life, and my home is ‘localhost’.