Anasayfa » Security Enhanced Linux – SELinux

Makaleyi Paylaş

Linux Unix

Security Enhanced Linux – SELinux

 

 

 

National Security Agency (NSA)  tarafından geliştirilmiş güvenlik sistemi olan  SElinux ( Security Enhanced Linux ) sistemini inceleyeceğiz. 1999 yılında Asekeri projeler için geliştirilip  2.6 kernel ıyla Linux işletim sistemlerine dahil edilmiştir.SElinux  uygulama erişim kontrolü ve objelere erişimi kontrolünü kontrol eden bir güvenlik yapısıdır.

 

Linux işletim sistemlerinde standart olarak gelen DACs( Discretionary Access Controls ) isteğe bağlı kontrol varken  SElinux  la birlik te  MACs ( Mandatory Access Controls ) zorunlu kontrol gelmiştir. SElinux    Macs yapısından dolayı genellikle kapatılmaktadır ama  fazladan güvenliğin kimseye zararı olmadığını düşündüğüm için selinux konusu açalım istedim.

 

SElinux’ un 3 modu bulunmaktadır.

  Enforcing  ( MACs )   à  Policy ler aktif haldedir.

Sponsor

  Permissive ( MACs / DACs  ) à İzleme moduna geçer log tutar kontrol için kullanılır

  Disabled ( DACs ) à  Devre dışı bırakır

 

Red Hat türevli dağıtımlarda  6.0 öncesi sürümlerinde kurulum sırasında Selinux devre dışı bırakılabiliyordu. 6.0 ve sonrası sürümlerde ise SElinux kurulumdan kaldırılmış enforcing modda gelmektedir. İsterseniz kurulum bittik ten sonra disabled edebilirsiniz.

 

Birden fazla komutla çalışıp çalışmadığını kontrol edebiliri. /etc/selinux/config  dosyasını istediğiniz bir editörle açıp bakabilirsiniz. Enforcing mod ve disabled modları arasındaki geçişlerde sistemi yeniden başlatmamız gerekmektedir.  Enforcing  mod ve permissive mod lar arasındaki geçişlerde sistemi yeniden başlatmamız gerek yoktur.

 

 

image001

 

 

SElinux mount edilmemiş olsaydı eğer Sestatus     komutunun çıktısında disabled görürdük. SElinux mount edildiği için aşağıdaki gibi ayrıntılı bilgilere ulaşabilirsiniz. Sestatus komutuna benzer bir komutta getenforce komutudur.

 

 

image002

 

 

Enforcing ve permissive mod lar arasında geçişlerde işletim sistemini yeniden başlatmamıza gerek olmadığını belirtmiştik. Setenforce  0  yazarsak  permissive mod a geçmiş oluruz. Örnekte SElinux mount fakat current mode permissive olduğunu görebilirsiniz. Setenforce 1 yaparsanız enforcing  moda geçecektir.

 

 

image003

 

 

Her kullanıcın ve dosyaların güvenlik ayarları vardır bunların kontrolü için görüntülediğiniz komutların sonuna  Z eklerseniz güvenlik ayarlarını sizlere gösterecektir.

 

 

image004

 

 

 

Dosyalar üzerinde çalışmaya başlayabiliriz. http servisini çalıştırdıktan sonra /var/www/html dosyasının altına bir index.html dosyası oluşturup  içerisinide birkaç bir şey yazdım.

 

İndex.html in güvelik ayarlarına baktığımızda tip olarak httpd_sys_content  olduğunu görebilirsiniz. Sorunsuz bir şekilde index.html dosyasının görüntülenmesini beklemekteyim.

 

 

 

image005

 

 

İnternet Explorer dan deneme yaptığımız da index html e yazmış olduğumuz  yazı görüntülenmiş oldu.

 

 

image006

 

 

Dosya güvenlik tip lerinde değişiklik yapalım. Güvenlik tiplerini 3 bölümde görebilirsiniz U ( kullanıcı ) , R ( role )  ve  T ( tip ) . Bunlarda değişiklik yapabilmek için chcon komutunu kullanmanız gerekmektedir.

 

Chcon –t  dosya tipinde değişiklik yapacağım  user_home_t   kullanıcının home klasörü olduğunu belirtiyorum ve bu tipi hangi dosyaya uygulamak istiyor isem onu ekliyorum.

 

 

 image007

 

 

Ve az önce eriştiğimiz index dosyamıza artık izin hatası alarak erişimimiz kısıtlanmış oluyor.

 

 

image008

 

 

SElinux la ilgili loglara  2 yerden bakabilirsiniz.  /var/log/messages   ve   /var/log/audit/audit.log.

 

Audit loga baktığımızda denied hatasının açıklamalarını inceleyerek neden dolayı denied yediğinizi bulabilirsiniz.

 

 

image009

 

 

http servisinin de loglarına bakabilirsiniz.  /var/log/httpd/error.log altında  dosya erişim hakkı olmadığının logunu düşmüş.

 

 

image010

 

 

Dosyanın tipini değiştirdim  sonra hangi tipi almam gerektiğini hatırlamıyorum bunun için ise resterecon komutunu kullanabilirsiniz. Resterecon dan sonra dosyanın yerini gösterdiğiniz zaman oradaki dosyanın tipini ilk haline düzeltecektir.

 

 

image011

 

 

Farklı bir  kullanım yoluda sebool larla değişiklik yapmaktadır. Dosyanın tipini user_home çektikten sonra sayfaya erişim sağlayamayağım. Getsebool la  httpd_enable_homedirs   baktığım zaman off durumdadır. Setsebool la  httpd_enable_homedirs on yaparsam enforcing modda olduğu halde  homedirs  a bakmayacaktır. Sayfayı kontrol ettiğimde user home olmasına rağmen sayfaya erişim sağlayabilirim.

 

 

image012

 

 

Setsebool la değiştirdiğimiz işlemler kalıcı hale getirmek için –P kullanmamız gerekmektedir. Aksi halde komutu yazdıktan sonra sistemi yeniden başlattığımızda eski halini alacaktır.

 

 

image013

 

 

Çok fazla sebool bulunmaktadır. Bunları get komutuyla listeleyebilirsiniz. Çalışma yapacağınız sebool için aramayı kısaltmak adına grep komutunu kullanabilirsiniz.

 

 

image014

 

 

SElinux dosyalara , kullanıcılar ve port lara da müdahale edebilmektedir. Port numaralarında değişiklik yapmak için semanage komutunu kullanıyoruz.

 

Semanage port –l  komutu bize kullanılan portların listesini getirecektir. Aramalarınızı daraltmak istiyorsanız grep komutunu kullanınız.

 

Semanage port –l | grep http   gibi.

 

 

image015

 

 

http servisinin portunda değişiklik yapmak istiyorum.  /etc/httpd/config/httpd.conf   dosyasında listen dinlenen portu değiştiriyorum. Port numarasını 1453 yapıp dosyayı kaydediyorum.

 

 

image016

 

 

Bu port uda selinux tanımlamak için  semanage port –a  add  http_port_t –p protocol tcp 1453  yazıyorum ve biraz bekledikten sonra port list le eklemiş mi emin olmak için bakıyorum.

 

 

image017

 

 

Dışardan erişimlerde 80 portunu kapatıp eklemiş olduğum 1453 portunu yönlendirmesini de yapabilirim. 1453 portu üzerinden index.html sayfama ulaşımı kontrol ediyorum ve başarılı =)

 

 

image018

 

 

Eklemiş olduğum portlarıda kaldırabilirim –a add yazdığım yere –d delete yazarak silme işlemini gerçekleştiriyorum.

 

 

image019

 

 

Bu kadar işlemlerle kim uğraşacak kapat şu SElinux u diyebilirsiniz ( haksız da bulmam sizi) . Kapatmak için 2 yöntemi vardır bunlardan birisi mount etmemesini sağlamak bir diğeri kolay olanı.  /etc/selinux/config altındaki SELINUX=disabled yapmak ve mount olmuş olan selinux devre dışı kalması için sistemi yeniden başlatmaktır.

 

 

image020

 

 

Çok karmaşık bir yapısı vardır SElinux un. Alışmasının kolay olmadığını biliyorum ama sisteminizi bir kere ayarladıktan sonra çok  fazla değiştirmeyeceğiniz için önceden disabled edip geçmeyin birazcık da olsa uğraşın derim.

Makaleyi Paylaş

Cevap bırakın