Mã hóa toàn bộ đĩa cứng LUKS: Hướng dẫn thiết lập máy chủ Linux

15 phút đọc - 5 tháng 6, 2026

hero section cover
Mục lục
  • Hướng dẫn máy chủ mã hóa toàn bộ đĩa LUKS
  • Tại sao lại là LUKS2 và điều gì cần kiểm tra trước tiên
  • Cấu trúc đĩa
  • Cài đặt LUKS với LVM
  • Quản lý khóa và mở khóa từ xa
  • Tăng cường bảo mật và tránh bị khóa
Chia sẻ

Mã hóa toàn bộ đĩa LUKS cho máy chủ Linux, bao gồm thiết lập LUKS2, bố cục LVM, quản lý khóa, mở khóa từ xa bằng Tang và TPM, và tăng cường bảo mật.

Hướng dẫn máy chủ mã hóa toàn bộ đĩa LUKS

LUKS (Linux Unified Key Setup) mã hóa toàn bộ thiết bị khối Linux để nội dung không thể đọc được nếu không có khóa chính. Một ổ đĩa bị đánh cắp, một khung máy đã ngừng sử dụng, một ổ đĩa sao lưu bị quên: không có trường hợp nào trong số đó làm lộ dữ liệu của bạn một khi LUKS đã được cài đặt đúng cách. Bài viết này hướng dẫn cách triển khai mã hóa toàn bộ đĩa LUKS trên máy chủ, bao gồm bố cục LVM, quản lý khóa, mở khóa từ xa và các tình huống lỗi khiến người dùng không thể truy cập vào dữ liệu của chính mình.

Thực hiện tham chiếu ở đây là LUKS2 với LVM bên trong vùng chứa được mã hóa, trên máy chủ Linux có AES-NI trong CPU. Sự kết hợp này xử lý mọi khối lượng công việc hiện đại, hoạt động hiệu quả và đáp ứng các yêu cầu về dữ liệu tại chỗ trong HIPAA, PCI-DSS, GDPR và SOC 2.

Tại sao lại là LUKS2 và điều gì cần kiểm tra trước tiên

LUKS mã hóa ở lớp thiết bị khối bằng cách sử dụng dm-crypt, với khóa chính được lưu trữ trong các khe khóa bên trong tiêu đề LUKS. Sự tách biệt đó rất quan trọng: bạn có thể thay đổi mật khẩu hoặc thêm khóa mới mà không cần mã hóa lại đĩa.

LUKS2 là mặc định hiện tại. Nó hỗ trợ tối đa 32 keyslots, siêu dữ liệu định dạng JSON, mã hóa lại trực tuyến và mã hóa được xác thực qua cờ --integrity cờ. LUKS1 hỗ trợ 8 khe khóa và hoạt động tốt trên các hệ thống cũ, nhưng các triển khai mới nên bắt đầu với LUKS2.

Chi phí hiệu suất với AES-NI thường dưới 5% trên phần cứng hiện đại. Kiểm tra trước khi bắt đầu:

grep -o aes /proc/cpuinfo | head -1
cryptsetup benchmark

Nếu grep không trả về kết quả nào, CPU của bạn thiếu AES-NI và quá trình mã hóa sẽ bị giới hạn bởi CPU khi có I/O nặng. cryptsetup benchmark hiển thị thông lượng cho từng thuật toán mã hóa để bạn có thể chọn thuật toán nhanh nhất mà phần cứng của bạn hỗ trợ. Đồng thời, hãy xác nhận rằng cryptsetup đã được cài đặt và dm-crypt mô-đun kernel có sẵn hay không. Cả hai đều được cài đặt sẵn trên Ubuntu, Debian, RHELArch.

Cấu trúc đĩa

Hai phân vùng không được mã hóa: phân vùng hệ thống EFI (512 MB FAT32) và /boot (1 đến 2 GB, ext4 hoặc xfs). GRUB cần đọc cả hai trước khi có thể yêu cầu mật khẩu. Mọi thứ khác đều nằm trong vùng chứa LUKS.

Cấu trúc được khuyến nghị là LVM bên trong LUKS: một vùng chứa LUKS chứa một nhóm khối lượng LVM, với các khối lượng logic cho root, swap và bất kỳ phân vùng dữ liệu nào. Điều này giúp giữ cho siêu dữ liệu LVM được mã hóa và cho phép bạn thay đổi kích thước hoặc chụp nhanh khối lượng mà không cần chạm vào lớp LUKS. LUKS-on-LVM cũng hoạt động, nhưng nó sẽ hiển thị cấu trúc nhóm khối lượng.

Phân vùngKích thướcHệ thống tệpĐược mã hóa
Hệ thống EFI512 MB đến 1 GBFAT32Không
/boot1 đến 2 GBext4 / xfsKhông
Thùng chứa LUKSDung lượng còn lạiLUKS2
LVM gốc20 đến 100 GB+ext4 / xfsCó (bên trong LUKS)
LVM swapBằng với RAMswapCó (trong LUKS)

ext4 là tùy chọn mặc định an toàn cho phân vùng gốc. Hệ thống tệp xfs xử lý tệp lớn và ghi song song tốt hơn, điều này quan trọng đối với các máy chủ truyền thông, học máy (ML) và cơ sở dữ liệu. Đối với SSD và NVMe, hãy thêm tùy chọn discard tùy chọn /etc/crypttab để bật TRIM. TRIM tiết lộ các sector đang được sử dụng, đây là một lỗ hổng rò rỉ thông tin nhỏ. Đối với hầu hết các tác vụ, lợi ích cân bằng hao mòn là đáng giá. Nếu mô hình đe dọa của bạn bao gồm phân tích pháp y thiết bị, hãy tắt tính năng này.

Cài đặt LUKS với LVM

Xác định đĩa đích bằng lsblk và xóa mọi siêu dữ liệu hiện có:

wipefs -a /dev/sdX

Tùy chọn ghi đè bằng dữ liệu ngẫu nhiên để các khối được mã hóa không thể phân biệt với không gian trống:

dd if=/dev/urandom of=/dev/sdX bs=1M status=progress

Khởi tạo vùng chứa LUKS2. Sử dụng --sector-size 4096 cho NVMe và SSD hiện đại có các sector vật lý 4K:

cryptsetup luksFormat --type luks2 --sector-size 4096 /dev/sdX
cryptsetup luksOpen /dev/sdX cryptdata

Sao lưu tiêu đề ngay lập tức, trước khi bạn đưa bất kỳ dữ liệu nào vào đĩa:

cryptsetup luksHeaderBackup /dev/sdX --header-backup-file luks-header-backup.img

Tạo LVM trên container đã mở khóa, sau đó định dạng các khối logic:

pvcreate /dev/mapper/cryptdata
vgcreate vg_secure /dev/mapper/cryptdata
lvcreate -L 50G -n lv_root vg_secure
lvcreate -L 8G -n lv_swap vg_secure
 
mkfs.xfs /dev/vg_secure/lv_root
mkswap /dev/vg_secure/lv_swap

Thêm một mục vào /etc/crypttab bằng cách sử dụng UUID, không /dev/sdX, vì nó có thể thay đổi giữa các lần khởi động lại. Lấy nó bằng blkid /dev/sdX:

cryptdata UUID=<your-uuid> none luks,discard

Sau đó gắn vào qua /etc/fstab:

/dev/vg_secure/lv_root  /  xfs  defaults,noatime  0 1

Tạo lại initramfs để các hook mã hóa được tải khi khởi động:

# Debian/Ubuntu
update-initramfs -u -k all
 
# RHEL/Fedora
dracut -f --regenerate-all

Khởi động lại, nhập mật khẩu và xác nhận cài đặt bằng cryptsetup status cryptdatalsblk -f. Lệnh sau sẽ hiển thị crypto_LUKS là FSTYPE trên phân vùng được mã hóa.

Quản lý khóa và mở khóa từ xa

LUKS2 hỗ trợ 32 khe khóa. Sử dụng ít nhất ba khe từ đầu: mật khẩu quản trị, khóa khôi phục được lưu trữ ngoại tuyến (in ra và cất giữ an toàn, hoặc trên USB được mã hóa trong két sắt) và tệp khóa để tự động mở khóa các khối dữ liệu phụ. Hãy sử dụng 95 ký tự ASCII có thể in được, vì các ký tự không phải ASCII sẽ gây ra các vấn đề về bố cục bàn phím tại dấu nhắc khởi động, khiến việc gỡ lỗi trở nên rất khó khăn. Hãy thay đổi mật khẩu quản trị mỗi khi có người có quyền truy cập rời khỏi nhóm.

Xem các khe khóa đang hoạt động bằng cryptsetup luksDump /dev/sdX, thêm khóa bằng cryptsetup luksAddKey, và thu hồi một khóa bằng cryptsetup luksKillSlot. Bảo vệ mọi tệp khóa bằng các quyền truy cập nghiêm ngặt:

chmod 0400 /etc/luks/keyfile.bin

Đối với các máy chủ không có màn hình tại các trung tâm dữ liệu từ xa, lời nhắc mật khẩu là một vấn đề. Có ba cách để xử lý vấn đề này:

Phương phápPhù hợp nhất vớiƯu nhược điểm
Dropbear trong initramfsMở khóa thủ công qua SSHVẫn cần người can thiệp khi khởi động lại
Clevis + Tang (NBDE)Mở khóa tự động trên mạng đáng tin cậyMáy chủ phải kết nối được với máy chủ Tang để khởi động
TPM2 thông qua systemd-cryptenrollTự động hóa dựa trên phần cứngCác bản cập nhật firmware có thể thay đổi giá trị PCR và khiến bạn không thể truy cập

Dropbear chạy một máy chủ SSH nhỏ trong initramfs. Bạn đăng nhập SSH sau khi khởi động và nhập mật khẩu bằng tay. Clevis với Tang sử dụng mã hóa đĩa dựa trên mạng: máy chủ sẽ tự mở khóa miễn là nó có thể kết nối với máy chủ Tang trên mạng đáng tin cậy. Tang không lưu trữ khóa của bạn, mà chỉ cung cấp một nửa của giao thức trao đổi McCallum-Relyea. Sử dụng nhiều máy chủ Tang với sss mã PIN để việc mở khóa vẫn hoạt động ngay cả khi một máy chủ bị ngắt kết nối. Kết nối TPM 2.0 thông qua systemd-cryptenroll sẽ liên kết khóa với PCR 7 (trạng thái Khởi động An toàn), do đó máy chủ chỉ tự mở khóa nếu phần mềm cơ sở và trình tải khởi động chưa bị can thiệp. Luôn giữ một khe khóa mật khẩu làm phương án dự phòng khi sử dụng TPM, vì các bản cập nhật phần mềm cơ sở sẽ thay đổi các giá trị PCR.

Tăng cường bảo mật và tránh bị khóa

Sử dụng mật khẩu dài ít nhất 20 ký tự. Kích hoạt mã hóa được xác thực với --integrity ngay luksFormat nếu mô hình đe dọa của bạn bao gồm việc giả mạo dữ liệu chứ không chỉ là bảo mật. Điều này gây ra chi phí khuếch đại ghi, vì vậy hãy kiểm tra hiệu suất trước.

Không sao chép một container LUKS sang các máy khác. Khóa ổ đĩa sẽ được sao chép theo, do đó việc thay đổi mật khẩu trên một máy chủ sẽ không bảo vệ được máy chủ khác. Định dạng lại từng đĩa riêng lẻ.

Để ngừng sử dụng một cách an toàn, cryptsetup erase /dev/sdX xóa tất cả các khe khóa trong vài mili giây, khiến đĩa không thể phục hồi được nếu không phá hủy vật lý. Chỉ riêng điều đó đã là một lý do thuyết phục để mã hóa mọi thứ theo mặc định.

Các chế độ lỗi phổ biến:

Triệu chứngNguyên nhân có thểCách khắc phục
Quá trình khởi động bị treo tại màn hình nhập mật khẩuBố cục bàn phím không khớpChuyển sang bố cục khác hoặc sử dụng khóa khôi phục
"Thiết bị không phải là thiết bị LUKS hợp lệ"Đường dẫn thiết bị saiKiểm tra lsblk xem là phân vùng hay toàn bộ đĩa
Bàn phím không phản hồi khi khởi độngThứ tự hook InitramfsĐặt keyboard trước encrypt vào mkinitcpio.conf
GRUB bỏ qua lời nhắc mật khẩuGRUB_ENABLE_CRYPTODISK không được đặtĐặt GRUB_ENABLE_CRYPTODISK=y trong /etc/default/grub, cài đặt lại GRUB
"Không tìm thấy thiết bị gốc"Thiếu lvm2 hoặc encrypt hooksThêm hooks và chạy mkinitcpio -P

Chế độ lỗi quan trọng nhất là hỏng tiêu đề. Nếu tiêu đề LUKS bị mất hoặc hỏng, dữ liệu sẽ biến mất. Không có cách khôi phục nào ngoài việc khôi phục từ bản sao lưu tiêu đề. Lưu một bản sao trên phương tiện riêng biệt, lý tưởng nhất là ở hai vị trí, và tuyệt đối không lưu trên chính đĩa được mã hóa. Đối với các phân vùng thứ cấp không quan trọng, thêm nofail vào /etc/crypttab để việc gắn kết thất bại không làm treo quá trình khởi động.

Các máy chủ chuyên dụng của FDC được trang bị phần cứng hỗ trợ AES-NI và mã hóa toàn bộ đĩa ngay khi xuất xưởng. Hãy cấu hình máy chủ chuyên dụng khi bạn sẵn sàng triển khai.

background image
Máy chủ của bạn có đang cản trở sự phát triển của bạn không?

Bạn đã chán ngán với việc triển khai chậm chạp hoặc giới hạn băng thông? FDC Servers cung cấp nguồn điện chuyên dụng ngay lập tức, phạm vi toàn cầu và các gói linh hoạt được thiết kế cho mọi quy mô. Sẵn sàng nâng cấp chưa?

Mở khóa hiệu suất ngay bây giờ

Blog

Nổi bật trong tuần

Các bài viết khác
Kiểm soát lưu lượng Linux (tc): Hướng dẫn thực hành

Kiểm soát lưu lượng Linux (tc): Hướng dẫn thực hành

Kiểm soát băng thông, ưu tiên lưu lượng và định hình lưu lượng vào và ra trên Linux bằng tc. Cấu hình HTB, IFB, DSCP và fq_codel hoạt động cho các máy chủ thực tế.

12 phút đọc - 5 tháng 6, 2026

Tại sao việc sở hữu một VPS mạnh mẽ và không giới hạn băng thông lại quan trọng

7 phút đọc - 9 tháng 5, 2025

Các bài viết khác
background image

Bạn có thắc mắc hoặc cần giải pháp tùy chỉnh?

icon

Các tùy chọn linh hoạt

icon

Phạm vi toàn cầu

icon

Triển khai ngay lập tức

icon

Các tùy chọn linh hoạt

icon

Phạm vi toàn cầu

icon

Triển khai ngay lập tức