Tüm sistemler çalışır durumda 8 kabul edilen kripto paralar · Monero hoş karşılanır KYC'siz politika
ChainVPS

Şifreleme

LUKS ile VPS Diski Nasıl Şifrelenir ve Uzaktan Kilidi Açılır

Kiralık bir sunucuda disk şifrelemesi, dizüstü bilgisayarınızdakiyle aynı vaadi taşımaz. İşte LUKS'un bir VPS üzerinde size gerçekten ne kazandırdığı ve konsola kimsenin fiziksel olarak erişemediği anlarda şifreli bir sunucuyu önyüklenebilir tutan dağıtım yöntemi.

Güvenlik10 dakikalık okuma okumaChainVPS ekibi

LUKS ile VPS Diski Nasıl Şifrelenir ve Uzaktan Kilidi Açılır

Bir VPS'i şifrelemek tek satırlık bir komut gibi görünür — cryptsetup luksFormat, tamam — ama ardından insanların satın aldığını sandığı şeyi sessizce sunmaz. Kiraladığınız bir makinede, çekirdeğinizin altında bir hipervizör oturur; bu yüzden tehdit modeli, tam disk şifrelemesinin tasarlandığı model değildir. Bu rehber dürüst versiyondur: LUKS bir VPS'te neyi engeller, neyi engellemez, işe yarayan iki dağıtım yolu ve kendi sunucunuzun dışında asla kalmamak için şifreli bir root'un kilidinin SSH üzerinden nasıl açılacağı.

Kiralık bir sunucuda şifreleme size gerçekte ne kazandırır

Tam disk şifrelemesi, bekleyen veriyi (data at rest) korur. Bu ifade aslında çok şey taşır ve bir VPS'te hangi anların 'bekleme' sayıldığını, hangilerinin saymadığını açıkça ortaya koymakta fayda var — çoğu beklentinin kırıldığı yer, bu ikisi arasındaki boşluktur.

Kullanım dışı bırakılan donanım

Sürücüler arızalanır, değiştirilir ve raftan ayrılır. Ölü bir diskteki LUKS birimi, onu bir sonraki elinde tutan kişi için bir gürültü yığınından ibarettir. Şifreleme bu durumu tamamen çözer.

Ayrılmış veya kopyalanmış bir birim

Makine kapalıyken bir birim sunucunuzdan çıkarılır, klonlanır veya imajı alınırsa, ortaya çıkan şey şifreli metin ve bir başlıktır — dosyalarınız değil.

Çalışan bir makine

Birim açıldığında, ana anahtar çekirdek belleğinde yaşar. Hipervizör düzeyinde erişim prensipte ona ulaşabilir. Şifreleme burada maliyeti artırır; kapıyı tamamen kapatmaz.

Kendi hatalarınız

Şifrelenmemiş swap, düz metin yedekler ve bağlamadan (mount) önce yazılan günlükler — hepsi şifreli birimin dışında kalır. Şifreli sunuculardan yaşanan gerçek sızıntıların çoğu, şifreleme algoritmasından değil, buradan kaynaklanır.

Bu sınırı açıkça ifade edin ki ona göre plan yapabilesiniz: birimin kilidi açıkken anahtar, sahibi olmadığınız donanımın RAM'inde bulunur. Bir VPS'te LUKS, çevrimdışı erişime güçlü bir cevap, canlı erişime ise ancak kısmi bir cevaptır. Bunu, gerçekten güvendiğiniz bir yargı alanının yerine geçen bir şey olarak değil, onun tamamlayıcısı olarak kullanın — bkz. /offshore-hosting.

Komutu yazmadan önce şekli seçin

Dört düzenleme, neredeyse her gerçek ihtiyacı karşılar. Yanlışını seçmek size bir yeniden kuruluma mal olur, bu yüzden işin yarısına gelmeden burada karar verin.

Şifreli veri birimiİkinci bir disk, hassas olan her şeyi tutar; root düz kalır. Çalışan bir sunucuda işe yarar, yeniden kurulum gerekmez — aksini gerektiren bir sebebiniz yoksa buradan başlayın.
Şifreli rootSistemin tamamı LUKS içinde oturur. Özel bir ISO'dan yeni bir kurulum ve her önyüklemede parola cümlesini girmenin bir yolunu gerektirir.
Dosya düzeyinde şifrelemeNormal bir dosya sistemi üzerinde gocryptfs veya age. Tek bir dizin için yeterlidir, ama dosya boyutları ve meta veriler görünür kalır, boşluk bırakmak da kolaydır.
Yalnızca şifreli yedeklerGüçlü bir anahtarla restic veya borg. Bu hiç de disk şifrelemesi değildir — ama kimsenin atlamaması gereken katmandır ve pek çok kişinin tek ihtiyacı budur.

Yol A — zaten çalışan bir sunucuda veri birimini şifreleyin

Çoğu kişinin gerçekten istediği versiyon budur: on dakikalık bir iş, yeniden kurulum yok ve önemli olan her şey şifreli birimin içinde sonlanır. Önce ikinci bir birim ekleyin — bir /storage planında bu büyük disktir; standart bir /vps üzerinde ise dağıtım sırasında bir tane ekleyebilirsiniz.

  1. 1

    Hedef aygıtı belirleyin

    lsblk çalıştırın ve biçimlendirmek üzere olduğunuz aygıtın boş olan aygıt olduğunu doğrulayın. luksFormat üzerindeki her şeyi yok eder ve geri alma yoktur.

  2. 2

    LUKS2 birimini oluşturun

    cryptsetup luksFormat --type luks2 /dev/vdb, büyük harflerle YES yazmanızı ister, ardından bir parola cümlesi belirlemenizi. Geçmişi ve ekran yansıması olmayan bir konsolda doğru şekilde yeniden yazabileceğiniz bir tane seçin.

  3. 3

    Açın ve bir dosya sistemi oluşturun

    cryptsetup open /dev/vdb cryptdata, /dev/mapper/cryptdata oluşturur. Ardından mkfs.ext4 /dev/mapper/cryptdata çalıştırın ve verinin yaşayacağı yere, örneğin /srv/data konumuna bağlayın (mount).

  4. 4

    Önyüklemede nasıl açılacağına karar verin

    Ya her yeniden başlatmadan sonra parola cümlesini elle yazın, ya da cryptsetup luksAddKey ile bir anahtar dosyası ekleyip root üzerinde saklayın. Anahtar dosyası kullanışlıdır ama kesinlikle daha zayıftır — hangi ödünleşmeyi yaptığınızın farkında olun.

  5. 5

    crypttab ve fstab'ı yapılandırın

    UUID= kullanarak eşlemeyi bir aygıt adı yerine /etc/crypttab dosyasına ekleyin, ardından başarısız bir açma işleminin önyüklemeyi asla kilitlememesi için nofail ile /etc/fstab üzerinden bağlayın.

Anahtar dosyası şifrelenmemiş root üzerinde duruyorsa, elinizde tam olarak ne olduğu konusunda net olun: birim, raftan ayrılan veya sunucunuzdan sökülen bir diske karşı korunur, VM'in tamamının bir kopyasına karşı korunmaz — çünkü o kopya anahtarı da içerir. Daha güçlüsü için parola cümlesinin sunucunun dışından gelmesi gerekir.

Yol B — özel bir ISO'dan şifreli root

Gereksinim, makine kapalıyken üzerinde okunabilir hiçbir şeyin bulunmaması ise, root'un kendisi LUKS içinde olmak zorundadır. Bu da kendi ISO'nuzu önyükleyebilmenize izin veren bir sağlayıcıda, konsoldan yürütülen yepyeni bir kurulum demektir.

  1. 1

    Kurulumcuyu konsoldan önyükleyin

    Bir Debian veya Ubuntu netinst ISO'sunu özel ISO olarak bağlayın ve kurulumu VNC veya seri bağlantı üzerinden yürütün. Bunların hiçbiri SSH üzerinden çalışmaz — henüz bağlanılacak bir sistem yoktur.

  2. 2

    Şifreli LVM ile rehberli bölümlemeyi kullanın

    Kurulumcu, birim açılmadan önce bir şeylerin çalışması gerektiği için küçük bir /boot'u düz bırakır ve root ile swap'ı tek bir LUKS birimi içine yerleştirir.

  3. 3

    Bakmadan yazabileceğiniz bir parola cümlesi seçin

    Her yeniden başlatmada, ekran yansıması ve otomatik tamamlama olmadan bunu SSH üzerinden yeniden yazacaksınız. Burada beş kelimelik bir parola cümlesi, sembol çorbasını her zaman geçer.

  4. 4

    Oturumu kapatmadan önce uzaktan açmayı kurun

    Yeni şifrelenmiş bir root, bir sonraki yeniden başlatmadan sonra sonsuza dek parola cümlesi isteminde bekler. Uzaktan açmayı, konsol hâlâ önünüzdeyken, aynı oturum içinde yapılandırın.

1-2 GB RAM'li planlarda, varsayılan Argon2id anahtar türetmesi initramfs'in sahip olduğundan daha fazla bellek isteyebilir ve parola cümlesi doğru olsa bile açma işlemi önyüklemede başarısız olur. Bunu biçimlendirme sırasında cryptsetup luksFormat --pbkdf-memory 262144 ile sınırlayın, ya da küçük bir sunucunun gözetimsiz yeniden başlamasına güvenmeden önce mevcut bir başlığı cryptsetup luksDump ile inceleyin.

dropbear-initramfs ile SSH üzerinden uzaktan açma

Şifreli bir root, işletim sistemi var olmadan önce bir parola cümlesine ihtiyaç duyar. dropbear-initramfs, initramfs içine küçük bir SSH sunucusu yerleştirir; böylece bunu her yerden sağlayabilirsiniz — şifreli bir sunucu ile şifreli bir tuğla arasındaki fark budur.

  1. 1

    Paketi kurun

    apt install dropbear-initramfs. Bu, initramfs oluşturma sürecine bağlanır ve bundan sonraki her çekirdek imajına otomatik olarak yeniden eklenir.

  2. 2

    Bir anahtarı ve yalnızca tek bir komutu yetkilendirin

    Genel anahtarınızı /etc/dropbear/initramfs/authorized_keys içine koyun — Debian 11 ve öncesinde /etc/dropbear-initramfs/authorized_keys içine. Satırın başına no-port-forwarding,no-agent-forwarding,no-x11-forwarding,command="cryptroot-unlock" ekleyin, böylece çalınan bir anahtar size bir istem dışında hiçbir şey kazandırmaz.

  3. 3

    initramfs'e bir ağ verin

    Sağlayıcının sunduğu yerlerde DHCP işe yarar; aksi halde GRUB_CMDLINE_LINUX'a statik bir ip=ADDRESS::GATEWAY:NETMASK::eth0:off parametresi ekleyin ve update-grub çalıştırın. Değişikliğin imaja yansıması için update-initramfs -u -k all ile bitirin.

  4. 4

    Ona güvenmeden önce tam bir yeniden başlatmayı test edin

    Sağlayıcı konsolunu başka bir pencerede açık tutarak yeniden başlatın, bağlanın, parola cümlesini girin ve önyüklemenin devam ettiğini izleyin. Test edilmemiş bir açma yolu bir özellik değil, gelecekteki bir kesintidir.

initramfs, önyüklenmiş sistemin sunduğundan farklı, kendi SSH host anahtarını taşır; bu yüzden istemciniz her yeniden başlatmada değişen bir host anahtarı konusunda uyarı verir. dropbear'ı /etc/dropbear/initramfs/dropbear.conf içindeki DROPBEAR_OPTIONS aracılığıyla ayrı bir portta çalıştırın, ya da ssh -o HostKeyAlias=box-initramfs ile bağlanın ve her iki parmak izini de kaydedin.

Disk şifrelemesi genellikle anahtar yönetiminde başarısız olur

Şifreleme algoritması zayıf nokta değildir ve hiçbir zaman olmamıştır. LUKS'la ilgili kurtarılabilir her felaket, sonunda bir anahtara veya bir başlığa dayanır; bu yüzden ikisine de altyapı gibi davranın.

  • Başlığı hemen yedekleyin — cryptsetup luksHeaderBackup /dev/vdb --header-backup-file luks-header.img — ve sunucunun dışında saklayın. Dikkatsiz bir dd komutuyla zarar gören bir başlık, mükemmel bir parola cümlesiyle bile kalıcı veri kaybı demektir.
  • İki yuva kullanın. LUKS2 size 32 tane verir: birinde parola cümleniz, diğerinde bir parola yöneticisinde saklanan uzun ve rastgele bir kurtarma anahtarı. Tek bir yuva, kendi kendine yarattığınız bir tek hata noktasıdır.
  • Uzak bir makinede doğru sırayla döndürün — yeni anahtarı luksAddKey ile ekleyin, birimi açtığını doğrulayın, ardından eskisini luksKillSlot ile kaldırın. Asla tersini yapmayın.
  • Parola cümlesini ve sunucunun bağlantı bilgilerini ayrı yerlerde tutun. Ele geçirilen tek bir not, hem adresi hem de anahtarı birden vermemeli.

Şifrelemenin performansa maliyeti

Ek yük gerçektir ama genellikle görünmezdir. Başka bir on yıldan kalma bir kıyaslamaya güvenmek yerine, gerçekten sahip olduğunuz makinede ölçün.

Şifreleme algoritması512 bit anahtarlı aes-xts-plain64, AES-NI destekleyen her CPU'da varsayılan ve hızlı yoldur — çalıştırdığımız her AMD EPYC çekirdeği de buna dahildir.
MarjModern bir çekirdekte cryptsetup benchmark, AES-XTS için genellikle birkaç GB/s bildirir; bu, çoğu iş yükünün bir diskten istediğinden rahatlıkla fazladır.
Nerede hissedilirNVMe Gen4 üzerinde tek iş parçacıklı sıralı okumalarda. Sürücüden önce tek bir çekirdek tavan haline gelebilir; paralel ve rastgele iş yükleri bunu neredeyse hiç fark etmez.
İnce ayarno-read-workqueue ve no-write-workqueue crypttab bayrakları, NVMe'de gecikmeyi azaltır. Öncesini ve sonrasını ölçün — bunlar her yerde bedava bir kazanç değildir.

İnsanların unuttuğu kısımlar

Kenarlarından düz metin sızan şifreli bir birim, sahte bir güvenlik hissidir — bu da hiç güvenlik hissi olmamasından daha kötüdür. İşi bitmiş saymadan önce şu beş noktayı kapatın.

  • Swap. Şifrelenmemiş bir swap bölümü, bellekten geçen her şeyin parçalarını tutabilir. /etc/crypttab içinde bir /dev/urandom girdisiyle her önyüklemede yeni ve rastgele bir anahtarla şifreleyin.
  • Bağlamadan (mount) önce yazılan günlükler. Şifreli birim hâlâ kapalıyken günlüğe kaydedilen her şey düz root üzerine düşer. Uygulama ve veritabanı günlüklerini şifreli birim içindeki bir yola yönlendirin.
  • Yedekler. Şifreli bir birimin içeriğini düz metin nesne depolamaya kopyalamak, bütün işlemi boşa çıkarır. Yedeği restic, borg veya age ile bağımsız olarak şifreleyin ve o anahtarları başka bir yerde tutun.
  • Anlık görüntüler. Bir sağlayıcı anlık görüntüsü diski yakalar, RAM'inizi değil; bu yüzden LUKS birimi içinde şifreli metin olarak kalır — ama şifrelenmemiş root üzerinde bırakılan her şey tam olarak olduğu gibi yakalanır.
  • Discard. discard bayrağını LUKS üzerinden geçirmek NVMe trim özelliğini çalışır tutar ve hangi blokların kullanılmadığını açığa çıkarır; bu da dosya sisteminin ne kadar dolu olduğunu ve kabaca nasıl şekillendiğini sızdırır. Bunu bir yapılandırmayı kopyalayarak değil, bilinçli olarak seçin.

Sağlayıcının hâlâ önemli olduğu yer

Şifreleme, sizin kontrol ettiğiniz katmandır: bir makine kapandığında veya bir disk binadan çıktığında, verinizi okumanın ne kadar maliyetli olacağına o karar verir. Onun çevresindeki katman — donanıma erişimi kimin zorlayabileceği ve hangi kayıtların sunucuyu sizinle ilişkilendirdiği — sağlayıcıya ve onun yargı alanına aittir. On beş bölgemizden altısı gizlilik katmanı yargı alanlarıdır; bunları /locations listeler, bunun gerçekte neyi değiştirdiğini ise /offshore-hosting anlatır.

Yukarıdaki yolların mümkün olup olmadığını üç sağlayıcı yeteneği belirler: özel ISO önyüklemesi (bu olmadan Yol B imkânsızdır), uzaktan açmanın geri dönmediği yeniden başlatmalar için bant dışı konsol erişimi ve makineyi en baştan hiçbir zaman yasal kimliğinize bağlamamış bir kayıt süreci. Buradaki her /offshore-vps ve /storage planı özel bir ISO önyükler, konsol erişimi sunar ve KYC olmadan ön ödemeli bir kripto bakiyesinden faturalandırılır — yani şifreli bir disk, sizi zaten adlandıran bir kâğıt izinin üzerine oturmaz. Bir sağlayıcının neyi görüp neyi göremeyeceğinin dürüst bir anlatımı /guides içinde bulunur.

Dağıtım kontrol listesi

  • Önce tehdidi adlandırın: kullanım dışı bırakılan sürücüler, ayrılmış birimler ve çevrimdışı imajlar şifrelemenin cevap verdiği şeylerdir — çalışan bir hipervizör değil.
  • Sunucu zaten çalışıyorsa bir veri birimini şifreleyin (Yol A); yalnızca root'un kendisinin şifrelenmesi gerektiğinde özel bir ISO'dan yeniden kurun (Yol B).
  • aes-xts-plain64 ile LUKS2 kullanın ve 2 GB RAM altındaki her planda Argon2id belleğini sınırlayın.
  • Bir anahtar yuvasında parola cümlesi, diğerinde uzun ve rastgele bir kurtarma anahtarı — ikisi de sunucunun dışında saklanır.
  • Gerçek verinin ilk baytını yazmadan önce bir LUKS başlık yedeği alın.
  • dropbear-initramfs'i varsayılan olmayan bir portta, yalnızca anahtarla ve cryptroot-unlock komutuyla sınırlı çalıştırın.
  • Sağlayıcı konsolu hâlâ yanınızda açıkken tam bir yeniden başlatma ve açma döngüsünü test edin.
  • Şifreli, sunucu dışında tutulan yedekler, artı bir geri yükleme provası — test edilmemiş bir yedek, yedek değil bir umuttur.
Disk şifrelemesi, hosting sağlayıcımın verilerimi okumasını engeller mi?

Beklerken (at rest), evet: makine kapatıldığında birim şifreli metindir ve parola cümlesi hiçbir zaman kafanızdan çıkmamıştır. Sunucu, birim açıkken çalışırken, ana anahtar sağlayıcının işlettiği donanımın RAM'inde bulunur. Şifreleme her çevrimdışı yolu kapatır — kullanım dışı sürücüler, ayrılmış birimler, soğuk imajlar — ve geri kalanının maliyetini artırır. Güvenilir bir yargı alanının yerini almak yerine onu tamamlar.

Mevcut bir VPS'i yeniden kurmadan şifreleyebilir miyim?

Ayrı bir veri birimini, evet, yaklaşık on dakikada — bu yukarıdaki Yol A'dır. root dosya sistemini, gerçekçi olarak hayır. cryptsetup reencrypt bir dosya sistemini yerinde dönüştürebilir, ama uzak bir makinede işlem sürerken kopan bir bağlantı veya bir elektrik kesintisi, önyüklenemeyen bir sunucu ve uzun bir gece bırakır. Özel bir ISO'dan yeniden kurmak daha hızlı ve çok daha güvenlidir.

LUKS ne kadar performansa mal olur?

Çoğu kişinin beklediğinden azına. AES-NI ile, AES-XTS tipik karma iş yüklerinde yüzde birkaç puana mal olur ve modern bir EPYC çekirdeğinde cryptsetup benchmark birkaç GB/s bildirir. Görünür olan durum, hızlı bir NVMe'ye karşı tek iş parçacıklı sıralı G/Ç'dir; burada sürücüden önce tek bir çekirdek doyabilir. Tahmin etmek yerine kendi sunucunuzu kıyaslayın.

Parola cümlesini unutursam ne olur?

Veri gitmiştir. Hiçbir kurtarma mekanizması, sağlayıcı tarafında bir ana anahtar ya da bunu geri alacak bir destek talebi yoktur — bu özellik, tasarımın tam da amacıdır. Kendinizi, rastgele bir kurtarma anahtarı tutan ikinci bir anahtar yuvasıyla ve sunucudan başka bir yerde saklanan bir LUKS başlık yedeğiyle koruyun.

initramfs içinde SSH çalıştırmak riskli midir?

Küçük ve iyi anlaşılmış bir açıklıktır. dropbear yalnızca root dosya sisteminiz var olmadan önceki birkaç saniye çalışır, yalnızca genel anahtarları kabul eder ve yalnızca bir parola cümlesi isteminden başka hiçbir şey yapmayan tek bir zorunlu komutla sınırlandırılabilir. Varsayılan olmayan bir portta ve initramfs host anahtarı ayrıca kaydedilmiş halde, pratik risk, bu olmadan dışarıda kalma kesinliğine karşı asgari düzeydedir.

Uygulamaya geçirin.

$3.49/mo'dan başlayan bir offshore sunucu dağıtın · 8 kripto para birimi · KYC yok.