Hoşgeldin Misafir

SELinux politikaları ile erişim kontrolü

Graves

Graves

Karanlık Özgürlüktür
Moderator
9 Eki 2024
10,472 Mesaj
TIM Görevleri
2

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
SELinux politikaları ile erişim kontrolü
Merhabalar Ben @Phobos Lojistik grup adına paylaşılan SELinux politikaları ile erişim kontrolü makalesinde sizi görmekten mutluyum.
SELinux, 2000’li yılların başında NSA (Amerikan Ulusal Güvenlik Ajansı) tarafından geliştirilmiş, Linux sistemlerde Mandatory Access Control (Zorunlu Erişim Kontrolü - MAC) sağlayan bir güvenlik altyapısıdır. Geleneksel Discretionary Access Control (DAC) sistemlerinin ötesinde, daha ayrıntılı ve katı kurallar tanımlar.



SELinux’un Erişim Kontrol Modeli

SELinux, erişim kontrolünü üç temel bileşen üzerinden yürütür
  1. Kullanıcı (SELinux User)
  2. Rol (Role)
  3. Tip (Type ya da Domain)
Her süreç ve dosya bir güvenlik bağlamı (security context) ile etiketlenmiştir. Örnek bir bağlam

Kod:
system_u:system_r:httpd_t:s0

Bu bağlam dört parçadan oluşur

  • Kullanıcı (system_u): SELinux kullanıcı adı
  • Rol (system_r): Hangi rolü üstlendiği
  • Tür (httpd_t): Tip ya da domain
  • Seviye (s0): MLS/MCS seviyeleri (çoğu sistemde sadece s0)

Erişim kuralları, tipler (domain-type modeli) üzerinden belirlenir.



SELinux Politikaları

1. Hedefli Politika (Targeted Policy)

En yaygın kullanılan SELinux politikasıdır. Yalnızca belirli servis ve süreçler için güvenlik kontrolleri uygular (örneğin httpd, sshd, named gibi).

2. Katı Politika (Strict Policy)

Tüm süreçler ve kullanıcılar üzerinde sıkı kontrol uygular. Genellikle daha fazla yönetim bilgisi gerektirir.

3. MLS/MCS Politikaları

Gizlilik seviyeleri içeren sistemlerde kullanılır. Multilevel Security (MLS) ve Multi-Category Security (MCS) yapılarını kapsar. Örneğin, askeri sistemlerde "gizli", "çok gizli" gibi etiketler kullanılabilir.



Erişim Kontrolü Nasıl Uygulanır?

SELinux, her erişim talebinde aşağıdaki adımları izler
  1. Kullanıcı veya süreç, bir dosyaya ya da başka bir kaynağa erişim talebinde bulunur.
  2. Kernel, talepte bulunan sürecin ve kaynağın güvenlik bağlamlarını karşılaştırır.
  3. Politika dosyasında tanımlı kurallar, bu talebe izin verilip verilmeyeceğini belirler.
  4. Eğer izin yoksa, işlem engellenir ve audit.log dosyasına kayıt düşülür.


SELinux Komutları

  • Durumu kontrol etme:
    Kod:
     sestatus
  • Durum değiştirme (geçici):
    Kod:
     setenforce 0   # Permissive
     setenforce 1   # Enforcing
  • Kalıcı ayar:
    Kod:
     /etc/selinux/config
    dosyasında SELINUX=enforcing satırıyla belirlenir.
  • Dosya bağlamı görüntüleme:
    Kod:
     ls -Z
  • Bağlam değiştirme:
    Kod:
     chcon -t httpd_sys_content_t /var/www/html/index.html


Politika İhlallerinin Teşhisi ve Çözümü

SELinux erişimi engellediğinde genellikle audit.log dosyasına kayıt düşer

Kod:
ausearch -m avc -ts recent

Yaygın çözüm yolları

  • Uygun booleans etkinleştirme
    Kod:
     setsebool -P httpd_can_network_connect on
  • restorecon ile doğru bağlamların geri yüklenmesi
    Kod:
     restorecon -Rv /var/www/html
  • Gerekirse özel politika modülü oluşturma:
    Kod:
     grep httpd /var/log/audit/audit.log | audit2allow -M mypol
     semodule -i mypol.pp

Avantajları

  • Geleneksel Linux DAC sistemine ek olarak detaylı denetim
  • Hatalı yapılandırmaları veya sıfır-gün açıklarını etkisiz hale getirme potansiyeli
  • Güvenlik duvarına benzer şekilde davranarak süreçler arası izolasyon sağlar


SELinux, Linux sistemlerinde güçlü bir erişim kontrolü sağlar. Özellikle sunucu ortamlarında yanlış yapılandırmalara veya zararlı yazılımlara karşı ikinci bir güvenlik katmanı oluşturur. Ancak doğru yapılandırılmazsa erişim sorunlarına yol açabilir. Bu nedenle, SELinux politikalarının ve güvenlik bağlamlarının doğru anlaşılması ve yönetilmesi hayati önem taşır.

LOJİSTİK TİM SUNDU
btn1pyf.png