SELinux yapılandırması yöntemleri

Riches

Astsubay Çavuş
Admin
Katılım
30 Kasım 2025
Mesajlar
441
Reaksiyon puanı
1

SELinux Temelleri ve Neden Önemli?​


Security-Enhanced Linux (SELinux), Linux çekirdeğine entegre edilmiş bir zorunlu erişim kontrolü (MAC) güvenlik mekanizmasıdır. Klasik Linux izinleri (DAC - isteğe bağlı erişim kontrolü) kullanıcıların dosya sahipliğine ve grubuna dayalı kararlar alırken, SELinux önceden tanımlanmış politikalar aracılığıyla daha granüler bir kontrol sağlar. Bu, sistem kaynaklarına (dosyalar, soketler, işlemler) kimin, ne zaman ve nasıl erişebileceğini belirleyen bir dizi kural kümesidir. Bir saldırgan sistemde bir zafiyet bulup bir süreci ele geçirse bile, SELinux'un sıkı politikaları, saldırganın yayılabileceği veya sisteme daha fazla zarar verebileceği alanı ciddi şekilde kısıtlar. Bu nedenle, SELinux sunucu güvenliği için vazgeçilmez bir araç haline gelmiştir ve sistem yöneticileri için temel bir yapılandırma bilgisi gerektirir.

SELinux Modları: Enforcing, Permissive, Disabled​


SELinux'un çalışmasını kontrol eden üç ana mod bulunur. Enforcing modu, sistemde tanımlanan SELinux politikalarını aktif olarak uygular ve herhangi bir ihlali engeller. Bu mod, güvenlik seviyesini en üst düzeye çıkarır ve üretim ortamları için önerilir. Permissive modu ise politikaları uygulamaz; bunun yerine, ihlalleri yalnızca loglara kaydeder ancak eylemlerin gerçekleşmesine izin verir. Bu mod, yeni politikalar geliştirilirken veya mevcut yapılandırmada sorun giderilirken oldukça kullanışlıdır, çünkü engellemeleri olmadan potansiyel sorunları görmemizi sağlar. Disabled modu ise SELinux'u tamamen kapatır. Bu mod, sistem güvenliğini ciddi şekilde tehlikeye attığı için kesinlikle tavsiye edilmez. Çoğu durumda, modlar `/etc/selinux/config` dosyasında yapılandırılır ve `setenforce` komutuyla anlık olarak değiştirilebilir.

Boolean Ayarları ile Politika Özelleştirme​


SELinux politikaları, bazen belirli servislerin veya özelliklerin davranışını değiştirmek için esneklik sunan boolean (doğru/yanlış) değerler içerir. Bu boolean'lar, genellikle genel politikayı değiştirmeden belirli güvenlik kurallarını etkinleştirmek veya devre dışı bırakmak için kullanılır. Örneğin, bir web sunucusunun kullanıcı dizinlerinden içerik sunmasına izin vermek veya bir FTP sunucusunun yazılabilir dizinlere sahip olmasına izin vermek gibi ayarlar, ilgili SELinux boolean'ları aracılığıyla kontrol edilebilir. Bu boolean'ları listelemek için `getsebool -a` komutu kullanılırken, değiştirmek için `setsebool` komutu kullanılır. Değişikliklerin kalıcı olması için `-P` parametresi eklenmelidir. Başka bir deyişle, bu ayarlar, varsayılan politikalara müdahale etmeden spesifik ihtiyaçlara yönelik ince ayarlar yapma imkanı tanır.

Fayl Bağlamlarını Yönetme: `chcon` ve `restorecon` Kullanımı​


SELinux, her dosya ve dizine bir "bağlam" etiketi atar. Bu bağlam, dosyanın türünü, kullanıcısını ve rolünü belirler ve SELinux politikalarının o dosyaya erişimi denetlemesinde temel oluşturur. Yanlış bağlam etiketleri, SELinux tarafından engellenen erişim sorunlarına yol açabilir. `chcon` komutu, bir dosyanın veya dizinin SELinux bağlamını geçici olarak değiştirmek için kullanılır. Bu, özellikle bir dosyayı farklı bir konumdan kopyaladığınızda veya bir servis için yeni bir dizin oluşturduğunuzda gerekli olabilir. Ancak bu değişiklikler kalıcı değildir ve sistem yeniden etiketlendiğinde veya `restorecon` çalıştırıldığında kaybolur. `restorecon` komutu ise, dosya sistemindeki tüm bağlamları, politikada tanımlanan varsayılan kurallara göre düzeltir ve kalıcı hale getirir. Bu nedenle, `chcon` geçici çözümler için, `restorecon` ise kalıcı düzeltmeler için vazgeçilmezdir.

Port Bağlamlarını Yapılandırma​


Ağ hizmetlerinin düzgün çalışması için, SELinux'un ilgili portlara erişime izin vermesi gerekir. Tıpkı dosyalarda olduğu gibi, SELinux portlar için de bağlam etiketleri kullanır. Bu bağlamlar, belirli bir portun hangi servis tarafından ve ne tür bir amaçla kullanılabileceğini tanımlar. Örneğin, HTTP servislerinin 80 numaralı portu kullanmasına izin veren bir `http_port_t` bağlamı bulunurken, SSH servisi için `ssh_port_t` bağlamı kullanılır. Varsayılan politikada tanımlanmayan veya özel bir uygulama için açılan portlar, SELinux tarafından engellenebilir. Bu tür durumları ele almak için `semanage port` komutunu kullanırız. Bu komut sayesinde, yeni port tanımları ekleyebilir, mevcut portların bağlamlarını değiştirebilir veya silebiliriz. Sonuç olarak, ağ hizmetlerinin sorunsuz çalışmasını sağlamak için port bağlamlarının doğru yapılandırılması büyük önem taşır.

Özel Politika Modülleri Oluşturma​


Bazı durumlarda, mevcut SELinux politikaları belirli bir uygulamanın veya özel bir yapılandırmanın ihtiyaçlarını tam olarak karşılamayabilir. Bu gibi durumlarda, sıfırdan özel politika modülleri oluşturmak veya mevcut politikaları genişletmek gerekebilir. `audit2allow` aracı, bu süreçte oldukça faydalıdır. Engellenen SELinux olaylarını içeren denetim loglarını analiz eder ve bu olaylara izin veren politika kuralları oluşturmak için öneriler sunar. Bu öneriler daha sonra `.te` (type enforcement) dosyalarına dönüştürülür, derlenir (`checkmodule` ve `semodule_package` ile) ve sistem politikasına yüklenir (`semodule -i` ile). Başka bir deyişle, bu yöntem, belirli bir uygulamanın güvenlik gereksinimlerini karşılamak için hassas ve özelleştirilmiş kurallar yazmaya olanak tanır, böylece genel politika esnekliğini artırır.

SELinux Loglarını Anlama ve Sorun Giderme​


SELinux ile ilgili sorun gidermenin anahtarı, denetim loglarını doğru bir şekilde okumak ve yorumlamaktır. SELinux'un herhangi bir eylemi engellemesi durumunda, bu olaylar `auditd` servisi aracılığıyla `/var/log/audit/audit.log` dosyasına (veya bazen `syslog` üzerinden diğer log dosyalarına) kaydedilir. Bu log girdileri genellikle "AVC" (Access Vector Cache) hataları olarak görünür ve hangi sürecin hangi kaynağa erişmeye çalıştığını, hangi SELinux bağlamlarının dahil olduğunu ve hangi iznin reddedildiğini gösterir. Bu nedenle, `ausearch` ve `audit2allow` gibi araçlar, bu karmaşık logları filtrelemek ve anlamlandırmak için hayati öneme sahiptir. Denetim loglarını analiz ederek, sistem yöneticileri engellenen erişimlerin nedenini belirleyebilir, gerekli politika değişikliklerini tanımlayabilir ve böylece SELinux yapılandırmalarını daha etkili hale getirebilirler.
 
Geri
Üst Alt