LINUX ÖĞRENİYORUM SERİSİ 5

Merhabalar,

Öncelikle 2025 yılına girmeye az bir vakit kalmışken, yeni yıl için en güzel dileklerimi de iletmek istiyorum. Hepimiz için sağlıklı, bereketli, mutlu, umutlu, bilgilerimizi daha çok artırıp geliştireceğimiz muhteşem bir yıl olsun.

Biliyorsunuz, “Linux Öğreniyorum” serisine başlamıştım. Önceki makalelerin adreslerini hatırlatmak amacıyla aşağıya ekledim:

https://asiyeyigit.com/linux-ogreniyorum-dizin-hiyerarsisi-ve-baslangic-dosyalari-ders-1/

https://asiyeyigit.com/linux-ogreniyorum-serisi-ders2/

https://asiyeyigit.com/inux-ogreniyorum-serisi-3-dosya-izinleri-ve-ozel-izinler/

https://asiyeyigit.com/linux-ogreniyorum-serisi-4-acl-access-control-list/

Bugün yine güvenlik üzerine devam edeceğim. Etkileyici bir konuyu seçtim: SELinux (Security-Enhanced Linux).

SELinux Nedir?

SELinux, Linux çekirdeğine entegre edilmiş, çekirdek seviyesinde çalışan bir Zorunlu Erişim Kontrolü (Mandatory Access Control – MAC) mekanizmasıdır. Amerika Ulusal Güvenlik Ajansı (NSA) tarafından geliştirilmiştir ve Red Hat, CentOS, Fedora gibi dağıtımlarda varsayılan olarak etkin gelir. Ubuntu gibi Debian tabanlı sistemlerde ise genellikle AppArmor etkin olur, ancak SELinux da kurulabilir.

Ben Oracle Cloud üzerinde Rocky Linux kullanıyorum. Tüm çalışmaları bu ortamda gerçekleştireceğim. Rocky Linux, RHEL tabanlı bir dağıtım olduğu için SELinux ile ilgili komutlar, Red Hat/CentOS/Fedora ortamlarında kullanılanlarla birebir aynıdır.

SELinux ve Geleneksel İzinler

DAC (Discretionary Access Control) Nedir?

  • Klasik Linux/Unix dosya izinlerini (owner, group, others), setuid, setgid, sticky bit ve ACL mekanizmalarını içerir.
  • Dosyanın veya sürecin sahibi, kimin erişebileceğine karar verir.

MAC (Mandatory Access Control) Nedir?

  • SELinux gibi sistemlerde kullanılan bir erişim kontrol modelidir.
  • Politika tabanlı çalışır ve root dahil herkesin bu politikalara uyması zorunludur.

SELinux Neden Gerekli?

SELinux, geleneksel izinlerin yetersiz kaldığı durumlarda daha detaylı bir kontrol mekanizması sağlar. Örneğin:

  1. Minimum Yetki İlkesi (Least Privilege):
    Kullanıcıların veya servislerin sadece kendi rollerine uygun kaynaklara erişmesini sağlar.
  2. Saldırı Yüzeyini Daraltmak:
    Örneğin, bir saldırgan web sunucusu üzerinden sisteme sızarsa, SELinux bu sürecin yalnızca belirlenen dosyalara erişmesine izin verir.
  3. Gelişmiş İzleme ve Kayıt:
    SELinux, tüm ihlalleri ve kural dışı hareketleri loglar. Bu sayede, hangi sürecin hangi kaynağa erişmeye çalıştığını takip edebilirsiniz.

SELinux’in İşleyiş Mantığı

SELinux, her erişim isteğini şu unsurları karşılaştırarak değerlendirir:

  1. Süreç Bağlamı (Source Context):
    Erişim talebinde bulunan uygulamanın güvenlik kimliğidir (ör. system_u:system_r:httpd_t:s0).
  2. Kaynak Bağlamı (Target Context):
    Erişim talep edilen dosya, port veya cihazın güvenlik kimliğidir (ör. system_u:object_r:httpd_sys_content_t:s0).
  3. Politika Kuralları (Policy Rules):
    SELinux politikaları, süreç ve kaynak bağlamları arasındaki ilişkiyi tanımlar.
    Örnek:

allow httpd_t httpd_sys_content_t:file { read open getattr };

Log Analizi ve Hata Giderme

SELinux loglarını analiz ederek engellenen erişimleri anlamak ve gerekli değişiklikleri yapmak mümkündür.

Log Örneği:

type=AVC msg=audit(1700000000.123:45): avc:  denied  { read } for  pid=1234 comm=”httpd” name=”index.html” scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=file

Bu log şu bilgileri içerir:

  • scontext: Sürecin bağlamı (httpd_t).
  • tcontext: Kaynağın bağlamı (httpd_sys_content_t).
  • tclass: Kaynağın sınıfı (dosya).

Engellenen Erişimleri Çözmek için:

audit2allow aracıyla politika oluşturabilirsiniz:

sudo cat /var/log/audit/audit.log | audit2allow -M my_policy

sudo semodule -i my_policy.pp

SELinux Modları

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

  1. Enforcing: Tüm politikalar uygulanır, ihlaller engellenir.
  2. Permissive: Politikalar uygulanmaz, ancak ihlaller loglanır.
  3. Disabled: SELinux tamamen devre dışıdır.

Modu kontrol etmek için:

getenforce

Sonuç

SELinux, Linux sistemler için modern bir güvenlik çözümü sunar ve granüler kontrol sağlar. Süreç ve kaynak bağlamlarını karşılaştırarak çalışan bu mekanizma, yalnızca izin verilen işlemlerin gerçekleşmesine olanak tanır. Log analizi, özel politika yazımı ve türlerin kullanımını öğrenmek, SELinux’u etkin bir şekilde yönetmenin anahtarıdır.

Bu makalede SELinux’un temel kavramlarını ve kullanımını inceledik. Bir sonraki makalede, SELinux ile pratik uygulamalar yaparak daha teknik detayları irdeleyeceğiz.

Sarav Asiye Yiğit  *** 22 Aralık 2024