SELinux (Security Enhanced Linux’un kısaltması), dosyalara ve işlemlere erişimi sağlamlaştırarak Linux dağıtımlarında güvenliği artırmak için kullanılan bir Linux çekirdek güvenlik modülüdür. Bu amaçla kullanılan bir diğer benzer Linux çekirdeği güvenlik modülü AppArmor’dur. Linux işletim sistemleri için erişim kontrolünde örtüşen rolleri nedeniyle bu iki modüle büyük ilgi vardır. Bu yazı SELinux ve AppArmor arasındaki farkları kapsar. Kullanıcılar daha sonra özelliklerin ve kullanım kolaylığının karşılaştırılması yoluyla bu modüllerden hangisinin ihtiyaçlarına en uygun olduğunu belirleyebilir.
SELinux nedir?
SELinux ile sunucuların güvenliğini sağlamak , gerçek sistem kullanıcıları ve rollerine dayalı DAC tarzı erişime olan bağımlılığı ortadan kaldırır. Bunun yerine, her süreç veya sistem kullanıcısı için üç dizili bir bağlam sistemi sunar. Kullanıcı adı , rol ve etki alanı olmak üzere üç dize, sistem erişimi üzerinde daha fazla esneklik ve kontrol sağlar.
SELinux’daki ilke yapılandırması aracılığıyla yalnızca belirli bir etki alanında bir işleme izin verilebilir. Tek istisna, bir işlemin runcon komutu aracılığıyla açıkça tanımlanmış bir bağlamda başlatılmasıdır. Ancak, halihazırda konfigürasyonda olan böyle bir süreç için çelişkili politikalar mevcutsa, SELinux başka bir bağlama böyle bir geçişi reddedebilir. Bu, SELinux’un varsayılan olarak reddetme ilkesi üzerinde çalışmasını sağlar. Herhangi bir işlem veya kullanıcının, erişmeden önce bir dosya veya sistem kaynağı için açık bir erişim yapılandırmasına sahip olması gerekir.
SELinux İşlemleri ve Komutları
SELinux, terminaldeki ortak yardımcı program komutlarının bir uzantısı olarak, dosyaların ve işlemlerin güvenlik bağlamının görüntülenmesine izin veren -Z anahtarı sağlar. ps ve ls gibi komutlar, yapılandırmadaki hataları hızlı bir şekilde ayıklamak veya belirlemek için bu anahtardan yararlanır. Aşağıda, ls komutunun bir ekran görüntüsü gösterilmektedir:
ls -Z
Her çıkış satırının ilk kısmı etki alanıdır, ikincisi nesnenin türüdür ve üçüncü kısım SELinux konfigürasyonundaki kullanıcı adıdır. Bu şekilde SELinux, her dosyaya ve işleme erişim üzerinde tam kontrol sağlayabilir. Dosya ve dizinlerin bağlamını değiştirmek için aşağıdaki komutlar kullanılır:
komut | kullanım |
---|---|
chcon -t <Bağlam> <Hedef Dosya> | Hedef dosyanın bağlamını değiştirme |
chcon -R <Bağlam> <Hedef Dizin> | Hedef dizinin içeriğini değiştir (bu değişiklik özyinelemelidir) |
restorecon -v <Hedef Dosya> | Bir dosyanın bağlamını varsayılana geri yükle |
restorecon -v -R <Hedef Dizin> | Bir dizinin bağlamını varsayılana geri yükleyin (bu değişiklik özyinelemelidir) |
semanage fcontext -a -t <Context> <REGEX> | Bir dizinin varsayılan bağlamını, REGEX’in değerlendirdiği şekilde ayarlayın |
Örneğin, “/srv/web” dizinindeki tüm dosyaların içeriğini “httpd_sys_content_t” olarak değiştirmek gerekirse, aşağıdaki komut kullanılabilir:
sudo semanage fcontext -a -t httpd_sys_content_t “ / srv / web ( / . * ) ”
Ekran görüntüsünde görüldüğü gibi, bu bağlam zaten “/srv/web” dizini için özyinelemeli olarak tanımlandığından, SELinux kullanıcıya bildirmek için bir mesaj görüntüler. Tanımlanmaması durumunda başarılı bir semanaj işlemi herhangi bir çıktı göstermez.
Sistem yöneticileri ve kullanıcıları, setenforce komutunu kullanarak SELinux’u etkinleştirebilir, devre dışı bırakabilir veya izin verilebilir hale getirebilir. Benzer şekilde, şu anda yaptırım durumunun ne olduğunu kontrol etmek için kullanıcılar aşağıdaki ekran görüntüsünde gösterildiği gibi getenforce komutunu kullanabilir:
AppArmor nedir?
AppArmor, Linux’un Ubuntu dağıtımını geliştiren ana şirket olan Canonical tarafından geliştirme aşamasında desteklenmektedir. AppArmor, SELinux’tan daha basit ve kullanımı daha kolay olmayı amaçlamaktadır. SELinux’un aksine, AppArmor, kullanıcıların erişim kontrolü için profiller oluşturmasına izin verdiği için İsteğe Bağlı Erişim Kontrolü’nün (DAC) erişim kontrol modelini tamamlamayı amaçlar. AppArmor profilleri “/etc/apparmor.d/” dizininde oluşturulur. Aşağıdaki ekran görüntüsünde “/usr/bin/man” işlemi için bir AppArmor profili gösterilmektedir:
AppArmor İşlemleri ve Komutları
Apparmor’un durumunu görmek için aa-status komutu kullanılır. Komutun örnek bir çıktısı aşağıda gösterilmiştir:
AppArmor profilleri, aşağıda gösterildiği gibi “/etc/apparmor.d/” dizin içeriği listelenerek görülebilir:
Yukarıdaki profil listesinden, bir kullanıcı usr.bin.man profilini devre dışı bırakmak isterse aşağıdaki komutu kullanabilir:
sudo aa-complain /usr/bin/man
Ana AppArmor profilleri dizininin devre dışı bırakma alt dizininde devre dışı bırakılmış bir profilin bulunduğunu unutmayın. Devre dışı bırakılmış bir profili yeniden etkinleştirmek için aşağıdaki komut kullanılır:
sudo aa-enforce / usr / bin / man
SELinux ve AppArmor Arasında Kullanım Kolaylığı
AppArmor, SELinux’un yaptığı gibi her dosya için dizelerle çalışmak yerine dosya sistemindeki dosya yollarıyla çalışır. AppArmor’un bir avantajı, okuma, yazma, kilitleme ve diğer dosya işlemlerinin kurulumunun SELinux’a göre daha kolay olmasıdır. Öte yandan, SELinux dosya erişim kontrolü için daha fazla özellik sağlarken, özellikler sistemde çok daha düşük bir seviyede uygulanmaktadır. Bu nedenle, kullanıcıların SELinux ile çalışmak için mknod, ağ soketleri ve diğer sistem işlemlerini nasıl kullanacaklarını öğrenmeleri gerekir. Bu, sistem yöneticisi olmayan herkes için AppArmor’un nasıl kullanılacağını öğrenmenin çok daha kolay olduğu anlamına gelir .
AppArmor ayrıca erişim denetimi ihlallerini günlüğe kaydetmek için kullanılan bir öğrenme modu da sağlar. Bu mod, bir ihlal durumunda erişimi kısıtlamaz veya engellemez, bunun yerine, kaydedilen her erişim ihlali için programların davranışına dayanan ayrı bir AppArmor profilinin oluşturulmasını sağlamak için zaman içinde veri toplar. SELinux’ta benzer bir mod mevcut değildir.
Sıkça Sorulan Sorular
SELinux ve AppArmor ile hangi Linux dağıtımları kurulu olarak gelir?
RedHat çatısı altındaki tüm Linux Dağıtımları, önceden yüklenmiş olarak gelir veya RHEL, CentOS ve Fedora dahil olmak üzere bir SELinux kurulumu sunar. Öte yandan, AppArmor, Debian, Ubuntu, bunların türev dağıtımları ve SUSE Enterprise Server ve OpenSUSE dağıtımlarına kurulu olarak gelir.
Yeni bir Linux kullanıcısı için en iyi güvenlik modülü hangisidir?
Çoğu büyük Linux dağıtımı, varsayılan olarak kurulu güvenlik modüllerinden herhangi biri ile birlikte gelir. Bu nedenle, yeni bir Linux kullanıcısının kutudan çıkan bir güvenlik modülüne sahip olmaması pek olası değildir. SELinux ve AppArmor arasındaki özelliklerin ve kullanım kolaylığının karşılaştırılması, işletim sistemleri üzerinde daha iyi kontrol isteyen ileri düzey kullanıcılar veya sistem yöneticileri için SELinux’un en iyisi olduğunu, ancak diğer herkes için AppArmor’un daha iyi bir seçim olduğunu gösteriyor.
SELinux ve AppArmor, güvenlik duvarlarına, antivirüslere ve diğer kullanıcı veya veri güvenliği yazılımlarına bir alternatif midir?
SELinux ve AppArmor, sistem güvenliği ve veri bütünlüğü için antivirüslere veya iyi yapılandırılmış güvenlik duvarlarına bir alternatif değildir. Bu nedenle, verilerin daha iyi korunması için sisteminizi bir virüsten koruma programıyla tamamlamanız önerilir.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.