SSH ile LUKS uzaktan kilit açma: dropbear-initramfs ve cryptroot-unlock
Uzak bir sunucuda LUKS root'u açılışta açın: dropbear-initramfs'i kurun, anahtarınızı ekleyin, port ve IP'yi ayarlayın, initramfs'i yeniden oluşturun, ardından SSH ile bağlanıp cryptroot-unlock çalıştırın.
Kısaca: `dropbear-initramfs`'i kurun, SSH açık anahtarınızı `/etc/dropbear/initramfs/authorized_keys` dosyasına koyun (Debian 12/13, Ubuntu 24.04), initramfs'e bir ağ yapılandırması verin, `update-initramfs -u` çalıştırın ve yeniden başlatın. Sunucu parolayı beklerken kendi portundaki küçük Dropbear sunucusuna SSH ile bağlanın ve `cryptroot-unlock` çalıştırın; açılış ardından normal şekilde devam eder.
Bu rehber, root dosya sisteminin LUKS şifreli root rehberinde anlatıldığı gibi zaten LUKS üzerinde olduğunu ve Debian ile Ubuntu kurulumcularının varsayılanı olarak `/boot`'un şifresiz olduğunu varsayar. Kernel ve initramfs'i kontrol ettiğiniz her KVM VPS'te çalışır ve küçük bir VPS için self-hosting stack'i gibi servisleri diske koymadan önce mantıklı bir temeldir.
Uzaktan kilit açma nasıl çalışır
Şifreli root'a sahip bir sistemde kernel önce bir initramfs yükler: `/boot` içinde şifresiz saklanan küçük, geçici bir root dosya sistemi. Görevi LUKS cihazını bulmak, parolayı sormak, cihazı açmak ve kontrolü gerçek root'a devretmektir. Normalde istem yalnızca yerel konsolda görünür.
`dropbear-initramfs` bu initramfs'e üç şey ekler: Dropbear SSH sunucusu, bir ağ kurulum adımı ve `cryptroot-unlock` yardımcısı. Dropbear parola isteminden önce başlar, yalnızca içine gömdüğünüz anahtarlarla açık anahtar girişlerini kabul eder ve `cryptroot-unlock` parolanızı bekleyen `cryptsetup` istemine iletir. Root açıldıktan sonra initramfs Dropbear'ı sonlandırır ve gerçek OpenSSH sunucunuz her zamanki gibi başlar.
Dosya yolları sürümler arasında farklıdır
Yapılandırma dizini Dropbear 2022.83 geldiğinde taşındı. Birçok eski rehber hâlâ eski yolu gösteriyor ve oraya konan bir anahtar güncel sürümlerde sessizce yok sayılıyor. Komutları kopyalamadan önce sürümünüzü kontrol edin.
Note · Seçenekler dosyası her sürümde aynı dizindeki `dropbear.conf`'tur. Initramfs host anahtarları da orada bulunur (`dropbear_ed25519_host_key` ve benzerleri) ve çalışan sistemin OpenSSH host anahtarlarından ayrıdır.
| Sürüm | Yapılandırma dizini | Anahtar dosyası |
|---|---|---|
| Debian 13 (trixie) | `/etc/dropbear/initramfs/` | `/etc/dropbear/initramfs/authorized_keys` |
| Debian 12 (bookworm) | `/etc/dropbear/initramfs/` | `/etc/dropbear/initramfs/authorized_keys` |
| Ubuntu 24.04 (noble) | `/etc/dropbear/initramfs/` | `/etc/dropbear/initramfs/authorized_keys` |
| Debian 11, Ubuntu 22.04 ve daha eskileri | `/etc/dropbear-initramfs/` | `/etc/dropbear-initramfs/authorized_keys` |
Debian 12/13 ve Ubuntu 24.04'te adım adım kurulum
- 01.Paketi kurun: `apt install dropbear-initramfs`. Bu aşamada eksik veya geçersiz bir `authorized_keys` dosyası hakkında uyarı beklenen bir durumdur.
- 02.Açık anahtarınızı — ideal olarak ayrı bir Ed25519 anahtarını — `/etc/dropbear/initramfs/authorized_keys` dosyasına satır başına bir anahtar olacak şekilde ekleyin ve yalnızca kilit açabilecek şekilde kısıtlayın.
- 03.Dropbear seçeneklerini `/etc/dropbear/initramfs/dropbear.conf` içinde ayarlayın; initramfs host anahtarının `known_hosts`'taki normal SSH host anahtarınızla çakışmaması için varsayılan olmayan bir port da dahil.
- 04.Initramfs için ağı `ip=` kernel parametresiyle (statik) yapılandırın veya VPS ağınız destekliyorsa DHCP'ye güvenin.
- 05.Initramfs'i `update-initramfs -u` ile yeniden oluşturun ve kernel komut satırını değiştirdiyseniz `update-grub` çalıştırın.
- 06.Yedek olarak konsol erişimini açık tutarak yeniden başlatın, ardından bağlanın ve `cryptroot-unlock` çalıştırın.
apt install dropbear-initramfs
# 1. Key (forced command: the key can only unlock)
echo 'no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="/bin/cryptroot-unlock" ssh-ed25519 AAAA...yourkey unlock@laptop' \
> /etc/dropbear/initramfs/authorized_keys
chmod 600 /etc/dropbear/initramfs/authorized_keys
# 2. Options in /etc/dropbear/initramfs/dropbear.conf
# -p 2222 listen on port 2222
# -s disable password logins
# -j -k no local/remote port forwarding
# -I 300 drop idle sessions after 300 s
DROPBEAR_OPTIONS="-p 2222 -s -j -k -I 300"
# 3. Rebuild
update-initramfs -uInitramfs'te ağ yapılandırması
Initramfs `/etc/network/interfaces`, netplan veya systemd-networkd'yi okumaz. Kernel `ip=` parametresini veya `/etc/initramfs-tools/initramfs.conf` içindeki `IP=` satırını kullanır. Hiçbiri ayarlanmamışsa tüm arayüzlerde DHCP dener; bu birçok bulutta çalışır ama statik atamalı bir VPS'te garanti değildir.
Format şudur: `ip=<client-ip>::<gateway-ip>:<netmask>:<hostname>:<device>:off`. Çalışan sistemde `ip -4 addr` ve `ip route` çıktısındaki değerleri kullanın. Initramfs içindeki arayüz adı genellikle aynı öngörülebilir addır (örneğin `ens3` veya `eth0`); emin değilseniz device alanını boş bırakın, ilk arayüz kullanılır. Burada güvenilir seçim IPv4'tür, çünkü initramfs ağ adımındaki IPv6 desteği sınırlıdır.
# /etc/default/grub (static IPv4 example, documentation addresses)
GRUB_CMDLINE_LINUX="ip=203.0.113.10::203.0.113.1:255.255.255.0::ens3:off"
update-grub
update-initramfs -u
# From your workstation after reboot:
ssh -p 2222 [email protected]
# without the forced command, type: cryptroot-unlockKilit açma ve günlük kullanım
Yeniden başlattıktan sonra sunucu 2222 portunda yanıt verene kadar bekleyin, ardından `root` olarak bağlanın. Kurulum adımındaki forced command ile `cryptroot-unlock` hemen başlar ve LUKS parolasını sorar; o olmadan bir BusyBox shell'i alırsınız ve `cryptroot-unlock`'u kendiniz yazarsınız. Başarılı olursa oturum kapanır, initramfs açılışa devam eder ve bir dakika sonra normal SSH sunucunuz, SSH sıkılaştırma rehberindeki gibi sıkılaştırılmış olarak 22 portunda yanıt verir.
Kilit açma portu için ayrı bir `known_hosts` girdisi kullanın; örneğin `~/.ssh/config` içinde `Port 2222` ve `HostKeyAlias myserver-unlock` içeren bir `Host myserver-unlock` bloğu. Kernel her güncellendiğinde Debian ve Ubuntu initramfs'i yeniden oluşturur ve Dropbear anahtarınızı ve seçeneklerinizi korur, ancak büyük yükseltmelerden sonra bir yeniden başlatmayı test edin.
- ▹Connection refused: ağ yapılandırması yanlış; `ip=` değerlerini konsolda kontrol edin.
- ▹Host key uyarısı: normal alias altında initramfs host anahtarına bağlanıyorsunuz; ayrı alias'ı kullanın.
- ▹`cryptroot-unlock` bekleyen cihaz olmadığını söylüyor: sistem zaten açılmış veya `/etc/crypttab`'da root girdisi yok.
- ▹Anahtar değişiklikleri etkisiz: eski `/etc/dropbear-initramfs/` yolunu düzenlediniz veya `update-initramfs -u`'yu unuttunuz.
Tehdit modeli: uzaktan kilit açma neyi korur, neyi korumaz
Uzaktan kilit açmalı LUKS, durağan verileri korur. Kapalı bir disk, kopyalanmış bir disk imajı, hizmet dışı bırakılmış bir sürücü veya kapalıyken el konulan bir sunucu yalnızca şifreli metni ortaya çıkarır. Bu, bir VPS için gerçek ve yararlı bir garantidir.
Çalışan bir sunucuyu, hostu kontrol eden kişiye karşı korumaz. `/boot` içindeki initramfs ve kernel şifresizdir; bu yüzden hypervisor veya konsol erişimi olan biri bunları bir sonraki açılışta parolanızı kaydedecek şekilde değiştirebilir ve çalışan bir VM'in belleği — LUKS ana anahtarı dahil — hosttan okunabilir. Uzaktan kilit açmayı düşmanca bir hypervisor'a karşı değil, el koymaya ve disk sızıntılarına karşı koruma olarak görün. Değişmiş bir Dropbear host anahtarı gibi açılış anındaki anormallikler incelenmeye değer.
Note · Bir NoctisNode VPS'inde Debian 13/12 ve Ubuntu 24.04 imajlarıyla KVM üzerinde tam root alırsınız, dolayısıyla bu kurulum anlatıldığı gibi çalışır. Burada da her yerdeki sınır geçerlidir: şifreleme çalışan bir guest'i değil, diski korur. Sağlayıcı tarafının neyi kaydedip neyi kaydetmediği için bkz. no-logs VPS açıklaması.
SSS
QDebian 12'de dropbear initramfs authorized_keys dosyası nerede?
ADebian 12 ve 13 ile Ubuntu 24.04'te `/etc/dropbear/initramfs/authorized_keys`'tir. Debian 11 ve Ubuntu 22.04 `/etc/dropbear-initramfs/authorized_keys` kullanıyordu. Her değişiklikten sonra `update-initramfs -u` çalıştırın.
Qcryptroot-unlock ne yapar?
A`cryptroot-unlock`, initramfs içinde bekleyen LUKS parola istemini bulan ve yazdığınız parolayı ona ileten bir yardımcıdır. Cihaz açıldığında açılış devam eder ve Dropbear oturumu sona erer.
Qdropbear-initramfs SSH portunu nasıl değiştiririm?
A`/etc/dropbear/initramfs/dropbear.conf` içinde `DROPBEAR_OPTIONS="-p 2222"` (artı diğer bayraklar) ayarlayın, ardından `update-initramfs -u` çalıştırıp yeniden başlatın.
QVPS'te SSH ile LUKS uzaktan kilit açma güvenli mi?
AKapalı veya kopyalanmış bir diskteki verileri korur. Şifresiz initramfs'i değiştirebilecek veya çalışan VM'in belleğini okuyabilecek hypervisor erişimine sahip birine karşı koruyamaz.
Qdropbear-initramfs ile LUKS2 kullanabilir miyim?
AEvet. Kilit açma Linux userspace'te `cryptsetup` ile gerçekleşir, dolayısıyla Argon2id'li LUKS2 çalışır; format farkları için bkz. LUKS2 ve LUKS1.