Linux’ta SELinux Politikalarıyla Gelişmiş Güvenlik Yönetimi
Linux’ta SELinux Politikalarıyla Gelişmiş Güvenlik Yönetimi
SELinux (Security-Enhanced Linux), sistem kaynaklarının erişimini politika tabanlı olarak kontrol eden güçlü bir güvenlik mekanizmasıdır. Red Hat, CentOS, AlmaLinux ve Fedora gibi dağıtımların temel bileşeni olan SELinux, “Zorunlu Erişim Kontrolü” (Mandatory Access Control – MAC) modelini uygular. Bu sistem, klasik UNIX izinlerinden çok daha detaylı bir yapı sunar ve kötü amaçlı süreçlerin sistem kaynaklarına erişimini en aza indirir. Bu rehberde, SELinux’un temellerini, modlarını, politika türlerini ve günlük yönetimi adım adım inceleyeceğiz.
SELinux Nedir ve Neden Önemlidir?
Geleneksel Linux izin sistemi (rwx, owner, group) süreçlerin erişim düzeyini belirler ancak bu yapı yeterince detaylı değildir. SELinux ise süreçlerin, dosyaların, portların ve ağ servislerinin “güvenlik etiketleri” üzerinden birbirine nasıl erişebileceğini belirler. Bu sayede bir uygulama ele geçirilse bile sistemin tamamı risk altına girmez.
Örneğin, Apache web sunucusu ele geçirilse bile SELinux politikaları sayesinde sadece web servisinin erişimine izin verilen alanlar etkilenir — diğer sistem dosyaları güvende kalır. Bu da WAF Koruma ve güvenlik duvarı politikalarının ötesinde ek bir koruma katmanı sağlar.
SELinux Çalışma Modları
SELinux üç farklı modda çalışabilir:
- Enforcing: Politikalar aktif, ihlaller engellenir ve loglanır. (Tavsiye edilen)
- Permissive: Politikalar uygulanmaz, ancak ihlaller loglara kaydedilir.
- Disabled: SELinux tamamen devre dışıdır.
Durumu kontrol etmek için şu komutu kullanabilirsiniz:
sestatus
Geçici olarak permissive moda geçmek için:
setenforce 0
Kalıcı olarak değiştirmek için ise yapılandırma dosyasını düzenleyin:
nano /etc/selinux/config SELINUX=enforcing
SELinux Politikaları (Policies)
Politikalar, sistemin hangi işlemin hangi kaynağa nasıl erişeceğini belirler. En yaygın politika türleri şunlardır:
- Targeted: Sadece belirli servisleri sınırlar (örneğin httpd, sshd, named).
- Strict: Tüm süreçler için MAC kontrolü uygular.
- MLS (Multi-Level Security): Askeri ve yüksek güvenlikli sistemler için çok katmanlı kontrol.
Aktif politikayı kontrol etmek için:
sestatus | grep Policy
Politikayı değiştirmek için:
semodule -l # yüklü modülleri listeler setsebool -P httpd_can_network_connect on
SELinux Etiketleri (Context) Nedir?
Her dosya ve süreç, erişim kontrolü için özel bir etiket taşır. Etiket formatı:
user:role:type:level
Örneğin:
system_u:object_r:httpd_sys_content_t:s0
Bu örnekte, dosya web sunucusunun erişimine açık bir içerik olarak tanımlanmıştır. Eğer Apache servisiniz “403 Forbidden” hatası veriyorsa, muhtemelen dosya etiketi yanlıştır. Bu durumda düzeltme şu şekilde yapılır:
restorecon -Rv /var/www/html
Ya da elle etiket atamak için:
chcon -t httpd_sys_content_t /var/www/html/index.html
Boole Ayarlarıyla Esnek Politikalar
SELinux, “Boolean” adı verilen anahtarlarla servislerin davranışını kolayca değiştirmeye izin verir. Örneğin:
getsebool -a | grep httpd
Belirli bir izin açmak için:
setsebool -P httpd_can_network_connect on
Bu, Apache’nin dış ağ bağlantısı kurmasına izin verir. Bu yöntem, Linux Hosting ortamlarında web uygulamalarının e-posta, API veya veritabanı bağlantılarını yönetmek için sıkça kullanılır.
Günlükler ve Olay Analizi
SELinux tüm ihlalleri sistem loglarına kaydeder. Günlük dosyası:
/var/log/audit/audit.log
İhlalleri yorumlamak için “audit2why” ve “audit2allow” araçlarını kullanabilirsiniz:
grep AVC /var/log/audit/audit.log | audit2why grep AVC /var/log/audit/audit.log | audit2allow -M mypol semodule -i mypol.pp
Bu yöntem, özel uygulamalarda gerekli izinleri kolayca tanımlamanızı sağlar.
Uygulamalı Örnek: Web Sunucusu Güvenliği
Bir Apache veya Nginx sunucusu çalıştırıyorsanız, SELinux kurallarını doğru şekilde yapılandırmak sistem stabilitesi açısından kritiktir:
# Web dizini etiketleme chcon -R -t httpd_sys_content_t /var/www/html # PHP socket erişimi açma setsebool -P httpd_can_network_connect on
Yüksek güvenlikli sistemlerde, Optimizasyon Hizmeti ile SELinux ve WAF birlikte yapılandırılarak hem performans hem güvenlik dengesi sağlanabilir.
SELinux Sorun Giderme
- 403 hataları: Dosya veya dizin etiketleri hatalı olabilir.
restorecon -Rv /pathkomutu kullanın. - Servis başlamıyor:
audit2whyile logları analiz edin. - Yeni port ekleme:
semanage port -a -t http_port_t -p tcp 8080 - Geçici izin testleri:
setenforce 0ile sorunu tespit edip, ardından uygun politika oluşturun.
Sonuç: Katmanlı Güvenlik için SELinux
SELinux, Linux sistemlerinde “son savunma hattı” işlevi görür. Uygulama hataları, sıfırıncı gün açıkları veya yanlış yapılandırmalar karşısında bile sistemi korur. Ancak etkin bir SELinux yönetimi, doğru politika ve günlük analiz becerisi gerektirir. Bu nedenle, HostLigo’nun Kurumsal Hosting ve Sunucu Barındırma çözümleri, SELinux gibi gelişmiş güvenlik sistemleriyle tam uyumlu yapıdadır. Bu yapılarla hem performans hem güvenlikten ödün vermeden sistemlerinizi profesyonelce koruyabilirsiniz.
makefile
Kodu kopyala