İçindekiler:
Linux sunucularınızın güvenliğini sağlarken, hepimizin bildiği dosya izinleri (rwx) ve güvenlik duvarları (iptables), sadece ilk barikatınızdır. Peki ya bir saldırgan bu ilk savunmayı aşarsa ne olur? Uygulama açıklarını kullanarak sisteminizde yetkisini yükseltmeye çalışır.
İşte tam bu noktada, geleneksel izinlerin gücünü aşan ve uygulamaların ne yapabileceğini kesin çizgilerle belirleyen bir kalkan devreye girer: Zorunlu Erişim Kontrolü (MAC). Bu yazıda, sisteminizi yerel yetki yükseltmelerine ve bilinmeyen sıfırıncı gün(Zer0Day) açıklarına karşı en güçlü şekilde koruyan SELinux ve AppArmor modüllerini derinlemesine inceleyeceğiz.
Zorunlu Erişim Kontrolü (MAC) Kavramı: Neden Buna İhtiyacımız Var?
MAC (Mandatory Access Control) Nedir?
Geleneksel Linux izin sistemi olan DAC (İsteğe Bağlı Erişim Kontrolü), adından da anlaşılacağı gibi, dosyanın sahibine yetki verme insiyatifi sunar. Eğer bir web sunucusu uygulamanız, örneğin, root yetkisiyle çalışıyorsa ve bir güvenlik açığı patlak verirse, saldırgan teorik olarak sistemdeki her şeye erişebilir. Bu, büyük bir risktir.
Zorunlu Erişim Kontrolü (MAC) ise, bu yetki kararını uygulama kullanıcısından alıp doğrudan Linux Kernel’ine (çekirdeğe) devreder. Uygulama isterse root yetkisiyle çalışsın; MAC politikası ona sadece izin verilen görevleri yapabileceğini söyler. Örneğin, web sunucusu sadece /var/www klasörüne yazabilir, kritik sistem dosyalarına dokunamaz.
SELinux ve AppArmor Arasındaki Temel Farklar
Bu iki ana MAC modülünün yaklaşımları farklıdır:
| Özellik | SELinux (Security-Enhanced Linux) | AppArmor |
| Yaklaşım | Tip Zorunluluğu. Kaynakları tiplere ayırır ve tiplerin etkileşimini yönetir. Oldukça detaylıdır. | Yol Tabanlı Profiller. Uygulamaların hangi dosya yollarına erişebileceğini açıkça tanımlar. Yönetimi daha kolaydır. |
| Kullanım Alanı | Red Hat, Fedora, CentOS gibi Red Hat tabanlı dağıtımlarda standarttır. | Ubuntu ve SUSE gibi Debian/SUSE tabanlı dağıtımlarda daha yaygındır. |
SELinux: Yönetim ve Sorun Giderme Pratikleri
SELinux, çok güçlü olsa da, yanlış yapılandırıldığında “her şeyi bozan” bir araç olarak ün salmıştır. Oysa doğru yönetimle, bu kalkanı çok etkili kullanabilirsiniz.
SELinux Modlarının Pratik Yönetimi
SELinux üç modda çalışır: Disabled (Kapalı), Permissive (İzin Verici) ve Enforcing (Zorlayıcı).
1. Mevcut Modu Kontrol Etme:
Hangi modda çalıştığınızı kontrol edelim:
2. Geçici Olarak Mod Değiştirme:
Yeni bir hizmeti test ederken ihlalleri görmek ama engellememek için Permissive moda geçmek kullanışlıdır:
# Permissive moda geçiş (Sadece kayıt tutar, engellemez)
# Enforcing moda geçiş (Kuralı çiğneyeni engeller)
3. Kalıcı Mod Yapılandırması:
Kalıcı ayarlar için /etc/selinux/config dosyasını düzenlemelisiniz (Bu ayar, sistemi yeniden başlattıktan sonra geçerli olur):
İzin Hatalarını Tespit Etme ve Politika Oluşturma (Audit2allow)
Bir uygulamanın çalışmamasının sebebi SELinux ise, ihlal mesajları /var/log/audit/audit.log dosyasında AVC denied olarak görünür. Neyse ki, bu sorunları çözmek için harika bir araç var: audit2allow.
Pratik Senaryo: Yeni Bir Uygulama İhlal Yaptı
- İhlalleri Filtreleme: Audit log dosyasından reddedilen (denied) mesajları filtreleyelim:
- Kural Oluşturma: Filtrelenen ihlalleri
audit2allow‘a yönlendirerek uygulamanın yapması gereken işleme izin veren bir kural modülü oluşturalım: - Kuralı Yükleme: Oluşturduğunuz bu özel modülü sisteme yükleyerek hatayı giderin:
Kritik Hizmetler İçin SELinux Boole Değerlerini Yapılandırma
SELinux, yönetim esnekliğini artırmak için bazı uygulama davranışlarını Boole (Açık/Kapalı) ayarlarıyla yönetmenize olanak tanır.
1. Apache için Ağ Bağlantısını Kontrol Etme:
Web sunucunuzun dış ağlara bağlanıp bağlanamayacağını kontrol edelim:
# Mevcut durumu kontrol etme
# Ağ bağlantısına kalıcı olarak izin verme
AppArmor ile Uygulama Profilleri: Yönetimi Kolay Güvenlik
Ubuntu, Debian ve SUSE kullananlar için AppArmor genellikle varsayılan MAC modülüdür. Yolu temel alan yapısı sayesinde profilleri daha anlaşılırdır.
AppArmor Profillerinin Durumunu Kontrol Etme
AppArmor’ın durumunu ve hangi uygulamaların hangi modda çalıştığını kontrol edebilirsiniz:

Uygulama Profillerinin Konumu ve Yönetimi
AppArmor profilleri, uygulamaların çalıştığı yetkiyi tanımlayan metin dosyalarıdır ve genellikle /etc/apparmor.d/ dizininde yer alır.
Örnek Profil Yönetimi:
- Profili Enforcing Moda Alma: Bir servisin profilini tam korumaya almak için (zorlayıcı):
- Profili Geliştirme (Complaining Moda Alma): Yeni bir profil yazarken, ihlalleri görmek ama engellememek için:
- Profili Yeniden Yükleme: Profili düzenledikten sonra yeni ayarları etkinleştirmek için:
Linux sistem güvenliğinde, Dosya İzinleri ve Güvenlik Duvarı sadece bir başlangıçtır. SELinux ve AppArmor, uygulamaların yetkilerini kernel seviyesinde kısıtlayarak, bir açığın tüm sistemi ele geçirmesini engeller yada engellemeye çalışır.
Serinin önceki yazıları:
![Linux Güvenliği [3] – Gelişmiş Erişim Kontrolü SELinux ve AppArmor ile Uygulama Kısıtlamaları](https://kernelblog.org/wp-content/uploads/2025/10/Linux-Guvenligi-3-–-Gelismis-Erisim-Kontrolu-SELinux-ve-AppArmor-ile-Uygulama-Kisitlamalari.png)