dừng crypttab yêu cầu mật khẩu để trao đổi


10

Tôi đã cài đặt một hệ thống 11.04 mới khi nó được phát hành và thiết lập mã hóa toàn bộ đĩa bằng LUKS. Lúc đầu, nó hỏi tôi mật khẩu cho ba phân vùng được mã hóa của tôi:

/
/home
swap

Gõ vào cụm mật khẩu ba lần khiến tôi bực bội, vì vậy tôi đã cố gắng thiết lập / home và trao đổi để giải mã từ một keyfile được lưu trữ trên /. Tôi đã tạo keyfile và kích hoạt nó trên hai phân vùng. Crypttab của tôi bây giờ trông như thế này:

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

Điều này hoạt động tốt cho / nhà, được gắn tự động mà không yêu cầu mật khẩu. Nhưng cryptsetup vẫn yêu cầu mật khẩu cho không gian trao đổi. Tôi thậm chí đã thử thêm noauto vào không gian hoán đổi để nó hoàn toàn không được thiết lập - một khi hệ thống được khởi động, tôi có thể kích hoạt nó mà không cần cụm mật khẩu, vì vậy tôi nghĩ rằng tôi chỉ cần thêm một tập lệnh init muộn để làm nó, nhưng ngay cả với noauto cryptsetup vẫn yêu cầu cụm mật khẩu.

Cảm ơn!


4
Vì lý do này, nên sử dụng LVM + LUKS trong trường hợp có nhiều phân vùng. Crypsetup có thể được sử dụng ở trên hoặc bên dưới lớp LVM (ở trên -> hệ thống tập tin, bên dưới -> đĩa). Sử dụng cryptsetup bên dưới LVM có lợi thế là bạn chỉ cần một phân vùng được mã hóa (LVM).
Lekensteyn

Câu trả lời:


10

Có cùng một câu hỏi, đây là cách tôi đã thực hiện trên Ubuntu 12.04.1 và 12.10,

- trước khi bắt đầu, hãy chắc chắn rằng bạn có một bản sao lưu và cũng có thể khởi động hệ thống của bạn với ubfox cd hoặc usb; như thể bạn mắc lỗi, hệ thống của bạn có thể không khởi động được nữa hoặc bạn có thể mất dữ liệu. Tôi giả sử bạn có một hệ thống Ubuntu được mã hóa với LUKS, bên trong LUKS bạn có 3 phân vùng, HỆ THỐNG-BOOT (không được mã hóa), HỆ THỐNG-SWAP (được mã hóa) và HỆ THỐNG (được mã hóa) -

Bạn cần điều chỉnh UUID, HỆ THỐNG-SWAP_crypt, HỆ THỐNG-OS_crypt, HỆ THỐNG-SWAP, HỆ THỐNG-HỆ THỐNG theo biến thể được sử dụng trên hệ thống của bạn, vui lòng xem liên kết tham khảo bên dưới giải pháp của tôi để biết thêm

Nhận UUID:

blkid

Chuẩn bị>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

Yêu cầu cryptsetup tính toán cụm mật khẩu của phân vùng trao đổi từ khóa giải mã của ổ chứa hệ thống tập tin gốc>

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

báo cho hệ thống về phân vùng trao đổi, chỉnh sửa crypttab>

nano /etc/crypttab

=? đảm bảo hai dòng khớp

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

báo cho hệ thống về phân vùng trao đổi, chỉnh sửa fstab>

nano /etc/fstab

=? đảm bảo bạn có dòng này

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

báo cho hệ thống về phân vùng trao đổi, chỉnh sửa sơ yếu lý lịch>

nano /etc/initramfs-tools/conf.d/resume

=? đảm bảo bạn có dòng này

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

cập nhật initramfs trên phân vùng khởi động>

update-initramfs -u -k all

Tài liệu tham khảo

Câu trả lời được lấy cảm hứng từ Thiết lập hệ thống Debian được mã hóa (liên kết lưu trữ):

Nếu bạn đang sử dụng một hệ thống Debian được mã hóa, bạn có thể có một số yêu cầu bảo mật để đáp ứng. Nếu đó là trường hợp, bạn cũng phải sử dụng phân vùng trao đổi được mã hóa.

Phân vùng trao đổi có thể được mã hóa theo hai cách:

  • nó có thể được tạo lại trên mỗi lần khởi động, sử dụng cụm mật khẩu ngẫu nhiên hoặc
  • nó có thể được tạo như các khối được mã hóa khác với cụm mật khẩu liên tục

Nếu bạn muốn sử dụng tạm dừng vào đĩa, bạn không thể sử dụng cách tiếp cận đầu tiên vì nó sẽ ghi đè lên dấu chân bộ nhớ của bạn được lưu trữ trong phân vùng trao đổi. Hơn nữa, bạn không thể sử dụng một tệp chính như các phân vùng khác, vì hệ thống tệp gốc không (và không phải) được gắn vào thời điểm quá trình tiếp tục bắt đầu và cần đọc phân vùng trao đổi được giải mã.

Cách tôi giải quyết điều này là bằng cách yêu cầu cryptsetup tính toán cụm mật khẩu của phân vùng trao đổi từ khóa giải mã của ổ đĩa giữ hệ thống tập tin gốc; gói cryptsetup thực hiện điều này với /lib/cryptsetup/scripts/decrypt_derived. Vì vậy, để thiết lập phân vùng trao đổi, tôi làm như sau, giả sử hda2là phân vùng giữ trao đổi được mã hóa và hệ thống tập tin gốc nằm trong hda5_crypt:

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

Để nói với hệ thống về phân vùng trao đổi này, chúng ta cần thêm nó vào /etc/crypttab/etc/fstab; đảm bảo rằng các tệp đó chứa các dòng như sau:

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

Với vị trí này, ngay khi bạn định cấu hình hệ thống để tạm dừng vào đĩa, phân vùng trao đổi sẽ được tự động thiết lập cùng với hệ thống tệp gốc từ rất sớm trong chuỗi khởi động. Để tìm ra phân vùng trao đổi nào khả dụng tại thời điểm đó, cryptsetup kiểm tra các mục sau: asfasfafs - một dòng như RESUME=/dev/mapper/hda2_crypttrong /etc/initramfs-tools/conf.d/resume - một thiết bị tiếp tục cài đặt trong /etc/uswsusp.conf(xem uswsusp.conf(5)) - một mục trong /etc/suspend.conf - một resume=/dev/mapper/hda2_crypttrong dòng lệnh kernel

Bạn có thể kiểm tra /usr/share/initramfs-tools/hooks/cryptrootnếu bạn muốn biết thêm về điều này.


Chào mừng bạn đến hỏi Ubuntu! Sẽ có +1 nếu không chỉ đơn giản là sao chép / dán mà không quan tâm đến định dạng (mà tôi vừa làm). Tôi thích cách "nó có thể được tạo lại trên mỗi lần khởi động, sử dụng cách tiếp cận cụm mật khẩu ngẫu nhiên" ở đây.
gertvdijk

đã thêm các lệnh tôi thực sự sử dụng vào câu trả lời, tôi cũng sẽ kiểm tra nó vào ngày 12.10, sẽ cập nhật câu trả lời sau
Hoàng tử

Được chứ. Tôi giả sử bạn sao chép / dán nó hoàn toàn. Vui lòng thay đổi nó để rõ ràng về những thay đổi bạn đã thực hiện để làm cho nó hoạt động. Sẽ rất hữu ích, cảm ơn!
gertvdijk

đừng thử nó vào ngày 12.10 khi tôi gặp phải một lỗi ngăn cản khởi động, tôi nhận được "cryptsetup lvm không khả dụng", báo cáo tìm kiếm trả về lỗi của Google. cần nhìn sâu hơn nhưng không có thời gian, sẽ cho bạn biết sau.
Hoàng tử

đã cập nhật câu trả lời, hệ thống 12.10 của tôi hiện có đầy đủ chức năng và chỉ yêu cầu một mật khẩu, tôi không cập nhật-initramfs -u -k tất cả đã tạo ra vấn đề tôi đã đề cập trên bình luận trước đó. @gertcdijk hình thành mọi thứ, hy vọng bạn hạnh phúc ngay bây giờ
Hoàng tử

4

Điều này có thể chỉ ra rằng phân vùng trao đổi đang được truy cập trong initramfsphần của quá trình khởi động. Tại thời điểm này, hệ thống tệp gốc chưa được gắn kết, vì vậy mọi tệp cấu hình được lưu trữ ở đó sẽ không hiển thị.

Mặc dù không gian hoán đổi được gắn sau hệ thống tệp gốc, có một lý do để initramfsquá trình khởi tạo truy cập vào không gian hoán đổi: khi bạn ngủ đông máy tính, nội dung của bộ nhớ và trạng thái hệ thống được ghi để trao đổi. Để tiếp tục từ chế độ ngủ đông, cần kiểm tra xem không gian hoán đổi có chứa hình ảnh ngủ đông cần cụm từ vượt qua hay không.

Nếu bạn không mất khả năng tiếp tục ngủ đông, bạn có thể vô hiệu hóa hành vi này bằng cách chỉnh sửa /etc/initramfs-tools/conf.d/resumevà nhận xét dòng bắt đầu bằng RESUME=. Sau khi thực hiện thay đổi, hãy chạy update-initramfs -uđể cập nhật initramfshình ảnh.


Ah cảm ơn bạn! Tôi không chắc chắn tôi muốn hy sinh ngủ đông. Tôi không sử dụng nó thường xuyên, nhưng khi pin cạn kiệt mà tôi không nhận ra, nó có ích. Bạn có biết có cách nào để cryptsetup sử dụng lại cùng một mật khẩu cho / không?
Brad

Tôi không biết cách nào để làm điều đó. Và trước khi bạn hỏi, đừng thử đặt một bản sao của keyfile của bạn vào initramfs. Mặc dù nó sẽ thoát khỏi dấu nhắc mật khẩu, nhưng nó cũng sẽ cung cấp cho bất kỳ ai có quyền truy cập vật lý vào đĩa.
James Henstridge
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.