LUKS 키 스크립트가 무시되고… 비밀번호를 묻습니다.


10

LUKS를 처음 사용한다고 말하는 것으로 시작하겠습니다. LVM 유무에 관계없이 키 스크립트로 여러 번 LUKS를 설정했습니다. 그래도 실제로 무슨 일이 일어나고 있는지 잘 모르겠습니다. 단일 암호화 파티션이있는 시스템이 있습니다. 내 드라이브는 다음과 같이 구성됩니다.

# lsblk

이름 MAJ : MIN RM 크기 RO 유형 마운트 포인트
sda 8 : 0 0128G 0 디스크  
└─sda1 8 : 1 0128G 0 부분  
  ├─vg0-root 253 : 1 0 20G 0 lvm /
  ├─vg0- 보안 253 : 6 0100M 0 lvm   
  │ └─ 보안 253 : 7 0 98M 0 암호 / root / secure
  └─vg0- 스왑 253 : 4 0 1G 0 lvm [SWAP]

/etc/crypttab파일은 다음과 같습니다

LV에 대한 경로가 변경되지 않으므로 UUID가 필요하지 않습니다.
보안 / dev / vg0 / secure none luks, keyscript = / lib / cryptsetup / scripts / insecure

/lib/cryptsetup/scripts/insecure파일은 실행 파일이며 다음과 같습니다

#!/bin/sh
# My actual file looks somewhat different because it dumps the key file with dd.
# This accomplishes virtually the same thing though.

echo -n "my-encryption-password"

update-initramfs -k all -ucrypttab을 구성하고 키 스크립트 파일을 넣은 후에 여러 번 실행 했습니다.

내가 알 수있는 한 내 스크립트 파일은 initrd.img 파일로 복사되지 않습니다. 루트 파티션이 암호화되어 있지 않고 스크립트 파일에 쉽게 액세스 할 수 있어야하므로 initrd.img 파일로 복사되지 않을 것이라고 생각합니다.

재부트시 시스템은 crypttab에서 레코드를보고 LUKS 파티션 잠금을 해제하기 위해 키 스크립트를 사용하는 대신 암호를 요청합니다 (내 경우에는 키가 임의 비트로 가득 찬 키 파일이므로 실제로 존재하지 않습니다). LVM에서 LUKS를 꺼내서 sda2에 넣으려고 시도했지만 결과는 동일했습니다. 또한 키 스크립트 cryptsetup luksOpen /dev/vg0/secure secure -d - <<< "$(/lib/cryptsetup/scripts/insecure)"가 매력처럼 작동하고 내 LUKS 파티션을 해독 하기 때문에 키 스크립트가 작동한다는 것을 알고 있습니다.

나는 우분투 16.04.2와 우분투 메이트 16.04.2에서 동일한 결과를 시도했습니다. 나는 아무런 문제없이 이전에 키 스크립트를 사용했습니다. 유일한 차이점은 과거에 내 / 파티션이 항상 암호화되었다는 것입니다. 누구나 빛을 비출 수 있다면 고맙겠습니다. 이 시스템을 복제 할 계획이므로 매우 작은 암호화 된 파티션 만 원하며 전체 / 파티션을 암호화하여 복제하고 싶지 않습니다.


2017-04-26 업데이트

로그를 파고 들었을 때 다음과 같은 오류가있는 줄을 발견했습니다. 'keyscript = / path / to / script'는 언제 crypttab에 알 수없는 옵션입니까?

... systemd-cryptsetup [737] : 알 수없는 / etc / crypttab 옵션 'keyscript = / lib / cryptsetup / scripts / insecure'가 무시되었습니다.

킥을 위해 키 스크립트 옵션을 제거하고 키 파일을 사용하려고 시도했는데 모두 작동했습니다! 사실, keyfile-offset과 같은 다른 옵션을 시도했지만 작동합니다. 따라서 문제는 keyscript 옵션에 어딘가에 있습니다. 왜 그런지 아는 사람이 있습니까?


3
systemd가 문제라고 생각합니다. systemd 및 keyscript에 대한 빠른 Google 은 systemd 여기 에서 keyscript를 구현하기위한 버그 및 풀 요청을 보여줍니다 . 첫 번째 링크에서 사용할 수있는 해결 방법도 있습니다.
sergtech

이 문제는 의심의 여지가 있었으며 온라인에서 찾은 결과와 검색 결과를 계속 파고 들었습니다. 여기에 몇 가지 권장 사항을 시도했지만 스크립트 파일을 initrd로 가져 오는 방법을 잘 모르겠습니다.
b_laoshi

답변:


3

https://unix.stackexchange.com/a/447676/356711 에 따라 / etc / crypttab에서 "initramfs"옵션을 사용해보십시오 . 그러면 /etc/crypttab다음과 같이 보일 것입니다.

# UUID is not required here since the path to the LV won't change
secure      /dev/vg0/secure       none      luks,keyscript=/lib/cryptsetup/scripts/insecure,initramfs

루트 fs가 LVM 컨테이너에있는 것이 문제 일 수 있습니다. 이 문제는 위에 링크 된 기사에도 언급되어 있습니다. " 하지만 루트 장치가 LVM에없는 경우에만 현재 안정적으로 작동합니다. "다행히도 해결 방법이 제공되는 것 같습니다.

내 시스템은 다음과 같습니다

$ lsblk
NAME                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                             8:0    0 931.5G  0 disk
└─sda1                          8:1    0 931.5G  0 part
  └─md1                         9:1    0 931.4G  0 raid1
    └─md1_crypt               253:3    0 931.4G  0 crypt
      └─raid_crypt_vg-data_lv 253:4    0 931.4G  0 lvm   /raid
sdb                             8:16   0 931.5G  0 disk
└─sdb1                          8:17   0 931.5G  0 part
  └─md1                         9:1    0 931.4G  0 raid1
    └─md1_crypt               253:3    0 931.4G  0 crypt
      └─raid_crypt_vg-data_lv 253:4    0 931.4G  0 lvm   /raid
sdc                             8:32   0 465.8G  0 disk
├─sdc1                          8:33   0   953M  0 part  /boot
└─sdc2                          8:34   0 464.8G  0 part
  └─sdc2_crypt                253:0    0 464.8G  0 crypt
    ├─system_crypt_vg-data_lv 253:1    0   447G  0 lvm   /
    └─system_crypt_vg-swap_lv 253:2    0  17.8G  0 lvm   [SWAP]

... 그리고 다음 /etc/crypttab은 우분투 18.04.2 LTS에서 키 스크립트 (!) 로 해독 마법 을 수행합니다 .

$ cat /etc/crypttab
# <target name> <source device>                           <key file> <options>
sdc2_crypt      UUID=[...]                                none       luks,discard,keyscript=/etc/decryptkeydevice/decryptkeydevice_keyscript.sh
md1_crypt       /dev/md1                                  none       luks,discard,keyscript=/etc/decryptkeydevice/decryptkeydevice_keyscript.sh,initramfs

sdc2_crypt제공된 키 스크립트 를 사용한 암호 해독은 initramfs 옵션 없이 작동 합니다 (루트 fs를 포함하므로 initramfs 부팅 단계에서 "자동으로"고려되기 때문에). md1_cryptinitramfs 옵션을 추가 한 후 initramfs 부팅 단계에서 이미 암호 해독되었습니다 (따라서 crypttab 항목에 따른 키 스크립트 사용). "systemd cryptsetup"이 옵션 키 스크립트를 지원하지 않기 때문에 시스템 부팅 단계에서 md1_crypt의 이후 암호 해독은 crypttab에 제공된 키 스크립트와 함께 작동하지 않습니다 ( https://github.com/systemd/systemd/pull/3007 참조) .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.