Sandbox nedir?
Sandbox, bir programı veya kodu gerçek sistemden yalıtılmış, kısıtlı bir ortamda çalıştıran güvenlik yöntemidir. Program bu ortamın dışındaki dosyalara, ağa ve diğer süreçlere erişemediği için hatalı ya da zararlı davransa bile sunucunun geri kalanı zarar görmez.
Kum havuzu benzetmesi yerindedir: çocuk havuzun içinde istediğini yapabilir ama havuzun dışına çıkamaz. Sandbox hem şüpheli dosyaları güvenle incelemek hem de bir uygulama ele geçirilse bile etkisini sınırlamak için kullanılır.
Nasıl çalışır?
Sandbox, işletim sistemi veya sanallaştırma katmanının sunduğu yalıtım özelliklerine dayanır. Süreç; kendi dosya sistemi görünümü, sınırlı bellek ve işlemci payı, kısıtlı ağ erişimi ve izin verilen sistem çağrılarıyla çalıştırılır. İzin verilmeyen bir işlem yapılmaya çalışıldığında engellenir ve genellikle kaydedilir.
Yaygın yalıtım yöntemleri şunlardır:
- Konteynerler: namespace ve cgroup ile süreçleri ayırır.
- chroot / jail: sürecin görebildiği dizin ağacını daraltır.
- Sanal makineler: ayrı bir çekirdekle daha güçlü yalıtım sağlar.
- Sistem çağrısı filtreleme: seccomp gibi mekanizmalarla izinli çağrıları sınırlar.
Sunucu ve hosting ortamında
Paylaşımlı hosting sağlayıcıları, bir müşterinin sitesindeki sorunun diğer hesapları etkilememesi için hesap yalıtımı uygular. CloudLinux LVE ve CageFS gibi çözümler her hesabı kendi kaynak sınırları ve kısıtlı dosya görünümüyle çalıştırır; PHP-FPM havuzları da site başına ayrı kullanıcıyla çalışabilir.
Güvenlik tarafında ise e-posta ekleri ve yüklenen dosyalar bir sandbox içinde patlatılarak davranışları analiz edilir. Kendi sunucunuzda da servisleri systemd’nin yalıtım seçenekleriyle ya da Docker konteynerlerinde çalıştırarak benzer bir etki elde edebilirsiniz.
Nasıl uygulanır?
- Her web sitesini ve servisi ayrı bir sistem kullanıcısıyla çalıştırın.
- Kaynak sınırı (bellek, işlemci, süreç sayısı) tanımlayın.
- Konteyner kullanıyorsanız root olmayan kullanıcıyla çalıştırın ve gereksiz yetenekleri kaldırın.
- systemd servislerinde yalıtım seçeneklerini (örneğin salt okunur dosya sistemi, özel geçici dizin) etkinleştirin.
- Bilinmeyen dosyaları üretim sunucusunda değil, ayrı bir test ortamında inceleyin.
- Sandbox ayarlarını güncel tutun; yalıtım katmanlarındaki açıklar da yama gerektirir.
Sık yapılan hatalar
- Sandbox’ı mutlak koruma sanmak; yalıtım katmanındaki açıklar aşılabilir.
- Konteyneri ayrıcalıklı modda veya host dizinlerini bağlayarak çalıştırmak.
- Tüm siteleri aynı kullanıcı altında barındırmak.
- Analiz ortamına üretim verisi veya gizli anahtarlar koymak.
Sık sorulan sorular
Sandbox ne işe yarar?
Çalıştırılan kodun etkisini sınırlar. Şüpheli bir dosyayı güvenle test etmenizi ve ele geçirilen bir uygulamanın tüm sunucuya yayılmasını önlemenizi sağlar.
Sandbox ile sanal makine aynı şey mi?
Hayır. Sanal makine sandbox oluşturmanın yollarından biridir ve kendi çekirdeğiyle güçlü yalıtım verir. Sandbox ise daha genel bir kavramdır; konteyner, jail veya sistem çağrısı filtresi gibi daha hafif yöntemlerle de kurulabilir.
Sandbox içindeki zararlı yazılım dışarı çıkabilir mi?
Yalıtım doğru yapılandırıldığında olası değildir, ancak yalıtım katmanında açık bulunursa teorik olarak aşılabilir. Bu yüzden sandbox’ı tek başına değil, güncelleme ve izleme gibi diğer önlemlerle birlikte kullanın.
İlgili terimler
- Sertleştirme (hardening)Bir sistemin gereksiz özelliklerini kapatıp güvenli yapılandırmaya getirilmesi.
- SIEMGünlükleri tek yerde toplayıp ilişkilendiren ve uyarı üreten güvenlik izleme sistemi.
- Sızma testi (penetration test)Yetkili uzmanların bir sistemi saldırgan gibi test ederek açıkları bulması.
- Sorumlu ifşa (responsible disclosure)Açığın önce üreticiye bildirilip düzeltme için süre tanındıktan sonra açıklanması.
- Tehdit modellemeBir sistemi kimlerin, neden ve nasıl hedef alabileceğini tasarım aşamasında sistemli biçimde çıkarma ve önceliklendirme çalışması.
- TLS / SSLİnternet trafiğini şifreleyen ve sunucuyu doğrulayan protokol.