Hesap yalıtımı
bipanel her barındırma hesabını ayrı bir Linux kullanıcısı olarak açar; dosya izinleri, hesap başına PHP-FPM havuzu ve open_basedir her kurulumda uygulanır. Sunucu kurulumunda bunlara hapsedilmiş kabuk, cgroup kaynak sınırları ve Pro sürümde systemd ad alanlarıyla hesap yalıtımı eklenir.
Bu sayfada
#Katmanlara genel bakış
Yalıtım tek bir ayar değil, üst üste binen katmanlardır. Hangi katmanın nerede çalıştığı:
| Katman | Sunucu kurulumu | Docker / Railway | Sürüm |
|---|---|---|---|
| Ayrı Linux kullanıcısı ve dosya izinleri | Evet | Evet | Topluluk |
Hesap başına PHP-FPM havuzu, open_basedir | Evet | Evet (ortak ana süreç) | Topluluk |
| Hesap başına PHP-FPM ana süreci | Evet (systemd + cgroup v2) | Hayır | Topluluk |
| Hapsedilmiş kabuk (SSH, SFTP, web terminali, cron) | Evet | Hayır | Topluluk |
| CPU, bellek ve süreç sınırları (cgroup v2) | Evet | Yalnızca süreç sayısı | Topluluk |
| Disk G/Ç sınırları | Evet | Hayır | Pro |
| Hesap yalıtımı (systemd ad alanları) | Evet (systemd 245+) | Hayır | Pro |
Topluluk sürümü en fazla 3 barındırma hesabı yönetir; sürüm farkları için Fiyatlar sayfasına bakın.
#Ayrı sistem kullanıcısı ve dosya izinleri
Her hesap kendi kullanıcı ve grup kimliğiyle açılır. Ev dizini 0711 izinlidir: diğer kullanıcılar içeriği listeleyemez. Belge kökü dizininin sahibi hesap, grubu web sunucusu grubudur (www-data ya da apache) ve izni 0750'dir; web sunucusu okuyabilir, diğer hesaplar okuyamaz. tmp, backups, .ssh ve .bipanel dizinleri 0700, logs dizini 0750 olarak oluşturulur.
Sembolik bağlantıyla başka bir hesabın dosyasına ulaşmaya karşı Apache sanal konaklarında SymLinksIfOwnerMatch kullanılır ve .htaccess ile değiştirilebilecek seçenekler kısıtlıdır. Panelin root olarak yaptığı dosya işlemleri (dosya yöneticisi, yedekten geri yükleme) yolları bileşen bileşen, bağlantı izlemeden açar; hesabın ev dizini dışına taşan bir bağlantı izlenmez.
#PHP-FPM havuzları ve open_basedir
Her hesabın PHP'si, hesap kullanıcısının kimliğiyle çalışan kendi FPM havuzunda çalışır. Havuzun soketine yalnızca web sunucusu bağlanabilir. Havuzda şunlar sabitlenir:
open_basedir: hesabın ev dizini,/tmp,/var/tmp, dağıtımın ortak PHP kitaplık dizinleri ve/dev/urandom.- Yükleme, geçici dosya ve oturum dizini hesabın
~/tmpdizinidir; PHP hata günlüğü~/logs/php-error.logdosyasına yazılır. - Sunucu genelinde tanımlanan
disable_functionslistesi havuza da uygulanır.
Sunucu kurulumunda systemd ve cgroup v2 varsa her hesabın havuzu ayrı bir PHP-FPM ana sürecinde, hesabın cgroup diliminde çalışır; böylece CPU, bellek ve süreç sınırları PHP'yi de kapsar. Bu davranış yeni kurulumlarda varsayılan olarak açıktır. Hesapları olan bir sunucu güncellendiğinde kendiliğinden açılmaz, çünkü her hesap ek bir ana süreç ister ve geçişte siteler kısa süre kesilir; Sunucu Yönetimi → Kaynak sınırları ekranından açılır. Docker ve Railway'de havuzlar ortak ana süreçte çalışır.
#Hapsedilmiş kabuk
Kabuk erişimi hesap ya da paket düzeyinde üç kipten biridir: kapalı, hapsedilmiş veya tam. Pakette kabuk erişimi açılıp tür seçilmezse hapsedilmiş kip kullanılır. Ayarlar Sunucu Yönetimi → Kabuk yalıtımı ekranındadır; bu ekranı yöneticiler ve bayiler kullanabilir.
Hapsedilmiş kabuk bubblewrap ile kurulur ve SSH, SFTP/scp, git, web terminali ile cron işlerine aynı biçimde uygulanır:
- Yalnızca hesabın ev dizini yazılabilir;
/usrve gerekli sistem dosyaları salt okunurdur. - Diğer hesapların dizinleri, panel verileri ve sistem yapılandırması görünmez;
/etc/passwdiçinde yalnızca root, nobody ve hesabın kendisi yer alır. - Ayrı süreç ad alanı: diğer kullanıcıların süreçleri görünmez.
- Özel
/tmp(varsayılan 512 MB) ve temizlenmiş ortam değişkenleri.
Yönetici hapse salt okunur ek yollar ekleyebilir; hesap dizinleri, /etc, /proc, panel verileri gibi yollar reddedilir. Bileşen sunucu kurulumunda varsayılan olarak kurulur. Kurulu değilse hapsedilmiş kipteki hesaplar giriş yapamaz; yönetici bunun yerine yalıtımsız tam kabuk verilmesini seçebilir. İsteğe bağlı derleyici kısıtlaması açıldığında gcc, make gibi araçları yalnızca izin verilen hesaplar çalıştırabilir.
#Kaynak sınırları
Sunucu kurulumunda paketteki CPU yüzdesi, bellek ve en fazla süreç sayısı systemd dilimleriyle (cgroup v2) uygulanır: PHP-FPM ve Node.js/Python uygulamaları hesabın dilimine, SSH oturumları ve cron işleri hesabın kullanıcı dilimine konur. Süreç sınırı fork bombasına karşı da korur. Disk okuma/yazma hızı sınırı Pro sürümdedir (Sunucu Yönetimi → Disk G/Ç ve dosya sınırları). Sunucu cgroup v1 kipindeyse ekran gereken çekirdek parametresini gösterir. Docker ve Railway'de kaynakları platform sınırlar; panel yalnızca uygulamalara ve komutlara süreç sayısı sınırı uygular. Ayrıntılar: İzleme, sınırlar ve istatistikler.
#Hesap yalıtımı (Pro)
Sunucu Yönetimi → Hesap yalıtımı (Pro), hesabın çalıştırdığı her şeyi systemd ad alanlarıyla kısıtlar: hesap başına PHP-FPM ana süreci, Node.js/Python uygulama birimleri, derleme/dağıtım komutları ve git. Yalıtılmış bir birim:
- dosya sistemini salt okunur görür, yalnızca kendi ev dizinine yazabilir;
- diğer hesapların ev dizinlerini, panel verilerini, posta kutularını, sistem günlüklerini, sertifika özel anahtarlarını ve
/etc/shadowdosyasını görmez; - özel
/tmpve/devalır, diğer kullanıcıların süreçlerini göremez (systemd 247 ve sonrası); - yeni ayrıcalık kazanamaz, setuid dosyası oluşturamaz, çekirdek ayarlarına ve modüllerine erişemez; riskli sistem çağrısı grupları engellenir.
Veritabanı soketleri, PHP eklentileri, CA sertifikaları ve PHP mail() çalışmaya devam eder. Ayar sunucu, paket ve hesap düzeyinde verilir; varsayılan kapalıdır. Yönetici ek yazılabilir yollar ve gizlenecek yollar tanımlayabilir.
#Uyumluluk denetimi ve geri alma
Yalıtım bir hesaba uygulanmadan önce denetlenir: PHP havuzları, PHP siteleri ve çalışan uygulamalar önce yalıtımsız, sonra geçici bir yalıtılmış kopyada ölçülür ve sonuçlar karşılaştırılır. Fark varsa yalıtım uygulanmaz; geçişten sonra bir şey çalışmazsa otomatik geri alınır ve yönetici bilgilendirilir. Ekran, birimlerin systemd maruziyet puanını (0 tam korumalı, 10 kısıtsız) yalıtım öncesi ve sonrasıyla gösterir. Hesap başına PHP-FPM kapalıysa PHP yalıtılamaz; yalnızca uygulamalar ve komutlar yalıtılır. Lisans geçersiz olursa uygulanmış yalıtım kaldırılmaz, yalnızca yeni yalıtım başlatılamaz.
Gereksinim: systemd 245 veya üstü (Ubuntu 22.04+, Debian 12+, AlmaLinux/Rocky/RHEL 9+).
#SELinux ve AppArmor
AlmaLinux, Rocky Linux ve RHEL'de panel SELinux'u kapatmaz; gereken izinleri politika araçlarıyla verir. Web kökleri ve PHP'nin yazdığı dizinler uygun bağlamlarla etiketlenir, gereken mantıksal değerler ve portlar tanımlanır. Hesap yalıtımı için yalnızca gereken birkaç izni veren küçük bir yerel politika modülü yüklenir. SELinux kipi ve son SELinux hataları Sunucu Yönetimi → Güvenlik duvarı ekranındaki SELinux bölümünde görülür.
Ubuntu'da AppArmor yetkisiz kullanıcı ad alanlarını kısıtlıyorsa hapsedilmiş kabuk bileşeni bubblewrap için bir AppArmor profili ekler; başka bir bwrap profili tanımlıysa ona dokunmaz.
#Docker ve Railway kurulumları
Konteyner kurulumunda tüm hesaplar tek konteynerde çalışır ve Linux kullanıcılarıyla ayrılır. Dosya izinleri, PHP havuzları ve open_basedir uygulanır; ancak systemd olmadığından hesap başına PHP-FPM ana süreci, cgroup sınırları, hapsedilmiş kabuk ve Pro hesap yalıtımı kullanılamaz. Kabuk erişimi verilen hesaplar normal kabuk alır. Bu nedenle birbirine güvenmeyen müşterileri sunucu kurulumunda barındırın. Ayrıntılar: Docker ve Railway; güvenliğin geneli: Güvenlik.
Bu sayfada eksik ya da hatalı bir bilgi mi var? Bize yazın.