Linux'ta Hosting Kullanıcıları Güvenli Biçimde Yalıtma
12 Kasım 2026'da yayımlandı

Paylaşımlı bir sunucu, ta ki güvenliği ihlal edilmiş bir web sitesi görmemesi gereken bir dosyayı okuyana kadar aylarca sorunsuz çalışabilir. Ekiplerin hosting kullanıcılarını güvenli şekilde yalıtması bu yüzden gerekir: büyük hosting şirketleri için bir lüks olarak değil, birden fazla siteyi, müşteriyi veya projeyi barındıran her sunucu için temel bir kural olarak.
Kullanıcı yalıtımı; bir uygulamanın güvenlik açığı bulunan bir eklentisi, zayıf bir parolası veya kötü amaçlı olduğu anlaşılan yüklenmiş bir dosyası olduğunda zararı sınırlar. Ayrıca yoğun kullanılan bir hesabın diğer herkesin web sitelerini yavaşlatmasını önler. Amaç basit: her müşteri kendi web sitelerini yönetmeye yetecek kontrole sahip olmalı, sunucu ise diğer her şeyin çevresinde net sınırlar korumalıdır.
Hosting kullanıcı yalıtımının gerçekte ne anlama geldiği
Yalıtım tek bir ayardan ibaret değildir. Birlikte çalışan katmanlardan oluşur. Asgari olarak bir hosting hesabının kendine ait bir Linux kullanıcısına, ana dizine, dosya izinlerine, veritabanı kimlik bilgilerine, PHP sürecine ve erişim kurallarına ihtiyacı vardır. Bir web sitesindeki hata, sunucudaki tüm web sitelerine erişim sağlamamalıdır.
Paylaşımlı sunucuyu bir apartman binası olarak düşünün. Ayrı bir Linux kullanıcısı, dairenin kapısıdır. Doğru dosya izinleri kilittir. Ayrı PHP-FPM havuzları, veritabanı kullanıcıları ve kaynak sınırları duvarlar, tesisat ve devre kesicilerdir. Tek bir katman yardımcı olur, ancak yalnızca ona güvenmek küçük olayların uzun akşamlara dönüşmesine yol açar.
Doğru yalıtım düzeyi barındırdığınız içeriğe bağlıdır. Güvendiğiniz tek bir yöneticinin bulunduğu birkaç dahili siteyle 80 müşteri hesabı barındıran bir ajans sunucusunun ihtiyaçları farklıdır. Birbiriyle ilişkisi olmayan müşteriler için daha güçlü ayrım, ek yapılandırma ve biraz daha fazla bellek kullanımı karşılığında buna değer.
Her hosting hesabı için bir Linux kullanıcısıyla başlayın
Tüm web sitelerini asla aynı sistem hesabı altında çalıştırmayın. Tüm web dosyalarının `www-data` gibi genel bir web kullanıcısına ait olması durumunda, dosya yazabilen güvenlik açığı bulunan herhangi bir betik başka bir müşterinin sitesini de değiştirebilir.
Her hosting hesabı için özel bir Linux kullanıcısı oluşturun ve bu kullanıcıyı kendi belge kök dizininin, günlüklerinin, geçici dosyalarının ve uygulama dosyalarının sahibi yapın. Mümkün olduğunca paylaşımlı yazılabilir dizinlerden kaçının. Her hesabın yazabildiği bir dizin, er ya da geç sorunların beklediği bir yere dönüşür.
Varsayılan olarak kısıtlayıcı izinler belirleyin. Web sitesi dizinlerinde genellikle `755`, sıradan dosyalarda ise `644` kullanılabilir. Gizli bilgiler içeren yapılandırma dosyaları daha kısıtlayıcı izinlere sahip olmalıdır; dosyaları okuması gereken hizmet hesabına bağlı olarak genellikle `600` veya `640` kullanılır. Bir yükleme klasörü sorun çıkarıyor diye `777` kullanmayın. Bu, kapının kilidini sökerek belirtiyi ortadan kaldırır.
Sahiplik, sayısal izinler kadar önemlidir. Örneğin bir WordPress sitesinin `wp-content/uploads` yazma erişimine ihtiyacı olabilir, ancak web hizmetinin uygulamanın tamamını yeniden yazma iznine ihtiyacı olmamalıdır. Yazma erişimini yalnızca gerçekten gerektiren dizinlere verin.
Hesap sınırlarını paylaşımlı yollardan uzak tutun
Yedekleri, oturumları, önbellekleri veya dağıtım dosyalarını ortak bir konumda saklamak cazip gelebilir. İzinler değişene veya bir temizleme işi yanlış dosyaları silene kadar bu kullanışlı olabilir. Kullanıcı başına uygulama verilerini o hesabın ana dizininde veya özellikle o hesaba ait başka bir konumda tutun.
Paylaşımlı bir hizmet kaçınılmazsa erişimi açıkça tanımlayın. Gereken en dar izinlere sahip özel bir grup kullanın, bu grubun neden var olduğunu belgeleyin ve değişikliklerden sonra gözden geçirin. “Geçici” paylaşımlı erişim, kalıcı hâle gelme eğilimindedir.
PHP'yi her hesap için ayrı çalıştırın
PHP web siteleri için çalıştırma modeli, vereceğiniz en önemli kararlardan biridir. PHP'yi paylaşımlı bir süreç üzerinden çalıştırmak, güvenlik açığı bulunan bir sitenin kendi dosyalarının çok ötesinde erişim edinmesine yol açabilir. Her hosting kullanıcısı için ayrı bir PHP-FPM havuzu kullanmak daha net bir sınır oluşturur: PHP çalışanı, kendi süreç ayarları ve sınırlarıyla o hesabın Linux kullanıcısı olarak çalışır.
Kullanıcı başına PHP-FPM havuzu sorun gidermeyi de kolaylaştırır. Bir müşterinin uygulaması çalışanları veya belleği tüketmeye başlarsa sunucuyu büyük bir gizem olarak ele almak yerine sorumlu havuzu belirleyebilirsiniz. Hesabın planına ve uygulamanın gerçek ihtiyaçlarına göre maksimum çocuk süreç sayısı ve istek zaman aşımları gibi havuz düzeyinde sınırlar belirleyin.
Bunun bir ödünleşimi vardır. Özellikle küçük bir sanal sunucuda, daha fazla PHP-FPM havuzu tek bir paylaşımlı havuzdan daha fazla bellek tüketir. Yalnızca az sayıda, trafiği düşük site barındıran bir sunucuda aşırı büyük havuzlar oluşturmak yerine makul sınırlar belirleyin. Ancak makul miktarda RAM tasarrufu sağlamak için hesapları birbirinden ayırmaktan vazgeçmeyin. Tüm kiracıları tek bir güvenlik bölgesine dönüştürmeden önce kapasiteyi artırın.
PHP dışındaki uygulamalarda da aynı ilkeyi izleyin. Node.js, Python, Ruby veya özel hizmetleri özel kullanıcılar altında çalıştırın. Her projeye erişimi olan tek bir paylaşımlı uygulama hesabı kullanmak yerine ayrı sistem hizmetleri ve ortam dosyaları kullanın.
Veritabanlarını, kimlik bilgilerini ve gizli bilgileri birbirinden ayırın
Yalıtımın sessizce bozulduğu yer çoğu zaman veritabanı sunucusudur. Her uygulamaya aynı veritabanı yöneticisi oturum açma bilgilerini vermek kurulum sırasında kolaylık sağlar, sonrasında ise sürekli risk oluşturur. Her sitenin kendi veritabanı ve veritabanı kullanıcısı olmalı, izinleri de bu veritabanıyla sınırlı tutulmalıdır.
Belirli bir operasyonel neden olmadıkça uygulama kullanıcılarına genel ayrıcalıklar, yeni kullanıcı oluşturma izni veya her şemaya erişim vermeyin. Güvenliği ihlal edilmiş bir CMS kimlik bilgisi, sunucudaki diğer müşterilerin kayıtlarını değil, tek bir uygulamanın verilerini açığa çıkarmalıdır.
Gizli bilgileri de aynı özenle ele alın. Veritabanı parolalarını, API anahtarlarını ve e-posta kimlik bilgilerini hesabın sahip olduğu yapılandırma dosyalarında saklayın. Bunları herkese açık web dizinlerinden, sürüm kontrol klasörlerinden ve paylaşımlı yedekleme konumlarından uzak tutun. Bir çalışan, yüklenici veya müşteri artık erişime ihtiyaç duymadığında eski kimlik bilgilerinin zararsız kalacağını varsaymak yerine erişimini kaldırın.
Kabuk, SSH ve zamanlanmış görev erişimini denetleyin
Her hosting kullanıcısının SSH erişimine ihtiyacı yoktur. Yalnızca temel bir web sitesini yöneten bir müşteri için panel üzerinden dosya yönetimi veya SFTP yeterli olabilir. Geliştiriciler ve ajanslar için SSH; dağıtımlar, Composer, WP-CLI ve günlük kontrollerinde gerçekten yararlı olabilir. Pratik çözüm her yerde engellemek değil, bilinçli şekilde izin vermektir.
Mümkün olduğunda parola yerine SSH anahtarları kullanın. Doğrudan root oturum açmayı devre dışı bırakın, paylaşımlı yönetici hesaplarından kaçının ve işlemlerin izlenebilmesi için personele ayrı, adlandırılmış hesaplar verin. Bir kullanıcının yalnızca dosya aktarımına ihtiyacı varsa hesabı SFTP ile kısıtlamayı değerlendirin. Kabuğa ihtiyaçları varsa diğer kullanıcıların ana dizinlerini okuyamadıklarından ve riskli ayrıcalık yükseltme yollarını kullanamadıklarından emin olun.
Cron işleri de aynı özeni gerektirir. Her zamanlanmış görevi root olarak veya paylaşımlı bir web hesabı altında değil, sahibi olan kullanıcı olarak çalıştırın. Hatalı bir cron işi diski doldurabilir, binlerce e-posta gönderebilir veya maliyetli bir betiği tekrar tekrar çalıştırabilir. Net sınırlar belirleyin ve uzun süredir dokunulmamış işleri gözden geçirin.
Her hesabı kaynak sınırlarıyla kısıtlayın
Güvenlik ve kararlılık, kaynak denetiminde buluşur. Bir hesap, dosyalarına sızmadan da CPU'yu, belleği, süreçleri, disk alanını veya inode sayılarını tüketerek diğer tüm hesapları etkileyebilir. Kaynak sınırları; trafik artışını, hatalı sorguyu veya yanlışlıkla oluşan döngüyü buna neden olan hesapla sınırlı tutar.
Süreç sınırları, PHP-FPM havuz ayarları, disk kotaları ve sistem düzeyindeki cgroups gibi Linux ortamınızın desteklediği denetimleri kullanın. Sayıları belirlemeden önce gerçek kullanımı izleyin. Çok düşük bir sınır, meşru e-ticaret trafiğini, arka plan içe aktarımlarını veya yedeklemeleri aksatabilir. Çok yüksek bir sınır ise pek de sınır sayılmaz.
Mümkünse en azından her hesap için CPU yükünü, bellek baskısını, disk kullanımını, inode kullanımını, süreç sayılarını, başarısız oturum açma girişimlerini ve giden e-posta hacmini izleyin. Gerçek zamanlı izleme, “sunucu yavaş gibi” ifadesini işe yarar bir yanıta dönüştürür: hangi kullanıcı, hangi süreç ve ne zaman başladı.
Yalıtım önlemleri ekleyin, ancak bunları çözümle karıştırmayın
Chroot ortamları, kapsayıcılar ve sanallaştırma kullanıcılar arasında daha güçlü sınırlar oluşturabilir. Kapsayıcılar; müşterilerin özel çalışma ortamlarına, bağımlılıklara veya hizmet düzeyinde denetime ihtiyaç duyduğu ve bunların tek bir işletim sisteminde çakışabileceği durumlarda özellikle kullanışlıdır. Sanal makineler daha yüksek operasyonel maliyet karşılığında daha da güçlü bir ayrım sunar.
Bu araçlar yardımcı olur, ancak izinlerin, yamaların veya güvenli kimlik bilgilerinin yerini tutmaz. Root olarak çalışan ve ana makinede yazılabilir bir bağlama noktası kullanan bir kapsayıcı, güvenli bir kiracı sınırı değildir. Benzer şekilde, bir chroot hapishanesi görünür dosya sistemi erişimini azaltabilir, ancak uygulama düzeyindeki her sorunu sınırlamayabilir. Riske uygun katmanı seçin ve dikkatle yapılandırın.
Uygulanabilir bir yalıtım kontrol listesi
Yeni bir hosting hesabı eklemeden önce şu temel noktaları doğrulayın:
- Hesabın kendine ait bir Linux kullanıcısı, ana dizini, web sitesi dosyaları, günlükleri ve geçici yolları vardır.
- PHP veya başka bir uygulama çalışma ortamı, paylaşımlı bir hizmet kimliği yerine bu kullanıcının altında çalışır.
- Hesabın yalnızca kendi veritabanına erişebilen ayrı veritabanı kimlik bilgileri vardır.
- Dosya sahipliği ve izinleri hesaplar arası okuma ve yazmayı önler.
- SSH, SFTP, cron işleri, yedeklemeler ve kaynak sınırları ilgili hesaba özel olarak tanımlanmış ve yapılandırılmıştır.
Bir kontrol paneli, bu sınırları sunucu jargonunun arkasına gizlemek yerine görünür kılmalıdır. FASTPANEL, yöneticilerin ayrı hesapları, alan adlarını, veritabanlarını ve sunucu etkinliğini tek ve anlaşılır bir çalışma alanından yönetmesine yardımcı olur; böylece sunucu büyüdükçe iyi yalıtımı sürdürmek kolaylaşır.
Kurulumdan sonra da kontrolleri sürdürün
Yalıtım, bir kez tamamlayıp unutabileceğiniz bir görev değildir. Yeni eklentiler, taşıma betikleri, elle yapılan izin değişiklikleri ve aceleyle uygulanan destek düzeltmeleri zamanla yalıtımı zayıflatabilir. Site taşıma işlemlerinden sonra hesap sahipliğini gözden geçirin, herkes tarafından yazılabilir dosyaları tarayın, etkin olmayan kullanıcıları kaldırın, güvenlik güncellemelerini uygulayın ve yedekleme süreçlerine her hesaba gereksiz erişim vermeden yedekleri test edin.
En iyi kurulum, ekibinizin baskı altında anlayıp sürdürebileceği kurulumdur. Her kullanıcıya net bir sınır koyun, istisnaları nadir tutup belgeleyin ve bir web sitesinin kötü gününün herkesin sorununa dönüşmesini önleme işini sunucuya bırakın.