Mã hóa toàn bộ đĩa với xác thực hai yếu tố cho Ubuntu: Làm thế nào?


9

Thông tin lai lịch

Tôi là một người mới sử dụng Linux gần đây đã loại bỏ Windows. Tôi hiện đang sử dụng Ubuntu 11.04 mà không cần mã hóa toàn bộ đĩa. Chỉ thư mục nhà của tôi được mã hóa và với eCryptFS. Gần đây, tôi bắt đầu nhận thấy rằng mã hóa không minh bạch như mong muốn. VMWare, chẳng hạn, đôi khi gặp sự cố đối với các máy ảo được lưu trữ trong thư mục nhà được mã hóa của tôi, vì vậy tôi chỉ cần di chuyển các máy ảo đến một vị trí không được mã hóa và liên kết với nó từ thư mục nhà được mã hóa của tôi. Nhưng đó là điểm chính: Tôi nhận ra rằng thực sự không an toàn khi để hệ thống không được mã hóa do một hệ điều hành nguồn mở như Ubuntu rất dễ sửa đổi để tiết lộ thông tin mà nó được cho là sẽ giữ bí mật.


Mục tiêu

Tôi muốn có thể có mã hóa toàn bộ đĩa hoạt động cùng với một thiết bị chính và mật khẩu để xác thực trước khi khởi động.


Yêu cầu / Chi tiết

  1. Toàn bộ đĩa phải được mã hóa. Tối thiểu, đĩa bao gồm các phân vùng riêng lẻ được mã hóa. Nếu có thể ẩn ngay cả các phân vùng bằng mã hóa, tôi sẽ tìm nó. Mã hóa càng minh bạch thì càng tốt; Tôi không cần phải sử dụng máy tính của mình khác hoặc cấu hình bất cứ thứ gì khác.
  2. Thiết bị được sử dụng để mở khóa và khởi động phân vùng được mã hóa phải là một thiết bị di động nhỏ bên ngoài. Điều này phục vụ hai mục đích: bộ tải khởi động ít có khả năng bị thay đổi cho các mục đích độc hại vì nó sẽ ở lại với tôi khi không sử dụng; và các tệp chính để giải mã đĩa sẽ không được tìm thấy ở bất kỳ đâu trên chính đĩa được mã hóa dưới mọi hình thức.
  3. Các tập tin quan trọng nên được mã hóa bằng mật khẩu. Nếu tôi mất cả máy tính và thiết bị USB, dữ liệu và hệ điều hành sẽ vẫn an toàn. Nếu tôi mất khóa USB hoặc nó bị xâm phạm, tôi có thể tạo một cái sạch khác từ bản sao lưu. Không có thông tin được tiết lộ trong cả hai trường hợp. Tất nhiên, nếu tôi mất máy tính, điều đó không quan trọng.

Vâng, tôi đã xem hướng dẫn từ nhiều nơi, nhưng vấn đề là họ không giải quyết được tất cả các yêu cầu (đặc biệt là số 3). Tôi khá chắc chắn rằng các yêu cầu của tôi đủ phổ biến để ai đó đã thử và thực hiện thành công một thiết lập như vậy. Tôi rất biết ơn nếu bất kỳ Linux pro nào có thể chia sẻ một giải pháp.


2
Re "vì một hệ điều hành nguồn mở như Ubuntu rất dễ sửa đổi để tiết lộ thông tin nên được giữ bí mật." - Bạn sẽ ngạc nhiên về việc dễ dàng thuyết phục các hệ điều hành nguồn đóng làm điều tương tự. Việc một chương trình là nguồn mở có nghĩa là không có gì về bảo mật hoặc sự không an toàn của nó trước các cuộc tấn công cục bộ.
dùng1686

Câu trả lời:


2

Có một cách đơn giản để mã hóa toàn bộ đĩa yêu cầu sự hiện diện của một ổ đĩa cụ thể VÀ mật khẩu của bạn để khởi động.

Những gì bạn làm là tách tiêu đề LUKS khỏi ổ cứng được mã hóa hoàn toàn của bạn và lưu nó trên ổ ngón tay cái của bạn.

Tôi sẽ cho rằng bạn đã có các thiết lập sau:

# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2

Tạo một bản sao của tiêu đề luks và xóa nó khỏi thiết bị cục bộ:

mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2

Chạy bước cuối cùng nhiều lần nếu bạn là mục tiêu của một cơ quan ngân sách cao. Tôi cũng đã tạo một ramdisk để giữ tiêu đề tạm thời để nó không tồn tại sau đó.

Với thiết bị usb của bạn trong / dev / sdb, tạo phân vùng 2MB và tải tiêu đề lên nó:

parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1

Ngay bây giờ, mọi thứ trong / dev / sda2 trông giống như dữ liệu ngẫu nhiên và bạn có tiêu đề của mình trong / dev / sdb1. Để truy cập ổ đĩa được mã hóa theo cách thủ công, bạn sử dụng:

cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target

Bước tiếp theo là yêu cầu quá trình khởi động của bạn yêu cầu lắp ổ đĩa khi khởi động. Tôi thấy dễ dàng hơn khi chỉ cho rằng nó sẽ ở đó và thất bại. Trước tiên, hãy tìm id và UUID của thiết bị của bạn:

find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2

blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"

Tiếp theo chỉnh sửa /etc/crypttabdòng của bạn để trông như thế này:

root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1

(Bạn có thể cần bản vá này để nhận hỗ trợ cho headertùy chọn trong crypttab)

Cuối cùng nhưng không kém phần quan trọng, hãy cập nhật initram của bạn:

update-initramfs -u

Bạn có thể tiến thêm một bước này và thực sự có toàn bộ phân vùng khởi động được tải trên ổ đĩa USB . Tác giả của bài viết này là trên trang web này đang theo dõi .

nhiều cách tiếp cận khác nhau mà bạn có thể thực hiện , với mức độ bảo mật và sự thuận tiện khác nhau.

Một lưu ý cụ thể về bảo mật: nếu cụm mật khẩu của bạn bị xâm phạm, bất kỳ ai có bản sao của tiêu đề sẽ có thể giải mã dữ liệu, ngay cả khi bạn thay đổi cụm mật khẩu sau này.


1

Tôi biết rằng TrueCrypt có sẵn cho OSX, Windows và Linux. Bạn có thể thực hiện hai cấp mã hóa cho toàn bộ ổ đĩa. Tôi đã sử dụng nó trên Debian với mã hóa toàn bộ đĩa AES. Nó yêu cầu mật khẩu khi khởi động để truy cập dữ liệu trên ổ cứng.


3
Tôi nghĩ mã hóa toàn bộ đĩa TrueCrypt chỉ hoạt động với Windows.
Kevin Li

two levels of encryption for the whole drive! =two factor auth
GnP
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.