Linux Sunucularda SELinux Nedir? Yönetimi ve Sorun Giderme Rehberi

Linux Sunucularda SELinux Nedir? Yönetimi ve Sorun Giderme Rehberi - Corelux
23 May 2026
Paylaş:

Linux Sunucularda SELinux Nedir? Yönetimi ve Sorun Giderme Rehberi

Son Güncelleme: Mayıs 2026

SELinux (Security-Enhanced Linux), Linux sunucularda süreçleri, dosyaları ve servisleri daha sıkı kurallarla kontrol eden gelişmiş bir zorunlu erişim denetimi (mandatory access control) mekanizmasıdır. Özellikle hosting, VPS, VDS, web sunucuları ve çok kullanıcılı sistemlerde güvenlik seviyesini artırmak için kritik rol oynar. Bu rehberde SELinux’un ne olduğunu, nasıl çalıştığını, modlarını, temel yönetim komutlarını ve gerçek hayatta sık görülen sorunların nasıl çözüleceğini detaylı şekilde ele alacağız.

İçindekiler

SELinux Nedir?

SELinux, Linux çekirdeği (kernel) seviyesinde çalışan bir güvenlik çerçevesidir. Temel amacı, bir süreç root yetkisine sahip olsa bile hangi kaynaklara erişebileceğini politikalar üzerinden sınırlamaktır. Geleneksel Linux izin modeli yalnızca kullanıcı, grup ve diğerleri mantığıyla çalışırken, SELinux bunun üzerine daha katı ve detaylı bir denetim katmanı ekler.

Klasik dosya izinlerinde bir servis yanlış yapılandırıldığında veya bir saldırgan servis üzerinden yetki elde ettiğinde, sistem içinde beklenenden daha geniş erişimler mümkün olabilir. SELinux ise “hangi süreç, hangi dosyaya, hangi port üzerinden, hangi işlemle erişebilir?” sorusunu ayrı bir güvenlik politikası olarak ele alır.

Bu nedenle özellikle Linux Hosting, sanal sunucu, kurumsal uygulama sunucuları, veritabanı sistemleri ve internet erişimine açık servislerde SELinux ciddi bir güvenlik katmanı sağlar.

SELinux Nasıl Çalışır?

SELinux’un çalışma mantığı, nesnelerin ve süreçlerin güvenlik bağlamlarıyla (security context) etiketlenmesine dayanır. Her dosya, dizin, port, süreç veya servis belirli bir context ile tanımlanır. Ardından yüklü politika, bir sürecin belirli bir context’e sahip kaynağa erişip erişemeyeceğine karar verir.

Temel çalışma bileşenleri

  • Policy (Politika): Erişim kurallarının tanımlandığı yapıdır.
  • Context (Bağlam): Dosya, süreç veya portun güvenlik kimliğidir.
  • Type Enforcement: En yaygın kullanılan denetim modelidir; süreç ve nesne tiplerine göre izin verir veya engeller.
  • AVC: Erişim reddi kayıtlarının tutulduğu mekanizmadır. Sorun giderme sırasında çok önemlidir.

Örneğin bir web sunucusu süreci çoğu sistemde belirli içerik dizinlerini okuyabilir; ancak rastgele bir kullanıcı klasörüne veya yetkisiz bir veritabanı dosyasına erişemez. Dosya izinleri doğru görünse bile, SELinux politikası buna izin vermiyorsa erişim reddedilir.

SELinux Modları

SELinux genel olarak üç farklı modda çalışır. Bu modlar sistemin güvenlik politikasını nasıl uygulayacağını belirler.

Mod Açıklama Kullanım Amacı
Enforcing Kuralları aktif olarak uygular ve ihlalleri engeller. Canlı sistemlerde önerilen moddur.
Permissive İhlalleri engellemez, sadece log kaydı üretir. Test ve sorun analizi için kullanılır.
Disabled SELinux tamamen kapalıdır. Güvenlik açısından genellikle önerilmez.

Geçici mod değiştirme

Aktif çalışma modunu geçici olarak değiştirmek için aşağıdaki komutlar kullanılabilir:

getenforce
setenforce 0
setenforce 1

Burada setenforce 0 sistemi Permissive moda, setenforce 1 ise tekrar Enforcing moda alır. Bu değişiklik kalıcı değildir ve yeniden başlatma sonrası eski yapılandırma geçerli olur.

Kalıcı mod değiştirme

Kalıcı ayar için genellikle /etc/selinux/config dosyası düzenlenir:

SELINUX=enforcing
SELINUXTYPE=targeted

Canlı sistemlerde değişiklik öncesinde bakım planı yapılması, servis testlerinin tamamlanması ve log incelemesi önerilir.

SELinux Neden Önemlidir?

Birçok sistem yöneticisi ilk etapta SELinux’u karmaşık bulduğu için devre dışı bırakma eğilimindedir. Ancak doğru yönetildiğinde, SELinux özellikle internete açık sunucularda saldırı yüzeyini ciddi şekilde azaltır.

  • Servis izolasyonu: Bir servis ele geçirilse bile saldırganın sistemde yatay hareket etmesini zorlaştırır.
  • Yanlış yapılandırma etkisini azaltma: Hatalı dosya izinleri tek başına tam erişim anlamına gelmez.
  • Uyumluluk ve denetim: Kurumsal güvenlik standartlarında güçlü bir ek kontrol katmanıdır.
  • Çok kiracılı yapı güvenliği: Hosting ve paylaşımlı servis senaryolarında ek ayrıştırma sağlar.
  • Log tabanlı analiz: Reddedilen erişim kayıtları sayesinde sorunların kaynağı daha net anlaşılır.

Özellikle web sunucusu, ters vekil sunucu (reverse proxy), veritabanı, dosya paylaşımı ve uygulama servislerinin bir arada çalıştığı ortamlarda SELinux büyük fark yaratır.

SELinux Temel Komutları

SELinux yönetiminde kullanılan bazı temel komutlar vardır. Bu komutlar hem günlük yönetimde hem de sorun giderme süreçlerinde oldukça işlevseldir.

Durum kontrolü

getenforce
sestatus

getenforce aktif modu kısa şekilde gösterir. sestatus ise daha detaylı çıktı verir.

Dosya context görüntüleme

ls -Z
ps auxZ

ls -Z dosya ve dizin context bilgilerini, ps auxZ ise çalışan süreçlerin güvenlik bağlamlarını gösterir.

Context düzeltme

restorecon -Rv /var/www/html

Yanlış etiketlenmiş dosya ve dizinleri varsayılan politikaya göre düzeltmek için sık kullanılır.

Kalıcı dosya context tanımlama

semanage fcontext -a -t httpd_sys_content_t "/webapp(/.*)?"
restorecon -Rv /webapp

Bu örnek, /webapp dizinini web sunucusunun okuyabileceği şekilde tanımlar.

Port yönetimi

semanage port -l | grep http
semanage port -a -t http_port_t -p tcp 8080

Eğer web servisini standart dışı bir portta çalıştırıyorsanız, SELinux tarafında bu portun uygun tipe atanması gerekebilir.

Dosya Bağlamı ve Context Mantığı

SELinux öğrenirken en kritik konulardan biri context kavramıdır. Bir dosyanın Linux izinleri doğru olsa bile, yanlış context nedeniyle servis bu dosyaya erişemeyebilir.

Örnek bir context çıktısı şu şekilde olabilir:

system_u:object_r:httpd_sys_content_t:s0

Bu yapı sadeleştirilmiş biçimde aşağıdaki unsurları temsil eder:

  • User: SELinux kullanıcısıdır.
  • Role: Rol bilgisidir.
  • Type: En kritik kısımdır; erişim kuralları çoğunlukla buna göre belirlenir.
  • Level: Güvenlik seviyesi bilgisidir.

Neden context bozulur?

  • Dosya taşıma: Yanlış yöntemle kopyalanan veya taşınan dosyalar eski etiketlerini koruyabilir ya da etiketsiz kalabilir.
  • Yedekten geri yükleme: Backup sonrası context eşleşmeleri bozulabilir.
  • Özel dizin kullanımı: Standart dışı web kökü veya uygulama dizini tanımlandığında manuel eşleme gerekir.
  • Panel veya script müdahaleleri: Otomasyon araçları her zaman doğru SELinux etiketi oluşturmayabilir.

Bu yüzden yeni bir uygulama devreye alınırken yalnızca dosya izinlerini değil, SELinux bağlamlarını da kontrol etmek gerekir.

Web Sunucularında SELinux Kullanımı

SELinux en çok Apache, Nginx, PHP-FPM ve benzeri servislerde görünür hale gelir. Çünkü web uygulamaları dosya okuma, yazma, cache oluşturma, log tutma, dış bağlantı açma ve bazen veritabanı erişimi gibi çok sayıda işlem yapar.

Yaygın senaryolar

  • Web kökünü değiştirme: Site dosyaları /var/www/html yerine özel bir dizindeyse uygun context atanmalıdır.
  • Yazılabilir dizin ihtiyacı: Upload, cache veya session klasörleri için yalnızca gerekli dizinlere yazma izni verilmelidir.
  • Özel port kullanımı: Uygulama 8080, 8443 gibi portlarda çalışıyorsa port tipi tanımlanmalıdır.
  • Dış ağ bağlantısı: Bazı uygulamalar API çağrısı yapar; SELinux boolean ayarları devreye girebilir.

Web içerik dizini örneği

semanage fcontext -a -t httpd_sys_content_t "/srv/site(/.*)?"
restorecon -Rv /srv/site

Eğer uygulamanın belirli klasörlere yazması gerekiyorsa daha uygun tipler seçilmelidir. Örneğin geçici veya yazılabilir alanlar için farklı context’ler gerekir. Burada “her yere yazma yetkisi” vermek yerine yalnızca gerekli dizinleri hedeflemek güvenli yaklaşımdır.

HTTP servisi için ağ erişimi

Bazı uygulamalar harici API servislerine bağlanmak isteyebilir. Bu durumda ilgili SELinux boolean değeri kontrol edilebilir:

getsebool -a | grep httpd
setsebool -P httpd_can_network_connect on

Bu ayar özellikle ödeme sistemleri, lisans doğrulama servisleri, webhook tüketen uygulamalar veya harici REST API kullanan yazılımlar için önemlidir.

Daha yüksek kaynak esnekliği ve özel yapılandırma gerektiren projelerde Sanal Sunucu çözümleri ya da uygulama yoğun senaryolarda Uygulama Sunucuları tercih edilerek SELinux ile birlikte daha kontrollü bir mimari kurulabilir.

Yaygın Sorunlar ve Çözümler

SELinux etkin sistemlerde en sık karşılaşılan durum, servisin çalışıyor görünmesine rağmen dosya erişimi veya ağ erişimi hatası vermesidir. Bu tip senaryolarda servis loglarına ek olarak SELinux kayıtları da incelenmelidir.

1. Web sitesi 403 hatası veriyor

Dosya izinleri doğru olsa bile dizin context’i web sunucusu için uygun olmayabilir. İlk kontrol:

ls -Z /var/www
restorecon -Rv /var/www

Özel dizin kullanılıyorsa semanage fcontext ile kalıcı eşleme yapılmalıdır.

2. Uygulama dosya yükleyemiyor

Upload klasörü salt okunur context ile etiketlenmiş olabilir. Yalnızca yazma ihtiyacı olan klasörleri uygun şekilde etiketlemek gerekir. Geniş kapsamlı gevşetmeler yerine minimal izin yaklaşımı uygulanmalıdır.

3. Servis özel portta açılmıyor

Uygulama örneğin 8081 portuna bind etmeye çalışırken SELinux engel olabilir:

semanage port -a -t http_port_t -p tcp 8081

Eğer port zaten tanımlıysa -m parametresiyle değiştirme yapılabilir.

4. API bağlantıları başarısız oluyor

PHP uygulaması veya web servisi dış ağa çıkamıyorsa aşağıdaki boolean kontrolü yapılabilir:

getsebool httpd_can_network_connect
setsebool -P httpd_can_network_connect on

5. Hangi kuralın engellediği anlaşılmıyor

Audit log kayıtları incelenmelidir. Çoğu dağıtımda ilgili kayıtlar /var/log/audit/audit.log altında bulunur. Analiz için şu komutlar kullanılabilir:

ausearch -m avc -ts recent
journalctl -t setroubleshoot

Bu kayıtlar, hangi sürecin hangi kaynağa neden erişemediğini anlamada büyük kolaylık sağlar.

6. Geçici çözüm yerine kalıcı çözüm üretmek

Birçok yönetici problemi hızlı çözmek için SELinux’u kapatır. Ancak doğru yöntem, reddedilen erişimi analiz edip ya context düzeltmek ya da uygun politika/boolean ayarı yapmaktır. Disabled mod çoğu zaman teknik borç oluşturur ve ileride daha büyük güvenlik riskleri doğurur.

En İyi Uygulamalar

SELinux kullanırken sürdürülebilir ve güvenli bir yönetim için bazı temel prensiplere dikkat edilmelidir.

  • SELinux’u kapatmayın: Önce log analizi yapın, sonra doğru kural veya context düzeltmesini uygulayın.
  • Permissive modu teşhis için kullanın: Kalıcı çalışma modu olarak değil, hata analizi için kısa süreli kullanın.
  • Standart dizin yapısını tercih edin: Mümkün olduğunda dağıtımın varsayılan servis yollarını kullanın.
  • Kalıcı eşleme yapın: Sadece chcon ile geçici etiket vermek yerine semanage fcontext kullanın.
  • Minimal yetki verin: Tüm web köküne yazma izni tanımlamak yerine yalnızca gerekli klasörleri yetkilendirin.
  • Değişiklikleri belgeleyin: Hangi port, hangi context ve hangi boolean neden açıldı kayıt altına alın.
  • Otomasyonla uyumlu olun: Ansible, shell script veya deployment süreçlerine SELinux adımlarını dahil edin.

Pratik örnek senaryo

Bir e-ticaret uygulamasını /srv/magaza altında yayınladığınızı düşünelim. Uygulama ürün görsellerini /srv/magaza/storage içinde tutuyor ve harici ödeme API’sine bağlanıyor. Bu durumda yapılacaklar kabaca şunlardır:

  1. İçerik dizinini tanımlayın: Web sunucusunun okuyacağı ana klasöre uygun context verin.
  2. Yazılabilir alanı ayırın: Yalnızca storage ve benzeri klasörlere yazma yetkisi tanımlayın.
  3. Dış ağ erişimini değerlendirin: Gerekliyse ilgili boolean değerini kontrollü şekilde açın.
  4. Log takibi yapın: İlk yayın sonrası audit log üzerinden reddedilen erişimleri inceleyin.

Bu yaklaşım hem güvenlik hem de sürdürülebilir operasyon açısından çok daha sağlıklıdır.

Corelux Altyapılarında SELinux Yaklaşımı

SELinux özellikle internet erişimine açık Linux sistemlerde, tek başına firewall veya antivirüs mantığıyla değerlendirilemeyecek kadar önemli bir katmandır. Hosting, VPS, VDS ve kiralık sunucu projelerinde güvenlik mimarisi planlanırken uygulama ihtiyaçları ile güvenlik politikalarının birlikte düşünülmesi gerekir.

Kaynak izolasyonu, özel servis portları, uygulama bağımlılıkları ve yönetim esnekliği gerektiren projelerde Kiralık Sunucu veya Türkiye VDS Sunucu çözümleri üzerinde SELinux politikalarını daha kontrollü şekilde uygulayabilirsiniz. Daha klasik web projeleri için ise Linux Hosting paketleri değerlendirilebilir.

Buna ek olarak sertifika, veri koruma ve operasyon sürekliliği tarafında SSL Sertifikası ve Yedekleme Hizmeti gibi tamamlayıcı çözümlerle daha güçlü bir altyapı kurulabilir. Güvenli bir sunucu mimarisinde tek bir bileşen değil, katmanlı savunma anlayışı önemlidir.

Sıkça Sorulan Sorular

SELinux kapatılmalı mı?

Genel olarak hayır. Sorun yaşandığında SELinux’u tamamen kapatmak yerine, log analizi yaparak doğru context, port veya boolean ayarını uygulamak daha güvenli ve profesyonel yaklaşımdır.

SELinux ile firewall aynı şey midir?

Hayır. Firewall (güvenlik duvarı) ağ trafiğini kontrol ederken, SELinux süreçlerin sistem kaynaklarına erişimini politika bazlı denetler. İkisi farklı katmanlarda çalışır ve birbirini tamamlar.

Permissive mod güvenli midir?

Permissive mod, kural ihlallerini engellemez; yalnızca kayıt altına alır. Bu nedenle kalıcı çalışma modu olarak değil, test ve sorun giderme amacıyla kısa süreli kullanılmalıdır.

chcon ile yapılan değişiklikler yeterli olur mu?

chcon geçici çözüm sağlayabilir; ancak kalıcı ve doğru yöntem çoğu durumda semanage fcontext ile eşleme yapıp ardından restorecon çalıştırmaktır. Aksi halde relabel veya yeniden yükleme sonrası değişiklikler kaybolabilir.

SELinux performansı düşürür mü?

Modern sistemlerde SELinux’un performans etkisi çoğu iş yükünde ihmal edilebilir seviyededir. Sağladığı güvenlik kazanımı, küçük operasyonel maliyetin çok üzerindedir.

Hangi sunucu projelerinde SELinux özellikle önemlidir?

İnternete açık web sunucuları, API servisleri, çok kullanıcılı hosting ortamları, uygulama sunucuları, veritabanı bağlantılı projeler ve regülasyon gerektiren kurumsal sistemlerde SELinux çok daha kritik hale gelir.

Sonuç

SELinux, Linux sunucularda ek bir karmaşıklık değil; doğru kullanıldığında güçlü bir güvenlik yatırımıdır. Dosya izinlerinin ötesine geçerek süreç, servis, port ve kaynak erişimini politika tabanlı biçimde denetler. Özellikle web sunucuları, API servisleri, özel uygulama dizinleri ve çok katmanlı altyapılarda ciddi koruma sağlar.

Eğer projeniz için güvenli, ölçeklenebilir ve profesyonel bir altyapı planlıyorsanız; ihtiyaçlarınıza göre Sanal Sunucu, Bulut Sunucu veya Hosting çözümlerini değerlendirerek güvenlik politikalarınızı daha sağlam bir zeminde kurgulayabilirsiniz. Doğru yapılandırılmış bir sunucu ortamında SELinux, sürdürülebilir güvenliğin temel parçalarından biridir.

Yazar

Boran BAR

Chat on WhatsApp