VPS barındırma güvenli mi? Riskler ve güvenlik ipuçları
KVM VPS teknolojisi kaynakları izole ederek güvenliği artırır. Ancak asıl riskler açık portlar, zayıf SSH parolaları ve güncellenmemiş paketler gibi kullanıcı hatalarıdır.
VPS barındırma güvenli midir? Kısa cevap
Evet. VPS barındırma, çoğu kullanıcının ihtiyaç duyduğu işler için güvenlidir ve paylaşımlı barındırmaya göre gerçek bir iyileştirmedir. KVM VPS (sanal özel sunucu), kendi çekirdeğine, belleğine, diskine ve kullanıcı hesaplarına sahip bir sanal makinedir; bu makineyi çalıştıran hipervizör, diğer müşterilerin bu dört kaynağa erişimini engeller. Aynı fiziksel makinede yanınızdaki sunucuyu kiralayan kişi dosyalarınızı okuyamaz, süreçlerinizi listeleyemez, sunucunuza giriş yapamaz veya ağ trafiğinizi göremez. Konteyner tabanlı planlar daha zayıf bir sınır çizer, bu konu aşağıda ele alınmıştır.
Dürüst cevabın iki yönü vardır. Donanımın ve hipervizörün sahibi sağlayıcıdır. Sanal makinenizin içindeki her şeyin sahibi sizsiniz ve neredeyse tüm gerçek güvenlik olayları burada başlar. Sunucular; açık bir port, zayıf bir SSH parolası, güncellenmemiş bir paket veya yayınlanmış bir dosya içindeki gizli bir veri nedeniyle ele geçirilir. Hipervizör üzerinden ele geçirilme durumları ise oldukça nadirdir.
Hiper yöneticinin gerçekten ayırdığı şey
Hiper yönetici, sanal makineleri tek bir fiziksel ana bilgisayar üzerinde çalıştıran yazılımdır. KVM VPS üzerinde (KVM, kernel based virtual machine ifadesinin kısaltmasıdır ve Linux ana bilgisayarlarında standarttır) sunucunuz tam bir sanal makinedir. Kendi kernel’ını başlatır. Ana bilgisayar, sunucuya fiziksel belleğin sabit bir bölümünü tahsis eder. İşlemcinin memory management unit bileşeni bu bölümün dışındaki erişimleri reddeder. Bu nedenle başka bir guest üzerinde çalışan kod RAM adreslerinize hiçbir şekilde erişemez. Ortak filesystem ve ortak kullanıcı tablosu yoktur. Bu nedenle komşu sunucudaki dosya izinlerinin sizin sunucunuz üzerinde bir etkisi olmaz.
Shared hosting farklı çalışır. Birçok site, tek bir işletim sistemi içinde, tek bir web server ve tek bir PHP kurulumu altında normal kullanıcı hesapları olarak çalışır. Tek sınır dosya izinleridir. Bu nedenle bir izin hatası veya çok fazla dosyayı okuyabilen bir kullanıcı hesabı altında çalışan güvenlik açığı bulunan bir plugin, başka bir hesabın dosyalarına erişebilir. shared hosting’den VPS’e geçiş bu açığı kapatır.
Ne satın aldığınızı kontrol edin. VPS olarak satılan her plan sanal makine değildir. Container tabanlı planlar (OpenVZ, LXC, Virtuozzo), ana bilgisayarın kernel’ını paylaşır. Müşteriler hardware virtualization yerine namespaces ve cgroups ile birbirinden ayrılır. Bu sınır daha zayıftır. Çünkü ana bilgisayardaki bir kernel hatası, sizin sunucunuzda da kernel hatası anlamına gelir. Ayrıca bu planlarda kernel modules yüklenemez. Bu durum bazı yazılımların kullanılmasını engeller. KVM daha güvenli varsayılandır. Ödeme yapmadan önce hangi teknolojiyi alacağınızı sorun.
Gürültücü komşu size ne yapabilir
Fiziksel bir ana bilgisayarı paylaşmanın size maliyeti hız kaybıdır; bunun dışında başka bir maliyeti yoktur. Aynı makinedeki konuklar fiziksel CPU'yu ve diskleri paylaşır. CPU başka bir konuk tarafından meşgulken sanal CPU'nuz bekler. Linux bu beklemeyi steal time olarak bildirir: %st içindeki top ve vmstat alanlarında gösterilir. Steal time değerinin saatler boyunca birkaç yüzde puanının üzerinde kalması, ana bilgisayarın kapasitesinin üzerinde kullanıldığını gösterir. Bu durum, herhangi birinin verilerinizi okuduğu anlamına gelmez. Çözüm farklı bir plan veya farklı bir sağlayıcı kullanmaktır. Karar vermeden önce size gerçekten sağlanan CPU ve disk kapasitesini ölçebilirsiniz.
Müşteriler arasında oluşabilecek etkilerden birini bilmek gerekir; bu bir güvenlik açığı değildir. VPS'nizden e-posta gönderiyorsanız IP adresiniz, diğer müşterilerin de kullandığı bir aralıkta yer alır. Bir komşu spam gönderirse bu aralığın bir bölümü blocklist'e alınabilir. Bu nedenle, sizin neden olmadığınız bir durum yüzünden e-postalarınız spam klasörlerine düşebilir. Kötüye kullanımı denetleyen sağlayıcılar daha temiz IP aralıkları bulundurur. E-posta sizin için önemliyse bunu sağlayıcıya sorun.
Kötü niyetli bir komşunun yapamayacağı şeyler ve bunu yapabildiği nadir durum
Aynı host üzerindeki bir müşterinin dosyalarınıza erişebileceği bir yol yoktur. Süreçlerinizi göremez, diskinizi mount edemez veya sunucunuzda bir shell açamaz. Çünkü bunların hiçbiri kendi virtual machine ortamının içinde bulunmaz. Belirtilmesi gereken bir istisna vardır: provider private network ortamlarını yabancılarla paylaşılan bir ağ olarak kabul edin. Bu ağ üzerinden geçen verileri görünmez olduklarını varsaymak yerine şifreleyin.
Hypervisor escape saldırıları gerçektir. Virtualization layer içindeki bir hata, bir guest içindeki kodun host'a ulaşmasına ve host üzerinden aynı host üzerindeki tüm guest'lere erişmesine izin verebilir. Bu hatalar bulunur, bir CVE (common vulnerabilities and exposures) identifier ile yayımlanır ve yamalanır. Hosting provider'lar tüm işlerini bu layer üzerine kurduğu için bu yamaları hızlı şekilde uygular. Böyle bir saldırı için belirli bir hypervisor version'ına yönelik çalışan bir exploit gerekir. Küçük bir hosting account için kullanılacak pahalı bir araçtır.
Guest'ler arasındaki side-channel saldırıları da gerçektir. Bunlar Spectre ve Meltdown ailesindendir. Paylaşılan processor cache'lerini kullanarak bir sınırın ötesindeki küçük miktarlarda veriyi çıkarsamaya çalışırlar. Microcode ve kernel update'leri bu saldırıların etkisini azaltır. Yayımlanmış çalışmalardaki sızıntı hızları da çok düşüktür. Yayımlanmış vakalar, geniş çaplı saldırılardan çok araştırma amaçlı gösterimlerdir. Risk sıfır değildir. Ancak size zarar verebilecek tehditler listesinde üst sıralara yakın değildir.
Sağlayıcının sorumluluğunun bittiği ve sizin sorumluluğunuzun başladığı yer
Sağlayıcı; binadan, fiziksel sunucu donanımından, hypervisor ve host kernel'dan, fiziksel ağdan ve sunucunuzu başlatabilen, durdurabilen, yeniden oluşturabilen ve snapshot alabilen control panel'den sorumludur. Bunlardan herhangi biri çalışmazsa sorunu çözmek sağlayıcının sorumluluğundadır.
İşletim sisteminizden sonraki her şeyden siz sorumlusunuz. Buna yüklediğiniz paketler, açık bıraktığınız portlar, oturum açabilen hesaplar ve cryptographic key'ler, uyguladığınız güncellemeler, yedekleriniz ve kendi uygulama kodunuz dahildir. VPS planlarının çoğu unmanaged yapıdadır. Bu, sunucunuza kimsenin sizin adınıza patch uygulamadığı ve hiçbir support ticket'ın bunu sizin yerinize yapmayacağı anlamına gelir. Managed ve unmanaged ayrımı, satın almadan önce okunmalıdır. Çünkü bu ayrım, listedeki sorumlulukların ne kadarının size ait olacağını belirler.
Sizin sorumluluk alanınızın kolayca gözden kaçan bir bölümü daha vardır: hosting control panel'in kendisi. Bu hesaba ait oturum açma bilgilerine sahip olan kişi, sunucunun içindeki herhangi bir password'ü bilmeden sunucunuzu yeniden oluşturabilir veya diskinizi bir rescue system'e bağlayabilir. Hosting hesabında two factor authentication (2FA) etkinleştirilmeli ve bu password başka hiçbir yerde yeniden kullanılmamalıdır.
Hosting sağlayıcınız verilerinizi görebilir mi?
Evet, ilke olarak görebilir. Bu, bir VPS'nin size sunduğu korumanın dürüstçe kabul edilmesi gereken sınırıdır. Disk imajınız sağlayıcının depolama alanında bulunur. Sağlayıcının konsolu, sanal makinenize ekran düzeyinde erişim sağlar. Rescue mode, diskiniz bağlı durumdayken farklı bir sistemi boot edebilir. VPS, sizi diğer müşterilerden korur. Sağlayıcı ise bu taahhüdün kapsamı dışında kalır.
Barındırma sağlayıcısının okuyamaması gereken veriler tutuyorsanız verileri yazılmadan önce uygulamanızda şifreleyin. Guest içindeki full disk encryption, kullanılmayan durumdaki kopyalanmış bir imaja karşı koruma sağlar. Ancak sunucu çalışırken anahtarın bellekte bulunması gerekir. Bu nedenle sağlayıcıyı güven denkleminden çıkarmaz. Aynı güven ilişkisi tek başınıza kiraladığınız dedicated server için de geçerlidir. Bu seçenekte yalnızca bir paylaşılan katman daha azdır.
Bir VPS'e gerçekte neler sızar
Her arayüzü dinleyen bir servis. Veritabanları, önbellekler, mesaj kuyrukları ve yönetim panelleri varsayılan olarak genellikle 0.0.0.0 adresine bağlanır; bu, herkese açık olan dahil tüm ağ arayüzlerini dinledikleri anlamına gelir. IPv4 adreslerine yönelik internet çapındaki taramalar sürekli ve otomatiktir; bu nedenle yeni bir IPv4 adresi, çevrimiçi olduktan dakikalar sonra ilk istenmeyen yoklamayı alır. IPv6 alanı adres adres taranamayacak kadar geniştir, ancak bir IPv6 adresi yine de DNS kayıtları ve diğer sızıntılar yoluyla bulunur, bu yüzden onu gizli olarak değerlendirmeyin. Parolasız bir Redis, kimlik doğrulaması olmayan bir Elasticsearch düğümü, 2375 numaralı portta açık bir Docker API ve varsayılan giriş bilgilerini kullanan bir yönetim paneli, sizin kim olduğunuzu bilmeyen bir tarayıcı tarafından bu şekilde bulunur. Bir servise yalnızca yerel makinenin ihtiyacı varsa onu 127.0.0.1 adresine bağlayın ve geri kalanını güvenlik duvarında engelleyin.
Güvenlik duvarınızı devre dışı bırakan Docker. Bir container portunu dışarı açmak, ufw (uncomplicated firewall) kurallarından önce değerlendirilen ağ adresi çevirisi (NAT) kuralları yazar; bu nedenle ufw status o portun engellendiğini söylese bile bir container internetten erişilebilir olabilir. Bu durum, diğer her şeyi doğru yapan kullanıcıları gafil avlar. Docker portunun ufw'yi neden görmezden geldiği konusu, bir container portunu yayınlamadan önce okunmaya değerdir.
Parola ile SSH girişi. Herkese açık bir IPv4 adresi olan herhangi bir sunucudaki SSH günlüğünü okuyun (Ubuntu'da /var/log/auth.log, Rocky Linux ve diğer RHEL ailesi sistemlerde /var/log/secure veya günlük dosyasının tutulmadığı yerlerde journalctl -u ssh ve journalctl -u sshd) ve Failed password for root from 203.0.113.10 port 54312 ssh2 gibi satırları gece gündüz binlerce kez göreceksiniz. Botlar yaygın kullanıcı adları ve yaygın parolalar üzerinden çalışır. Parola ile giriş ve giriş kabul eden bir root hesabı, bir saldırganın ihtiyaç duyduğu her şeydir. Yalnızca anahtar kullanımı ve root girişinin kapatılması, bu trafiği görmezden gelebileceğiniz bir gürültüye dönüştürür.
Her yerde kullanılan tek bir özel anahtar. Her dizüstü bilgisayara ve her sunucuya kopyalanan tek bir anahtar, çalınan bir dizüstü bilgisayarın her şeyin kilidini açması demektir. SSH anahtarlarının son kullanma tarihi yoktur, bu nedenle iki yıl önce bir yükleniciye verilen anahtar bugün hala çalışır. Kişi ve makine başına bir anahtar kullanmanın maliyeti yoktur ve çalınan tek bir anahtarın erişebileceği alanı sınırlar.
Güncellenmemiş paketler. Web sunucunuz veya uygulama çerçeveniz için yayınlanan bir CVE, herkese açık bir talimat setidir ve tarayıcılar birkaç gün içinde bunu test etmeye başlar. Güvenlik güncellemeleri mevcut en ucuz savunmadır ve kendi başlarına çalışabilirler: bkz. Ubuntu üzerinde otomatik güvenlik güncellemeleri.
Sızdırılmış bir gizli bilgi. Veritabanı parolaları ve API anahtarları .env dosyalarında bulunur ve bu dosyalar herkese açık bir depoya gönderilebilir veya yanlış dizine yönlendirilmiş bir web sunucusu tarafından servis edilebilir. Bir yapay zeka kodlama aracının bağlamına yapıştırılan her şey de bir günlükte sonuçlanabilir; bu başlı başına bir konudur: gizli bilgileri bir aracın erişiminden uzak tutmak.
Her şeyin root olarak çalışması. Uygulamanız root olarak çalıştığında, içindeki tek bir hata tüm makineyi ele geçirir, çünkü sunucu içinde yayılmasını durduracak hiçbir sınır kalmamıştır.
İşin sizin tarafınızdaki bölüm
Aşağıdakilerin hiçbiri hypervisor işlemi değildir. Bunların tamamı sizin sorumluluğunuzdadır. VPS güvenliğinin sağlanıp sağlanmayacağını da bu taraf belirler.
- İlk saati doğru değerlendirin: yeni bir VPS üzerinde ilk on dakika, root olmayan bir kullanıcı oluşturma ve firewall yapılandırmasını kapsar.
- Uzaktan erişimi güvenli hale getirin: bir VPS üzerinde SSH hardening.
- Kullanmadığınız portları kapatın: ufw firewall temelleri.
- Her servise yalnızca ihtiyaç duyduğu erişimi verin: bir VPS üzerinde en az ayrıcalıklı kullanıcılar.
- Brute force oturum açma denemelerini yavaşlatın: Ubuntu 24.04 üzerinde fail2ban.
- En az bir kez geri yüklediğiniz bir yedek bulundurun: bir VPS için restic yedekleri.
Sunucunuz boot ettiğinde provider tarafındaki işlemler zaten tamamlanmış olur. Sizin tarafınızdaki işlemler ilk gün yaklaşık bir saat, sonrasında ise ayda birkaç dakika sürer. Hâlâ seçenekleri karşılaştırıyorsanız VPS aslında nedir, bunların temelindeki yapıyı açıklar.
FAQ
Aynı fiziksel sunucudaki başka bir müşteri dosyalarımı okuyabilir mi?
Hayır, KVM tabanlı bir VPS üzerinde bu mümkün değildir. Sunucunuz, kendi çekirdeğine, kendi sanal diskine ve ana makinenin (host) atadığı fiziksel bellek bölgesine sahip bir sanal makinedir; işlemci, bu bölgenin dışına erişimi engeller. Konuk sistemler arasında paylaşımlı bir dosya sistemi bulunmaz, bu nedenle komşunuzun sunucusundaki dosya izinlerinin sizin sunucunuz üzerinde hiçbir anlamı yoktur. OpenVZ ve LXC gibi konteyner tabanlı planlar ana makine çekirdeğini paylaşır ve daha zayıf bir sınır sunar; bu nedenle hangi tür hizmeti satın aldığınızı kontrol etmelisiniz.
VPS, paylaşımlı barındırmadan (shared hosting) daha mı güvenlidir?
İzolasyon açısından evet. Paylaşımlı barındırmada birçok site tek bir işletim sistemi üzerinde çalışır ve tek sınır dosya izinleridir; bu nedenle başka bir hesaptaki hata bazen dosyalarınızı ifşa edebilir. VPS üzerinde ise sınır bir sanal makinedir. Buradaki fark şudur: Paylaşımlı barındırmada yamalar barındırma sağlayıcısı tarafından yapılır, yönetilmeyen bir VPS'te ise yamaları siz yaparsınız. Bir VPS ancak güncellemeleri gerçekten uyguladığınız ve gereksiz portları kapattığınız sürece daha güvenlidir.
Barındırma sağlayıcım verilerimi okuyabilir mi?
Prensipte evet, hiçbir VPS ürünü bunu değiştirmez. Disk imajı sağlayıcının donanımında saklanır, konsol erişimi çalışan makineye ekran seviyesinde erişim sağlar ve kurtarma modu (rescue mode), diskiniz bağlıyken farklı bir sistemle önyükleme yapılmasına olanak tanır. Eğer bazı verilerin sağlayıcı tarafından okunamaz kalması gerekiyorsa, bu verileri yazmadan önce uygulamanız içerisinde şifreleyin. Konuk sistem içerisindeki disk şifrelemesi, sunucu çalışırken anahtarı bellekte tutmaya devam eder; bu nedenle sağlayıcıyı güven ilişkisi denkleminden tamamen çıkarmaz.
Bir VPS'in ele geçirilmesinin en yaygın yolu nedir?
Açıkta bırakılan bir servis veya zayıf bir SSH girişi, açık ara en yaygın yoldur. Otomatik tarayıcılar her genel IPv4 adresini sürekli olarak yoklar; bu nedenle şifresiz olarak 0.0.0.0 adresine bağlanan bir veritabanı veya varsayılan kimlik bilgileriyle bırakılmış bir yönetim paneli, aylar değil dakikalar içinde bulunur. Genel IPv4 adresi olan herhangi bir sunucudaki SSH günlüğü (Ubuntu üzerinde /var/log/auth.log, Rocky Linux üzerinde /var/log/secure), bunun SSH ile ilgili kısmını gösterir: dünyanın dört bir yanındaki adreslerden gelen tekrarlayan Failed password for root satırları. Hipervizör açıklarından yararlanma yöntemleri mevcuttur, ancak bunlar yüksek değerli hedeflere yönelik araştırma seviyesindeki çalışmalardır, sıradan ihlallerin nedeni değildir.