Ana Sayfa Hakkımda Dersler Blog Mikrofonda İletişim Projeler
Dersler DEPLOY · C#

Shared Hosting'de Komşu Site Riski ve VDS İzolasyonu

9 dk okuma · Emre Ulutabak
1
Gerçek olay: css klasöründe tanımadığın dosyalar

Bir deploy sonrası sunucudaki css/ klasörüne bakınca, orada olmaması gereken dosyalar görüyorsun: 1Zi847pw4.php, G2Hx052.asp, vRWZ4h.aspx gibi anlamsız isimli dosyalar. Sen bir ASP.NET Core projesi yayınlıyorsun — .php dosyası senin projende hiç olamaz.

İlk refleks panik: "bilgisayarım mı virüslü, ben mi bulaştırdım?" Ama gerçek soru şu olmalı: bu dosyalar buraya nereden geldi?

💡
.php, .asp, .aspx uzantılı, rastgele/anlamsız isimli, senin proje yapına uymayan dosyalar gördüğünde bu genelde bir web shell'dir — saldırganın dosya sistemine erişmek için bıraktığı arka kapı.
2
Dosyalar nereden geldi, nasıl anlaşıldı?

Önce en mantıklı şüpheli kendi yayın çıktın gibi görünüyor. Ama basit bir kontrolle bu ihtimal hızla eleniyor: FTP veya hosting panelinin dosya yöneticisinden şüpheli dosyaların oluşturulma/değişme tarihine bakılıyor — senin hiç deploy yapmadığın bir tarih ve saat görünüyor.

Sonra yerel bilgisayardaki yayın çıktısı (publish klasörü) ve proje klasörü (wwwroot/) tek tek kontrol ediliyor — orada böyle bir dosya yok. Yani dosya senin makinenden hiç gitmemiş, doğrudan sunucuya, dışarıdan atılmış.

Bu noktada tek mantıklı açıklama kalıyor: aynı fiziksel sunucudaki başka bir müşterinin sitesi güvenlik açığı barındırıyor (eski WordPress, Joomla sürümü gibi) ve saldırgan oradan sızıp dosya sistemi üzerinde gezinerek senin klasörüne de bir shell bırakmış.

powershell
# FTP / hosting panelinin dosya yöneticisinde bakacağın işaret: tarih uyuşmazlığı
# Senin son deploy'unu yaptığın tarih:  12.04.2026 14:20
# Şüpheli dosyaların değişme tarihi:

css/1Zi847pw4.php    14.04.2026 03:11   <- sen o gün deploy yapmadın
css/G2Hx052.asp      14.04.2026 03:11
css/vRWZ4h.aspx      14.04.2026 03:12

# Aynı klasörü yerel publish çıktınla karşılaştır:
# yerelde bu isimde dosya yoksa, sunucuya dışarıdan atılmış demektir
3
Shared hosting'de izolasyon neden zayıf?

Shared hosting'in temel mantığı şu: tek fiziksel sunucu, yüzlerce müşteri. Herkesin sitesi aynı disk üzerinde, aynı işletim sistemi altında, klasör bazlı ayrılmış şekilde durur.

Bu model ucuz ve pratik ama iki büyük risk taşır:

  • Komşu site açığı — aynı sunucudaki başka bir sitenin eski/yamasız bir yazılımı varsa (WordPress eklentisi, Joomla çekirdeği), saldırgan oradan içeri girip dosya sistemi izinleri zayıfsa diğer müşterilerin klasörlerine de erişebilir.
  • FTP brute force — zayıf şifreli bir FTP hesabı kırılırsa, aynı sunucudaki diğer hesaplara da sıçrama denenebilir.

Sen kendi kodunu ne kadar temiz yazarsan yaz, komşunun güvenlik açığı senin sorumluluğunda değil ama seni etkileyebilir. Bu, shared hosting'in doğasında var olan bir risk.

💡
Bu senin hatan değil demek, önlem alma sorumluluğun yok demek değil. Her yayından sonra sunucudaki dosyaları kendi projenle karşılaştırma alışkanlığı (elle ya da basit bir script ile), bu riske karşı ucuz ve etkili bir savunma katmanıdır.
4
VDS'te izolasyon nasıl çalışır?

VDS (Virtual Dedicated Server), kaynakların donanımsal olarak ayrıldığı bir modeldir. CPU çekirdekleri, RAM, disk alanı gerçekten sadece sana ait bölüme tahsis edilir — komşu bir hesap seninle aynı dosya sistemini paylaşmaz.

Karşılaştırma böyle özetlenebilir:

  • Shared Hosting — tek dosya sistemi, klasör bazlı ayrım, komşu açığı seni etkileyebilir, root yok.
  • VPS — sanallaştırma ile ayrılmış, kaynaklar çoğunlukla izole ama fiziksel donanım paylaşımlı, root var.
  • VDS — donanım seviyesinde ayrılmış, en güçlü izolasyon, root senin, tamamen kendi ortamın.

VDS'te bir "komşu site" senin dosya sistemine asla dokunamaz — çünkü teknik olarak aynı dosya sistemi yok. Kendi işletim sistemin, kendi IIS/Plesk kurulumun, kendi güvenlik ayarların var. Sorumluluk da tamamen sana geçer — artık patch'lemeyi, güvenlik duvarını, yedeklemeyi sen yönetirsin.

5
Korunma adımları

Shared hosting'de kalmaya devam edeceksen, riski tamamen ortadan kaldıramasan da azaltabilirsin:

  • Düzenli olarak sunucudaki dosyaları yerel projenle karşılaştır — FTP'den klasörleri indirip yerel publish çıktınla kıyaslamak (ya da basit bir karşılaştırma scripti yazmak), tanımadığın dosyayı hemen fark etmeni sağlar.
  • FTP şifrelerini güçlü tut — brute force'a karşı en ucuz ve en etkili önlem.
  • Şüpheli dosya bulunca hemen hosting firmasına bildir — hangi dosyalar, hangi klasörde, hangi tarihte bulunduğunu belirterek.
  • Diğer sitelerini de kontrol et — aynı sunucuda birden fazla siten varsa, sızma tek bir siteyle sınırlı kalmamış olabilir.

Kritik bir bileşen (lisans doğrulama API'si gibi, sürekli erişilebilir olması gereken bir servis) için ise en sağlıklı karar, büyüme belirli bir noktaya geldiğinde bunu VDS'e taşımaktır. Shared hosting geliştirme ve düşük riskli sayfalar için hâlâ makul bir başlangıç noktasıdır.

💡
Bir sızıntı bulduğunda dosyayı hemen silmeden önce adını, yolunu ve bulunma tarihini not al — hosting firmasına bildirirken bu bilgiler araştırmayı çok hızlandırır.
6
Altın kurallar
  • ✅ Projenle uyuşmayan uzantılı (.php, .asp, .aspx bir ASP.NET Core sitesinde) dosya görürsen bunu ciddiye al
  • ✅ Şüpheyi netleştirmek için önce dosya tarihine, sonra yerel publish çıktısına bak — kendi çıktından gelip gelmediğini kanıtla
  • ✅ Shared hosting'de dosya sistemi izolasyonu sınırlıdır — komşu açığı senin sorumluluğunda olmasa da seni etkileyebilir
  • ✅ VDS, izolasyonu donanım seviyesine çıkarır — komşu kavramı teknik olarak ortadan kalkar
  • ✅ Kritik/her zaman erişilebilir olması gereken servisleri büyüme belirli noktaya gelince VDS'e taşımayı planla
7
Mini quiz
MİNİ QUIZ
Sunucunda projenle uyuşmayan bir dosya buluyorsun. Bunun kendi yayınından mı yoksa dışarıdan mı geldiğini anlamak için en pratik ilk adım nedir?
Dosyanın oluşturulma/değişme tarihini ve içeriğini yerel publish çıktınla karşılaştırmak
Dosyayı hemen silip unutmak
IIS App Pool'u yeniden başlatmak
Dosyanın uzantısını değiştirip tekrar denemek