라이브 루트 파일 시스템을 원격으로 암호화하고 SSH를 통해 잠금을 해제하는 방법

라이브 루트 파일 시스템을 원격으로 암호화하고 SSH를 통해 잠금을 해제하는 방법

VPS에서 실행되는 Linux Arch 시스템이 있습니다. rootfs는 LVM 파티션에 설치됩니다. 이 파티션에 암호화된 컨테이너를 오버레이한 다음 여기에 rootfs를 다시 마운트하고 SSH를 통해 부팅 시 SSH 잠금 해제를 활성화하고 싶습니다. 기존 rootfs의 모든 내용을 삭제하고 처음부터 새 루트fs를 만들게 되어 기쁩니다.

나는 다음과 같이 진행합니다 :

  1. /tmp/newroot에 새로운 임시 rootfs를 생성합니다(나는아치스 위키)
  2. chroot 및 pacman 설정, 인증 키를 정의하는 항목 설치, sshd를 활성화하지만 시작하지 않음
  3. 원래 루트 디렉터리로 다시 종료
  4. 새 루트로 영구적으로 전환: 다음 제안 사항이것은 훌륭한 기사입니다, 아래 코드를 실행합니다.
  5. 이 시점에서 lvm 파티션에 있는 이전 루트에 여전히 걸려 있는 sshd 및 기타 모든 서비스를 다시 시작하고 싶습니다.
  6. lvm 파티션에 암호화된 파티션 생성
  7. 그것에 아치 리눅스를 설치하고 intrafms를 적절하게 수정하십시오.

6단계와 7단계는 잘 문서화되어 있습니다(예:여기).

다음은 훌륭하게 작동하는 4단계의 세부정보입니다.

# we start after step 2, so that /tmp/newroot contains a minimal temporary root fs 
# with network, sshd and pacman, and the command prompt is from the original root

# move the new root fs to a newly create /tmproot, as per the referenced post
# (perhaps this is redundant, I could have used newroot directly, but it should not harm)
mkdir /tmp/tmproot
mount -t tmpfs none /tmp/tmproot
mv /tmp/newroot/* /tmp/tmproot

# switch to new root
mount -a
mount --make-rprivate / # necessary for pivot_root to work
pivot_root /tmp/tmproot /tmp/tmproot/oldroot

# move some directories to newroot
for i in dev proc sys run; do mount --move /oldroot/$i /$i; done

5단계에서 막혔어요. 를 사용하면 fuser -vm /oldroot이전 루트 파티션에 여전히 많은 프로세스가 걸려 있는 것을 볼 수 있습니다. newroot에서 다시 시작하려고 하면 systemctl오류가 발생합니다.

# systemctl restart sshd
Failed to restart sshd service: Failed to activate service 'org.freedesktop.systemd1': timed out

수동으로 종료할 수는 있지만 init 프로세스만 남아 있어 systemd종료할 수 있는 방법이 없는 것 같습니다. systemctl daemon-reexec불가능한.

어쩌면 파일 시스템에서 뭔가를 구성하는 것을 잊어버린 것일까 newroot요? 어쩌면 switch_root대신 사용해야할까요 pivot_root?

어떤 제안이 있으십니까? 감사해요

답변1

보세요https://wiki.archlinux.org/index.php/Dm-crypt/Specialties. mkninitcpio 암호화 후크를 encryptssh로 전환하고 커널 부팅 라인에 무언가를 추가할 수 있습니다. 나는 dropbear 후크를 사용하고 있으며 정말 잘 작동합니다.

관련 정보