OffshoreVps
Bảo mật19 thg 10 20269 phút đọcBởi đội ngũ OffshoreVps

Mã hóa VPS bằng LUKS: thiết lập và giới hạn

Thiết lập mã hóa đĩa LUKS trên máy chủ thuê: một ổ dữ liệu được mã hóa, cách mở khóa từ xa cho đĩa gốc hoạt động và một mô hình đe dọa trung thực.

Mã hóa đĩa bảo vệ dữ liệu khi lưu trữ. Trên VPS, nhà cung cấp kiểm soát hypervisor, nên nó không thể ngăn một nhà cung cấp quyết tâm đọc bộ nhớ. Điều nó làm tốt là bảo vệ chống lại bản sao lưu bị thất lạc, đĩa được tái sử dụng và ổ lưu trữ bị đánh cắp hoặc thu giữ. Hãy biết bạn đang phòng thủ trước điều nào trước khi bỏ thời gian vào việc này.

Cửa sổ terminal trên VPS hiển thị các lệnh dùng để mã hóa VPS bằng LUKS, bắt đầu bằng “sudo apt install -y cryptsetup”
Loại lệnh bạn sẽ chạy trên máy chủ của mình trong hướng dẫn này.

Quyết định bạn đang bảo vệ khỏi điều gì

  • Đĩa bị loại bỏ hoặc sao chép: mã hóa giúp ích rất nhiều.
  • Snapshot bị rò rỉ: mã hóa giúp ích nếu khóa không được lưu cùng snapshot.
  • Kẻ tấn công đang hoạt động trên hệ thống đang chạy: mã hóa không giúp ích, vì ổ đã được mở khóa.
  • Hypervisor độc hại: mã hóa không giúp ích trên VPS. Máy chủ dedicated với toàn quyền kiểm soát phần cứng là lựa chọn mạnh hơn.

Phương án 1: một ổ dữ liệu được mã hóa

Đây là nơi an toàn nhất để bắt đầu. Gắn đĩa thứ hai hoặc tạo tệp loop, và giữ dữ liệu nhạy cảm ở đó. Ví dụ dùng một thiết bị trống tên /dev/vdb. Hãy kiểm tra kỹ tên thiết bị, vì định dạng sẽ phá hủy nội dung của nó.

sudo apt install -y cryptsetup
sudo cryptsetup luksFormat /dev/vdb
sudo cryptsetup open /dev/vdb secure
sudo mkfs.ext4 /dev/mapper/secure
sudo mkdir -p /srv/secure
sudo mount /dev/mapper/secure /srv/secure

Để đóng lại: sudo umount /srv/secure && sudo cryptsetup close secure.

Các bước của hướng dẫn này theo thứ tự: 1. Quyết định bạn đang bảo vệ khỏi điều gì; 2. Phương án 1: một ổ dữ liệu được mã hóa; 3. Phương án 2: một container dựa trên tệp; 4. Phương án 3: đĩa gốc với mở khóa từ xa; 5. Xử lý khóa đúng cách
Các bước trong hướng dẫn này, theo thứ tự.

Phương án 2: một container dựa trên tệp

Khi bạn không có đĩa dự phòng, hãy dùng một tệp làm container.

sudo fallocate -l 20G /root/vault.img
sudo cryptsetup luksFormat /root/vault.img
sudo cryptsetup open /root/vault.img vault
sudo mkfs.ext4 /dev/mapper/vault
sudo mount /dev/mapper/vault /srv/vault

Phương án 3: đĩa gốc với mở khóa từ xa

Mã hóa đĩa gốc cần cách nhập cụm mật khẩu khi khởi động, trước khi mạng hoạt động. Giải pháp thông thường là một máy chủ SSH nhỏ (dropbear) bên trong initramfs. Điều này phụ thuộc vào việc nhà cung cấp cho phép bạn cài image tùy chỉnh hoặc cài lại với phân vùng của riêng bạn, vì vậy hãy kiểm tra trước. Nhiều bảng điều khiển VPS không cho phép, và một sai lầm có thể khiến máy chủ không khởi động được, nên hãy chuẩn bị sẵn phương án cứu hộ.

Tóm tắt: cài đặt với gốc được mã hóa, thêm dropbear-initramfs, đặt khóa công khai SSH của bạn vào /etc/dropbear/initramfs/authorized_keys, tạo lại initramfs, sau đó khởi động lại và mở khóa qua SSH bằng cryptroot-unlock.

Xử lý khóa đúng cách

  • Dùng cụm mật khẩu dài và giữ nó trong trình quản lý mật khẩu, không phải trên máy chủ.
  • Sao lưu header LUKS: sudo cryptsetup luksHeaderBackup /dev/vdb --header-backup-file header.img. Lưu nó ngoại tuyến.
  • Đừng tự động mở khóa bằng tệp khóa lưu trên cùng đĩa. Điều đó làm mất ý nghĩa của mã hóa.
  • Hãy nhớ rằng mở khóa khi khởi động nghĩa là mỗi lần khởi động lại cần có bạn.

Kết hợp mã hóa với sao lưu mã hóa vững chắc và các điều cơ bản từ tăng cường bảo mật 15 phút.