Zorunlu Erisim Kontrolu: SELinux ve AppArmor Ne Yapar?

SELinux ve AppArmor zorunlu erisim kontrolu nasil calisir? Politika modlari, yaygin hatalar ve dogru yapilandirma. Zorunlu Erişim Kontrolü: SELinux ve…

Zorunlu Erisim Kontrolu: SELinux ve AppArmor Ne Yapar?
İçindekiler
  1. Zorunlu Erişim Kontrolü: SELinux ve AppArmor Ne Yapar?
  2. Klasik İzinlerin Sınırı
  3. Nasıl Çalışır?
  4. Gerçek Bir Senaryo
  5. Çalışma Modları
  6. Neden Kapatılıyor?
  7. Engelleme Teşhisi
  8. Sık Karşılaşılan Durumlar
  9. Nereden Başlamalı?
  10. Sonuç
  11. Sıkça Sorulan Sorular (SSS)
  12. Klasik izinlerden farkı ne?
  13. "İzin reddedildi" hatası alıyorum ama izinler doğru?
  14. Yedekten geri yükledim, site açılmıyor?
  15. Sorun çıkınca kapatabilir miyim?

Zorunlu Erisim Kontrolu: SELinux ve AppArmor Ne Yapar?

Zorunlu Erişim Kontrolü: SELinux ve AppArmor Ne Yapar?

Web sunucunuz kendi kullanıcısıyla çalışıyor, dosya izinleri doğru. Yine de bir açıktan yararlanan saldırgan, o kullanıcının erişebildiği her şeye ulaşabilir. Bir katman daha olsaydı ulaşamazdı.

Bu yazı, klasik izinlerin üstüne eklenen zorunlu erişim kontrolünü ele alıyor.

Klasik İzinlerin Sınırı

Model Kararı kim verir
Klasik izinler Dosya sahibi
Zorunlu erişim kontrolü Sistem politikası

Bu fark belirleyicidir: klasik modelde bir sürecin yapabilecekleri onu çalıştıran kullanıcının yetkisiyle sınırlıdır — zorunlu erişim kontrolünde ise sürecin kendisine ayrıca bir sınır çizilir ve kullanıcı yetkili olsa bile o sınır aşılamaz.

Yani web sunucusu kullanıcısı bir dosyayı okuyabiliyor olsa bile, politika izin vermiyorsa okuyamaz.

Bu ikinci katman, bir açıktan yararlanmanın etkisini dramatik biçimde daraltır.

Nasıl Çalışır?

  • Her sürece bir bağlam atanır.
  • Her dosyaya bir etiket verilir.
  • Politika hangi bağlamın hangi etikete erişeceğini tanımlar.
  • Tanımlanmamış erişim reddedilir.

Dördüncü madde modelin gücünü verir: varsayılan davranış reddetmektir — açıkça izin verilmemiş her erişim engellenir ve saldırganın beklenmedik bir yola sapması baştan imkânsızlaşır.

Klasik izinlerde ise varsayılan genellikle izin vermektir.

Üçüncü madde ise politikanın kapsamını gösterir. Dosya erişimi dışında ağ bağlantısı, port dinleme ve süreç oluşturma da kapsanabilir.

Gerçek Bir Senaryo

Etkiyi somutlaştırmak için tipik bir saldırı akışı:

  1. Bir eklenti açığından dosya yüklenir.
  2. Yüklenen betik çalıştırılmak istenir.
  3. Betik sistem dosyalarını okumaya çalışır.
  4. Dışarıya bağlantı açmaya çalışır.

Zorunlu erişim kontrolü bu zinciri birden fazla noktada kırar: politika web sunucusuna yükleme klasöründen kod çalıştırma izni vermiyorsa ikinci adım başarısız olur — dosya diskte durur ama hiçbir şey yapamaz.

Dördüncü adım da ayrıca engellenebilir. Web sunucusunun dışarıya bağlantı açması normalde gerekmez.

Bu iki kısıt, en yaygın saldırı sonuçlarını etkisiz kılar.

Çalışma Modları

Mod Davranış
Zorlayıcı Engeller ve kaydeder
İzin verici Engellemez, yalnızca kaydeder
Devre dışı Hiç çalışmaz

İkinci satır geçiş için tasarlanmıştır ve doğru kullanım yoludur: izin verici modda sistem hiçbir şeyi engellemez ama neyi engelleyeceğini kaydeder — bu kayıtları inceleyerek politikayı üretimi bozmadan hazırlayabilirsiniz.

Doğrudan zorlayıcı moda geçmek, beklenmedik servis arızalarına yol açar.

Üçüncü satır ise çoğu kurulumda ilk yapılan işlemdir ve yanlış bir alışkanlıktır.

Bir sorun çıktığında bu katmanı kapatmak sorunu çözer ama korumayı da tamamen ortadan kaldırır.

Neden Kapatılıyor?

  • Hata mesajları anlaşılmaz.
  • Sorunun kaynağı gizlenir.
  • Politika yazmak emek ister.
  • Belgeler bunu öneriyor olabilir.

İkinci madde en büyük engeldir: politika bir erişimi engellediğinde uygulama genelde "izin reddedildi" der ve klasik izinlerde sorun aramaya başlarsınız — dosya izinleri doğrudur ama bir başka katman engelliyordur.

Bu, saatlerce yanlış yerde arama yapmaya yol açar.

Çözüm, izin reddi kayıtlarını doğrudan incelemektir; oradaki mesajlar hangi kuralın engellediğini açıkça söyler.

Dördüncü madde ise sık karşılaşılan bir tavsiyedir ama güvenlik açısından yanlıştır.

Engelleme Teşhisi

  1. Denetim kayıtlarına bakın.
  2. Reddedilen erişimi bulun.
  3. Hangi bağlam ve etiket olduğunu görün.
  4. Gerekli izni tanımlayın.

Birinci madde teşhisin tamamıdır: bir uygulama beklenmedik biçimde "izin reddedildi" veriyorsa, denetim kayıtlarında o anda bir engelleme kaydı olup olmadığına bakmak sorunun kaynağını saniyeler içinde belirler.

Kayıt varsa sorun politikadadır; yoksa klasik izinlerdedir.

Bu tek kontrol, iki tamamen farklı arama yolunu ayırır.

Dördüncü madde ise politikayı genişletir ama mümkün olduğunca dar tutulmalıdır.

Sık Karşılaşılan Durumlar

Durum Neden
Standart dışı dizinde site Etiket yanlış
Standart dışı port dinleme Port tanımlı değil
Web sunucusundan dış bağlantı Varsayılan kapalı
Yedekten geri yüklenen dosyalar Etiketler kaybolmuş

Dördüncü satır çok yaşanan ve şaşırtan bir durumdur: bir yedekten geri yüklenen dosyalar etiket bilgisini taşımayabilir ve site aniden erişilemez olur — dosyalar yerinde ve izinleri doğrudur ama etiketleri yanlıştır.

Çözüm, ilgili dizinin etiketlerini yeniden uygulamaktır ve bu tek komutluk bir işlemdir.

Birinci satır ise siteyi alışılmadık bir konuma kuranlarda görülür ve aynı çözümle giderilir.

Üçüncü satır ise dış API kullanan uygulamalarda karşımıza çıkar ve açıkça izin verilmesi gerekir.

Nereden Başlamalı?

  • Kapatmayın, izin verici moda alın.
  • Kayıtları bir süre toplayın.
  • Gerekli izinleri tanımlayın.
  • Zorlayıcı moda geçin.

Birinci madde en önemli tavsiyedir: bir sorunla karşılaştığınızda bu katmanı tamamen kapatmak yerine izin verici moda almak, hem sorunu çözer hem hangi erişimlerin gerektiğini öğrenmenizi sağlar.

Kapatmak ise bu bilgiyi de yok eder.

İkinci madde ise uygulamanın tüm işlevlerinin çalıştırılmasını gerektirir; nadir kullanılan bir özellik ancak o zaman kayıt üretir.

Bu nedenle toplama süresi yeterince uzun olmalıdır.

Sunucunuzda bu katmanı yapılandırmak için kök erişim gerekir; VDS sunucu barındırma ile tam yetkili erişiminiz olduğu için politikayı ihtiyacınıza göre şekillendirebilirsiniz.

Sonuç

Zorunlu erişim kontrolü klasik izinlerin üstüne ikinci bir sınır çizer: web sunucusu kullanıcısı bir dosyayı okuyabiliyor olsa bile, politika izin vermiyorsa okuyamaz. Bu, bir açıktan yararlanmanın etkisini dramatik daraltır — yüklenen zararlı bir betik diskte durur ama çalıştırılamaz. Sorun çıktığında kapatmayın: izin verici moda alın; hem sorun çözülür hem hangi erişimlerin gerektiğini öğrenirsiniz.

Sıkça Sorulan Sorular (SSS)

Klasik izinlerden farkı ne?

Kararı kimin verdiği. Klasik modelde bir sürecin yapabilecekleri onu çalıştıran kullanıcının yetkisiyle sınırlıdır; zorunlu erişim kontrolünde ise sürecin kendisine ayrıca bir sınır çizilir ve kullanıcı yetkili olsa bile o sınır aşılamaz. Ayrıca varsayılan davranış reddetmektir.

"İzin reddedildi" hatası alıyorum ama izinler doğru?

Denetim kayıtlarına bakın. O anda bir engelleme kaydı varsa sorun politikadadır, yoksa klasik izinlerdedir — bu tek kontrol iki tamamen farklı arama yolunu ayırır. Kayıtlardaki mesajlar hangi kuralın engellediğini açıkça söyler.

Yedekten geri yükledim, site açılmıyor?

Geri yüklenen dosyalar etiket bilgisini taşımamış olabilir. Dosyalar yerinde ve izinleri doğrudur ama etiketleri yanlıştır. Çözüm, ilgili dizinin etiketlerini yeniden uygulamaktır ve bu tek komutluk bir işlemdir.

Sorun çıkınca kapatabilir miyim?

Kapatmak yerine izin verici moda alın. O modda sistem hiçbir şeyi engellemez ama neyi engelleyeceğini kaydeder — bu kayıtlarla politikayı üretimi bozmadan hazırlayabilirsiniz. Tamamen kapatmak sorunu çözer ama korumayı ve o bilgiyi de yok eder.