Làm cách nào để tạo một phân vùng trao đổi được mã hóa, khóa ngẫu nhiên, tham khảo đến nó bởi by by uuid, trên Debian?


8

Điều hợp lý là nếu bạn có bất kỳ loại mã hóa thiết bị khối nào được triển khai trên hệ thống GNU / Linux của bạn, để mã hóa phân vùng trao đổi của bạn, vì mọi dữ liệu được giải mã có thể được ghi bằng văn bản rõ ràng bất cứ lúc nào để trao đổi.

Nhìn vào trang man debian cho "crypttab" tôi thấy một ví dụ về việc tạo phân vùng trao đổi khóa ngẫu nhiên khi khởi động, do đó, khóa được đặt ngẫu nhiên khi tiến hành khởi động và chỉ được biết đến với hệ thống:

# Encrypted swap device
cswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap

Trong ví dụ này, thiết bị trao đổi được gọi bằng một đường dẫn dev thông thường tức là /dev/sda6

Đường dẫn thiết bị tuyệt đối có thể thay đổi và được gán lại khi khởi động nếu, ví dụ, ổ USB được cắm vào. Một người dùng sẽ rất không hài lòng nếu /dev/sda6tình cờ là một phân vùng khác so với dự kiến ​​và sau đó nó đã bị ghi đè bằng dữ liệu trao đổi ngẫu nhiên !!

Vì vậy, giải pháp có vẻ là: sử dụng UUID thay vì đường dẫn thiết bị (vì UUID không nên thay đổi), thay thế /dev/sda6bằng/dev/disk/by-uuid/<whatever the uuid of dev/sda6 is>

NHƯNG ... đây là vấn đề: Mỗi lần cryptsetup tạo lại phân vùng trao đổi được mã hóa khi khởi động, nó sẽ tạo ra một UUID mới cho nó! Đừng!

Vì vậy, chúng ta cần bảo tồn UUID của hệ thống tệp được mã hóa này bằng cách nào đó. Tôi nghĩ cryptsetup có thể làm điều này với công --offsettắc của nó , cho phép duy trì tiêu đề LUKS và do đó là UUID.

Tôi đã tìm thấy URL này: https://wiki.archlinux.org/index.php/System_Encoding_with_LUKS#Using_UUIDs_with_encrypted_swap_partitions

Có ai biết cách triển khai giải pháp được mô tả cho Arch Linux trên hệ điều hành Debian không? Các tập lệnh init được đề cập trong tài liệu dường như không tồn tại trên Hệ điều hành Debian

Cảm ơn!

EDIT One có thể sử dụng ecryptfs để đạt được cùng một kết thúc (không gian hoán đổi được mã hóa) bằng cách sử dụng lệnh: ecryptfs-setup-swap Không có vấn đề bao vây mã hóa thiết bị. Hãy xem truy vấn AskUbfox này


"Người ta có thể sử dụng ecryptfs để đạt được cùng một kết quả [...] Nếu không có vấn đề bao vây mã hóa thiết bị." Không, bởi vì ecryptfs-setup-swapchỉ là một người trợ giúp cấu hình dm-crypt/ crypttabcho bạn. Là ecryptfsmột trình điều khiển cấp tệp, nó không xử lý toàn bộ các phân vùng, do đó, trang trại này tắt dm-crypt. Bạn có thể thấy phương pháp này thân thiện hơn với người dùng, nhưng cuối cùng bạn không đạt được điều gì khác biệt. Nếu bất cứ điều gì, những khuyết tật của phương pháp này (bao gồm cả UUID) có thể khiến tôi nhiều bối rối hơn nếu tôi vừa làm được điều đó bản thân mình từ nguyên tắc đầu tiên ... mặc dù tôi học được nhiều hơn nữa.
gạch dưới

Câu trả lời:


6

Mỗi lần cryptsetup tạo lại phân vùng trao đổi được mã hóa khi khởi động, nó sẽ tạo ra một UUID mới cho nó! Đừng!

Trong / etc / crypttab, sử dụng / dev / đĩa / by-id thay vì / dev / đĩa / by-UUID để chỉ phân vùng trao đổi của bạn. Ví dụ: mục / etc / fstab của bạn để trao đổi có thể là

#<file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/cswap none swap sw 0 0

Sau đó, mục tương ứng chính xác trong / etc / crypttab sẽ giống như

# <name> <device> <password> <options>
cswap /dev/disk/by-id/ata-SAMSUNG_SSD_830_Series_S0XYNEAC762041-part5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256

Lưu ý rằng thiết bị ở trên được gọi bằng / dev / đĩa / by-id mà bạn có thể tìm ra cho ổ đĩa của mình bằng cách nhập nội dung sau tại CLI:

ls -lF /dev/disk/by-id

Lưu ý rằng tên by-id đề cập đến cả kiểu máy và số sê-ri, rất khó có khả năng trùng lặp với bất kỳ thiết bị nào khác mà bạn có thể cắm vào.
cscracker

... Mà, vì lợi ích của những độc giả có thể tự hỏi, là một điều rất tốt. Bạn không muốn định cấu hình trao đổi được mã hóa của mình khi /dev/sdaNsau đó cắm vào đĩa khác và thấy rằng thứ tự đặt tên kernel của bạn đã bị thay đổi và một trong các phân vùng không trao đổi của bạn đã bị hỏng. UUID cũng sẽ tốt, nhưng tôi nghĩ vấn đề chính là nó được lưu trữ trong một vài byte đầu tiên của phân vùng, vì vậy chúng ta có được kịch bản gà và trứng không hòa tan được thảo luận ở đây.
gạch dưới

3

Trong / etc / crypttab của tôi, tôi có

# <target name>  <source device>        <key file>   <options>
swap             /dev/mapper/cswap      /dev/random  swap

Ở đây / dev / mapper / cswap là một khối hợp lý được tạo bởi LVM, nó đảm nhiệm việc gán chính xác tên khối lượng logic bất kể tên ký tự ổ đĩa. Nó cũng cho phép tôi dễ dàng thay đổi kích thước phân vùng trao đổi của mình.


0

Hãy thử thực hiện phần còn lại của giải pháp, bỏ qua tệp init. Có vẻ như bit init script chỉ ở đó để bảo vệ bạn. Theo cách đó, Debian không bảo vệ bạn theo cách đó hoặc nó sẽ cung cấp cho bạn một thông báo lỗi khi bạn cố gắng khởi động với nó, điều đó hy vọng sẽ đưa bạn đến đúng nơi.

Tôi cũng phải cẩn thận rằng IIRC Debian và ArchLinux có các định dạng khác nhau cho / etc / crypttab (thật điên rồ, tôi biết, nhưng tôi đã chuyển từ Ubuntu sang Arch vài năm trước và cuối cùng đã quyết định sử dụng bash thẳng thay vì can thiệp bằng crypttabs).


Cám ơn phản hồi của bạn. Có, tôi đồng ý rằng tập lệnh Arch là kiểm tra độ tỉnh táo để đảm bảo phân vùng có vẻ là phân vùng trao đổi. Nhưng tôi đang tưởng tượng rằng đã để một ổ USB được cắm và khởi động lại để tìm phân vùng không trao đổi đang được sử dụng. Tôi nghĩ rằng tôi sẽ khóc những giọt nước mắt thực sự ... Tôi biết ơn tất cả những kiểm tra về sự tỉnh táo mà tôi có thể nhận được!
Geeb

Điều đó không nên xảy ra vì bạn đang sử dụng UUID của nó để tìm nó ở nơi đầu tiên. Vì vậy, tất cả những gì nó sẽ tìm thấy là phân vùng trao đổi, hoặc không có gì.
idupree

0

chạy ecryptfs-setup-exchange hoặc thủ công:

Cấu hình này sử dụng các khóa được tạo ngẫu nhiên khi khởi động và sẽ không hỗ trợ Ngủ đông cho đĩa cứng! Bạn nên vô hiệu hóa chế độ ngủ đông thông qua tiện ích quản lý năng lượng DE đáng kính của bạn và đặt nó thành Tắt máy khi quan trọng để tránh mất dữ liệu!

Chuyển sang tài khoản quản trị / root

su root hoặc sudo cho mỗi lệnh

Vô hiệu hóa hoán đổi

hoán đổi -a

Xác định vị trí phân vùng hoán đổi hiện có

lsblk

ví dụ: sda3 8: 3 0 8G 0 phần [SWAP]

Ghi đè Hoán đổi cũ

dd if = / dev / zero bs = 1024000 of = / dev / sda <#>

ví dụ: dd if = / dev / zero bs = 1024000 of = / dev / sda3

Thiết lập FSTAB

vim / etc / fstab

Thay thế thiết bị SWAP cũ bằng tên của trình ánh xạ crypttab: / dev / mapper / cswap

OLD UUID = d03f3d8e-7888-48a5-b3cc-41de8dbbcfdc hoán đổi hoán đổi mặc định 0 0

MỚI

/ dev / mapper / cswap none exchange Pri = 1, mặc định 0 0

Thiết lập tiền điện tử

ls -lF / dev / đĩa / by-id

Ví dụ: ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3

vim / etc / crypttab

cswap / dev / đĩa / by-id / ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 / dev / urandom hoán đổi, mật mã = ​​aes-cbc-essiv: sha256, size = 256

Hoán đổi mã hóa hoạt động

Khởi động lại máy tính

Xác minh các hoạt động hoán đổi được mã hóa

thông tin dmsetup -C

Ví dụ: cswap 253 0 L - w 2 1 0 CRYPT-PLAIN-cswap

lsblk

Ví dụ ├─sda3 8: 3 0 8G 0 phần
│ ─cswap 253: 0 0 8G 0 mật mã [SWAP]

mèo / Proc / hoán đổi

ví dụ: Kích thước loại tên tệp Ưu tiên sử dụng / dev / dm-0 phân vùng 8385532 0 -1

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.