Làm cách nào để thiết lập tệp hoán đổi được mã hóa trong Linux?


15

CẢNH BÁO 2017! Câu trả lời được chấp nhận có vẻ hiệu quả, nhưng với các hạt nhân gần đây tôi phát hiện ra rằng hệ thống sẽ bị treo ngay khi nó bắt đầu hoán đổi. Nếu bạn cố gắng sử dụng tệp hoán đổi được mã hóa, hãy đảm bảo rằng nó thực sự hoán đổi đúng cách. Phải mất một thời gian dài tôi mới hiểu được tại sao hệ thống của tôi liên tục bị khóa mà không có lý do rõ ràng. Tôi đã quay trở lại sử dụng phân vùng trao đổi được mã hóa, hoạt động chính xác.


Làm cách nào để thiết lập tệp hoán đổi được mã hóa (không phải phân vùng) trong Linux? Nó thậm chí có thể? Tất cả các hướng dẫn tôi đã tìm thấy nói về phân vùng trao đổi được mã hóa, nhưng tôi không có phân vùng trao đổi và tôi không phải phân vùng lại đĩa của mình.

Tôi không cần hỗ trợ tạm dừng trên đĩa, vì vậy tôi muốn sử dụng một khóa ngẫu nhiên trên mỗi lần khởi động.

Tôi đã sử dụng một ổ lưu trữ tệp TrueCrypt cho dữ liệu của mình, nhưng tôi không muốn đặt trao đổi của mình vào ổ đó. Tôi không bắt đầu sử dụng TrueCrypt cho tệp hoán đổi nếu có giải pháp tốt hơn.

Tôi đang sử dụng Arch Linux với kernel mặc định, nếu điều đó quan trọng.


Chính xác thì điều đó sẽ là gì? Nó sẽ phải được giải mã trong khi sử dụng nó, và nó sẽ trống khi không sử dụng.
tkbx

1
Khi bạn tìm kiếm encrypted swapfilekết quả đầu tiên dẫn đến raylinux.blogspot.de/2011/01/ Khăn
ott--

@ott, mặc dù nói "tập tin hoán đổi" trong tiêu đề, nếu bạn đọc hướng dẫn trong bài đăng đó, họ sẽ mô tả rõ ràng một phân vùng trao đổi.
cjm

@tkbx, vấn đề là ngăn người khác khôi phục dữ liệu nhạy cảm từ tệp hoán đổi sau khi tôi tắt máy tính. (Hoặc ai đó đã không thể đoán được mật khẩu của tôi, vì vậy họ đang khởi động lại vào đĩa CD trực tiếp hoặc đại loại như vậy.)
cjm

2
@tkbx, tôi không tin như vậy. Điều đó sẽ yêu cầu ghi hàng gigabyte dữ liệu mỗi khi bạn tắt máy tính. Dữ liệu trong tệp hoán đổi không được sử dụng khi bạn khởi động lại, nhưng điều đó không có nghĩa là nó bị xóa khỏi đĩa.
cjm

Câu trả lời:


14

Thật vậy, trang mô tả việc thiết lập một phân vùng, nhưng nó tương tự cho một tệp hoán đổi:

dd if=/dev/urandom of=swapfile.crypt bs=1M count=64
loop=$(losetup -f)
losetup ${loop} swapfile.crypt
cryptsetup open --type plain --key-file /dev/urandom ${loop} swapfile
mkswap /dev/mapper/swapfile
swapon /dev/mapper/swapfile

Kết quả:

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/mapper/swap0                       partition       4000176 0       -1
/dev/mapper/swap1                       partition       2000084 0       -2
/dev/mapper/swapfile                    partition       65528   0       -3

exchange0 và exchange1 là các phân vùng thực.


loop-AES.README nói trong phần 7.1: "Các vòng lặp được hỗ trợ tệp không thể được sử dụng để trao đổi." Điều đó không đúng sự thật (hay chỉ đúng với vòng lặp AES)?
cjm

Đó là không có thiết bị ánh xạ.
ott--

Tôi đã sửa đổi lệnh cryptsetup của bạn để sử dụng openthay vì create(mà trang này nói là lỗi thời) và sử dụng một khóa ngẫu nhiên thay vì nhắc nhập mật khẩu. Nó dường như được làm việc.
cjm

Điều này dường như không tồn tại khi khởi động lại: "exchangeon: không thể mở / dev / mapper / exchangefile: Không có tệp hoặc thư mục như vậy"
Therobyouledge

5

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 mình và đặt nó thành Tắt máy khi quan trọng để tránh mất dữ liệu!

Hãy chắc chắn để chạy sudo -shoặc sutrước khi chạy sau đây.

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

    # swapoff -a
    
  2. Xác định vị trí phân vùng hoán đổi hiện có

    # lsblk
    

    Bạn sẽ nhận được một cái gì đó như thế này:

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. Ghi đè lên Hoán đổi cũ

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

    ví dụ:

    # dd if=/dev/zero bs=1024000 of=/dev/sda3
    
  4. fstab thiết lập

    # vim /etc/fstab
    

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

    #<file system>      <mount point>   <type>  <options>   <dump>  <pass>
    /dev/mapper/cswap   none            swap    pri=1,defaults  0   0
    
  5. Thiết lập tiền điện tử

    # ls -lF /dev/disk/by-id
    

    Ví dụ:

    ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3
    
    # vim /etc/crypttab
    
    # <name>    <device>                            <password>  <options>
      cswap     /dev/disk/by-id/ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3   /dev/urandom    swap,cipher=aes-cbc-essiv:sha256,size=256
    
  6. Hoán đổi mã hóa hoạt động

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

    Ví dụ:

    # dmsetup -C info 
    cswap      253   0 L--w    2    1      0 CRYPT-PLAIN-cswap  
    # lsblk
    ├─sda3                8:3    0     8G  0 part  
    │ └─cswap             253:0    0     8G  0 crypt [SWAP]
    # cat /proc/swaps 
    Filename                Type        Size    Used    Priority
    /dev/dm-0               partition   8385532 0       -1
    

1

Nếu bạn sử dụng dd if=/dev/zero of=/swapfile bs=8G count=1, theo sau mkswap /swapfileswapon /swapfile, bạn sẽ có một tệp hoán đổi hoạt động trên hệ thống tập tin gốc của bạn. (chúng tôi sử dụngdd để đảm bảo không có lỗ hổng trong tệp hoán đổi)

Điều này xoay quanh việc phải gây rối với các thiết bị vòng lặp và / hoặc tiền điện tử và chỉ cần đặt tệp hoán đổi bên trong hệ thống tệp đã được mã hóa của bạn. (Chúng tôi giả định rằng bạn đang sử dụng mã hóa cho toàn bộ ổ đĩa ở đây. Chuẩn bị /swapfiletham số với đường dẫn đến thư mục được mã hóa của bạn nếu nó ở một nơi khác)

Xem man mkswapman swaponđể biết thêm thông tin.


Tôi đã thử tạo một tệp hoán đổi như thế này trong thư mục nhà được mã hóa của mình như thế và nó đã bị sập giống như tệp hoán đổi được mã hóa đã làm ...
fifaltra

Là thư mục nhà của bạn được mở khóa khi khởi động hệ thống hoặc khi bạn đăng nhập? Nếu nó chỉ mở khi bạn đăng nhập, thì bạn không thể có hoán đổi trong đó. Hoán đổi phải được mở khóa và có sẵn khi khởi động hệ thống. Ngoài ra, bạn không muốn hệ thống trong thư mục nhà người dùng của bạn. Đó là dành riêng cho công cụ người dùng.
Mioriin
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.