SELinux vs AppArmor: Linux Sunucular için Karşılaştırma
15 dakikalık okuma - 21 Mayıs 2026

Linux sunucu güvenliği için SELinux ve AppArmor karşılaştırması: Her bir MAC çerçevesinin nasıl çalıştığını, temel farklılıkları ve barındırma kurulumunuz için hangisini seçmeniz gerektiğini öğrenin.
SELinux ve AppArmor: Sunucunuza Hangi MAC Çerçevesi Uygun?
SELinux ve AppArmor, Linux üzerinde Zorunlu Erişim Kontrolü (MAC) uygular ve süreçlerin root erişimi elde etseler bile yapabileceklerini kısıtlar. Aradaki fark, bunu nasıl yaptıklarında yatmaktadır. SELinux, her dosya ve sürece kalıcı etiketler atar. AppArmor ise bunun yerine dosya yolu kuralları kullanır. Bu tek tasarım seçimi, karmaşıklık, güvenlik derinliği ve hangi dağıtımın varsayılan olarak hangi aracı sunduğu gibi diğer her şeyi şekillendirir.
SELinux Nasıl Çalışır?
SELinux, başlangıçta NSA tarafından geliştirilmiştir ve RHEL, CentOS, Fedora ve Rocky Linux'ta varsayılan olarak gelir. Dosyalar, işlemler, bağlantı noktaları ve soketler dahil olmak üzere sistemdeki her nesneyi user:role:type:levelbiçiminde bir güvenlik bağlamı ile etiketler. type alanı, Type Enforcement (TE) adlı bir mekanizma aracılığıyla işin büyük kısmını üstlenir.
Örneğin, Apache web sunucusu httpd_tolarak çalışır. Web içeriği dosyaları farklı bir tür taşır. Hiçbir politika kuralı httpd_t , istek reddedilir. Bu, varsayılan olarak reddetme modelidir. Bir kural aksini belirtmedikçe hiçbir şeye izin verilmez.
SELinux ayrıca, verileri hassasiyet düzeyine göre sınıflandıran ve erişimi buna göre kısıtlayan Çok Düzeyli Güvenlik (MLS) ve Çok Kategorili Güvenlik (MCS) özelliklerini de destekler. MCS, SELinux'a güçlü konteyner yalıtımı sağlayan, konteynerleri birbirinden ve ana bilgisayardan ayrı tutan özelliktir. Bu, pod'ların bir düğümü paylaştığı Kubernetes ve OpenShift ortamlarında önemlidir.
Bunun karşılığında ise karmaşıklık söz konusudur. SELinux'un öğrenme eğrisi diktir. Erişim reddi sorunlarını gidermek, denetim günlüklerini okumak, güvenlik bağlamlarını anlamak ve bazen de audit2allow. Özel güvenlik personeli olmayan ekipler için bu ek yük gerçektir.
AppArmor Nasıl Çalışır?
AppArmor farklı bir yaklaşım benimsemektedir. Nesneleri etiketlemek yerine, dosya yollarına göre uygulamalara güvenlik profilleri ekler. /usr/sbin/nginx , Nginx'in hangi dizinleri okuyabileceğini, hangi bağlantı noktalarına bağlanabileceğini ve hangi yeteneklere ihtiyaç duyduğunu tanımlar. Profiller, /etc/apparmor.d/.
AppArmor, Ubuntu, Debian ve SUSE'de varsayılan MAC çerçevesidir. 2.6.36 sürümünden beri Linux çekirdeğinin bir parçasıdır. Profili olmayan uygulamalar, standart Linux DAC izinlerine geri döner.
AppArmor, profil başına iki modda çalışır: Enforce (ihlalleri engeller ve günlüğe kaydeder) ve Complain (engellemeden ihlalleri günlüğe kaydeder). Bu, yeni profilleri kademeli olarak devreye almayı pratik hale getirir. Complain modunda başlayın, günlükleri inceleyin, profili sıkılaştırın, ardından Enforce moduna geçin.
Şu tür araçlar aa-genprof ve aa-logprof gibi araçlar, bir uygulamanın ne yaptığını izleyerek ve davranışından kurallar oluşturarak profilleri etkileşimli bir şekilde oluşturmaya yardımcı olur. SELinux politika modülleriyle karşılaştırıldığında, sözdizimi elle okumak ve düzenlemek çok daha kolaydır.
Dezavantajı ise, yol tabanlı kuralların dosyalar taşındığında onları takip etmemesidir. Bir sabit bağlantı veya bağlama, teorik olarak yol tabanlı bir kısıtlamayı atlayabilir. AppArmor ayrıca yerel MLS/MCS desteğinden yoksundur, bu nedenle konteynerleri ana bilgisayardan izole edebilir ancak SELinux'un yaptığı gibi birbirlerinden izole edemez.
Yan Yana Karşılaştırma
| Özellik | SELinux | AppArmor |
|---|---|---|
| Erişim kontrol modeli | Etiket tabanlı (güvenlik bağlamları) | Yol tabanlı (dosya sistemi konumları) |
| Varsayılan duruş | Hepsini reddet | Hepsine izin ver (profil başına kısıtlamalar) |
| Dosya taşıma | Etiketler dosyayı takip eder | Yola bağlı güvenlik |
| MLS/MCS desteği | Evet | Hayır |
| Konteyner yalıtımı | Konteynerden konteynere ve konteynerden ana bilgisayara | Yalnızca konteyner-ana bilgisayar |
| İlke biçimi | Derlenmiş ikili modüller | İnsan tarafından okunabilir metin dosyaları |
| Varsayılan dağıtımlar | RHEL, Fedora, CentOS, Rocky Linux | Ubuntu, Debian, SUSE |
| Öğrenme eğrisi | Zor | Orta |
Temel Yapılandırma
SELinux
Mevcut durumu kontrol edin:
sestatus
getenforceHiçbir şeyi engellemeden ihlalleri günlüğe kaydetmek için Permissive modunda başlatın:
setenforce 0Çoğu sunucu için "targeted" politikasını kullanın. Bu politika, web sunucuları ve veritabanları gibi yüksek riskli hizmetleri kısıtlarken, diğer her şeyi kısıtlamadan bırakır. Bunu /etc/selinux/config:
SELINUX=enforcing
SELINUXTYPE=targetedDosya ve işlemlerin güvenlik bağlamlarını inceleyin:
ls -Z /var/www/html
ps -eZ | grep httpdBir hizmet standart olmayan bir bağlantı noktası kullanıyorsa, politikayı güncelleyin:
semanage port -a -t ssh_port_t -p tcp 9999Erişim reddi oluşturan özel uygulamalar için denetim günlüğünden bir ilke modülü oluşturun:
ausearch -m avc -ts recent | audit2allow -M my_custom_policy
semodule -i my_custom_policy.ppAppArmor
Hangi profillerin yüklü olduğunu kontrol edin:
sudo aa-statusProfil yönetim araçlarına ihtiyacınız varsa, yardımcı programlar paketini yükleyin:
sudo apt install apparmor-utilsUygulama çalışırken etkileşimli olarak bir profil oluşturun:
sudo aa-genprof /path/to/binaryGünlükleri tarayarak ihlalleri belirleyerek profili iyileştirin:
sudo aa-logprofBir profili modlar arasında değiştirin:
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo aa-complain /etc/apparmor.d/usr.sbin.nginxHangisini Kullanmalısınız?
Çoğu yönetici için pratik cevap şudur: dağıtımınızın sunduğu ne varsa onu kullanın. RHEL, CentOS, Fedora ve Rocky Linux, SELinux ile birlikte gelir. Ubuntu, Debian ve SUSE ise AppArmor ile birlikte gelir. Her iki çerçeve de kendi yerel platformları için olgun araçlara ve politikalara sahiptir. Herhangi bir dağıtımda varsayılan olmayan seçeneğe geçmek, iş yükünü artırır ve topluluk desteğini azaltır.
Bunun ötesinde, gereksinimlerinizin karar vermesine izin verin:
- PCI DSS, HIPAA veya DISA-STIG ile uyumluluk gerekiyorsa SELinux'u seçin. Kubernetes veya OpenShift üzerinde çok kiracılı konteyner iş yükleri çalıştırıyorsanız. Paylaşımlı ana bilgisayarlarda konteynerden konteynere izolasyon gerekiyorsa. Ortamınızda gizli veya hassasiyet kademeli veriler işleniyorsa.
- Ubuntu veya Debian kullanıyorsanız ve zorlu bir hazırlık süreci olmadan MAC koruması istiyorsanız AppArmor'u seçin. Kurulumunuz standart web hizmetlerini çalıştıran tek bir sunucu veya küçük bir küre ise. Hızlı dağıtım, ayrıntılı etiket düzeyinde kontrolden daha önemliyse.
Her iki çerçeve de çalışma zamanı yükünü minimum düzeyde artırır. SELinux, erişim kararlarını Access Vector Cache'de önbelleğe alır. AppArmor'un politika yüklemesi, önyükleme sırasında küçük bir gecikmeye neden olabilir, ancak çalışma zamanında etkisi ihmal edilebilir düzeydedir. Çoğu barındırma iş yükü için, hiçbiri darboğaz oluşturmaz.
Her iki çerçeveyi de yapılandırmak için tam kök erişimine sahip güvenilir bir barındırma altyapısına ihtiyacınız varsa, FDC'nin özel sunucuları veya VPS'leri, ortamınızın gerektirdiği şekilde SELinux veya AppArmor'u kurmanıza olanak tanır.

Linux'ta Zombi Süreçler: Bul, Kaldır, Önle
Linux'ta zombi süreçleri nasıl tanımlayacağınızı, kaldıracağınızı ve önleyeceğinizi öğrenin. Sunucu yöneticileri için komutlar, kod düzeltmeleri ve izleme ipuçları.
15 dakikalık okuma - 19 Mayıs 2026
Linux Sunucu Güçlendirme Kontrol Listesi
15 dakikalık okuma - 8 Mayıs 2026

Sorularınız mı var veya özel bir çözüme mi ihtiyacınız var?
Esnek seçenekler
Küresel erişim
Anında dağıtım
Esnek seçenekler
Küresel erişim
Anında dağıtım