LUKS 비밀번호를 비대화식으로 변경하시겠습니까?

LUKS 비밀번호를 비대화식으로 변경하시겠습니까?

LUKS를 사용하기 위해 호스트를 부팅하고 있습니다. 그 일부로 킥스타트 파일에 상당히 기본적인 "기본" 비밀번호가 있습니다.

우리는 ansible을 통해 새 빌드를 "수행"하므로 이의 일부로 기본 luks 비밀번호를 더 강력한 비밀번호로 변경하고 싶습니다(그리고 Ansible을 통해 관리).

하지만 제가 이해하지 못하는 점은 비대화형 방식으로 cryptsetup(또는 다른 것)을 사용하여 비밀번호를 업데이트하려면 어떻게 해야 한다는 것입니다.

나는 원한다유지하다비밀번호(키 파일 아님) 사용 - 루트 드라이브에 네트워크 바인딩 디스크 암호화를 사용하여 Clevis/Tang 배포를 시작했으며 비밀번호 부팅 옵션을 유지하고 싶었습니다.

것 같다

echo "oldpassphrase
newpassphrase" | cryptsetup luksAddKey /dev/sda2

그러면 문제가 해결될 수도 있지만 혼란스러운 선택처럼 느껴지시나요?

답변1

가능한만들다표준 입력을 키 파일로 사용하여 비대화식으로 LUKS 컨테이너를 생성합니다.echo -n "mypassword" cryptsetup luksFormat --key-file - dev/sda2

하지만 비대화식으로는 비밀번호를 변경할 수 없습니다.그리고다음과 같은 이유로 키 파일이 사용되지 않습니다.

  1. cryptsetup암호는 명령줄에서 허용되지 않습니다. 암호가 쉘 기록으로 유출되는 것을 방지하기 위해 파일에서만 대화형으로 허용됩니다.
  2. 표준 입력을 키 파일로 사용할 수 있지만 비밀번호를 추가하거나 변경하려면 기존 비밀번호와 새 비밀번호를 제공해야 합니다. 이는 두 개의 입력과 하나의 표준 입력입니다.

옵션 1 - 명명된 파이프 사용

기술적으로 여기에는 파일이 필요하지만 해당 파일은 키 파일이 아닌 명명된 파이프입니다.

mkpipe fifo
echo -n "oldpass" | cryptsetup luksAddKey --key-file - test.img fifo &
echo -m "newpass" > fifo

첫 번째 명령은 명명된 파이프를 생성하고, 두 번째 명령은 stdin을 사용하여 원래 암호를 제공하고 파이프에서 새 암호를 읽습니다. 두 번째 명령은 차단되므로 &백그라운드에 둡니다. 세 번째 명령은 파이프에 새 비밀번호를 기록하여 cryptsetup이 잠금을 해제하고 계속할 수 있도록 합니다.

옵션 2 - cryptsetup API 사용

Cryptsetup은 유틸리티일 뿐만 아니라 라이브러리(libcryptsetup)이기도 합니다. 다음과 같은 기능을 사용할 수 있습니다.crypt_keyslot_add_by_passphrase()자신의 코드에 새 비밀번호를 추가하세요. 이 특정 함수는 기존 비밀번호와 새 비밀번호 char *(문자열)를 허용합니다.

답변2

ct=$(cat /etc/crypttab)   
[[ $ct =~ ((sda[0-9])_crypt[[:blank:]]) ]] || _fail Could not find crypted partition  
part="/dev/${BASH_REMATCH[2]}"
echo Partition is $part

(echo "$existingPW"; echo "$newPW"; echo "$newPW") | cryptsetup luksAddKey $part

...완료하는 데 몇 초 정도 걸립니다.

답변3

다음과 같이 새 볼륨을 생성한다고 가정합니다.

echo -n pass0 | cryptsetup luksFormat /dev/sda2 -

따라서 키웨이 #0의 비밀번호는 "pass0"입니다.

다음으로 키웨이 #1의 비밀번호를 "pass1"로 설정합니다.

echo -n "pass0pass1" | cryptsetup luksAddKey --key-file /dev/stdin --keyfile-size 5 --key-slot 1 /dev/sda2 /dev/stdin

첫 번째 비밀번호 "pass0"은 5자 길이이므로 "--keyfile-size 5"를 지정했습니다.

관련 정보