전체 디스크 암호화 (LUKS 위에 LVM)를 사용하여 Ubuntu에서 RAM 보안을 일시 중단하는 방법은 무엇입니까?


20

나는 전체 디스크 암호화 (LUKS 상단의 LVM)를 사용하여 Ubuntu 13.04를 사용하고 있습니다.

메모리에 키 자료를 남기지 않고 루트를 잠금 해제하지 않고 RAM을 일시 중단 할 수 있도록 luksSuspend일시 중단 절차 (및 나중에 사용 luksResume) 에 통합 하고 싶습니다 .

나는 지난 7 시간 동안 Arch Linux 용 스크립트 를 포팅하려고 노력했지만 지금까지 성공하지 못했습니다. 솔직히 내가하고있는 일을 알지 못합니다 ...

누구든지 이것을 이식하도록 도울 수 있습니까 (또는 처음부터 이와 같은 것을 만들 수 있습니까)? 또는 적어도 누군가가 일시 중단 절차에 물건을 연결하는 방법과 루트에 대한 모든 IO가 (에 의해 luksSuspend) 차단 된 후에도 필요한 바이너리 및 스크립트 (예 : cryptsetup)를 유지하는 방법에 대한 문서를 알려 주실 수 있습니까?

이력서에 필요한 바이너리 및 스크립트를 유지하는 방법과 관련하여이 다른 블로그 게시물 (Arch의 경우도 해당)을 복사했습니다 /boot. 그러나 Vianney가 이전에 언급 한 스크립트에서 사용한 줄에 더 많은 것을 사용하고 싶습니다.이 접근법에서는이 접근법이 조금 더 우아해 보이기 때문입니다.


나는 ...이에 몇 시간을 보낼
조나스 Malaco

나는 구성하는 스크립트를 편집했으며 pm-suspend거의 거기에있는 것처럼 보입니다. 그러나 echo -n "mem" > /sys/power/state루트 fs ( cryptsetup luksSuspend ...)를 고정한 후 시스템 ( )을 일시 중단 할 수 없다는 것을 알았습니다. 그 이유는 여전히 i / o가 필요하기 때문입니다.
Jonas Malaco

1
데비안리스트 (그리고이리스트에 링크되거나 링크 된 다른리스트)에 대한 몇 가지 토론을 읽었으며 지금까지는 솔루션에서 "deinitramfs"와 같은 것이 필요할 것 같습니다 : 커널은 deinitramfs에 대한 제어를 처리합니다 이 tmpfs가 rootfs의 암호화 키를 지우는 것과 같은 최종 정리 조치를 수행 할 수 있도록 실제로 시스템을 일시 중단하기 직전에.
Jonas Malaco

이 질문에 대한 답변도보고 싶습니다.
BenAlabaster

답변:


3

나는 같은 문제를 겪었으므로 동일한 스크립트를 포팅하는 또 다른 기회를 얻었습니다 . 여기에서 볼 수 있습니다 . 이후에는 비 휘발성 저장소를 건드리지 luksSuspend않으므로 암호화 된 / 부팅을 사용하여 실제 전체 디스크 암호화로도 작동합니다. 그러나 조심해야합니다. 때때로 예상대로 작동하지 않을 수 있습니다!

이식 된 스크립트는 다음을 수행합니다.

  • 어딘가에 램프 마운트 만들기
  • initramfs의 내용을 추출하십시오 (initramfs suspend 스크립트 포함)
  • (예를 들어, 해당 디렉토리를 마운트 바인딩 /sys, /proc, /dev, /runramfs 마운트)에
  • 방해 할 수있는 모든 서비스 중지 (systemd-udevd, systemd-journald)
  • nobarrier를 사용하여 루트 파일 시스템 (ext4 또는 btrfs)을 다시 마운트하여 Linux가 S3로 이동하는 동안 정지되지 않도록 한 다음 동기화하십시오.
  • Chit을 initramfs 마운트에 연결하면 다시 동기화되고 실행되며 luksSuspend컴퓨터가 절전 모드로 전환됩니다
  • 깨우기 후, luksResume파일 시스템을 다시 마운트하고, 서비스를 다시 시작하고, initramfs 마운트에서 바인드 마운트를 마운트 해제하십시오.
  • 마지막으로, initramfs 마운트를 마운트 해제하여 initramfs 파일에 사용 된 RAM을 비 웁니다.

아직 스크립트에서 광범위한 테스트를 수행하지는 않았지만 안정적으로 작동하는 것 같습니다. 다른 파일 시스템 (예 : ext4 또는 btrfs가 아닌)을 사용하는 경우 장벽에 문제가 발생할 수 있으므로 스크립트도 수정해야합니다.

어느 쪽이든, 스크립트가 먼저 작동하는지 테스트하고 확인하는 것이 좋습니다. Linux를 S3 (예 :)에 넣으려고 할 때 중단이 발생 echo mem > /sys/power/state하면 다음을 복구 할 수 있습니다.

  • 일시 중지하기 전에 tty 또는 다른 터미널을여십시오 (접근 가능하므로 tty가 이상적임)
  • cryptsetup 및 관련 라이브러리를 RAM에로드하십시오. sudo cryptsetup luksResume anything_here
  • 스크립트를 사용하여 일시 중지
  • chroot 이후에 중단되면 (예 : starting version xxx새 vt에 after 가 표시됨) 이전에 연 tty로 전환하여 실행하십시오.sudo cryptsetup luksResume your_luks_device_name_here
  • 그것이 멈 추면 다른 vt와 chroot를 /run/initramfs다음 과 같이여십시오 :sudo chroot /run/initramfs /bin/ash
  • 실행하려고 luksResume:cryptsetup luksResume your_luks_device_name_here && exit
  • 그러면 컴퓨터가 일시 중단됩니다. 그런 다음 깨우고 스크립트가 여전히 실행중인 경우 종료하고 바인드 마운트를 마운트 해제하고 /run/initramfs루트 파일 시스템을 장벽으로 다시 마운트하십시오 (해당하는 경우).

1

이 설정에 대한 경험이 없지만 많은 사람들이 이것에 성공했다고 주장합니다. 여기 몇 가지가 있습니다.

LUKS가 포함 된 dm-crypt-스왑 파티션
암호화 방법 : Ubuntu 6.10을 사용하여 디스크 파티션 일시 중단을 포함하여 완전히 암호화 된 하드
디스크

그러나 그들 중 누구도 luksSuspend를 사용하지 않습니다 (이것이 작동하는 이유 일 수 있습니다).


링크 주셔서 감사합니다 ... 마지막 링크와 비슷한 설정을 사용하고 있습니다 (13.04 설치 프로그램에서 자동 생성).
조나스 말라 코

지금까지 luksSuspend가 없습니다. 메모리에서 키를 지우려면 전원을 꺼야합니다 ... 그럼에도 불구하고 링크에 감사드립니다! 어쩌면 이것을 수동으로 구성하는 방법을 이해함으로써 램을 일시 중단하기 위해 luksSuspend를 사용하는 방법에 대한 통찰력을 얻을 수 있습니다.
조나스 말라 코

1
luksSuspend는 사용하기 매우 어려운 것 같습니다. 모든 I / O가 정지되므로 매우 곡예적인 일시 중단 스크립트가 필요합니다. 나는 영어로 (나쁘게) 번역 될 수있는 오직 하나의 성공 사례 를 독일에서 찾을 수있었습니다 . 템플릿으로 사용해보십시오.
harrymc

2
램 디스크와 정적으로 연결된 cryptsetup을 사용해야 할 수도 있습니다.
harrymc

1

우분투 15.10 에서이 기능을 완전히 얻는 데 시간을 보냈습니다. ext2, ext3 또는 ext4에서이 작업을 수행하려면 'nobarrier'옵션으로 볼륨을 마운트하도록 / etc / fstab을 업데이트해야합니다. 그렇지 않으면 BTRFS를 사용하는 것이 좋습니다.

파일 시스템이 준비되면 여기에서 스크립트를 사용하십시오. https://github.com/Microcentillion/ubuntu-lukssuspend

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