부팅 프로세스 초기에 포트를 열어 SSH를 통해 LUKS 잠금을 해제하는 방법


11

데비안 7을 실행하는 완전히 암호화 된 서버가 있으며 SSH를 통해 LUKS 컨테이너의 잠금을 해제하도록 dropbear 및 busybox를 설정했습니다 ( 이 자습서이 U & L 답변 에 설명 되어 있음 ).

불행히도 재부팅 할 때 LAN을 통해 서버에 SSH를 시도 할 때마다 "연결 거부"오류가 발생합니다. 나는 시도 telnet하고 nmap기본 포트 (22)와에 모두 포트가 닫혀 말한다.

서버에는 ufwLAN의 모든 트래픽을 수락 하는 규칙이 있습니다.

Anywhere         ALLOW       192.168.1.0/24

나는의에 Dropbreak 내부 수신하는 포트 변경 시도 /etc/defaults/dropbearssh하고 telnet아직 연결이 거부됩니다 1 .

LUKS 컨테이너의 잠금을 해제하기 위해 연결할 수 있도록 부팅 프로세스의 해당 단계에서 포트가 열려 있는지 어떻게 확인할 수 있습니까?

방화벽을 비활성화 nmap해도 아무런 차이가 없습니다. 모든 포트가 여전히 닫혀 있음을 나타냅니다.

업데이트 2/14

나는 break=premount커널 라인에 추가 하고 initramfs에서 찔렀다. dropbear시작했지만 네트워크가 그 시점에 있지 않습니다 . 종료 후 네트워크가 켜지고 LUKS 장치 잠금 해제 프롬프트가 표시 될 때까지 부팅이 계속됩니다.

이 시점에서 네트워크 가 작동 하고 호스트에 올바른 IP 주소가 할당되었지만 포트 22는 여전히 닫혀 있습니다.

사용중인 IP 라인 /etc/initramfs-tools/intiramfs.conf은 다음과 같습니다.

export IP=192.168.1.200::192.168.1.1:255.255.255.0::eth0:off

지시 사항에 /usr/share/doc/cryptsetup/README.remote.gz따라 장치 옵션을 추가하려고 시도했지만 네트워크를 가동시키고 DHCP 임대를 얻는 데 충분하지 않습니다.

업데이트 11/10/14

Karl의 대답 은 필요한 것이 었습니다. 설정 /etc/initramfs-tools/conf.d/cryptroot이 핵심이었습니다.

target=md1_crypt,source=UUID=8570d12k-ccha-4985-s09f-e43dhed9fa2a

이 가이드 는 또한보다 최신의 관련성 있고 성공적인 것으로 입증되었습니다.


1
와! 완전히 잠긴 LUKS를 원격으로 잠금 해제 할 수 있다는 것을 완전히 몰랐습니다. 분명히 나는 ​​당신의 질문에 대해 대답 할 수는 없지만 sshd가 시작되지 않았다고 생각합니다. 내 컴퓨터에서 sshd는 나중에 프로세스에서 시작됩니다.
emory

1
비지 박스 환경에있는 동안 컴퓨터에 대한 콘솔 액세스 권한이 있습니까? dropbear가 실제로 (via를 통해 ps) 실행 중이고 원하는 포트를 통해 듣고 있는지 확인할 수 있습니까 (via netstat)?
larsks

larsks-아니오, 콘솔에서 암호가 입력되기를 기다리는 프롬프트가 표시되고 다른 TTY로 전환하면 빈 화면이 나타납니다.
jasonwryan

LUKS 암호화를 (일시적으로) 제거하고 드롭 베어가 실제로 실행 중인지 확인할 수 있습니까?
emory

1
break=X초기 initramfs쉘 을 얻기 위해 부트 매개 변수 중 하나를 사용해 보셨습니까 ? 파일 시스템 암호화 문제를 디버깅 할 때마다을 사용 break=premount합니다. 상황을 확인하고 해결 한 후 부팅을 계속할 수 있습니다.
Alexios

답변:


3

몇 주 전에 (Debian Wheezy 7.6)이 동일한 문제가 발생했으며 문제 해결 후 며칠이 지나면 init-top의 cryptroot 스크립트가 올바르게 실행되지 못하게하는 구성 파일이 누락되었음을 알았습니다. ssh를 통해 암호를 묻기 위해 시퀀스의 끝에서 dropbear를 죽입니다 (init-bottom).

구성 파일이 호출 cryptroot되고 /etc/initramfs-tools/conf.d/ 설치 중에 실수로 구성 파일이 생성되어야한다고 생각하지 않는 경우 (설정 파일에 대해 설명하는 자습서를 읽었 음) 물리적 서버에서 테스트되지 않았습니다. VM, 동일한 OS 및 버전)

당시 적절한 구문을 찾을 수 없으므로 제대로 구성하기 위해 몇 번의 시도가 필요했습니다. 내 cryptroot 구성 파일은 다음과 같습니다.

target=crypt-root,source=/dev/vg0/root,lvm=root

구성 파일을 만든 후에는 initramfs를 업데이트하고 다시 시도하십시오.

update-initramfs -u

당신은 전설입니다! 고마워요 : 저는이 문제를 오랫동안 해결해 왔으며 해결에 대한 희망을 거의 포기했습니다. 내 cryptroot문법은 당신과 다르지만, 당신의 대답은 나를 올바른 방향으로 지적하기에 충분했습니다. 당신에게 빚을 졌어요
jasonwryan

드디어 작동하게되어 기쁩니다. 문제를 조사하는 동안 귀하의 질문을 보았으며 문제가 해결되면 어떻게 해결했는지 게시해야한다고 생각했습니다.
Karl

3

제목이 잘못되었습니다. 문제는 닫힌 포트가 아니며 바인딩되지 않은 포트입니다. SSHd가 아직 시작되지 않았습니다. 그것이 당신이 연결할 수없는 이유입니다.


@ camh, 그것에 관한 규칙이 있습니까?
poige

나는 첫 번째 문장, 즉 편집에 더 집중했다. 나머지는 좋은 대답이 되기에는 다소 간결하지만 여전히 답이라고 생각합니다. 내 의견을 삭제하겠습니다.
camh

@ camh, 알 겠어요 ...
poige

내가 사용하지 않는 sshd: 질문 상태로, 나는 기본적으로 포트 22에 Dropbreak 내부 인스턴스에 그 실행을 연결을 시도하고있다.
jasonwryan

@ Jasonwryan, 정확히 사용하려는 TCP 서비스가 실제로 어떤 역할을하지 않는지, 실제로 중요한 것은 시작되지 않았다는 것입니다.
poige

3

dropbear (ssh 서버)는 부팅 단계에서 init(rcN.d) 시퀀스 및 방화벽 초기화 스크립트 보다 일찍 시작됩니다 . /보다 이전에 마운트되어 있습니다 (암호화되어 있습니까?). 따라서 initramfs부트 로더에 의해 커널에로드 된 프리 / 사용자 랜드 가옵니다 . 이미지는의 드롭 베어 구성을 포함하여의 update-initramfs -u콘텐츠에서 (재) 생성됩니다 . dropbear 구성으로 재생하려면 해당 구성으로 재생하십시오./etc/initramfs-tools//etc/initramfs-tools/etc/dropbear/

따라서 확인할 몇 가지 사항은 다음과 같습니다.

  • dropbear가 시작되지 않습니다 : initramfs 시퀀스에 제대로 연결되지 않았습니다.
  • 기본 방화벽은 모두 거부합니다.

감사합니다 yarek : 당신이 옳다고 생각합니다-나는 데비안 버그 (그리고 작동하지 않는 수정)로 내 질문을 업데이트했습니다. 방화벽을 비활성화하려고 시도했습니다.
jasonwryan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.