Linux에서 암호화된 스왑 파일을 설정하는 방법은 무엇입니까?

Linux에서 암호화된 스왑 파일을 설정하는 방법은 무엇입니까?

2017 경고!허용된 답변은 작동하는 것 같지만 최근 커널에서는 시스템이 스와핑을 시작하자마자 중단되는 것을 발견했습니다. 암호화된 스왑 파일을 사용하려는 경우 실제로 올바르게 스왑되는지 확인하십시오. 시스템이 이유 없이 계속 작동 중지되는 이유를 알아내는 데 오랜 시간이 걸렸습니다. 암호화된 스왑 파티션을 사용하여 다시 돌아갔더니 제대로 작동합니다.


Linux에서 암호화된 스왑 파일(파티션 아님)을 설정하는 방법은 무엇입니까? 가능합니까? 내가 찾은 모든 가이드에서는 스왑 파티션 암호화에 대해 설명하지만 스왑 파티션이 없고 디스크를 다시 파티션하고 싶지 않습니다.

디스크 일시 중지 지원이 필요하지 않으므로 부팅할 때마다 임의의 키를 사용하고 싶습니다.

이미 사용하고 있어요진정한 비밀내 데이터를 위한 파일 호스팅 볼륨이지만 해당 볼륨에 스왑을 넣고 싶지 않습니다. 더 나은 솔루션이 있다면 TrueCrypt를 사용하여 파일을 교환하지 않을 것입니다.

나는 그것을 사용하고 있다아키텍처Linux중요한 경우 기본 커널을 사용하십시오.

답변1

물론,이 페이지파티션 설정이 설명되어 있지만 스왑 파일과 유사합니다.

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

결과:

# 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

swap0과 swap1은 실제 파티션입니다.

답변2

이 구성은 부팅 시 무작위로 생성된 키를 사용하며 하드 드라이브 최대 절전 모드를 지원하지 않습니다! 데이터 손실을 방지하려면 DE 전원 관리 유틸리티를 통해 최대 절전 모드를 비활성화하고 종료하려면 중요로 설정해야 합니다!

다음 명령을 실행하기 전에 또는 을 실행하십시오 sudo -s.su

  1. 스왑을 비활성화합니다.

    # swapoff -a
    
  2. 기존 스왑 파티션 찾기

    # lsblk
    

    당신은 다음과 같은 것을 얻을 것입니다 :

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. 이전 스왑 덮어쓰기

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

    예를 들어:

    # dd if=/dev/zero bs=1024000 of=/dev/sda3
    
  4. fstab설정

    # vim /etc/fstab
    

    이전 SWAP 장치를 crypttab 매퍼 이름으로 바꿉니다./dev/mapper/cswap

    #<file system>      <mount point>   <type>  <options>   <dump>  <pass>
    /dev/mapper/cswap   none            swap    pri=1,defaults  0   0
    
  5. 암호화 설정

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

    예를 들어:

    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. 활성 암호화폐 거래소

    # reboot
    
  7. 암호화된 교환 작업 확인

    예를 들어:

    # 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
    

답변3

dd if=/dev/zero of=/swapfile bs=8G count=1, 및 를 mkswap /swapfile사용 하는 경우 swapon /swapfile루트 파일 시스템에서 사용할 수 있는 스왑 파일이 있어야 합니다. ( dd스왑 파일에 구멍이 없는지 확인하기 위해 이것을 사용합니다 )

이렇게 하면 루프 장치 및/또는 crypttab을 망칠 필요가 없으며 스왑 파일을 이미 암호화된 파일 시스템에 넣기만 하면 됩니다. (여기에서는 전체 드라이브에 대해 암호화를 사용한다고 가정합니다. /swapfile암호화 디렉터리가 다른 곳에 있는 경우 매개변수 앞에 암호화 디렉터리 경로를 추가합니다.)

자세히 보고 알아 man mkswap보세요 man swapon.

관련 정보