15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
25.08.2025

SELinux Nedir ve Linux Sunucularında Güvenliği Nasıl Artırabilir?

Çoğu sistem yöneticisi bir Linux sunucusunu sağlamlaştırma hakkında düşündüğünde, temellere odaklanırlar: paketleri güncel tutmak, güvenlik duvarı kurallarını yapılandırmak ve SSH erişimini kısıtlamak. Bunların hepsi geçerli ve gerekli adımlardır — ancak önemli bir boşluk bırakırlar. Linux’ta mevcut olan en güçlü ve sıklıkla yetersiz kullanılan güvenlik mekanizmalarından biri, tehditleri tam sistem uzlaşmasına dönüşmeden önce içinde tutmak için tasarlanmış çekirdek düzeyinde zorunlu erişim kontrolü çerçevesi olan SELinux (Security-Enhanced Linux)‘dir.

VPS Hosting ortamı çalıştırıyor olsanız, Dedicated Servers‘da yüksek trafikli bir uygulama çalıştırıyor olsanız veya çok kiracılı bir Shared Web Hosting platformu işletiyorsanız, SELinux ciddi bir ihlali içinde tutulmuş, kurtarılabilir bir olaya dönüştüren belirleyici katman olabilir.

SELinux Nedir?

SELinux, Zorunlu Erişim Kontrolü (MAC) uygulayan bir Linux çekirdeği güvenlik modülüdür. Bunun neden önemli olduğunu anlamak için, önce neyi değiştirdiğini — veya daha doğrusu neyi artırdığını — anlamanız gerekir.

Geleneksel Linux güvenlik modeli İsteğe Bağlı Erişim Kontrolü (DAC)‘ye dayanır. DAC altında, erişim izinleri dosya sahipliği ve grup üyeliğine göre belirlenir. Root kullanıcı tüm sistem üzerinde sınırsız güce sahiptir. Bir saldırgan root’u ele geçirirse, her şeyi ele geçirir.

SELinux’un MAC modeli altında, erişim çekirdek düzeyinde uygulanan sistem genelinde güvenlik politikaları tarafından yönetilir. Kritik olarak, root kullanıcı bile bu kısıtlamalara tabidir. Root olarak çalışan bir işlem, SELinux politikası açıkça izin vermediği eylemleri gerçekleştiremez.

SELinux başlangıçta Ulusal Güvenlik Ajansı (NSA) tarafından Red Hat ile işbirliği içinde geliştirilmiş ve 2000’li yılların başında mainline Linux çekirdeğine entegre edilmiştir. Bugün, RHEL, CentOS, Fedora, AlmaLinux ve Rocky Linux dahil olmak üzere kurumsal sınıf Linux dağıtımlarının standart bir bileşenidir.

Geleneksel Linux Güvenliğinin Yetersiz Kaldığı Yerler

Klasik UNIX izin modeli Linux’a onlarca yıldır iyi hizmet etmiştir, ancak modern saldırganların rutin olarak istismar ettiği yapısal zayıflıklar taşır:

  • Root her şeye güçlüdür. Root’a başarıyla yükseltilen herhangi bir istismar, saldırgana tüm sistem üzerinde sınırsız erişim verir — dosyalar, veritabanları, ağ soketleri ve tümü.
  • Hizmet uzlaşması sistem uzlaşması anlamına gelir. Savunmasız bir Apache modülü, kötü yazılmış bir PHP betiği veya yanlış yapılandırılmış bir uygulama, tüm sunucu genelinde pivot yapmak için kullanılabilir.
  • Modern saldırı vektörleri DAC’yi tamamen atlar. Web kabuğu, ayrıcalık yükseltme istismarları, konteyner kaçışları ve tedarik zinciri saldırıları, geleneksel izinlerin sınırları içinde çalışırken yine de felaket hasarına neden olmak için tasarlanmıştır.

Gerçek Dünya Saldırı Senaryosu

Bir saldırganın web kabuğu yüklemesine ve yürütmesine izin veren yaygın bir CMS güvenlik açığını düşünün.

SELinux olmadan: Saldırgan config.php okur, veritabanı kimlik bilgilerini çıkarır, veritabanını döker, barındırılan diğer sitelere yanal olarak hareket eder ve potansiyel olarak tam root erişimi elde eder. Tüm yığın tek bir giriş noktasından uzlaşmıştır.

SELinux ile: Apache web sunucusu işlemi httpd_t alanında çalışır. Politika, httpd_t‘nin erişebileceği şeyleri kesinlikle sınırlar. Web kabuğu, belirlenen içerik alanı dışındaki dosyaları okuyamaz, yetkisiz ağ bağlantıları açamaz ve sistem yapılandırma dosyalarına dokunmaz. İhlal uygulama katmanında içinde tutulur.

Bu, SELinux’un temel değer önerisidir: işlem sınırlandırması yoluyla hasar sınırlandırması.

SELinux Nasıl Çalışır: Güvenlik Bağlamları ve Politika Uygulaması

SELinux, sistemdeki her işleme, dosyaya, porta ve ağ soketine bir güvenlik bağlamı (etiketi) atayarak çalışır. Politikalar daha sonra hangi bağlamların birbirleriyle etkileşime izin verildiğini tanımlar. Çekirdek bu kuralları her erişim denemesinde uygular.

Somut Bir Örnek

NesneGüvenlik Bağlamı
Apache işlemihttpd_t
Web sitesi dosyalarıhttpd_sys_content_t
Shadow parola dosyasıshadow_t

SELinux politikası httpd_t‘nin httpd_sys_content_t etiketli dosyaları okumasına izin verir. httpd_t‘nin shadow_t okumasına izin vermez.

Apache — meşru olarak veya istismar nedeniyle — /etc/shadow okumaya çalışırsa, çekirdek isteği reddeder ve /var/log/audit/audit.log‘ye ayrıntılı bir ihlal girişi yazar. Saldırı engellenir ve aynı anda belgelenir.

SELinux İşletim Modları

SELinux üç farklı modda çalışır:

ModDavranış
EnforcingPolitikalar aktif olarak uygulanır. İhlaller engellenir ve günlüğe kaydedilir.
Permissiveİhlaller günlüğe kaydedilir ancak engellenmez. Denetim ve politika geliştirme için yararlıdır.
DisabledSELinux tamamen kapatılır. Üretim ortamları için önerilmez.

Geçerli Modu Kontrol Etme ve Ayarlama

# Check current SELinux status
getenforce
sestatus

# Temporarily switch to permissive mode (no reboot required)
setenforce 0

# Switch back to enforcing mode
setenforce 1

Modu kalıcı olarak değiştirmek için /etc/selinux/config düzenleyin ve SELINUX=enforcing (veya permissive) ayarlayın, ardından yeniden başlatın.

> En İyi Uygulama: Yeni sunucuları önce Permissive modunda dağıtın. Denetim günlüklerini gözden geçirin, işaretlenen meşru işlemleri belirleyin, politikalarınızı ince ayarlayın ve ardından üretim için Enforcing‘e geçin. Bu yaklaşım, politikalarınızın doğru olmasını sağlarken operasyonel kesintileri önler.

SELinux Politika Türleri

SELinux, farklı ortamlara uygun birkaç politika türü ile birlikte gelir:

Hedeflenen Politika (Varsayılan ve Önerilen)

MAC kısıtlamalarını yalnızca Apache, Nginx, Postfix, Dovecot ve DNS gibi ağa bakan hizmetlere uygular. Diğer tüm işlemler sınırlandırılmamış bir alanda çalışır. Bu, çoğu VPS ve özel sunucu iş yükü için güvenlik ve kullanılabilirliğin en iyi dengesidir.

Katı Politika

MAC’yi sistemdeki tüm işlemlere, kullanıcı oturumları da dahil olmak üzere uygular. Maksimum güvenlik sağlar ancak önemli ölçüde daha fazla politika yönetimi ve operasyonel uzmanlık gerektirir.

MLS/MCS (Çok Düzeyli Güvenlik / Çok Kategorili Güvenlik)

Verilerin aynı anda birden fazla hassasiyet düzeyinde izole edilmesi gereken hükümet sınıfı, gizli veya yüksek düzeyde düzenlenmiş ortamlar için tasarlanmış gelişmiş politika türleri.

Çoğu üretim sunucusu dağıtımı için Hedeflenen Politika doğru seçimdir.

SELinux Neden Barındırma, DevOps ve Uyum İçin Önemlidir

SELinux, çok çeşitli operasyonel bağlamlarda somut güvenlik faydaları sağlar:

İşlem İzolasyonu

Her sınırlandırılmış hizmet kendi güvenlik alanında çalışır. Bir hizmeti — örneğin bir web uygulamasını — uzlaşmak, aynı ana bilgisayarda çalışan diğer hizmetlere erişim vermez. Bu, çok uygulamalı sunucu ortamlarında özellikle değerlidir.

En Az Ayrıcalık Uygulaması

SELinux, en az ayrıcalık ilkesini çekirdek düzeyinde uygular. İşlemler yalnızca açıkça ihtiyaç duydukları kaynaklara erişebilir. Bir saldırgan sınırlandırılmış bir işlem içinde root’u ele geçirse bile, politika tarafından tanımlanan izinleri aşamaz.

Denetim İzleri ve Adli Tıp

Reddedilen her erişim denemesi /var/log/audit/audit.log‘ye tam bağlam ile günlüğe kaydedilir: ilgili işlem, erişmeye çalıştığı kaynak, her ikisinin güvenlik bağlamları ve bir zaman damgası. Bu, olay sonrası adli tıpı dramatik olarak daha etkili hale getirir.

Konteyner Güvenliği

SELinux, Docker ve Podman konteynerlerinin sınırlarından kaçmasını ve ana bilgisayar kaynaklarına erişmesini önler. Bu, konteyner kaçış güvenlik açıklarının bilinen bir saldırı sınıfı olduğu konteynerleştirilmiş iş yükleri için kritik bir savunma katmanıdır.

Yasal Uyum

SELinux, PCI DSS, HIPAA ve askeri/hükümet güvenlik standartları dahil olmak üzere birkaç uyum çerçevesinde gerekli bir kontroldür. SELinux’u Enforcing modunda belgelenmiş bir politika ile çalıştırmak, genellikle düzenlenmiş endüstrilerde güvenlik denetimlerini geçmek için bir ön koşuldur.

Sistem Yöneticileri İçin Temel SELinux Komutları

Günlük işlemlerde SELinux’u yönetmek için en yaygın olarak kullanılan komutlar şunlardır:

SELinux Durumunu Kontrol Etme

getenforce
sestatus

Web Dosyalarını Taşıdıktan Sonra Dosya Bağlamlarını Geri Yükleme

Dosyalar kopyalanmak yerine taşındığında, yanlış güvenlik etiketlerini koruyabilirler. Bunu düzeltmek için restorecon kullanın:

restorecon -Rv /var/www/html

Dosya Güvenlik Etiketlerini Listeleme

ls -Z /var/www/html

Web Hizmetinin Giden Bağlantılarına İzin Verme (örneğin API çağrıları veya proxy için)

setsebool -P httpd_can_network_connect 1

Apache’nin Veritabanına Bağlanmasına İzin Verme

setsebool -P httpd_can_network_connect_db 1

Denetim Günlüğündeki Son Reddedilen Eylemleri Gözden Geçirme

ausearch -m avc -ts recent

Denetim Redlerinden Özel Politika Modülü Oluşturma

audit2allow -a -M my_custom_policy
semodule -i my_custom_policy.pp

> Önemli: İzin kuralları oluşturmadan önce her zaman denetim redlerini araştırın. audit2allow güçlü bir araçtır, ancak tüm redleri kör bir şekilde izin vermek SELinux’un amacını ortadan kaldırır. Her kuralın ne izin verdiğini uygulamadan önce anlayın.

Yaygın SELinux Tuzakları ve Bunlardan Kaçınma Yolları

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın