Ubuntu'yu hem disk şifrelemesi hem de SSD önbelleği ile yükleme


10

Ubuntu'yu şirket ortamında kullanıyorum ve güvenlik politikamız tam disk şifrelemesi kullanmamız gerektiğini söylüyor.

Ayrıca 32GB mSATA SSD ve 750GB eğirme paslı bir dizüstü bilgisayarım var. Geçerli yüklemem, bu yordamı kullanarak yüklenen, bundan yararlanmak için bcache kullanır . Bu, SSD'yi doldurma konusunda endişelenmeden çok hoş bir performans artışı sağlıyor.

Bu bol bir soru olacak. Ödül aşağıdakiler için verilecektir:

  • Yeni bir Ubuntu kurulumu gerçekleştirmenin açık ve güvenilir bir yöntemi
    • Herhangi bir sürüm kabul edilebilir, ancak 15.04 (Canlı) iyi olacak
  • Tüm dosya sistemi şifrelenecek
    • Buradaki tercih, varsayılan Ubiquity yükleyici programındaki ilgili onay kutusunu kullanmaktır (dm-crypt şifreleme)
  • Dosya sistemi bir SSD'de önbelleğe alınır
    • Tercihi olarak çekirdek dm-cache / lvmcache yönteminin kullanıldığını görmek burada yöntem Debian Jessie ile bunu yapmak için
    • Önbellek de güvenli olmalıdır (örn. Şifreli)
    • Önbelleğin neden şifrelendiğine ilişkin açık bir açıklama olmalıdır

Yukarıda Debian Jessie için yöntemi zaten denedim, ama benim için önyükleme yapmayı reddediyor. Şimdiye kadar burada yorumlarda açıklanan yöntemi denemedim .

Gönderilen çözümler, iki boş sanal disk ve 15.04 masaüstü sürümünün (amd64 sürümü) bir VirtualBox VM'sinde test edilecektir. Bounty, gerçek donanımımı yeniden kurmak için benimsediğim ilk çözüme gidiyor.

Lütfen çözümünüzü topluluk wiki'sine gidiyormuş gibi yazın.


Ödül verdim - Ben sadece onaylı cevap kolaylığını sadece bir aygıtla, sadece aygıt eşleyici bileşenleri kullanarak birleştiren bir "LVKS-on-LVM" çözümü için potansiyel olduğunu düşünüyorum.


Anladığım kadarıyla, LUKS ubuntu yüklemesinde varsayılan LVM'de lvmcache kullanmak istemiyorsunuz çünkü önbellek şifrelenmeyecek.
solsTiCe

@solsTiCe - dm-cache'nin üstünde güzel ve kolay bir katman olan lvmcrypt'in LUKS ile de uzlaşmak mümkün olması benim anlayışımdı (LUKS başka bir cihaz eşleyici şey, dm-crypt), sadece hangi şekilde önemli etrafında katman şeyler
Adrian

/ Boot bölümünün kesinlikle şifrelenmemiş olması gerektiğini anlamalısınız. bcache Ubuntu 14.04 grub ile uyumsuz ve hala olduğuna inanıyorum.
Adam Ryczkowski

@AdamRyczkowski Evet, şu yapılandırmaya sahibim. Kabul edilebilir, ancak LUKS yapılandırmasını tercih ederim.
Adrian

LUKS'un neden bcache'i hariç tutacağını anlamıyorum ... Birbirlerine bağlı değiller ve biri mutlu bir şekilde birbirinin üzerine oturabilir.
Adam Ryczkowski

Yanıtlar:


7

Bcache üzerinde LUKS üzerinde LVM

Burada Rus bebek oyunu 3 yığın / katman ile biraz daha derin ...

Bu soru hakkındaki ilk fikrim , LUKS üzerinde LVM ile varsayılan bir Ubuntu kurulumu kullanmak ve blokları olan bir bcache destek cihazına dönüştürmekti, ancak LVM ile testimde işe yaramadı.

Dahası, ubuntu yükleyici ( ubiquity ) de bir iç yüklemek sınırlıdır bcache manuel şeyler yapmanın bir yönteme son çare olarak bu yüzden, (en azından LVM üzerinde LÜKS birlikte) önceden hazırlanmış aygıtın.

Canlı CD / USB'ye önyükleme yapın ve "Ubuntu'yu deneyin" i seçin ve bir terminal açın

Önceden yüklemek

sudo -i
# Define some variable to avoid confusion and error
luks_part=/dev/sda3
boot=/dev/sda2                    # boot partition
caching_bcache=/dev/sdb           # SSD or partition in SSD

# Do secure erase of encrypted backing and caching device (see Notes [1])
dd if=/dev/urandom of=$luks_part || dd if=/dev/urandom of=$caching_bcache
# Go and grab some coffe, this will take a while...

apt-get install bcache-tools
# Setup bcache caching and backing devices
make-bcache -C $caching_bcache -B $luks_part
# (Optional) Tweak bcache
echo writeback > /sys/block/bcache0/bcache/cache_mode

# Below we now create manually what ubiquity should have done for us
# Setup LUKS device on bcache device
cryptsetup --key-size 512 luksFormat /dev/bcache0
cryptsetup luksOpen /dev/bcache0 crypted

# Setup LVM on LUKS
# You can skip that part if you don't want to use a swap
# or don't want to use multiple partition. Use /dev/mapper/crypted
# as you root latter on
pvcreate  /dev/mapper/crypted
vgcreate vg /dev/mapper/crypted
lvcreate -L 1G vg -n swap
lvcreate -l 100%FREE vg -n root

Kurulum

Terminali açık tutun ve şimdi kurulumu çalıştırın. Bölümleme yaparken "Başka bir şey" i seçin ve belirtin

  • önyükleme bölümünüz ( /dev/sda2)
  • kök bölümünüz ( /dev/mapper/vg-root)
  • takasınız ( /dev/mapper/vg-swap)

ve bölümlerinizi biçimlendirmek için onay kutusunu işaretleyin

Kurulumun sonunda, yeniden başlatmayın, ancak "Ubuntu'yu denemeye devam et" i tıklayın

Yükleme sonrası

Açtığımız terminalde

# Install bcache-tools to add bcache module to initramfs
mount /dev/mapper/vg-root /mnt
mount $boot /mnt/boot
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev
chroot /mnt
# To get apt-get running in the chroot
echo 'nameserver 8.8.8.8' > /run/resolvconf/resolv.conf
apt-get install bcache-tools

# Create /etc/crypttab to add crypted bcached partition
echo "crypted UUID=`blkid -o value /dev/bcache0|head -1` none luks" > /etc/crypttab

exit
sync
umount /mnt/sys
umount /mnt/proc
umount /mnt/dev
umount /mnt/boot
umount /mnt
vgchange -an /dev/mapper/crypted
cryptsetup luksClose crypted
sync

# Reboot & enjoy

Canlı CD / USB'den bilinen bir Ubuntu 15.04 yeniden başlatma hatası var, bu yüzden yeniden başlatmayı / kapatmayı zorlamanız gerekebilir

Kontrol

Önyüklendikten sonra, /dev/bcache0aslında bir LUKS bölümü olup olmadığını kontrol edebilirsiniz.

if sudo cryptsetup isLuks /dev/bcache0; then \
    echo "crypted";\
    else echo "unencrypted";\
fi

Bunun nedeni, LUKS bölümünüzün önbelleğidir ve şimdi verilerinize cihaz üzerinden erişirsiniz /dev/bcache0ve asla orijinal yedekleme cihazından ( /dev/sda3burada)

Referanslar

http://bcache.evilpiepirate.org/

https://wiki.archlinux.org/index.php/Bcache

https://wiki.archlinux.org/index.php/Dm-crypt

bcache-status henüz resmi olarak bcache-tools ile birleştirilmemiştir. Buradan edinebilirsiniz: https://gist.github.com/djwong/6343451

[1] Bu silme işlemini gerçekleştirmenin daha iyi yolları olabilir


update-initramfs -uk allCrypttab oluşturulduktan ve exitkomutu izledikten sonra çalıştırdığınızdan emin olun .
dess

4

LUKS + LUKS / dm-cache üzerinde LVM

Ubuntu yükleyicisi, tam disk şifrelemesi için LVKS on LUKS yapılandırmasını kullanır .

Performansı artırmak için dm-cache / lvmcache kullanmak istiyorsanız, verilerinizin güvenliğini sağlamak için önbellek havuzunuzu şifrelenmiş bir birime yerleştirmeniz gerekir.

Adımlar

  • Hedef blok cihazında LUKS birimi oluşturma
  • Varsayılan birim grubunu yeni şifrelenmiş LUKS birimiyle genişletme
  • Yeni LUKS biriminde önbellek meta verilerini ve veri birimlerini oluşturma
  • Önbellek havuzu olarak birbirine bağlayın
  • Bu önbellek havuzunu kök birimine bağlama
  • Yeni şifrelenmiş birimin, /etc/crypttab
  • Önyükleme ortamınızın dm-cache'yi desteklediğinden emin olun

Aşağıdaki komut dosyası bir örnek sağlar ve varolan bir kök dosya sistemine şifreli bir önbellek havuzu ekler. Ubuntu yükleyicisinde varsayılan disk şifreleme seçeneğini kullanan sistemler için tasarlanmıştır - ie; tüm disk bölümlenmiş ve şifreli, hiçbir özel bölüm vb.

Lütfen bu komut dosyasında çok az doğrulama veya defansif programlama olduğunu unutmayın. Eğer çalışma sisteminizi yok ederse, bu sizin sorumluluğunuzdadır.

Bu şekilde arayın:

# 1   2          3           4     5    6
sudo bash lvmcryptocache /dev/sdb 32M 1968M
  1. Çalışmak için kök gerekiyor
  2. betiği bash'de çalıştır
  3. komut dosyası adı
  4. kullanmak istediğiniz blok cihazı (sadece tüm disk ile test edilmiştir)
  5. meta veri boyutu
  6. önbellek veri boyutu

Boyut parametreleri varsayılan olarak MB'dir: 1: 1000 meta veri alanının önbellek alanına oranına ihtiyacınız olacaktır (örneğin, önbellek diskiniz 180GB ise, 180MB meta veri alanına ve 179820MB veri alanına ihtiyacınız olabilir - meta veriler biraz dikkatli olun. 8M'nin meta verileri için daha düşük bir sınır vardır.)

Önbellek biriminiz için bir parola girmeniz istenir - önyükleme sırasında disklerinizin her ikisi için de parolalar istenir .

Referanslar


#! / Bin / bash
#
# lvmcryptocache
#
# Bir LVM önbellek havuzu ekleyin ve kök birime ekleyin
# LUKS şifrelemesi dahil
# "Kökte" kurulumu kullandığınızı varsayar
# Eğer değilseniz, isterseniz uyarlayın
#
# Script lisanslı GPL3 veya üstü
# © Adrian Wilkins Mayıs 2015
#
# Önbellek olarak kullandığınız disk aygıtının adını aktarın
# Bu ideal olarak tamamen boş olmalı,
#
# gg if = / dev / sıfır / = / dev / $ {DISK}
#
# bölüm tablosunu nuke etmek için kısa bir süre

CACHE_DISK = $ 1
META_SIZE = $ 2
DATA_SIZE = $ 3

DISK_NAME = $ (taban adı $ CACHE_DISK)

CRYPT_VOLUME = $ {DISK_NAME} _crypt
CACHE_PV = / dev / mapper / $ {CRYPT_VOLUME}

# Ham diskte LUKS birimi oluşturma

cryptsetup luksFormat $ CACHE_DISK
cryptsetup açık - tür luks $ CACHE_DISK $ CRYPT_VOLUME

# Disk boyutundaki şeyleri denemeye ve çalışmaya başladı ancak karmaşık
# İsterseniz bir deneyin, uzun süreler tükenmeye devam ettim
#
# DISK_SIZE = $ (fdisk -l | grep "Disk $ {CACHE_DISK}" | awk '{print $ 5}')
# 
# META_SIZE = $ ((DISK_SIZE / 1000))
# META_SIZE = $ ((META_SIZE + 512))
# MOD = $ ((% 512 META_SIZE))
# MOD_OFFSET = $ ((512 - MOD))
# META_SIZE = $ ((META_SIZE + 512)) 
# META_SIZE = $ ((META_SIZE + MOD_OFFSET))
# 
# DATA_SIZE = $ ((DISK_SIZE - META_SIZE))
# 

# Şifreli birim içinde yeni PV oluşturma

pvcreate $ CACHE_PV
vgextend ubuntu-vg $ CACHE_PV
lvcreate -L $ {META_SIZE} -n cachemeta ubuntu-vg $ CACHE_PV
lvcreate -L $ {DATA_SIZE} -n önbellek verisi ubuntu-vg $ CACHE_PV
lvconvert - tip önbellek havuzu --poolmetadata ubuntu-vg / cachemeta - cachemode writethrough ubuntu-vg / cachedata --yes
lvconvert - tür önbellek --cachepool ubuntu-vg / cachedata ubuntu-vg / root

# Şimdi önbellek havuzunun UUID'sini FYSICAL DRIVE (/ dev / sdb) / etc / crypttab dosyasına ekleyin
DISK_UUID = $ (ls -al / dev / disk / by-uuid / | grep $ DISK_NAME | awk '{print $ 9}')
echo "$ {CRYPT_VOLUME} UUID = $ {DISK_UUID} yok luks, sil" >> / etc / crypttab

apt-get install - evet ince temel hazırlık araçları

KANCA = $ (tempfile)
# Doğru araçları ve modülleri eklemek için initramfs'ye bir kanca komut dosyası ekleyin

echo "#! / bin / sh"> $ KANCA
echo "PREREQ =" lvm2 "" >> $ KANCA
echo "prereqs ()" >> $ KANCA
echo "{" >> $ KANCA
echo "echo \" $ PREREQ \ "" >> $ KANCA
echo "}" >> $ KANCA
echo "case $ 1 in" >> $ KANCA
echo "prereqs)" >> KANCA
echo "prereqs" >> $ KANCA
echo "çıkış 0" >> $ KANCA
Eko " ;;" >> KANCA
echo "esac" >> $ KANCA
echo "if [! -x / usr / sbin / cache_check]; sonra" >> $ HOOK
echo "çıkış 0" >> $ KANCA
echo "fi" >> $ KANCA
echo ". / usr / share / initramfs-tools / hook-fonksiyonları" >> $ KANCA
echo "copy_exec / usr / sbin / cache_check" >> $ KANCA
echo "manual_add_modules dm_cache dm_cache_mq dm_persistent_data dm_bufio" >> $ KANCA

cp $ HOOK / etc / initramfs-tools / kancalar / lvmcache
chmod + x / etc / initramfs-tools / kancalar / lvmcache

echo "dm_cache" >> / etc / initramfs-tools / modules
echo "dm_cache_mq" >> / etc / initramfs-tools / modules
echo "dm_persistent_data" >> / etc / initramfs-tools / modules
echo "dm_bufio" >> / etc / initramfs-tools / modules

# Güncelleme initramfs

update-initramfs -u

echo Şimdi yeniden başlat!

1. Önbellek diskinizi sıfırla boşaltmanızı öneririz, ancak bunun yerine şifreli bir LUKS yerleştirmek istiyorsanız rasgele verilerle güvenli bir şekilde silmeniz gerekir. 2. Kurulumunuzda 2 LUKS bölümünüz var, bu yüzden aynı parolayı kullansanız bile iki kez girmeniz gerekiyor, değil mi?
solsTiCe

1. Rastgele disk silme modern donanımda biraz modası geçmiş - sıfırları diski çoğu akademik olmayan seviye ölçüsünün ötesine ve kesinlikle ticari disk kurtarma laboratuvarlarının ötesine koymak için yeterlidir. Önceden tutulan hassas verileri kullandığınız birim olmadığı sürece , ona yazılan tüm bloklar şifreleneceğinden gereksizdir; aşınma seviyelendirme algoritmaları nedeniyle üzerinde düz metin duyarlı veri bulunan bir SSD kullanmamalısınız. 2. Evet, 2 LUKS bölümü var, metinde söylediğim gibi, önyükleme sırasında her iki parola istenir.
Adrian

rastgele silme SSD üzerindeki verileri güvenli bir şekilde silmek DEĞİLDİR, ancak scrutany'dan ve şifrelenmiş verileri 00000000zerazer000000000000 gibi boş alanlardan ayırt etmekten kaçınmaktır. Burada şifrelenmiş verileri ortada görebilirsiniz. bu, rasgele bir çorbanın ortasında saklanmak yerine şifrelemenizi zayıflatır.
solsTiCe

Ben bcache kurmak sıkışmış sonra bu rota ile gidiş sona erdi. Oldukça iyi çalışıyor gibi görünüyor: | cache_utilization_pct | 79.096846147 |. Ancak topiowait durumlarını% 20-50 sürekli görüyorum. Arabelleğe almanın bir yan etkisi olabilir mi?
Jean Jordaan

Gerçekten bildiğimi iddia edemiyorum - ancak bunun SSD'ye yazmaları en aza indirmeye yönelik optimizasyonların bir yan etkisi olabileceğini tahmin ediyorum. IOWait hakkında makale burada: thattommyhall.com/2011/02/18/iops-linux-iostat
Adrian
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.