Tam disk şifrelemesiyle (LUKS'in üstündeki LVM) Ubuntu'da RAM'in askıya alınması nasıl yapılır?


20

Ubuntu 13.04'te tam disk şifrelemesi kullanıyorum (LUKS'in üstündeki LVM).

luksSuspendKilitleme prosedürüne dahil etmek istiyorum (ve daha sonra kullanmak luksResume), böylece ana materyali bellekte ve kök kilidi açıkta bırakmadan RAM'e askıya alabilirim.

Son 7 saattir Arch Linux için bir senaryo yayınlamaya çalıştım, şu ana kadar başarılı olamadım: Gerçekten ne yaptığım hakkında hiçbir fikrim yok ...

Birisi bunu anlatmama yardımcı olabilir (veya sıfırdan böyle bir şey yaratabilir)? Veya en azından birileri beni askıya alma prosedürlerine nasıl bağlayacağınız ve gerekli ikili dosyaları ve komut dosyalarını (cryptsetup gibi) tüm IO'nun root tarafından bloke edildikten sonra bile nasıl hazır tutacağımla ilgili belgeleri gösterebilir luksSuspendmi?

Gerekli ikili dosyaları ve komut dosyalarını devam ettirmek için nasıl hazır tutacağımızla ilgili olarak, bu diğer blog yazısı (Arch için de) bunları kopyaladı /boot; Ancak Vianney'in daha önce bahsettiğim senaryoda kullandığı satırlarda daha fazla bir şey kullanmak istiyorum, çünkü bu yaklaşım bu açıdan biraz daha zarif görünüyor.


Bunun için birkaç saat daha
harcadım

Oluşan senaryoları düzenledim pm-suspendve sanki neredeyse ordaydım. Ancak, echo -n "mem" > /sys/power/statefs ( cryptsetup luksSuspend ...) kökünü
donduktan

1
Debian listelerinde (ve bunlara bağlı olan ya da bunlarla bağlantılı olan bazı diğer listeler) hakkında birkaç tartışma okudum ve şu ana kadar çözüm üzerinde bir "deinitramfs" gibi bir şey gerektirecek gibi görünüyor: çekirdek deinitramların kontrolünü ele alacak sistemi gerçekten askıya almadan hemen önce, bu tmpf'ler son temizleme işlemlerini (rootfs şifreleme anahtarını silmek gibi) gerçekleştirebilsinler diye.
Jonas Malaco

Bu sorunun da cevaplandığını görmek isterim.
BenAlabaster

Yanıtlar:


3

Aynı problemle karşılaştım, bu yüzden burada görebileceğiniz aynı senaryoyu anlatırken bir kez daha çekim yaptım . Sonrasında geçici olmayan herhangi bir depoya dokunmaz luksSuspend, bu yüzden şifreli / önyüklemeli gerçek tam disk şifrelemesinde bile çalışır. Ancak, dikkatli olmanız gerekir - ara sıra beklendiği gibi çalışmayabilir!

Taşınan komut dosyası aşağıdakileri yapar:

  • Bir yere ramfs yuvası oluşturun
  • İnitramfs içeriğini oraya çıkarın (initramfs askıya alma komut dosyası dahil)
  • (Örneğin ilgili dizinlerini bağlamak /sys, /proc, /dev, /runramfs monte) için
  • Müdahale edebilecek hizmetleri durdurma (systemd-udevd, systemd-journald)
  • Kök dosya sistemini (ext4 veya btrfs) nobarrier ile yeniden kurun, böylece Linux S3'e girmeye çalışırken askıda kalmaz, ardından senkronize edilir
  • Tekrar senkronize olan, çalışan luksSuspendve bilgisayarı uyku moduna geçiren initramfs yuvasına Chroot
  • Uyandıktan sonra, luksResumedosya sistemlerini yeniden kurun, hizmetleri yeniden başlatın, initramfs bağlantısındaki bağlama bağlarını çıkarın
  • Son olarak, initramfs mount'u çıkarın, böylece initramfs dosyaları için kullanılan RAM'i serbest bıraktık.

Senaryomda kapsamlı testler yapmadım, ancak benim için güvenilir bir şekilde çalışıyor gibi görünüyor. Başka bir dosya sistemi kullanıyorsanız (örneğin, ext4 veya btrfs değil), bariyerle ilgili sorunlar yaşayabilirsiniz; bu nedenle komut dosyasını da değiştirmeniz gerekecektir.

Her iki durumda da, önce komut dosyalarının çalıştığını test etmek ve doğrulamak iyidir. Linux'u S3'e yerleştirmeye çalışırken kilitlenme yaşarsanız (yani at echo mem > /sys/power/state), o zaman aşağıdakileri kurtarabilmelisiniz:

  • Askıya almadan önce, bir tty veya başka bir terminal açın (erişilebilir olacak, yani ideal bir tty)
  • Şifreleme ve ilgili kitaplıkları RAM'e yükleyin: sudo cryptsetup luksResume anything_here
  • Komut dosyasını kullanarak askıya alın
  • Chroot'un arkasına takılırsa (örneğin starting version xxx, yeni vt'de görüntülendikten sonra ), daha önce açtığınız tty'ye geçin vesudo cryptsetup luksResume your_luks_device_name_here
  • Bu da askıda kalıyorsa, başka bir vt açın ve içine dalın /run/initramfs:sudo chroot /run/initramfs /bin/ash
  • Koşmayı dene luksResume:cryptsetup luksResume your_luks_device_name_here && exit
  • Bilgisayarınız daha sonra askıya alınmalıdır. Daha sonra uyandırabilir, hala çalışıyorsa betiği (ler) i öldürebilir, bağlama bağlarını sökebilir ve /run/initramfsvarsa kök dosya sisteminizi bariyere takabilirsiniz.

1

Bu kurulumla ilgili deneyimim yok, ancak birçok kişi bu konuda başarılı olduğunu iddia ediyor. İşte bunlardan birkaçı.

LUKS ile dm-crypt - Takas bölümünün
şifrelenmesi Nasıl yapılır: Ubuntu 6.10 Edgy Eft ile disk bölümünün askıya alınması dahil olmak üzere tamamen şifrelenmiş harddiskler
ubuntu tam disk şifreleme lvm-luks

Ancak hiçbiri luksSuspend kullanmıyor (bu yüzden neden çalışıyor olabilir)


Bağlantılar için teşekkürler ... Son bağlantıya benzer bir kurulum kullanıyorum (otomatik olarak 13.04 yükleyici tarafından oluşturulur).
Jonas Malaco

Hiçbir lukSSpend şimdiye kadar, anahtarları bellekten temizlemek için kapatılması gerekir ... Yine de, bağlantılar için teşekkürler! Belki bunu elle nasıl yapılandıracağımı anlayarak, luksSuspend'in tokatlamak için kullanılırken nasıl kullanılacağı hakkında bazı bilgiler edinebilirim.
Jonas Malaco

1
LuksSuspend kullanımı oldukça zor görünüyor. Tüm G / Ç'leri donduğu için, çok akrobatik bir askıya alma komut dosyasına ihtiyaç var. Almanca'da (kötü bir şekilde) İngilizceye çevrilebilecek tek bir başarı öyküsü bulabildim . Şablon olarak kullanmayı deneyin.
harrymc

2
Ayrıca bir ram-disk ve statik olarak bağlı bir kripto oluşturma kullanmanız gerekebilir.
harrymc

1

Biraz zamanımı tamamen işlevsel hale getirmek için biraz zaman harcadım Ubuntu 15.10. Bu işi ext2, ext3 veya ext4 üzerinde yapmaya çalışıyorsanız, birimi 'nobarrier' seçeneğiyle monte etmek için / etc / fstab dosyasını güncellemeniz gerekir. Aksi takdirde, BTRFS kullanmanızı öneririm.

Dosya sisteminiz hazırlandıktan sonra, betiği burada kullanın: https://github.com/Microcentillion/ubuntu-lukssuspend

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.