Thay đổi mật khẩu trên hệ thống tập tin LUKS mà không biết mật khẩu


30

Tôi có một máy chủ Debian Wheezy đã chạy được một lúc với một ổ đĩa được mã hóa. Mật khẩu cho ổ đĩa được mã hóa ( /dev/sda5) bị mất khi tệp mật khẩu được mã hóa của tôi bị hỏng.

Tôi muốn có thể khởi động lại máy chủ này, nhưng điều đó tất nhiên sẽ yêu cầu mật khẩu đó. Vì ổ đĩa rõ ràng đang ở trạng thái được giải mã, có cách nào để thay đổi mật khẩu mà không cần biết mật khẩu cũ không?

cryptsetup luksChangeKey /dev/sda5 yêu cầu mật khẩu của âm lượng.

Tất nhiên tôi có thể rsynctắt tất cả mọi thứ và xây dựng lại, nhưng tôi muốn tránh điều đó. Tôi đã xem qua bộ nhớ ( #cat /dev/mem | less), nhưng không thể tìm thấy nó (đó là một điều rất tốt!).


2
Hmmmm .... Điều gì sẽ là điểm có một hệ thống tập tin được mã hóa nếu việc truy cập vào nó mà không có mật khẩu rất dễ dàng.
mdpc

7
@mdpc: Quip của bạn không có ý nghĩa. Anh ta quyền truy cập vào hệ thống tập tin, vì anh ta đã có mật khẩu khi máy chủ khởi động lần cuối.
G-Man nói 'Phục hồi Monica'

2
Chỉ vì bạn HAD mật khẩu (và nó bị hỏng) không làm mất hiệu lực nhận xét của tôi. Nói chung, nếu bạn quên mật khẩu cho bất kỳ loại tài liệu được mã hóa nào, thì nó sẽ bị mất vĩnh viễn nếu không thì điểm mã hóa ở nơi đầu tiên là gì?
mdpc

3
@mdpc Thì hiện tại, anh ta có quyền truy cập hiện tại vào hệ thống tập tin.
Patrick

Câu hỏi tương tự trên Super User: Mất mật khẩu LUKS, phân vùng được mã hóa mở (không trả lời).
G-Man nói 'Phục hồi Monica'

Câu trả lời:


40

Có, bạn có thể làm điều này bằng cách truy cập khóa chính trong khi âm lượng được giải mã.

Nhanh chóng và bẩn thỉu để thêm cụm mật khẩu mới:

device=/dev/sda5
volume_name=foo
cryptsetup luksAddKey $device --master-key-file <(dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p)

devicevolume_namenên được thiết lập phù hợp.
volume_namelà tên của khối lượng được giải mã, cái mà bạn nhìn thấy /dev/mapper.


Giải trình:

Khối lượng LUKS mã hóa dữ liệu của họ bằng khóa chính. Mỗi cụm mật khẩu bạn thêm chỉ cần lưu một bản sao của khóa chính được mã hóa với cụm mật khẩu đó. Vì vậy, nếu bạn có khóa chính, bạn chỉ cần sử dụng nó trong một khe khóa mới.

Hãy xé bỏ lệnh trên.

$ dmsetup table --showkeys $volume_name

Điều này đưa ra một loạt các thông tin về khối lượng được giải mã tích cực. Đầu ra trông như thế này:

0 200704 crypt aes-xts-plain64 53bb7da1f26e2a032cc9e70d6162980440bd69bb31cb64d2a4012362eeaad0ac 0 7:2 4096

Trường số 5 là khóa chính.

 

$ dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p

Sẽ không hiển thị đầu ra của dữ liệu này dưới dạng dữ liệu nhị phân, nhưng điều này làm là lấy khóa chính cho âm lượng, sau đó chuyển đổi nó thành dữ liệu nhị phân thô cần thiết sau này.

 

$ cryptsetup luksAddKey $device --master-key-file <(...)

Điều này nói với cryptsetup để thêm một khóa mới vào âm lượng. Thông thường hành động này yêu cầu một khóa hiện có, tuy nhiên chúng tôi sử dụng --master-key-fileđể nói với nó rằng chúng tôi muốn sử dụng khóa chính thay thế.
Các <(...)là thay lệnh shell & chuyển hướng. Về cơ bản, nó thực thi mọi thứ bên trong, gửi đầu ra đến một đường ống và sau đó thay thế <(...)bằng một đường dẫn đến đường ống đó.

 

Vì vậy, toàn bộ lệnh chỉ là một lớp lót để ngưng tụ một số hoạt động.


Tôi không chắc mình có làm gì sai không nhưng LUKS của tôi không hiển thị một chuỗi nào giống như chuỗi bạn đang hiển thị trong ví dụ. Đó là một số nhỏ gồm 9 chữ số. Ngoài ra của tôi hiển thị là "tuyến tính 8: 3".
slm

@slm Nếu nó hiển thị linear, thì đó không phải là một khối LUKS mở (giá trị sai volume_nametrong lệnh được cung cấp). Một khối lượng LUKS mở sẽ có crypttrong trường thứ 3. Trong cryptsetup luksOpen /dev/foo bar, volume_namegiá trị sẽ là bar.
Patrick

Giờ đã hiểu. Có một khối lượng được /dev/mapperđặt tên luks-...... Đó là âm lượng bạn cần sử dụng, không phải LVM, được ánh xạ âm lượng hợp lý.
slm

1
Có vẻ như với các phiên bản gần đây của dmsetup, định dạng của dmsetup tableđã thay đổi. Ít nhất với tôi khóa chủ được hiển thị trong cột $6.
Karol Babioch

@KarolBabioch có lẽ bạn không chỉ định tên âm lượng?
frostschutz
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.