나는 한동안 암호화된 드라이브로 실행되는 Debian Wheezy 서버를 가지고 있습니다. /dev/sda5
암호화된 비밀번호 파일이 손상되어 암호화된 드라이브( )의 비밀번호가 손실되었습니다.
서버를 다시 시작하고 싶지만 물론 비밀번호가 필요합니다. 드라이브가 분명히 복호화된 상태인데, 이전 비밀번호를 모르고 비밀번호를 변경할 수 있는 방법이 있나요?
cryptsetup luksChangeKey /dev/sda5
볼륨에 대한 비밀번호가 필요합니다.
물론 rsync
모든 것을 종료하고 다시 구축할 수도 있지만 그렇게 하는 것은 피하고 싶습니다. 기억( )을 뒤져보았지만 #cat /dev/mem | less
찾을 수 없었습니다(아주 좋은 일이네요!).
답변1
예, 볼륨을 해독할 때 마스터 키에 액세스하면 됩니다.
새 비밀번호를 추가하는 빠르고 더러운 방법:
device=/dev/sda5
volume_name=foo
cryptsetup luksAddKey $device --master-key-file <(dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p)
device
그리고 volume_name
적절하게 설정해야 합니다.
volume_name
에 표시되는 암호 해독된 볼륨의 이름입니다 /dev/mapper
.
설명하다:
LUKS 볼륨은 마스터 키를 사용하여 데이터를 암호화합니다. 추가하는 각 비밀번호는 해당 비밀번호로 암호화된 마스터 키의 복사본만 저장합니다. 따라서 마스터 키가 있으면 새 키 슬롯에 사용하면 됩니다.
위의 명령을 분석해 보겠습니다.
$ dmsetup table --showkeys $volume_name
이는 적극적으로 해독된 볼륨에 대한 많은 정보를 덤프합니다. 출력은 다음과 같습니다.
0 200704 crypt aes-xts-plain64 53bb7da1f26e2a032cc9e70d6162980440bd69bb31cb64d2a4012362eeaad0ac 0 7:2 4096
필드 #5는 마스터 키입니다.
$ dmsetup table --showkeys $volume_name | awk '{ print $5 }' | xxd -r -p
출력은 바이너리 데이터이기 때문에 표시되지 않지만 볼륨의 마스터 키를 가져온 다음 나중에 필요한 원시 바이너리 데이터로 변환하는 작업을 수행합니다.
$ cryptsetup luksAddKey $device --master-key-file <(...)
이는 cryptsetup에게 볼륨에 새 키를 추가하도록 지시합니다. 일반적으로 여기에는 기존 키가 필요하지만 일반적으로 --master-key-file
마스터 키를 사용하고 싶다고 말합니다.
이것이 <(...)
쉘 명령 대체 및 리디렉션입니다. 기본적으로 내부의 모든 것을 실행하고 출력을 파이프로 보낸 다음 <(...)
해당 파이프의 경로로 바꿉니다.
따라서 전체 명령은 여러 작업을 압축한 하나의 문장입니다.