Kiraladığınız bir sunucuyu şifrelemenin gerekçesi, pazarlamanın öne sürdüğünden daha dar bir kapsama sahiptir — ama bu dar kapsamın içinde çok daha güçlüdür. NVMe sürücüler arızalanır ve üzerlerinde verileriniz hâlâ dururken tedarikçiye geri gider. Node’lar kullanımdan kaldırılır ve depolama alanı yeniden satılır. Donanımın imajı alınır ya da raftan çıkarılıp götürülür. Bunların her birinde LUKS, okunabilir bir dosya sistemi ile — anahtarlarınız, veritabanınız, posta kutunuz — hiç kimsenin bir şey yapamayacağı bir gürültü yığını arasındaki farktır.
Olmadığı şey ise üzerinde çalıştığınız makinenin kendisine karşı bir koruma olmasıdır. Bu ayrım rehberin tamamını özetler, bu yüzden tek bir komuttan önce, en başta gelir. Sonra iş kısmı: doğru yapılmış bir LUKS2 birimi, bir header yedeği, şifreli swap, SSH üzerinden uzaktan kilit açma ve geri dönmeyen bir yeniden başlatma için kurtarma planı. Altınızdaki kutuyu kimliksiz kiralayabilir ve Monero ile ödeyebilirsiniz; şifreleme bunun üzerine eklediğiniz bir katmandır, onun yerini tutmaz.
Bekleyen veri şifrelemesi gerçekte neyi korur
Tam disk şifrelemesi tek bir soruyu yanıtlar ve onu eksiksiz yanıtlar: disk kapalıyken başka biri onu ele geçirirse ne olur? Kiralık altyapıda bu varsayımsal bir durum değildir. Sürücüler arızalanır ve tedarikçiye geri gider. Node’lar emekliye ayrılır ve depolama alanları yeniden satılır. Birimlerin bir soruşturma sırasında imajı alınır ya da bir kasa içinde binadan çıkar.
- Kapsananlar. Kapalı bir disk, biriminizin çevrimdışı bir imajı, garanti kapsamında iade edilmiş bir sürücü, kullanımdan kaldırılmış bir node, kopyalanmış bir snapshot dosyası. Her durumda saldırgan şifreli metni ve bir header’ı elinde tutar, parola olmadan hikâye orada biter.
- Kapsanmayan: çalışan bir makine. Birim açıldığı anda anahtar kernel belleğindedir ve dosya sistemi root yetkisine sahip her şey için düzdür.
- Kapsanmayan: trafiğiniz. Hat üzerindeki baytlar TLS’nin ve WireGuard’ın sorunudur. LUKS onları hiçbir zaman görmez.
- Kapsanmayan: ele geçirilmiş bir root hesabı. Zaten içeride olan bir saldırgan, dosyalarınızı sizinle aynı bağlama noktasından okur. Sıkılaştırma tam olarak bunun içindir ve bu iki kontrol birbirinin yerine geçmez.
Bu liste bilerek kısa tutuldu. Bekleyen veri şifrelemesi, kapsamı net biçimde sınırlanmış, ucuz ve yüksek değerli bir kontroldür; insanların bu konuda yaşadığı hayal kırıklığının neredeyse tamamı, sessizce diğer üç satırı da kapsamasını beklemiş olmalarından kaynaklanır.
Kiralık donanım uyarısı, açıkça söylenmiş
Şifreli biriminiz açıkken anahtar, guest’in RAM’indedir — ve herhangi bir VPS’te bu RAM, operatörün fiziksel olarak denetlediği bir makinede bulunur. Bir hipervizör guest belleğini okuyabilir. Bu ne LUKS’ta, ne KVM’de, ne de özellikle bu sağlayıcıda bir kusurdur; bir bilgisayar kiralamanın anlamı budur ve aksini söyleyen her sağlayıcı, var olmayan bir ürünü tarif ediyordur.
Yani hesap açıktır: bekleyen veri şifrelemesi çevrimdışı saldırıyı imkânsız hale getirir ve çevrimiçi saldırıyı tam olarak olduğu yerde bırakır. Raftan çıkan bir sürücü değersizleşir. Çalışan bir sunucu ise dün olduğu kadar açıktır. Bu cümlenin iki yarısı da aynı anda doğrudur ve size yalnızca ilk yarısını anlatan bir rehber size iyilik yapmıyor demektir.
İkinci ibreyi oynatan şey farklı bir kontrol kümesidir ve bunlar şifrelemenin yerine geçmek yerine onun üzerine eklenir. Ortada açıklanacak hiçbir kayıt yoktur, çünkü buradaki kayıt KYC’sizdir — kimlik bilgisi teslimatı için bir e-posta, başka hiçbir şey. Ödeme bir bankadan değil, zincir üzerinden gerçekleşir. Ve kutunun bulunduğu yargı yetkisi bölgesi, hangi emrin herhangi bir şeye zorlayabileceğine karar verir. Kripto ile ödenen bir VPS’in gerçekte neyi gizleyip neyi gizlemediğine dair dürüst dökümümüz gerisini ele alır, Fourteen Eyes maddesi ise istihbarat paylaşımı tarafını kapsar. Birkaç katmandan biri olarak okunduğunda LUKS son derece değerlidir. Kendi sağlayıcınıza karşı bir kalkan olarak okunduğunda ise bir yanlış anlamadır.
Veri birimi mi kök dosya sistemi mi: yazmaya başlamadan önce seçin
Bunun alabileceği iki biçim vardır ve seçim güçle değil, riskle ilgilidir.
- Şifreli bir veri birimi. İşletim sisteminin yanında bir LUKS kapsayıcısı. Önemli olan her şey — veritabanları, posta, anahtarlar, yüklemeler, yedekler — bunun içinde yaşar; işletim sisteminin kendisi ise açık kalır. On dakikalık bir iş, hiç önyükleme riski yok ve her an geri alınabilir. Çoğu okurun kurması gereken şey budur ve aşağıdaki adımlar tam olarak bunu yapar.
- Şifreli bir kök dosya sistemi. Günlükler, paket listeleri ve unuttuğunuz shell geçmişi dâhil her şey içeridedir. Kesinlikle daha güçlüdür ve zaten çalışmakta olan bir makineye uygulanması gerçekten daha zordur.
Bu zorluğun nedeni belirtilmeye değer, çünkü hiçbir eğitim bunu yapmaz: o anda okuma-yazma bağlı olarak takılı ve SSH oturumunuza hizmet veren bir dosya sistemini şifreleyemezsiniz. Gerçek iki yöntem de — küçültüp kopyalama, ya da yerinde cryptsetup reencrypt — kökün çevrimdışı olmasını gerektirir. Bant dışı bir konsolu olan bir makinede bir kurulum aracını önyükler ve bu sıradan bir iştir. Konsolsuz bir VPS’te ise önce çalışan sistemi bir RAM diskine geçirirsiniz ve bunun herhangi bir parçası ters giderse kutu geri gelmez; kurtarma yolu ise diski silen bir yeniden kurulumdur.
O hâlde: veri birimini bugün kurun, önemli olan her şeyi üzerine taşıyın ve şifreli bir kökü, henüz kaybedecek hiçbir şeyi olmayan bir makinede deploy anında verilen bir karar olarak ele alın. Son bölüm, önyüklemede parolayı SSH üzerinden yazabilmeniz için dropbear-initramfs dâhil olmak üzere bu yolu ele alır.
Başlamadan önce neye ihtiyacınız var
Fazla bir şey değil, zaten bunun bu kadar değerli olmasının bir nedeni de bu.
- Bir plan. Şifreleme ek bir RAM gereksinimi getirmez ve neredeyse hiç CPU tüketmez. Cub (1 vCPU / 2 GB / 40 GB NVMe, $5.00/mo) yeterlidir; kutu aynı zamanda gerçek bir servis de çalıştırıyorsa Scout (2 vCPU / 4 GB / 70 GB, $9.00/mo) daha konforlu boyuttur. Önemli olan tek rakam disktir, çünkü şifreli biriminiz bunun içinden çıkar.
- Şablon kitaplığından Debian 12 veya 13, ya da Ubuntu LTS — aşağıdaki komutlar Debian tarzıdır ve paket adları başka yerlerde farklıdır. Deploy yaklaşık bir dakika sürer ve tam KVM sanallaştırması, başkasının paylaştığı bir konteyner değil,
dm-cryptmodüllerinin bulunduğu gerçek bir kernel demektir. - Önce on dakikalık temel sıkılaştırma. Hâlâ parola ile girişi kabul eden bir kutuda şifreleme, çerçevesi olmayan bir kapıya takılmış kilit gibidir.
- Başka hiçbir yerde kullanmadığınız bir parola, uydurulmuş değil üretilmiş, ve bu makineyi kaybetmenize dayanacak bir yerde saklanmış. Kurtarma yok, sıfırlama yok, yardımcı olacak bir destek talebi de yok.
- Header yedeğini tutmak için kutunun dışında bir yer. Haftalık snapshot’lar her planda dâhildir, ama şifreli bir birimin snapshot’ı da şifrelidir — geri alma için faydalı, parola gittiyse işe yaramaz.
Konum bunların hiçbirinde fark yaratmaz, bu yüzden fiyata ya da yargı yetkisi bölgesine göre seçin: Amsterdam, Paris, Bükreş ve Sofya taban fiyattadır, Zürih, Reykjavik, Stockholm ve Kuala Lumpur ise bir çarpan taşır.
Adım adım
- Deploy edin, sıkılaştırın ve CPU’nun AES-NI’ya sahip olduğunu doğrulayın
Şablon kitaplığından Debian 13’ü deploy edin ve önce temel adımlara on dakika ayırın: yalnızca SSH anahtarları, devre dışı bırakılmış root parola girişi, varsayılan reddet (default-deny) nftables, gözetimsiz güvenlik güncellemeleri. Ardından donanımın size bunun bedelini ödetmeyeceğini doğrulayın:
grep -o -m1 ' aes ' /proc/cpuinfo apt update && apt install -y cryptsetup cryptsetup benchmarkAradığınız şey, saniyede gigabaytlarla ifade edilen
aes-xtsrakamlarıdır. Son on yılın herhangi bir x86-64 sunucu CPU’sunda AES-NI vardır, bu yüzden darboğazınız şifreleme olmayacaktır — tıpkı daha önce olduğu gibi, darboğaz altındaki NVMe olacaktır. - Birim için alan açın
Planınızın diskinde bölümlenmemiş alan varsa onu kullanın — şifrelemek için en temiz şey gerçek bir bölümdür:
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT sgdisk -n 0:0:0 -c 0:secure /dev/vda partprobe /dev/vdaŞablon diskin tamamını doldurduysa, buna karşı direnmeyin. Dosya tabanlı bir kapsayıcı burada da tam değerli bir seçenektir, NVMe’de verimden hiçbir şey kaybettirmez ve daha sonra büyütülebilir:
fallocate -l 20G /var/lib/secure.img chmod 600 /var/lib/secure.img losetup --find --show /var/lib/secure.imgYazdırdığı loop aygıtını not edin — genellikle
/dev/loop0. Aşağıdaki her yerde/dev/disk/by-partlabel/secureokunur; kapsayıcı yolunu seçtiyseniz kendi loop aygıtınızla değiştirin. - LUKS2 olarak formatlayın — ve bellek maliyetini sınırlayın
Her şeyi belirleyen komut budur, bu yüzden yapıştırmak yerine okumaya değer:
cryptsetup luksFormat --type luks2 \ --cipher aes-xts-plain64 --key-size 512 \ --pbkdf argon2id --pbkdf-memory 262144 --iter-time 5000 \ /dev/disk/by-partlabel/secure--key-size 512, anahtarı ikiye bölen XTS modunda AES-256’dır — var olmayan bir şey olan AES-512 değildir.--pbkdf argon2id, parolanızı kaba kuvvetle kırmayı hem RAM hem de CPU açısından pahalı hale getiren, belleğe dayalı (memory-hard) anahtar türetme yöntemidir.--pbkdf-memory 262144bunu 256 MB ile sınırlar ve bu, insanların atlayıp sonra pişman olduğu satırdır. Kendi haline bırakılırsacryptsetup, bellek maliyetini format anında kullanılabilir olan RAM’e göre ayarlar. Aynı header’ın kilidini daha sonra daha az belleği olan bir yerde — 1 GB’lık bir plan, bir kurtarma ortamı, bir initramfs — açmaya çalışırsanız bu tamamen başarısız olabilir. Bilerek sınırlayın. - Açın, üzerine bir dosya sistemi koyun, bağlayın (mount)
cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue \ --allow-discards open /dev/disk/by-partlabel/secure secure mkfs.ext4 -L secure /dev/mapper/secure mkdir -p /srv/secure mount -o noatime /dev/mapper/secure /srv/secure df -h /srv/secureİki workqueue seçeneği yalnızca NVMe’de önemlidir, başka hiçbir yerde değil;
--allow-discards, kapalı diski elinde tutan herkese hangi blokların kullanımda olduğunu gösterme pahasına TRIM’in çalışmasını sürdürür. İkisi de aşağıda ele alınır — yukarıdaki varsayılanlar genel amaçlı bir sunucu için doğru olanlardır. - LUKS header’ını kutunun dışında yedekleyin
Bunu şimdi, birimde kaybetmeye değer herhangi bir şey olmadan önce yapın. Header, keyslot’ları tutan yaklaşık 16 MB’lık bir metadatadır ve bozulmuş bir header, parolayı ne kadar iyi hatırlarsanız hatırlayın şifreli metnin kurtarılamaz olduğu anlamına gelir:
cryptsetup luksHeaderBackup /dev/disk/by-partlabel/secure \ --header-backup-file /root/secure-header.img sha256sum /root/secure-header.imgOnu başka bir yere kopyalayın —
scpile indirin, bir parola yöneticisine koyun, hash’ini yazdırın — sonra yerel kopyayı silin. O dosyayı parolayla eşdeğer sayın, çünkü şimdiye kadar tuttuğu herhangi bir parolayla birleştiğinde gerçekten öyledir. - Önemli olanı birime taşıyın
Hiçbir şeyin yazmadığı şifreli bir birim hiçbir şeyi korumaz. Önce servisi durdurun, durumunu taşıyın, ardından başka hiçbir şeyin yeniden yapılandırılmasına gerek kalmaması için eski yolu bind-mount yapın:
systemctl stop postgresql rsync -aHAX --info=progress2 /var/lib/postgresql/ /srv/secure/postgresql/ mv /var/lib/postgresql /var/lib/postgresql.old mkdir /var/lib/postgresql echo '/srv/secure/postgresql /var/lib/postgresql none bind 0 0' >> /etc/fstab mount /var/lib/postgresql systemctl start postgresqlshredçalıştırmadan ya da.olddizinini kaldırmadan önce servisin sağlıklı olduğunu doğrulayın — ve copy-on-write bir dosya sisteminde ya da aşınma dengelemeli (wear levelling) bir NVMe’de düz metni silmenin onu yok etmekle aynı şey olmadığını unutmayın. Bu hikâyenin temiz versiyonu, şifreli birimi servis var olmadan önce oluşturmaktır. - Nasıl kilidinin açılacağına karar verin ve bu konuda dürüst olun
İşte herkesin karşılaştığı ayrım noktası. Önyüklemeyi hiçbir şeyin engellememesi için birimi
noautoile/etc/crypttab’a ekleyin ve ihtiyacınız olduğunda elle SSH üzerinden kilidini açın:echo 'secure /dev/disk/by-partlabel/secure none \ luks,noauto,discard,no-read-workqueue,no-write-workqueue' >> /etc/crypttab cryptdisks_start secureDürüst yapılandırma budur: anahtar yalnızca siz oradayken var olur ve bir yeniden başlatma, siz aksini söyleyene kadar birimi kapalı bırakır. Bedeli, gözetimsiz yeniden başlatmaların servisi kapalı halde geri getirmesidir.
Alternatif, birimin otomatik açılması için
/etc/crypttab’da bir keyfile kullanmaktır. Bu keyfile aynı diskte duruyorsa hiçbir şeyi şifrelememişsinizdir — kapalı sürücüyü elinde tutan kişi, anahtarı kilidin hemen yanında da elinde tutar. Bu yalnızca anahtar, diskin bulunmadığı bir yerden geldiğinde anlamlıdır: önyüklemede bir WireGuard tüneli üzerinden alınması, ya da son bölümdeki gibi bir initramfs içine SSH üzerinden yazılması gibi. Bilerek seçin; elle kilit açmanın varsayılan olması, söylediği anlama gelen seçenektir. - Swap’ı şifreleyin ve her şeyi doğrulayın
Swap, belleğin gidip bir disk artefaktı hâline geldiği yerdir, bu yüzden düz metin bir swap’ın yanındaki şifreli bir birim, tam olarak korumaya çalıştığınız sırları sızdırır. Önyükleme başına rastgele bir anahtar doğru cevaptır — yönetecek hiçbir şey, kaybedecek hiçbir şey yok. Önce
swapon --showile kontrol edin ve kendi aygıtınızla değiştirin; şablon size bir bölüm yerine bir swap dosyası verdiyse onu silin ve yerine küçük bir bölüm kullanın, çünkü rastgele anahtarlı bir aygıt bir blok aygıtı gerektirir:swapoff -a sed -i '/swap/s/^/#/' /etc/fstab echo 'swap /dev/vda3 /dev/urandom \ swap,cipher=aes-xts-plain64,size=512' >> /etc/crypttab echo '/dev/mapper/swap none swap sw 0 0' >> /etc/fstabArdından — henüz hata yapmanın ucuz olduğu bu aşamada — yeniden başlatın ve sonucu dürüstçe kontrol edin:
lsblk -o NAME,FSTYPE,MOUNTPOINT cryptsetup status secure blkid /dev/disk/by-partlabel/secure # should say crypto_LUKS swapon --show # should show /dev/mapper/swapSayılan test şudur: birim kapalıyken
/srv/secure’un boş olduğunu ve ona bağımlı servisin başlamayı reddettiğini doğrulayın. Her ikisi de doğruysa, şifreleme süslemeden ibaret değil gerçektir.
Keyslot’lar, header’lar ve değiştirdiğiniz parola
LUKS2 en fazla 32 keyslot tutar. Her biri aynı ana anahtarın bir kopyasını, farklı bir parolayla sarılmış şekilde tutar; bu yüzden hiçbir şeyi yeniden şifrelemeden ikinci bir parola ekleyebilirsiniz:
cryptsetup luksAddKey /dev/disk/by-partlabel/secure
cryptsetup luksDump /dev/disk/by-partlabel/secure | grep -A2 '^Keyslots'
cryptsetup luksKillSlot /dev/disk/by-partlabel/secure 1Baştan itibaren iki parola olması doğru varsayılan seçimdir: biri kullandığınız, diğeri yazılıp başka bir yerde saklanan. Bir parola yöneticisindeki bir yazım hatası yüzünden bir birime tek erişiminizi kaybetmek, bir düşmanın yapabileceği herhangi bir şeyden çok daha önde, insanların LUKS verisini kaybetmesinin en yaygın tek yoludur.
Şimdi tuzak. Bir parolayı değiştirmeden önce alınan bir header yedeği, birimi hâlâ eski parolayla açar. Keyslot’lar header’da yaşar, bu yüzden header’ın eski bir kopyası, keyslot’ların da eski bir kopyasıdır — altındaki ana anahtar hiç değişmemiştir. Bir parola sızmış olabileceği için değiştiriyorsanız, bu değişiklikten önce alınmış her header yedeğini yok etmeli ve yenisini almalısınız. Aksi hâlde bu değişiklik, sizi biraz rahatlatmak dışında hiçbir işe yaramamış olur.
Aynı gerçek, header yedeklerini kendi başlarına da hassas kılar: bu 16 MB’lık dosya, artı onun bildiği herhangi bir parola, birimin şifresini çözmeye yeter. Onu, snapshot’larınızı sakladığınız yerde değil, parolayı saklayacağınız yerde saklayın.
Performans: AES-NI, NVMe ve bilinmeye değer iki seçenek
cryptsetup benchmark yaklaşık on beş saniyede, sizin özel vCPU’nuz için gerçeği söyler. AES-NI’ya sahip herhangi bir CPU’da — ki bu son on yılın herhangi bir x86-64 sunucu işlemcisi anlamına gelir — aes-xts için saniyede birkaç gigabayt bekleyin; bu, altındaki NVMe’den rahatça daha hızlıdır. Gerçek iş yüklerindeki pratik ek yük tek haneli düşük bir yüzdedir ve bu CPU kaynaklıdır, gecikme kaynaklı değil.
İki cryptsetup seçeneği, yalnızca hızlı depolamada önemlidir:
cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue \
--allow-discards open /dev/disk/by-partlabel/secure secureWorkqueue seçenekleri, dm-crypt’in dahili kuyruklarını atlar ve G/Ç’yi doğrudan aygıta teslim eder. Dönen bir diskte hiçbir şeyi değiştirmezler; NVMe RAID10’da ise yüksek kuyruk derinliğinde gerçek bir darboğazı ortadan kaldırırlar. Bunları kalıcı hale getirmek için crypttab seçenekler satırına no-read-workqueue,no-write-workqueue olarak ekleyin.
Ödünleşimi olan seçenek --allow-discards’tır. TRIM’i NVMe’ye geçirir, bu da yazma performansını zamanla korur — ama aynı zamanda kapalı diski elinde tutan herkese hangi blokların kullanımda, hangilerinin boş olduğunu da gösterir. Bu, mütevazı olsa da gerçek bir bilgi sızıntısıdır: birimin ne kadar dolu olduğunu ortaya çıkarır ve dosya sistemi yapısına dair ipucu verebilir. Genel amaçlı bir sunucuda performansı tercih edin. Birimin içeriği, boyutunun kendisinin hassas olduğu türden bir şeyse, discard’ları kapalı bırakın.
Kök dosya sistemi yolu ve SSH üzerinden uzaktan kilit açma
Her şeyin şifreli olmasını istiyorsanız, bunu henüz üzerinde hiçbir şey olmayan bir makinede yapın — önce deploy edin, dönüştürün, sonra kurun. Dönüştürmenin kendisi standarttır: kök dosya sistemini çevrimdışıyken küçültün, açılan alanda bir LUKS2 kapsayıcısı oluşturun, sistemi rsync -aHAX ile karşıya kopyalayın, /etc/fstab ve /etc/crypttab’ı mapper aygıtına yönlendirin, ardından update-initramfs -u -k all çalıştırıp GRUB’u yeniden kurun. Bunu konsolsuz-VPS sorununa dönüştüren kısım çevrimdışıyken sözüdür: konsol olmadan oraya varmak, önce çalışan sistemi bir RAM köküne geçirmek anlamına gelir ve ters gittiğinde yeniden kurulumla biten adım da tam olarak budur.
Şifreli bir kökü uzak bir makinede kullanılabilir kılan şey dropbear-initramfs’tir — önyükleme imajının içine gömülü, kernel parolayı beklerken dinleyen, yaklaşık 200 KB’lık bir SSH sunucusu:
apt install dropbear-initramfs cryptsetup-initramfs
# Debian 12/13: /etc/dropbear/initramfs/
cp ~/.ssh/unlock_key.pub /etc/dropbear/initramfs/authorized_keys
chmod 600 /etc/dropbear/initramfs/authorized_keys
echo 'DROPBEAR_OPTIONS="-I 300 -j -k -p 2222 -s -c cryptroot-unlock"' \
>> /etc/dropbear/initramfs/dropbear.conf
echo 'IP=:::::eth0:dhcp' >> /etc/initramfs-tools/initramfs.conf
update-initramfs -u -k allArdından önyükleme sırasında ssh -p 2222 root@your-ip yapar ve zorunlu cryptroot-unlock komutu sizden parolayı ister. Buna güvenmeden önce bilinmeye değer üç şey var. initramfs’in kendi host key’i vardır, bu yüzden istemciniz 2222 portunda bir uyuşmazlık konusunda uyaracaktır — bu beklenen bir durumdur ve ona özel bir port vermenin nedenidir. Bu host key ve authorized_keys dosyanız, diski elinde tutan herkesin okuyabileceği şifrelenmemiş bir önyükleme bölümünde durur, bu yüzden başka hiçbir işe yaramayan bir kilit açma anahtarı kullanın. Ve -s, initramfs içinde parola ile girişi devre dışı bırakır; bu isteğe bağlı değildir.
Küçük planlarda ısıran diğer ayrıntı, üçüncü adımdakiyle aynıdır ve en sert burada ısırır. initramfs, RAM’inizin çoğu rahat bir şey için kullanılabilir olmadan önce çalışır, bu yüzden büyük bir Argon2id bellek maliyetiyle formatlanmış bir header, tam olarak onu oluşturan makinede kilidini açmayı başaramayabilir. --pbkdf-memory’yi sınırlandırarak formatlayın ve hâlâ kaybedecek hiçbir şeyiniz yokken yeniden başlatmayı test edin.
İkinci gün: ne değişir, ne değişmez
Çok az şey, zaten mesele de bu. Açık bir LUKS birimi sıradan bir blok aygıtıdır; fsck, rsync, df ve yedekleme aracınız tam olarak eskisi gibi davranır. Kernel yükseltmeleri etkilenmez, çünkü dm-crypt kernel ağacının içindedir (in-tree). Bir plan yükseltmesinden sonra birimi büyütmek iki komuttur — cryptsetup resize, ardından dosya sisteminin kendi boyutlandırma komutu — ve yeniden şifreleme gerektirmez.
Edinilmeye değer üç alışkanlık var. Sabah 3’te, hiç yazmadığınız bir parolanın tek kopya olduğunu keşfetmek yerine, yeniden başlatmayı bir takvime bağlı olarak prova edin. Yedekleri bağımsız olarak şifreli tutun — birimden ayrı bir kontrol olan ve kutuyu tamamen kaybetmeye dayanan, site dışı bir hedefe restic veya borg; bunu kendiniz kurmak istemiyorsanız günlük site dışı yedekleme eklentisi $2.00/ay’a çalışır. Ve kutuyu önemsemeyi bırakmadan önce birimi kapatın: planlı bir kapatma, geçiş ya da yeniden kurulumdan önce cryptsetup close secure çalıştırmak, disk sizin olmaktan çıkmadan önce anahtarın bellekten çıkması anlamına gelir.
Politika konusunda pazarlık edilecek bir şey yok. Bir KVM guest’inde tam root yetkisi alırsınız ve blok katmanıyla ne yaptığınız sizin işinizdir; kendi biriminizi şifrelemek sıradan bir sistem yönetimi işidir, uç bir durum değil. Kabul edilebilir kullanım politikası davranışla ilgilidir — sert alt sınır CSAM yok ve terörizm yok kuralıdır — ve dm-crypt hakkında söyleyecek hiçbir şeyi yoktur. Şifrelemenin gerçekten değiştirdiği şey, varsayımsal kötü bir günün şeklidir: bu binadan çıkan kapalı bir birim yalnızca gürültüdür ve bu, on dakikanıza değer.
Sık sorulan sorular
Tam disk şifrelemesi, hosting sağlayıcımın verilerimi okumasını engeller mi?
Sunucu çalışırken değil. Birimin kilidi açıldığı anda anahtar guest’in RAM’indedir ve herhangi bir VPS’te bu bellek, operatörün denetlediği donanımın üzerindedir — bir hipervizör onu okuyabilir. LUKS’un eksiksiz yaptığı şey, diski kapalıyken değersiz kılmaktır: tedarikçiye iade edilen bir sürücü, kullanımdan kaldırılmış bir node, çevrimdışı bir imaj. Disk şifrelemesini kendi sağlayıcınıza karşı bir koruma olarak pazarlayan herkes, var olmayan bir şeyi tarif ediyordur.
Konsolu veya KVM-over-IP erişimi olmayan bir VPS’i şifreleyebilir miyim?
Şifreli bir veri birimi, evet — tamamen SSH üzerinden, hiç önyükleme riski olmadan, yaklaşık on dakikada. Şifreli bir kök dosya sistemi farklıdır: her yöntem kökün çevrimdışı olmasını gerektirir, bu da konsolsuz bir makinede önce çalışan sistemi bir RAM diskine geçirmek anlamına gelir. İşe yarar, ama insanların sunucularını kaybetmesinin de yoludur bu. Kutuda henüz hiçbir şey yokken deploy anında dönüştürün ve önyüklemede parolayı SSH üzerinden yazabilmek için dropbear-initramfs kullanın.
LUKS gerçekte ne kadar performans maliyetine yol açar?
AES-NI’ya sahip herhangi bir CPU’da — yani herhangi bir modern x86-64 vCPU’da — tek haneli düşük bir yüzde. cryptsetup benchmark çalıştırın ve aes-xts’i saniyede gigabaytlar mertebesinde göreceksiniz — üzerinde durduğu NVMe’den daha hızlı, bu yüzden darboğaz depolama olarak kalır. Hızlı disklerde --perf-no_read_workqueue ve --perf-no_write_workqueue, yüksek kuyruk derinliğinde kalan farkın çoğunu geri kazandırır.
Parolayı kaybedersem ne olur?
Veri gitmiştir. Hiçbir kurtarma mekanizması, başka birinin elinde tuttuğu bir ana anahtar ya da yardımcı olacak bir destek talebi yoktur — satın aldığınız özellik tam olarak budur. Bunu önceden hafifletin: cryptsetup luksAddKey ile ayrı bir keyslot’a ikinci bir parola ekleyin ve kutunun dışında bir header yedeği tutun. Bir parola değişikliğinden önce alınan bir header yedeğinin birimi hâlâ eski parolayla açtığını unutmayın, bu yüzden değiştirdiğinizde eski kopyaları yok edin.
Şifreli bir birim çalıştırmak için hangi VPS planına ihtiyacım var?
Şifreleme ek bir RAM gereksinimi getirmez ve neredeyse hiç CPU tüketmez, bu yüzden katmanı belirleyen LUKS değil iş yükünüzdür. Cub (1 vCPU / 2 GB / 40 GB NVMe, $5.00/mo) şifreli bir birimi fark bile etmeden çalıştırır; Scout (2 vCPU / 4 GB / 70 GB, $9.00/mo), kutu aynı zamanda bir veritabanı veya posta sunucusu da çalıştırıyorsa konforlu boyuttur. Tek gerçek kısıtlama disktir, çünkü birim onun içinden çıkar.
Sunucumu şifrelemek planlarınızda izin veriliyor mu?
Evet — bu sıradan bir sistem yönetimi işidir. Gerçek bir kernel’e sahip bir KVM guest’inde tam root yetkisi alırsınız, bu yüzden dm-crypt, özel bölümleme ve blok katmanındaki başka her şey sizin yapılandırmanıza kalmıştır. Kabul edilebilir kullanım politikası yapılandırmayı değil davranışı düzenler ve oradaki sert alt sınır CSAM yok ve terörizm yok kuralıdır.
Swap’ı da şifrelemem gerekir mi?
Evet, ve bu çoğu rehberin atladığı adımdır. Swap, anahtarlar ve şifresi çözülmüş tamponlar dâhil kernel belleğinin bir disk artefaktı olarak sonlandığı yerdir, bu yüzden şifreli bir birimin yanındaki düz metin bir swap, tam olarak korumaya çalıştığınız şeyi sızdırır. /etc/crypttab üzerinden önyükleme başına rastgele bir anahtar kullanın: yönetecek hiçbir şey, kaybedecek hiçbir şey yok. Bunun sonucunda hazırda bekletme (hibernation) imkânsız hâle gelir, ki bu bir VPS’te size hiçbir şeye mal olmaz.

