Tüm barındırma hizmetlerinde 15% tasarruf edin

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

Kodu kullanın: Skills Başlayın
Bölüm
Güvenlik Linux

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çermek için tasarlanmış çekirdek düzeyinde zorunlu erişim kontrolü çerçevesi olan SELinux (Security-Enhanced Linux)‘tir.

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

SELinux Nedir?

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

Geleneksel Linux güvenlik modeli, İsteğe Bağlı Erişim Kontrolü (DAC) üzerine kuruludur. DAC altında, erişim izinleri dosya sahipliği ve grup üyeliğine göre belirlenir. Root kullanıcısı tüm sistem üzerinde sınırsız güce sahiptir. Bir saldırgan root erişimi elde ederse, her şeyi elde eder.

SELinux’un MAC modeli altında, erişim kernel düzeyinde uygulanan sistem genelinde güvenlik politikaları tarafından yönetilir. Kritik olarak, root kullanıcısı 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 kernel’ine entegre edilmiştir. Bugün RHEL, CentOS, Fedora, AlmaLinux ve Rocky Linux dahil olmak üzere kurumsal düzeyde Linux dağıtımlarının standart bir bileşenidir.

Geleneksel Linux Güvenliği Nerede Yetersiz Kalıyor

Klasik UNIX izin modeli Linux’a onlarca yıldır iyi hizmet verdi, 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 hepsi.
  • Hizmet güvenliği ihlali sistem güvenliği ihlali anlamına gelir. Savunmasız bir Apache modülü, kötü kodlanmış bir PHP betiği veya yanlış yapılandırılmış bir uygulama, tüm sunucu genelinde hareket etmek için kullanılabilir.
  • Modern saldırı vektörleri DAC’ı tamamen atlatır. Web shell’ler, 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 seviyesinde hasara neden olmak için tasarlanmıştır.

Gerçek Dünya Saldırı Senaryosu

Bir saldırganın web shell 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 dosyasını 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 tehlikeye atılır.

SELinux ile: Apache web sunucusu işlemi httpd_t alanında çalışır. İlke, httpd_t öğesinin erişebileceği şeyleri kesin olarak sınırlar. Web shell, 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 sınırlandırılır.

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

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

SELinux, sistemdeki her işleme, dosyaya, porta ve ağ soketine bir güvenlik bağlamı (etiketi) atayarak çalışır. İlkeler daha sonra hangi bağlamların birbirleriyle etkileşim kurmasına 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 ilkesi httpd_t öğesinin httpd_sys_content_t ile etiketlenmiş dosyaları okumasına izin verir. httpd_t öğesinin shadow_t öğesini okumasına izin vermez.

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

SELinux İşletim Modları

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

ModDavranış
Enforcingİlkeler etkin olarak uygulanır. İhlaller engellenir ve kaydedilir.
Permissiveİhlaller kaydedilir ancak engellenmez. Denetim ve ilke geliştirme için kullanışlı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 dosyasını 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 tanımlayın, ilkelerinizi ince ayar yapın ve ardından üretim için Enforcing moduna geçin. Bu yaklaşım, ilkelerinizin doğru olmasını sağlarken operasyonel kesintileri önler.

SELinux Policy Types

SELinux birkaç farklı ortama uygun policy türü ile birlikte gelir:

Targeted Policy (Varsayılan ve Önerilen)

MAC kısıtlamalarını yalnızca ağa bakan hizmetlere (Apache, Nginx, Postfix, Dovecot ve DNS gibi) uygular. Diğer tüm işlemler sınırlandırılmamış bir domain’de çalışır. Bu, çoğu VPS ve dedicated server iş yükü için güvenlik ve kullanılabilirlik açısından en iyi dengeyi sağlar.

Strict Policy

MAC’ı sistem üzerindeki tüm işlemlere (kullanıcı oturumları dahil) uygular. Maksimum güvenlik sağlar ancak önemli ölçüde daha fazla policy yönetimi ve operasyonel uzmanlık gerektirir.

MLS/MCS (Multi-Level Security / Multi-Category Security)

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

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

SELinux’un Hosting, DevOps ve Uyum Açısından Neden Önemli Olduğu

SELinux, geniş bir operasyonel bağlam yelpazesinde somut güvenlik faydaları sağlar:

Proses İzolasyonu

Her sınırlandırılmış hizmet kendi güvenlik alanı içinde çalışır. Bir hizmeti — örneğin bir web uygulamasını — tehlikeye atmak, aynı ana bilgisayarda çalışan diğer hizmetlere erişim sağlamaz. 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. Süreçler yalnızca açıkça ihtiyaç duydukları kaynaklara erişebilir. Bir saldırgan sınırlandırılmış bir işlem içinde root elde etse bile, politika tarafından tanımlanan izinleri aşamaz.

Denetim İzleri ve Adli Tıp

Her reddedilen erişim denemesi /var/log/audit/audit.log için tam bağlamla günlüğe kaydedilir: ilgili işlem, erişmeye çalıştığı kaynak, her ikisinin de güvenlik bağlamları ve bir zaman damgası. Bu, olay sonrası adli tıp araştırmasını 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 engeller. 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 politikayla çalıştırmak, genellikle düzenlenmiş endüstrilerde güvenlik denetimlerini geçmek için bir ön koşuldur.

Sistem Yöneticileri için Temel SELinux Komutları

Günlük işlemlerde SELinux yönetimi için en sık kullanılan komutlar şunlardır:

SELinux Durumunu Kontrol Edin

getenforce
sestatus

Web Dosyaları Taşındıktan Sonra Dosya Bağlamlarını Geri Yükleyin

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 Listeleyin

ls -Z /var/www/html

Web Hizmetinin Giden Bağlantılarına İzin Verin (ö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 Verin

setsebool -P httpd_can_network_connect_db 1

Denetim Günlüğündeki Son Reddedilen İşlemleri İnceleyin

ausearch -m avc -ts recent

Denetim Reddetmelerinden Özel Bir İlke Modülü Oluşturun

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

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

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

SELinux’u düzeltmek yerine devre dışı bırakmak. Yöneticilerin yaptığı en yaygın hata, bir reddi karşılaştıklarında SELinux’u kalıcı olarak devre dışı bırakmaktır. Bu, tüm bir koruma katmanını kaldırır. Bunun yerine, SELinux’u etkin tutarken belirli sorunları gidermek için audit2allow ve setsebool kullanın.

Manuel dağıtımlardan sonra yanlış dosya etiketleri. Uygulama dosyalarını standart olmayan bir konumdan kopyalayarak dağıtırsanız, yanlış etiketleri devralabilirler. Web kökleri ve uygulama dizinlerinde manuel dosya işlemlerinden sonra her zaman restorecon çalıştırın.

İzin Verici modunda günlükleri gözden geçirmemek. İzin Verici aşamasını atlayıp doğrudan bir üretim sunucusunda Zorlayıcı moda geçmek, beklenmedik kesintilerin reçetesidir. Bunları uygulamadan önce ilkeleri her zaman gerçek trafikle doğrulayın.

SELinux ve AlexHost: Baştan Sona Üretime Hazır Güvenlik

AlexHost sunucuları kurumsal Linux dağıtımları (AlmaLinux, Rocky Linux, CentOS) ile birlikte SELinux’in kutudan çıktığı gibi kullanılabilir halde gelir. Bir web uygulaması yığını, bir veritabanı sunucusu veya kapsayıcılı mikro hizmetler ortamı dağıtıyor olsanız da, SELinux iş yüklerinizi istismardan koruyarak dayanıklı tutan temel erişim kontrol katmanını sağlar.

Sunucunuzu bir kontrol paneli aracılığıyla yönetiyorsanız, cPanel ile VPS ortamları Targeted modunda SELinux ile tamamen uyumludur ve cPanel’in kendisi yönetilen hizmetleri için SELinux’ten haberdar yapılandırmalarla birlikte gelir.

Güvenlik duruşları üzerinde tam kontrol gerektiren takımlar için — özel SELinux ilke modülleri, MLS yapılandırmaları veya uyum odaklı sertleştirme dahil — Dedicated Servers, paylaşılan altyapının kısıtlamaları olmadan kurumsal düzeyde MAC ilkelerini uygulamak ve sürdürmek için gereken izolasyon ve root düzeyinde erişim sağlar.

Sonuç

SELinux sadece isteğe bağlı bir güvenlik eklentisi değildir — çekirdek düzeyinde erişim kontrolünü yeniden tanımlayan temel bir mimari bileşendir. Süreçleri iyi tanımlanmış güvenlik alanlarına sınırlandırarak, root tarafından bile atlanamayan en az ayrıcalık ilkelerini uygulayarak ve reddedilen her erişim denemesinin ayrıntılı denetim izlerini oluşturarak, SELinux standart bir Linux sunucusunu önemli ölçüde daha dayanıklı ve savunulabilir bir sisteme dönüştürür.

Evet, SELinux yatırım gerektirir: güvenlik bağlamlarını anlamak, politikaları yazmak veya ayarlamak ve reddetmeleri engeller yerine bilgi olarak ele alan bir iş akışına bağlılık göstermek. Ancak hassas veriler işleyen, halka açık hizmetler çalıştıran veya düzenlenmiş bir uyum çerçevesi içinde faaliyet gösteren herhangi bir sunucu için bu yatırım isteğe bağlı değildir — bu temeldir.

Bunu doğru şekilde yapılandırın, Enforcing modunda tutun ve SELinux, aksi takdirde tüm altyapınızı tehlikeye atacak tehditleri sessizce içinde tutacaktır.