Cách cài đặt Ubuntu với cả mã hóa ổ đĩa và bộ nhớ đệm SSD


10

Tôi đang sử dụng Ubuntu trong môi trường doanh nghiệp và chính sách bảo mật của chúng tôi nói rằng chúng tôi phải sử dụng mã hóa toàn bộ đĩa.

Tôi cũng đã có một máy tính xách tay với ổ SSD 32 GB mSATA và 750GB rỉ sét. Cài đặt hiện tại của tôi sử dụng bcache để tận dụng điều này, được cài đặt bằng thủ tục này . Điều này cung cấp một sự gia tăng hiệu suất rất đáng hoan nghênh mà tôi không phải lo lắng về việc làm đầy SSD.

Đây sẽ là một câu hỏi tiền thưởng. Tiền thưởng sẽ được trao cho:

  • Một phương pháp rõ ràng, đáng tin cậy để thực hiện cài đặt Ubuntu mới
    • Mọi bản phát hành đều được chấp nhận nhưng 15.04 (Sống động) sẽ ổn
  • Toàn bộ hệ thống tập tin sẽ được mã hóa
    • Tùy chọn ở đây là sử dụng hộp kiểm có liên quan trong chương trình cài đặt Ubiquity mặc định (mã hóa dm-crypt)
  • Hệ thống tập tin sẽ được lưu trữ trên ổ SSD
    • Để ưu tiên, phương thức kernel dm-cache / lvmcache xem ở đây để biết phương thức thực hiện điều này với Debian Jessie
    • Bộ nhớ cache cũng phải được bảo mật (tức là được mã hóa)
    • Phải có một lời giải thích rõ ràng về lý do tại sao bộ đệm cũng được mã hóa

Đã thử phương pháp cho Debian Jessie ở trên, nhưng nó từ chối khởi động cho tôi. Cho đến nay chưa thử phương pháp được mô tả trong các ý kiến ở đây .

Các giải pháp được đăng sẽ được kiểm tra trên VirtualBox VM với hai đĩa ảo trống và bản sao phát hành của máy tính để bàn 15.04 (bản phát hành amd64). Bounty đi đến giải pháp đầu tiên mà tôi áp dụng để cài đặt lại phần cứng thực tế của mình.

Hãy viết giải pháp của bạn như thể nó đang đi vào wiki cộng đồng.


Tôi đã trao tiền thưởng - Tôi nghĩ rằng vẫn có tiềm năng cho giải pháp "LUKS-on-LVM" kết hợp sự dễ dàng của câu trả lời được phê duyệt khi chỉ có một mật khẩu, chỉ sử dụng các thành phần ánh xạ thiết bị.


Theo những gì tôi hiểu, bạn không muốn sử dụng lvmcache trong LVM mặc định trên cài đặt LUKS ub Ubuntu vì bộ đệm sẽ không được mã hóa.
solsTiCe

@solsTiCe - theo hiểu biết của tôi rằng lvmcrypt, là một lớp dễ dàng dễ dàng trên dm-cache, cũng có thể điều hòa với LUKS (LUKS là một thứ khác của trình ánh xạ thiết bị, dm-crypt), nó chỉ là vấn đề xung quanh bạn lớp mọi thứ
Adrian

Bạn nên hiểu rằng, phân vùng / boot chắc chắn sẽ không được mã hóa. bcache không tương thích với grub trên Ubuntu 14.04 và tôi tin rằng nó vẫn còn.
Adam Ryczkowski

@AdamRyczkowski Vâng, bây giờ tôi có cấu hình đó. Có thể chấp nhận nhưng tôi thích cấu hình LUKS hơn.
Adrian

Tôi không thấy lý do tại sao LUKS sẽ loại trừ bcache ... Họ không phụ thuộc vào nhau và người ta có thể vui vẻ ngồi lên nhau.
Adam Ryczkowski

Câu trả lời:


7

LVM trên LUKS trên bcache

Ở đây, trò chơi búp bê Nga sâu hơn một chút với 3 ngăn xếp / lớp ...

Ý tưởng ban đầu của tôi về câu hỏi này là sử dụng cài đặt Ubuntu mặc định với LVM trên LUKS và chuyển đổi nó thành một thiết bị sao lưu bcache với các khối nhưng nó không hoạt động với tôi trong thử nghiệm với LVM.

Hơn nữa, trình cài đặt Ubuntu ( ubiquity ) quá hạn chế để cài đặt bên trong một thiết bị bcache được chuẩn bị trước (ít nhất là với LUKS trên LVM), vì vậy chúng tôi chuyển sang phương pháp thực hiện thủ công.

Khởi động vào CD / USB trực tiếp và chọn "Dùng thử Ubuntu" và mở một thiết bị đầu cuối

Cài đặt sẵn

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

Cài đặt

Giữ thiết bị đầu cuối mở và bây giờ chạy cài đặt. Chọn "Cái gì khác" khi phân vùng và chỉ định

  • phân vùng khởi động của bạn ( /dev/sda2)
  • phân vùng gốc của bạn ( /dev/mapper/vg-root)
  • trao đổi của bạn ( /dev/mapper/vg-swap)

và chọn hộp kiểm để định dạng phân vùng của bạn

Khi kết thúc quá trình cài đặt, không khởi động lại mà chỉ cần nhấp vào "Tiếp tục dùng thử Ubuntu"

Cài đặt sau

Trong thiết bị đầu cuối mở của chúng tôi

# 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

Có một lỗi khởi động lại Ubuntu 15.04 đã biết từ Live CD / USB, do đó bạn có thể phải buộc khởi động lại / tắt máy

Kiểm tra

Sau khi khởi động, bạn có thể kiểm tra /dev/bcache0trên thực tế đó là phân vùng LUKS với

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

Điều này là do nó là bộ đệm của phân vùng LUKS của bạn và bây giờ bạn truy cập dữ liệu của mình qua thiết bị /dev/bcache0và không bao giờ từ thiết bị sao lưu gốc ( /dev/sda3tại đây)

Người giới thiệu

http://bcache.evilpiepirate.org/

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

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

bcache-status chưa được chính thức sáp nhập vào bcache-tools. Bạn có thể có nó ở đây: https://gist.github.com/djwong/6343451

[1] Có thể có những cách tốt hơn để thực hiện việc lau này


Đảm bảo chạy update-initramfs -uk allsau khi tạo crypttab và thực hiện theo exitlệnh.
dess

4

LVM trên LUKS + LUKS / dm-cache

Trình cài đặt Ubuntu sử dụng cấu hình LVM trên LUKS để mã hóa toàn bộ đĩa.

Nếu bạn cũng muốn sử dụng dm-cache / lvmcache để tăng hiệu suất, bạn sẽ cần đặt nhóm bộ đệm của mình vào một ổ đĩa được mã hóa để duy trì bảo mật dữ liệu của bạn.

Các bước là

  • Tạo âm lượng LUKS trên thiết bị khối mục tiêu
  • Mở rộng nhóm âm lượng mặc định với âm lượng LUKS được mã hóa mới
  • Tạo siêu dữ liệu bộ đệm và khối lượng dữ liệu trong khối LUKS mới
  • Liên kết chúng lại với nhau như một nhóm bộ đệm
  • Ràng buộc nhóm bộ đệm này vào ổ đĩa gốc
  • Đảm bảo khối lượng mã hóa mới có thể được gắn khi khởi động bằng cách thêm nó vào /etc/crypttab
  • Đảm bảo rằng môi trường khởi động của bạn hỗ trợ dm-cache

Kịch bản dưới đây cung cấp một ví dụ và sẽ thêm một nhóm bộ đệm được mã hóa vào hệ thống tệp gốc hiện có. Nó được thiết kế cho các hệ thống đã sử dụng tùy chọn mã hóa đĩa mặc định trong trình cài đặt Ubuntu - tức là; toàn bộ đĩa được phân vùng và mã hóa, không có phân vùng tùy chỉnh, vv

Xin lưu ý rằng có rất ít xác nhận hoặc lập trình phòng thủ trong kịch bản này. Nếu nó phá hủy hệ thống làm việc của bạn, đó là trách nhiệm của bạn.

Gọi như vậy:

# 1   2          3           4     5    6
sudo bash lvmcryptocache /dev/sdb 32M 1968M
  1. Cần root để làm việc
  2. chạy script trong bash
  3. tên tập lệnh
  4. thiết bị khối bạn muốn sử dụng (chỉ được thử nghiệm với toàn bộ đĩa)
  5. kích thước siêu dữ liệu
  6. kích thước dữ liệu bộ đệm

Các tham số kích thước theo mặc định là MB: bạn sẽ cần tỷ lệ không gian siêu dữ liệu 1: 1000 cho không gian bộ đệm (ví dụ: nếu đĩa bộ nhớ cache của bạn là 180GB, bạn cần 180 MB không gian siêu dữ liệu và 179820 MB không gian dữ liệu - bạn có thể muốn làm tròn siêu dữ liệu lên một chút để thận trọng. Có giới hạn thấp hơn cho siêu dữ liệu là 8M.)

Bạn sẽ được nhắc nhập mật khẩu cho khối lượng bộ nhớ cache của mình - bạn sẽ được nhắc nhập mật khẩu cho cả hai đĩa trong khi khởi động.

Người giới thiệu


#! / bin / bash
#
# lvmcryptocache
#
# Thêm nhóm bộ đệm LVM trên và gắn nó vào ổ đĩa gốc
# Bao gồm mã hóa LUKS
# Giả sử bạn đang sử dụng cài đặt "tất cả trên root"
# Nếu bạn không, hãy điều chỉnh nó nếu bạn thích
#
# Script được cấp phép GPL3 trở lên
# © Adrian Wilkins tháng 5 năm 2015
#
# Truyền tên của thiết bị đĩa bạn đang sử dụng làm bộ đệm
# Điều này lý tưởng nên hoàn toàn trống, vì vậy hãy chạy
#
# dd if = / dev / zero of = / dev / $ {DISK}
#
# trong một thời gian ngắn để nuke bảng phân vùng

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

DISK_NAME = $ (tên cơ sở $ CACHE_DISK)

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

# Tạo khối lượng LUKS trong đĩa thô

cryptsetup luksFormat $ CACHE_DISK
cryptsetup mở --type luks $ CACHE_DISK $ CRYPT_VOLUME

# Bắt đầu thử và xử lý các công cụ kích thước đĩa nhưng nó phức tạp
# Hãy đi nếu bạn thích, tôi tiếp tục chạy ra khỏi phạm vi
#
# DISK_SIZE = $ (fdisk -l | grep "Đĩa $ {CACHE_DISK}" | awk '{in $ 5}')
# 
# META_SIZE = $ ((DISK_SIZE / 1000))
# META_SIZE = $ ((META_SIZE + 512))
# MOD = $ ((META_SIZE% 512))
# MOD_OFFSET = $ ((512 - MOD))
# META_SIZE = $ ((META_SIZE + 512)) 
# META_SIZE = $ ((META_SIZE + MOD_OFFSET))
# 
# DATA_SIZE = $ ((DISK_SIZE - META_SIZE))
# 

# Tạo PV mới bên trong khối lượng mã hóa

PVCreate $ CACHE_PV
vgextend ubfox-vg $ CACHE_PV
lvcreate -L $ {META_SIZE} -n cacheemeta ubfox-vg $ CACHE_PV
lvcreate -L $ {DATA_SIZE} -n cacheedata ubfox-vg $ CACHE_PV
lvconvert --type cache-pool --poolmetadata ubfox-vg / cachemeta --cachemode writethrough ub Ubuntu-vg / cacheedata --yes
lvconvert --type cache --cachepool ubfox-vg / cacheedata ubfox-vg / root

# Bây giờ thêm UUID của nhóm bộ nhớ cache PHYSICS DRIVE (/ dev / sdb) vào / etc / crypttab
DISK_UUID = $ (ls -al / dev / đĩa / by-uuid / | grep $ DISK_NAME | awk '{in $ 9}')
echo "$ {CRYPT_VOLUME} UUID = $ {DISK_UUID} không luks, loại bỏ" >> / etc / crypttab

cài đặt apt-get - có công cụ cung cấp mỏng

HOOK = $ (tempfile)
# Thêm tập lệnh hook vào initramfs để thêm các công cụ và mô-đun phù hợp

tiếng vang "#! / bin / sh"> $ HOOK
tiếng vang "PREREQ =" lvm2 "" >> $ HOOK
tiếng vang "prereqs ()" >> $ HOOK
tiếng vang "{" >> $ HOOK
tiếng vang "echo \" $ PREREQ \ "" >> $ HOOK
tiếng vang "}" >> $ HOOK
echo "trường hợp $ 1 trong" >> $ HOOK
tiếng vang "prereqs)" >> $ HOOK
tiếng vang "prereqs" >> $ HOOK
tiếng vang "thoát 0" >> $ HOOK
tiếng vang ";;" >> HOOK $
tiếng vang "esac" >> $ HOOK
echo "if [! -x / usr / sbin / cache_check]; then" >> $ HOOK
tiếng vang "thoát 0" >> $ HOOK
tiếng vang "fi" >> $ HOOK
echo ". / usr / share / initramfs-tools / hook-tests" >> $ HOOK
tiếng vang "copy_exec / usr / sbin / cache_check" >> $ HOOK
tiếng vang "hướng dẫn sử dụng_add_modules dm_cache dm_cache_mq dm_persistent_data dm_bufio" >> $ HOOK

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

tiếng vang "dm_cache" >> / etc / initramfs-tools / mô-đun
tiếng vang "dm_cache_mq" >> / etc / initramfs-tools / mô-đun
tiếng vang "dm_persistent_data" >> / etc / initramfs-tools / mô-đun
tiếng vang "dm_bufio" >> / etc / initramfs-tools / mô-đun

# Cập nhật initramfs

cập nhật-initramfs -u

echo Bây giờ khởi động lại!

1. Bạn đề nghị để trống đĩa bộ nhớ cache của bạn bằng 0 nhưng thay vào đó, bạn nên xóa nó một cách an toàn với dữ liệu ngẫu nhiên nếu bạn muốn đặt LUKS được mã hóa trên nó. 2. Trong thiết lập của bạn, bạn có 2 phân vùng LUKS, ngay cả khi bạn sử dụng cùng một cụm mật khẩu, bạn phải nhập hai lần, phải không?
solsTiCe

1. Việc xóa đĩa ngẫu nhiên là một chút lỗi thời trên phần cứng hiện đại - số không đủ để đưa đĩa vượt quá hầu hết các biện pháp cấp độ phi học thuật và chắc chắn vượt ra ngoài các phòng thí nghiệm phục hồi đĩa thương mại. Trừ khi khối lượng bạn đang sử dụng dữ liệu nhạy cảm được giữ trước đó , không cần thiết vì tất cả các khối được ghi vào nó sẽ được mã hóa; do các thuật toán cân bằng hao mòn, bạn không nên sử dụng ổ SSD có dữ liệu nhạy cảm rõ ràng trên đó. 2. Có, có 2 phân vùng LUKS, như tôi nói trong văn bản, bạn sẽ được nhắc cho cả hai cụm mật khẩu trong khi khởi động.
Adrian

việc xóa ngẫu nhiên KHÔNG phải là xóa dữ liệu trên SSD một cách an toàn mà để tránh sự xem xét kỹ lưỡng và có thể phân biệt dữ liệu được mã hóa với khoảng trống như 00000000zerazer000000000000. Ở đây bạn có thể thấy dữ liệu được mã hóa ở giữa. điều này làm suy yếu mã hóa của bạn thay vì nó bị ẩn ở giữa một món súp ngẫu nhiên.
solsTiCe

Tôi đã kết thúc với tuyến đường này sau khi tôi bị kẹt khi thiết lập bcache. Có vẻ như nó hoạt động khá tốt : | cache_utilization_pct | 79.096846147 |. Tuy nhiên, toptôi đang thấy iowait liên tục 20-50%. Đó có thể là một tác dụng phụ của bộ đệm?
Jean Jordaan

Tôi thực sự không thể tuyên bố muốn biết - nhưng tôi đoán nó có thể là tác dụng phụ của việc tối ưu hóa liên quan đến việc giảm thiểu ghi vào SSD. Bài viết về IOWait tại đây: thattommyhall.com/2011/02/18/iops-linux-iuler
Adrian
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.