Graves
- 9 Eki 2024
- 10,458 Mesaj
- TIM Görevleri
- 2
Aktiflik
Seviye
Deneyim
SELinux ilkeleriyle erişim kontrolü
Merhabalar Ben @Phobos Lojistik grup adına paylaşılan SELinux ilkeleriyle erişim kontrolü makalesinde sizi görmekten mutluyum.
Modern işletim sistemlerinde güvenlik, sadece kullanıcı adı ve parola ile korunmaktan çok daha fazlasını gerektirir. Özellikle sunucu ortamlarında, kötü niyetli yazılımların veya hatalı yapılandırmaların sistemi ele geçirmesini önlemek için daha detaylı bir güvenlik kontrolü şarttır. İşte tam da bu noktada SELinux (Security-Enhanced Linux) devreye girer.
SELinux ise MAC modelini uygular. Burada erişim izinleri, sistem yöneticisinin tanımladığı güvenlik ilkelerine (policy) göre çalışır ve kullanıcı veya süreç bu izinleri değiştiremez
Bu yapı, örneğin Apache’nin sadece belirli dizinlerdeki içeriklere erişmesini sağlar.
Kontrol için
Mod değiştirmek için
Kalıcı olarak değiştirmek için /etc/selinux/config dosyası düzenlenir.
Bu araç, neyin neden engellendiğini anlamanızı kolaylaştırır.
SELinux, özellikle kritik sistemlerde ve sunucularda kullanılmak üzere tasarlanmış güçlü bir güvenlik aracıdır. Karmaşık gibi görünse de, sistem güvenliğini üst seviyeye çıkarmak isteyenler için vazgeçilmezdir. Doğru politikalarla yapılandırıldığında, SELinux hem veri bütünlüğünü hem de gizliliği garanti altına alır.
Ek Not
Yeni başlayanlar için permissive modda başlayıp sistem davranışlarını gözlemlemek iyi bir yöntemdir. SELinux'u anlamaya başladıkça, sisteminizi adım adım enforcing moda geçirmek en güvenli yaklaşımdır.
Merhabalar Ben @Phobos Lojistik grup adına paylaşılan SELinux ilkeleriyle erişim kontrolü makalesinde sizi görmekten mutluyum.
Modern işletim sistemlerinde güvenlik, sadece kullanıcı adı ve parola ile korunmaktan çok daha fazlasını gerektirir. Özellikle sunucu ortamlarında, kötü niyetli yazılımların veya hatalı yapılandırmaların sistemi ele geçirmesini önlemek için daha detaylı bir güvenlik kontrolü şarttır. İşte tam da bu noktada SELinux (Security-Enhanced Linux) devreye girer.
SELinux Nedir?
SELinux, ABD Ulusal Güvenlik Ajansı (NSA) tarafından geliştirilen ve Linux çekirdeği üzerinde çalışan bir zorlayıcı erişim kontrol sistemi (Mandatory Access Control - MAC) mekanizmasıdır. Temel amacı, süreçlerin ve kullanıcıların sistem kaynaklarına erişimini çok daha ayrıntılı ve katı kurallarla denetlemektir.Erişim Kontrol Modelleri
Çoğu Linux sisteminde varsayılan olarak DAC (Discretionary Access Control) modeli kullanılır. DAC modelinde, dosya sahibi erişim izinlerini belirler. Ancak bu modelde, kötü amaçlı yazılımlar veya yetkiyi ele geçirmiş kullanıcılar sisteme zarar verebilir.SELinux ise MAC modelini uygular. Burada erişim izinleri, sistem yöneticisinin tanımladığı güvenlik ilkelerine (policy) göre çalışır ve kullanıcı veya süreç bu izinleri değiştiremez
SELinux Temel Bileşenleri
Politikalar (Policies)
SELinux, erişim denetimini “politika” adı verilen kurallar dizisiyle yapar. Bu politikalar üç ana türde olabilir- Targeted: Sadece belirli hizmetler ve süreçler SELinux koruması altındadır (en yaygın kullanılan).
- Strict: Tüm sistem süreçleri kontrol altındadır.
- MLS (Multi-Level Security): Daha gelişmiş, hassas veriler için kullanılan sınıflandırmalı güvenlik modeli.
Etiketleme (Labeling)
Her dosya, dizin, süreç ve port SELinux tarafından bir güvenlik etiketi ile etiketlenir. Bu etiketler, context olarak bilinir ve şu biçimdedir
Kod:
ruby
kullanıcı:rol:tür:hassasiyet
Kod:
cpp
system_u:object_r:httpd_sys_content_t:s0
Bu yapı, örneğin Apache’nin sadece belirli dizinlerdeki içeriklere erişmesini sağlar.
Tür Zorlaması (Type Enforcement)
SELinux politikalarının kalbidir. Her işlem ve nesne bir type (tür) ile etiketlenir. Politikalar, hangi türün hangi diğer türe ne şekilde erişebileceğini belirler. Örneğin, httpd_t türündeki bir süreç yalnızca httpd_sys_content_t türündeki dosyalara erişebilir.SELinux Modları
SELinux üç çalışma moduna sahiptir- Enforcing (Zorlayıcı): Tüm kurallar uygulanır, ihlaller engellenir.
- Permissive (İzin verici): Kurallar denetlenir ancak ihlaller engellenmez, sadece log’a yazılır.
- Disabled (Devre dışı): SELinux tamamen kapalıdır.
Kontrol için
Kod:
bash
getenforce
Mod değiştirmek için
Kod:
bash
setenforce 0 # Permissive
setenforce 1 # Enforcing
Kalıcı olarak değiştirmek için /etc/selinux/config dosyası düzenlenir.
Log ve Hata Ayıklama
SELinux ihlalleri /var/log/audit/audit.log dosyasına kaydedilir. Bu loglar, ausearch veya sealert komutlarıyla analiz edilebilir.
Kod:
bash
sealert -a /var/log/audit/audit.log
Bu araç, neyin neden engellendiğini anlamanızı kolaylaştırır.
Gerçek Hayatta Kullanım Örnekleri
- Apache Web Sunucusu: /var/www/html dışında bir dizin kullanmak istiyorsanız, dosyaları uygun türle etiketlemeniz gerekir:
Kod:
bash
chcon -R -t httpd_sys_content_t /my/custom/webdir
- Veritabanı Sunucuları: SELinux, PostgreSQL gibi servislerin yalnızca kendine ait dizinlerde işlem yapmasına izin verir.
Avantajları ve Zorlukları
Avantajlar- Zorlayıcı ve detaylı erişim kontrolü
- Saldırı yüzeyini minimuma indirir
- Kötü niyetli işlemleri engeller
- Yapılandırması ve hata ayıklaması başlangıçta karmaşık gelebilir
- Uyumlu olmayan yazılımlar veya özel yapılandırmalar sorun çıkarabilir
SELinux, özellikle kritik sistemlerde ve sunucularda kullanılmak üzere tasarlanmış güçlü bir güvenlik aracıdır. Karmaşık gibi görünse de, sistem güvenliğini üst seviyeye çıkarmak isteyenler için vazgeçilmezdir. Doğru politikalarla yapılandırıldığında, SELinux hem veri bütünlüğünü hem de gizliliği garanti altına alır.
Ek Not
Yeni başlayanlar için permissive modda başlayıp sistem davranışlarını gözlemlemek iyi bir yöntemdir. SELinux'u anlamaya başladıkça, sisteminizi adım adım enforcing moda geçirmek en güvenli yaklaşımdır.
LOJİSTİK TİM SUNDU


