Adakah pengehosan VPS selamat untuk laman web?
Pengehosan VPS menjamin pengasingan data melalui hypervisor. Risiko sebenar berpunca daripada konfigurasi anda seperti port terbuka, kunci SSH lemah dan pakej tidak dikemas kini.
Adakah pengehosan VPS selamat? Jawapan ringkas
Ya. Pengehosan VPS adalah selamat untuk kebanyakan tujuan penggunaan dan merupakan peningkatan sebenar berbanding pengehosan kongsi. VPS (virtual private server) ialah mesin maya yang mempunyai kernel, memori, cakera dan akaun pengguna tersendiri, manakala hypervisor yang menjalankannya menghalang pelanggan lain daripada mengakses kesemua sumber tersebut. Individu yang menyewa pelayan bersebelahan dengan pelayan anda pada mesin fizikal yang sama tidak boleh membaca fail anda, menyenaraikan proses anda, log masuk ke pelayan anda atau melihat trafik rangkaian anda.
Jawapan yang jujur mempunyai dua bahagian. Penyedia memiliki perkakasan dan hypervisor. Anda memiliki segala-galanya di dalam mesin maya anda, dan di situlah hampir setiap insiden sebenar bermula. Pelayan diceroboh melalui port yang terbuka, kata laluan SSH yang lemah, pakej yang tidak dikemas kini atau rahsia dalam fail yang telah diterbitkan. Sangat jarang pelayan diceroboh melalui hypervisor.
Apa yang sebenarnya dipisahkan oleh hypervisor
Hypervisor ialah perisian yang menjalankan mesin maya pada satu hos fizikal. Pada VPS KVM (KVM bermaksud kernel based virtual machine, standard pada hos Linux), pelayan anda ialah mesin maya yang lengkap. Ia memuatkan kernelnya sendiri. Hos memberikan kawasan memori fizikal yang tetap kepadanya, dan unit pengurusan memori pemproses akan menolak sebarang akses di luar kawasan tersebut, jadi kod yang berjalan dalam tetamu lain tidak boleh mengakses RAM anda sama sekali. Tiada sistem fail yang dikongsi dan tiada jadual pengguna yang dikongsi, jadi keizinan fail pada pelayan jiran tidak memberi kesan kepada pelayan anda.
Shared hosting berfungsi secara berbeza. Banyak tapak web tinggal di dalam satu sistem pengendalian, di bawah satu pelayan web dan satu pemasangan PHP, sebagai akaun pengguna biasa. Satu-satunya sempadan ialah keizinan fail. Kesilapan keizinan, atau pemalam yang terdedah yang berjalan sebagai pengguna yang boleh membaca terlalu banyak, oleh itu boleh mencapai fail akaun lain. Itulah jurang yang beralih daripada shared hosting kepada VPS tutup.
Semak apa yang anda beli, kerana tidak semua pelan yang dijual sebagai VPS ialah mesin maya. Pelan berasaskan kontena (OpenVZ, LXC, Virtuozzo) berkongsi kernel hos dan memisahkan pelanggan dengan namespaces dan cgroups dan bukannya virtualisasi perkakasan. Itu adalah sempadan yang lebih lemah, kerana pepijat kernel pada hos juga merupakan pepijat kernel dalam pelayan anda. Anda juga tidak boleh memuatkan modul kernel pada pelan tersebut, yang mengecualikan beberapa perisian. KVM ialah pilihan lalai yang lebih selamat. Tanya yang mana satu yang anda perolehi sebelum anda membayar.
Kesan jiran yang bising terhadap anda
Berkongsi hos fizikal menjejaskan kelajuan, dan kelajuan adalah satu-satunya perkara yang terjejas. Tetamu pada satu mesin berkongsi CPU fizikal dan cakera. Apabila CPU sibuk dengan tugasan orang lain, CPU maya anda akan menunggu, dan Linux melaporkan masa menunggu tersebut sebagai steal time: medan %st dalam top dan vmstat. Steal time yang melebihi beberapa peratus selama berjam-jam bermakna hos tersebut telah terlebih langgan (oversubscribed). Ini tidak bermakna sesiapa sedang membaca data anda. Penyelesaiannya adalah dengan menukar pelan atau penyedia perkhidmatan, dan anda boleh mengukur CPU dan cakera yang anda benar-benar peroleh sebelum membuat keputusan.
Terdapat satu kesan antara pelanggan yang perlu diketahui, dan ia bukanlah lubang keselamatan. Jika anda menghantar e-mel daripada VPS anda, alamat IP anda berada dalam julat yang turut digunakan oleh pelanggan lain. Jiran yang menghantar spam boleh menyebabkan sebahagian daripada julat tersebut disenaraikan dalam blocklist, mengakibatkan e-mel anda masuk ke folder spam atas sebab yang bukan berpunca daripada anda. Penyedia yang memantau penyalahgunaan mengekalkan julat IP yang lebih bersih. Bertanyalah tentang perkara ini jika e-mel penting bagi anda.
Apa yang tidak boleh dilakukan oleh jiran yang berniat jahat, dan kes terpencil di mana mereka boleh melakukannya
Pelanggan pada hos yang sama tidak mempunyai laluan ke fail anda. Mereka tidak boleh melihat proses anda, melakukan mount pada cakera anda atau membuka shell pada pelayan anda, kerana tiada satu pun perkara tersebut wujud di dalam mesin maya mereka. Satu pengecualian perlu dinyatakan: anggap mana-mana rangkaian peribadi penyedia sebagai rangkaian yang anda kongsi dengan orang asing, dan enkripsikan apa sahaja yang melaluinya dan bukannya menganggap ia tidak kelihatan.
Pencerobohan hypervisor (hypervisor escapes) adalah benar. Pepijat dalam lapisan virtualisasi boleh membenarkan kod di dalam satu tetamu (guest) mencapai hos, dan daripada hos mencapai setiap tetamu yang ada padanya. Pepijat ini ditemui, diterbitkan dengan pengecam CVE (common vulnerabilities and exposures) dan ditampal, dan penyedia pengehosan menampalnya dengan cepat kerana keseluruhan perniagaan mereka terletak pada lapisan tersebut. Menggunakan pepijat ini memerlukan eksploit yang berfungsi untuk versi hypervisor tertentu, yang merupakan perkara mahal untuk dibelanjakan bagi akaun pengehosan kecil.
Saluran sisi (side channels) merentas tetamu juga adalah benar. Ia adalah keluarga Spectre dan Meltdown, dan ia menyalahgunakan cache pemproses yang dikongsi untuk menyimpulkan sejumlah kecil data merentasi sempadan. Kemas kini mikrokod dan kernel mengurangkan risikonya, dan kadar kebocoran dalam kajian yang diterbitkan adalah sangat kecil. Kes yang diterbitkan adalah demonstrasi penyelidikan dan bukannya serangan besar-besaran. Risikonya bukan sifar. Ia hanya jauh daripada senarai teratas perkara yang akan memudaratkan anda.
Di mana tugas penyedia berakhir dan tugas anda bermula
Penyedia bertanggungjawab terhadap bangunan, perkakasan hos, hypervisor dan kernel hos, rangkaian fizikal, serta panel kawalan yang boleh memulakan, menghentikan, membina semula dan mengambil snapshot pelayan anda. Jika mana-mana bahagian tersebut gagal, menjadi tanggungjawab mereka untuk membaikinya.
Anda bertanggungjawab terhadap segala-galanya bermula daripada sistem pengendalian anda ke atas. Ini bermakna pakej yang anda pasang, port yang anda biarkan terbuka, akaun dan kunci yang boleh log masuk, kemas kini yang anda lakukan, sandaran anda, serta kod aplikasi anda sendiri. Kebanyakan pelan VPS adalah tidak terurus (unmanaged), yang bermaksud tiada sesiapa yang akan melakukan patching pada pelayan anda bagi pihak anda dan tiada tiket sokongan yang akan melakukannya. Perbezaan antara terurus dan tidak terurus wajar dibaca sebelum anda membeli, kerana ia menentukan sejauh mana senarai tanggungjawab tersebut terletak di bahu anda.
Satu bahagian daripada tanggungjawab anda yang mudah dilupakan ialah panel kawalan pengehosan itu sendiri. Sesiapa yang memegang maklumat log masuk tersebut boleh membina semula pelayan anda atau menyambungkan cakera anda ke sistem pemulihan, tanpa perlu mengetahui kata laluan dari dalam pelayan. Aktifkan pengesahan dua faktor (2FA) pada akaun pengehosan tersebut, dan jangan gunakan semula kata laluan itu di mana-mana tempat lain.
Bolehkah penyedia hosting anda melihat data anda?
Ya, secara prinsipnya, dan ini adalah had jujur bagi apa yang diberikan oleh VPS kepada anda. Imej cakera anda terletak pada storan penyedia. Konsol mereka memberikan akses peringkat skrin ke mesin maya anda. Mod penyelamat (rescue mode) boleh memulakan sistem yang berbeza dengan cakera anda dilampirkan. VPS melindungi anda daripada pelanggan lain, namun penyedia kekal di luar janji tersebut.
Jika anda menyimpan data yang mesti kekal tidak boleh dibaca oleh hos, enkripsikannya dalam aplikasi anda sebelum ia ditulis. Enkripsi cakera penuh di dalam tetamu membantu melindungi imej yang disalin semasa tidak aktif, tetapi kunci tersebut perlu berada dalam memori semasa pelayan berjalan, jadi ia tidak mengeluarkan penyedia daripada gambaran tersebut. Kepercayaan yang sama terpakai kepada pelayan dedikasi yang anda sewa secara sendirian, dengan satu lapisan perkongsian yang kurang.
Perkara yang sebenarnya menceroboh VPS
Servis yang mendengar pada setiap antara muka. Pangkalan data, cache, baris gilir mesej dan panel pentadbir sering terikat pada 0.0.0.0 secara lalai, yang bermaksud setiap antara muka rangkaian, termasuk yang awam. Pengimbasan seluruh internet berlaku secara berterusan dan automatik, jadi alamat IP baharu akan menerima percubaan akses pertama dalam masa beberapa minit selepas dalam talian. Redis tanpa kata laluan, nod Elasticsearch tanpa pengesahan, API Docker yang terbuka pada port 2375 dan panel pentadbir yang masih menggunakan log masuk lalai, semuanya ditemui dengan cara ini oleh pengimbas yang tidak mengenali anda. Ikat servis pada 127.0.0.1 apabila hanya mesin tempatan yang memerlukannya, dan sekat selebihnya pada firewall.
Docker memintas firewall anda. Menerbitkan port kontena akan menulis peraturan network address translation (NAT) yang dinilai sebelum peraturan daripada ufw (uncomplicated firewall), jadi kontena boleh diakses dari internet walaupun ufw status menyatakan port tersebut dinafikan. Ini memerangkap pengguna yang telah melakukan segala-galanya dengan betul. Sebab port Docker mengabaikan ufw wajar dibaca sebelum anda menerbitkan port kontena.
SSH dengan kata laluan diaktifkan. Baca /var/log/auth.log pada mana-mana pelayan awam dan anda akan menemui baris seperti Failed password for root from 203.0.113.10 port 54312 ssh2, beribu-ribu daripadanya, siang dan malam. Bot bekerja melalui nama pengguna dan kata laluan yang biasa digunakan. Log masuk kata laluan ditambah dengan akaun root yang menerima log masuk adalah semua yang diperlukan oleh penyerang. Gunakan kunci sahaja, dengan log masuk root dimatikan, untuk menukar trafik tersebut menjadi gangguan yang boleh anda abaikan.
Satu kunci peribadi digunakan di mana-mana. Satu kunci yang disalin ke setiap komputer riba dan setiap pelayan bermakna satu komputer riba yang dicuri akan membuka kunci segala-galanya, dan kunci SSH tidak mempunyai tarikh luput, jadi kunci yang diberikan kepada kontraktor dua tahun lalu masih berfungsi hari ini. Satu kunci bagi setiap orang dan setiap mesin tidak menelan kos dan mengehadkan capaian satu kunci yang dicuri.
Pakej yang tidak dikemas kini. CVE yang diterbitkan terhadap pelayan web atau rangka kerja aplikasi anda adalah set arahan awam, dan pengimbas mula mengujinya dalam masa beberapa hari. Kemas kini keselamatan adalah pertahanan paling murah yang tersedia, dan ia boleh dijalankan secara automatik: lihat kemas kini keselamatan automatik pada Ubuntu.
Rahsia yang bocor. Kata laluan pangkalan data dan kunci API disimpan dalam fail .env, dan fail tersebut dikomit ke repositori awam, atau dihidangkan oleh pelayan web yang menghala ke direktori yang salah. Apa-apa sahaja yang ditampal ke dalam konteks ejen pengekodan AI juga boleh berakhir dalam log, yang merupakan subjek tersendiri: menjauhkan rahsia daripada capaian ejen.
Segala-galanya berjalan sebagai root. Apabila aplikasi anda berjalan sebagai root, satu pepijat di dalamnya akan menguasai keseluruhan mesin, kerana tiada sempadan yang tinggal di dalam pelayan untuk menghalangnya daripada merebak.
Bahagian tugas anda
Tiada satu pun daripada perkara berikut merupakan tugas hypervisor. Kesemuanya terletak di bawah tanggungjawab anda, dan bahagian inilah yang menentukan sama ada VPS anda selamat.
- Lakukan langkah awal dengan betul: sepuluh minit pertama pada VPS baharu merangkumi pengguna bukan root dan firewall.
- Kawal akses jauh: mengukuhkan SSH pada VPS.
- Tutup port yang tidak digunakan: asas firewall ufw.
- Berikan setiap servis akses yang diperlukan sahaja: pengguna dengan keistimewaan minimum pada VPS.
- Perlahankan cubaan log masuk brute force: fail2ban pada Ubuntu 24.04.
- Simpan sandaran yang pernah anda pulihkan sekurang-kurangnya sekali: sandaran restic untuk VPS.
Bahagian tugas penyedia telah pun selesai sebaik sahaja pelayan anda but. Bahagian anda mengambil masa kira-kira satu jam pada hari pertama dan beberapa minit setiap bulan selepas itu. Jika anda masih membandingkan pilihan, apa itu VPS sebenarnya merangkumi asas bagi semua perkara ini.
FAQ
Bolehkah pelanggan lain pada pelayan fizikal yang sama membaca fail saya?
Tidak, bukan pada KVM VPS. Pelayan anda ialah mesin maya dengan kernel dan cakera maya tersendiri, serta kawasan memori fizikal yang diperuntukkan oleh hos kepadanya, dan pemproses akan menyekat sebarang akses di luar kawasan tersebut. Tiada sistem fail yang dikongsi antara tetamu, jadi kebenaran fail di dalam pelayan jiran tidak mempunyai sebarang kesan di dalam pelayan anda. Pelan berasaskan kontena seperti OpenVZ dan LXC berkongsi kernel hos dan memberikan sempadan yang lebih lemah, jadi semak jenis yang anda beli.
Adakah VPS lebih selamat daripada shared hosting?
Dari segi pengasingan, ya. Pada shared hosting, banyak laman web berjalan di dalam satu sistem pengendalian dan satu-satunya sempadan ialah kebenaran fail, jadi kesilapan pada akaun lain kadangkala boleh mendedahkan fail. Pada VPS, sempadan tersebut ialah mesin maya. Perbezaannya ialah shared hosting ditampal (patched) oleh penyedia hos, manakala VPS yang tidak diurus (unmanaged) ditampal oleh anda. VPS hanya lebih selamat jika anda benar-benar melakukan kemas kini dan menutup port yang tidak diperlukan.
Bolehkah penyedia hosting saya membaca data saya?
Pada prinsipnya ya, dan tiada produk VPS yang mengubah perkara itu. Imej cakera disimpan pada perkakasan penyedia, konsol memberikan akses tahap skrin kepada mesin yang sedang berjalan, dan mod penyelamat (rescue mode) boleh memulakan sistem berbeza dengan cakera anda dilampirkan. Jika sesetengah data mesti kekal tidak boleh dibaca oleh hos, enkripsikannya dalam aplikasi anda sebelum menulisnya. Enkripsi cakera di dalam tetamu masih menyimpan kunci dalam memori semasa pelayan berjalan, jadi ia tidak mengeluarkan penyedia daripada aspek kepercayaan.
Apakah cara paling biasa VPS diceroboh?
Servis yang terdedah atau log masuk SSH yang lemah, dengan margin yang besar. Pengimbas automatik memeriksa setiap alamat IP awam secara berterusan, jadi pangkalan data yang diikat pada 0.0.0.0 tanpa kata laluan, atau panel pentadbir yang dibiarkan dengan kelayakan lalai, akan ditemui dalam masa beberapa minit dan bukannya bulan. /var/log/auth.log pada mana-mana pelayan awam menunjukkan bahagian SSH perkara ini: baris Failed password for root yang berulang daripada alamat di seluruh dunia. Pelarian hipervisor (hypervisor escapes) memang wujud, tetapi ia adalah kerja tahap penyelidikan yang disasarkan kepada sasaran bernilai tinggi, bukan punca pencerobohan biasa.