crypttab가 스왑 암호를 요구하지 않도록 중지


10

11.04 시스템이 출시되었을 때 새로운 시스템을 설치하고 LUKS로 전체 디스크 암호화를 설정했습니다. 처음에는 세 개의 암호화 된 파티션에 대한 암호를 물었습니다.

/
/home
swap

암호 문구를 세 번 입력하는 것은 실망 스러웠으므로 / home을 설정하고 /에 저장된 키 파일에서 암호 해독을 시도했습니다. 키 파일을 만들어 두 파티션에서 활성화했습니다. 내 crypttab은 다음과 같습니다.

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

이것은 / home에서 잘 작동하며 암호를 요구하지 않고 자동으로 마운트됩니다. 그러나 cryptsetup은 여전히 ​​스왑 공간에 대한 암호를 요구합니다. 스왑 공간에 noauto를 추가하여 전혀 설정하지 않도록 시도했습니다. 시스템이 부팅되면 암호 문구없이 활성화 할 수 있으므로 늦은 init 스크립트를 추가하여 할 것이라고 생각했습니다. 그러나 자동 암호화 설정이 없어도 여전히 암호 문구를 묻습니다.

감사!


4
이러한 이유로 다중 파티션의 경우 LVM + LUKS를 사용하는 것이 좋습니다. Crypsetup은 LVM 계층 위 또는 아래 (-> 파일 시스템 위-> 디스크)에 사용할 수 있습니다. LVM 아래에서 cryptsetup을 사용하면 하나의 암호화 된 파티션 (LVM 파티션) 만 있으면됩니다.
Lekensteyn

답변:


10

같은 질문이 있었지만 우분투 12.04.1과 12.10에서 어떻게했는지,

-시작하기 전에 백업이 있는지 확인하고 우분투 CD 또는 USB로 시스템을 부팅 할 수도 있습니다. 실수로 시스템이 더 이상 부팅되지 않거나 데이터가 손실 될 수 있습니다. LUKS가있는 암호화 된 우분투 시스템이 있다고 가정하고 LUKS에는 SYSTEM-BOOT (암호화되지 않음), SYSTEM-SWAP (암호화) 및 SYSTEM-OS (암호화)의 3 개의 파티션이 있습니다.

UUID, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS를 시스템에서 사용되는 변형으로 조정해야합니다. 자세한 내용은 내 솔루션 아래의 참조 링크를 참조하십시오

UUID 가져 오기 :

blkid

준비>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

cryptsetup에게 루트 파일 시스템을 보유한 볼륨의 암호 해독 키에서 스왑 파티션의 암호를 계산하도록 지시하십시오.>

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

스왑 파티션에 대해 시스템에 알리고 crypttab 편집>

nano /etc/crypttab

=? 두 줄이 일치하는지 확인하십시오

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

스왑 파티션에 대해 시스템에 알리고 fstab을 편집하십시오.>

nano /etc/fstab

=? 이 줄이 있는지 확인하십시오

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

스왑 파티션에 대해 시스템에 알리고 이력서 편집>

nano /etc/initramfs-tools/conf.d/resume

=? 이 줄이 있는지 확인하십시오

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

부팅 파티션에서 initramfs 업데이트>

update-initramfs -u -k all

참고

답변 은 암호화 된 데비안 시스템 설정 (아카이브 링크)에서 영감을 얻었 습니다 .

암호화 된 데비안 시스템을 사용하는 경우 몇 가지 보안 요구 사항이있을 수 있습니다. 이 경우 암호화 된 스왑 파티션도 사용해야합니다.

스왑 파티션은 두 가지 방법으로 암호화 될 수 있습니다 :

  • 임의의 암호를 사용하여 부팅 할 때마다 다시 만들거나
  • 영구적 인 암호로 다른 암호화 된 볼륨처럼 생성 될 수 있습니다.

디스크 일시 중단을 사용하려면 스왑 파티션에 저장된 메모리 공간을 덮어 쓰는 첫 번째 방법을 사용할 수 없습니다. 또한 재개 프로세스가 시작되고 해독 된 스왑 파티션을 읽어야 할 때까지 루트 파일 시스템이 마운트되지 않고 마운트되지 않아야하기 때문에 다른 파티션과 같은 키 파일을 사용할 수 없습니다.

이 문제를 해결하는 방법은 cryptsetup에 루트 파일 시스템을 보유한 볼륨의 암호 해독 키에서 스왑 파티션의 암호를 계산하도록 지시하는 것입니다. cryptsetup 패키지는이를 사용하여이를 구현합니다 /lib/cryptsetup/scripts/decrypt_derived. 따라서 스왑 파티션을 설정 hda2하려면 암호화 된 스왑을 보유하고 있고 루트 파일 시스템이있는 파티션 이라고 가정하고 다음을 수행합니다 hda5_crypt.

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

이 스왑 파티션에 대한 시스템에게, 우리는에 추가해야 /etc/crypttab하고 /etc/fstab, 해당 파일에 다음과 같은 줄이 포함되어 있는지 확인하십시오.

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

이를 사용하여 디스크 일시 중단을 위해 시스템을 구성하자마자 스왑 파티션은 부팅 순서 중에 루트 파일 시스템과 함께 자동으로 설정됩니다. 그 시점에서 사용할 수 있도록하는 스왑 파티션을 파악하기 위해,으로 cryptsetup 검사 다음 asfasfafs - 라인처럼 RESUME=/dev/mapper/hda2_crypt/etc/initramfs-tools/conf.d/resume -에 이력서 장치 설정 /etc/uswsusp.conf(참조 uswsusp.conf(5)) -의 항목 /etc/suspend.conf A - resume=/dev/mapper/hda2_crypt커널 명령 행에서

이에 /usr/share/initramfs-tools/hooks/cryptroot대해 더 알고 싶다면 검사 할 수 있습니다 .


우분투에 오신 것을 환영합니다! 포맷을 돌보지 않고 단순히 복사 / 붙여 넣지 않으면 +1했을 것입니다 (방금 했음). 나는 "임의의 암호를 사용하여 부팅 할 때마다 다시 만들 수있다"는 접근 방식을 좋아한다.
gertvdijk

추가 내가 실제로 답에 사용되는 명령은, 나중에 답을 갱신도 12.10에서 테스트하는 것입니다 갈거야
왕자

괜찮아. 나는 당신이 그것을 완전히 복사 / 붙여 넣기로 가정했습니다. 작동하도록 변경 한 사항을 명확하게 변경하십시오. 도움이 될 것입니다, 감사합니다!
gertvdijk

부팅을 방해하는 버그가 발생하여 12.10에 시도하지 마십시오. Google 검색 반환 버그 보고서에 "cryptsetup lvm을 사용할 수 없습니다"라는 메시지가 표시됩니다. 더 깊이 살펴 봐야하지만 시간이 없어 나중에 알려주세요.
프린스

대답을 업데이트하면 내 12.10 시스템이 이제 완벽하게 작동하고 암호를 하나만 요청합니다 . 이전 의견에서 언급 한 문제를 일으킨 끝에 update-initramfs -u -k를 모두 업데이트 하지 않았습니다 . @gertcdijk는 모든 것을 포맷했습니다. 지금 행복 하시길 바랍니다
Prince

4

이것은 initramfs부트 프로세스 중에 스왑 파티션에 액세스하고 있음을 나타냅니다 . 이 시점에서 루트 파일 시스템이 아직 마운트되지 않았으므로 여기에 저장된 구성 파일이 표시되지 않습니다.

루트 파일 시스템 다음에 스왑 공간이 마운트되는 동안 initramfs초기화 프로세스가 스왑 공간에 액세스해야하는 이유가 있습니다. 컴퓨터를 최대 절전 모드로 전환하면 메모리 및 시스템 상태가 스왑에 기록됩니다. 최대 절전 모드에서 다시 시작하려면 스왑 공간에 암호 문구가 필요한 최대 절전 모드 이미지가 포함되어 있는지 확인해야합니다.

최대 절전 모드에서 다시 시작하는 기능을 잃어 버리지 않으 /etc/initramfs-tools/conf.d/resume려면로 시작하는 줄 을 편집 하고 주석 처리 하여이 동작을 비활성화 할 수 있습니다 RESUME=. 변경 한 후에 update-initramfs -uinitramfs이미지 를 업데이트하기 위해 실행 하십시오 .


아 감사합니다! 최대 절전 모드를 희생하고 싶지는 않습니다. 나는 그것을 자주 사용하지 않지만 배터리를 알지 못하는 상태에서 배터리가 소진되면 편리합니다. cryptsetup이 /에 동일한 비밀번호를 재사용하는 방법이 있는지 알고 있습니까?
브래드

나는 그것을 할 수있는 방법을 모른다. 요청하기 전에 키 파일 사본을에 넣으려고 시도하지 마십시오 initramfs. 암호문 프롬프트를 제거하는 동시에 디스크에 실제로 액세스 할 수있는 모든 사람이 암호문을 사용할 수있게합니다.
James Henstridge
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.