LUKS를 통한 Yubikey 2 단계 인증 전체 디스크 암호화


27

나는 최근에 멋진 작은 하드웨어 2 단계 인증 장치 인 Yubikey Neo를 인수했습니다. 기본적으로 일회용 암호 및 새로 등장한 U2F 프로토콜과 함께 사용하도록 설계되었지만 Yubikey 버전 2부터는 HMAC-SHA1 챌린지 응답 인증도 지원합니다. HMAC-SHA1은 비밀 키 (Yubikey 내부에 저장 됨)를 결합하고이를 암호문과 결합하여 응답을 생성합니다.

Yubikey를 Ubuntu FDE 설정과 결합하여 암호화 된 하드 드라이브에 2FA를 사용하려면 어떻게해야합니까?

답변:


30

PrivacyIdea 라는 그룹 은 initramfs에 HMAC-SHA1 챌린지-응답 루틴 을 추가하기위한 작은 패키지를 만들었습니다. 즉, 우분투가 Yubikey에 전달할 챌린지를 쿼리 한 다음 응답을 사용하여 LUKS 볼륨을 잠금 해제 할 수 있습니다. 대부분의 경우, 나는이 지침을 따르고 몇 가지 의견을 추가했습니다. 이 과정은 실제로 매우 쉽습니다.

우분투 14.04, 16.04 및 18.04에서 이것을 테스트했습니다. Yubikey Neo를 사용합니다. 최신 Yubikey, 펌웨어 2.0 이상 및 14.04 이후의 모든 Ubuntu 버전에서 작동합니다. 또한 Yubikey 5C로 Ubuntu 19.04를 테스트했지만 추가 작업이 필요하지만 작동하도록 할 수 있습니다. 이것과 함께 작동하는 다른 하드웨어 HMAC-SHA1 챌린지 응답 장치가있을 수도 있지만 존재하는 하드웨어는 없습니다. 항상 그렇듯이 진행하기 전에 데이터 백업이 있는지 확인하십시오. 여기에는 문제가 없어야하지만 컴퓨터의 모든 내용이 손상 될 가능성은 항상 있습니다. 이 지침은 보증되지 않습니다.

업데이트 : Ubuntu 16.04부터 필요한 패키지가 기본 리포지토리에 있으며 PPA가 필요하지 않습니다.

궁금한 점이 있으면 의견을 추가하십시오!


0. 전제 조건

이것이 작동하려면 LUKS 전체 디스크 암호화가 설정되어 작동해야합니다. 우분투를 설치할 때 적절한 옵션을 선택하면됩니다. 보안을 최대화하려면 설치 중에 매우 강력한 암호를 선택해야합니다. 암호 문구가 처음부터 끝나지 않은 경우 계속하기 전에 암호 를 더 나은 것으로 변경 해야 합니다 ( 자세한 지침은 여기 참조 ).

아래의 방법은 기존 암호를 대체하지 않지만 대신 LUKS 슬롯 중 하나에 다른 암호를 추가합니다. 따라서 Yubikey를 잃어버린 경우에도 기존 암호를 사용하여 컴퓨터의 잠금을 해제 할 수 있습니다. 메모를 작성하여 안전한 곳에 숨길 것을 권장합니다.이 절차 중에 몇 번이 필요할 수도 있습니다. 새로운 Yubikey 챌린지 패스 프레이즈는 여전히 튼튼해야하지만 Ubuntu를 설치할 때 사용한 패스 프레이즈만큼 길지 않아도됩니다.


1. PrivacyIdea PPA 추가 및 패키지 설치

우분투 14.04에서

터미널을 열고 다음 명령을 실행하십시오.

sudo add-apt-repository ppa:privacyidea/privacyidea 

프롬프트가 표시되면 Enter를 누른 후 다음을 실행하십시오.

sudo apt-get update

그런 다음 다음을 사용하여 패키지를 설치하십시오.

sudo apt-get install yubikey-luks

우분투 16.04, 18.04에서

PPA가 필요하지 않은 경우 다음을 사용하여 패키지를 설치할 수 있습니다.

sudo apt-get install yubikey-luks

우분투 19.04에서

Ubuntu 19.04의 소스 에서 패키지 를 빌드하는 방법 은 이 답변 을 참조하십시오 yubikey-luks.


2. Yubikey 소프트웨어 설치

Yubikey의 HMAC-SHA1 기능을 다른 용도로 사용하는 경우이 섹션을 건너 뛸 수 있습니다. 두 번째 Yubikey 슬롯의 구성이 지워 지므로이 Yubikey 와 다른 목적으로 HMAC-SHA1을 사용하는 경우이 단계를 수행 하지 마십시오 .

Ubuntu 14.04 의 Yubico PPA 또는 16.04 이상의 기본 Ubuntu 저장소에서 필요한 소프트웨어를 설치하여 Ubuntu와 함께 작동하도록 Yubikey를 설정해야합니다 .

우분투 14.04에서

이전에 수행하지 않은 경우 PPA를 추가하고 다음을 사용하여 패키지를 설치하십시오.

sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install yubikey-personalization

우분투 16.04, 18.04 이상

sudo apt-get install yubikey-personalization

3. HMAC-SHA1을위한 Yubikey 슬롯 초기화

이제 Yubikey의 두 번째 슬롯을 HMAC-SHA1 구성으로 프로그래밍해야합니다. 이전 슬롯 구성이 지워지며 기본적으로 비어 있습니다. 다시 말하지만 HMAC-SHA1을 다른 용도로 사용하는 경우이 명령을 실행 하지 않으면 구성이 지워집니다. Yubikey 내에서 다른 LUKS 설정과 동일한 비밀 키를 안전하게 사용할 수 있습니다. (예를 들어, LUKS + Yubikey를 사용하는 다른 컴퓨터에서).

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

터미널은 변경 사항에 대한 정보를 표시합니다. 이 정보를 메모 할 필요는 없지만, HMAC-SHA1 알고리즘에서 Yubikey가 사용하는 비밀 키를 표시하여 도전이있을 때 응답을 계산합니다.


4. Yubikey를 LUKS 슬롯에 등록하십시오

이제 LUKS 구성을 편집하여 Yubikey의 응답을 암호 해독 키 중 하나로 추가합니다.

지정해야 할 파티션은 BIOS 또는 UEFI를 사용하여 시스템을 부팅하는지에 따라 다릅니다. BIOS의 경우 /dev/sda5기본적으로 암호화 된 볼륨은 UEFI의 경우입니다 /dev/sda3. disks유틸리티 를 열고 파티션 경로를 확인하여이를 확인할 수 있습니다 . sda3또는 경로 여야합니다 sda5. 참고 : NVMe 디스크가있는 최신 컴퓨터에서 경로는 다음과 같습니다 /dev/nvme0n1p3.

이것을 터미널에서 실행하십시오 :

sudo yubikey-luks-enroll -d /dev/sda3 -s 7

이것은 LUKS 구성의 슬롯 7에 기록되고 설치 프로그램의 지시를 따릅니다 (실행중인 버전에 따라 약간 다릅니다).

그럼 다 끝났어! 컴퓨터를 재부팅 할 수 있어야하며 Yubikey가 삽입 된 경우 챌린지 암호를 입력하고 Yubikey를 두 번째 요소로 사용하여 LUKS 파티션을 잠금 해제하고 시스템을 부팅 할 수 있습니다. 하드 드라이브의 암호를 해독하면 Yubikey를 제거 할 수 있습니다.

Yubikey를 잃어버린 경우에도 여전히 원래의 암호를 입력하여 하드 드라이브의 암호를 해독 한 다음이 절차를 다시 수행하여 새로운 Yubikey를 등록 할 수 있습니다.


암호화 시도 암호 변경

나중에 암호를 변경하는 것은 매우 간단합니다.이 명령을 사용하여 비밀 키를 재설정하십시오. 비밀 키를 재설정 할 필요는 없지만 아프지는 않습니다. 이것이 이전 비밀 키를 파괴한다는 것을 명심 하십시오.이 Yubikey와 함께 HMAC-SHA1을 다른 용도로 사용하는 경우이를 수행하지 마십시오. (예를 들어, LUKS + Yubikey를 사용하는 다른 컴퓨터에서).

 ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

그런 다음 위의 4 단계 와 유사하게 LUKS 키 슬롯에 새 비밀번호를 등록하려면 다음 명령으로 슬롯 7을 지우도록 선택하십시오.

sudo yubikey-luks-enroll -d /dev/sda3 -s 7 -c

메시지가 표시되면 Enter any remaining passphraseYubikey 챌린지 암호가 아닌 백업 암호를 사용하십시오. 그런 다음 Yubikey 챌린지 암호를 두 번 입력 한 다음 마지막으로 백업 암호를 입력해야합니다.

이제 기존 Yubikey 챌린지 암호가 제거되었으며 새 것만 하드 드라이브의 암호를 해독합니다. 이전 백업 비밀번호 문구는 여전히 동일합니다. 0 단계 의 링크를 따라 해당 비밀번호 문구를 변경할 수 있습니다 .


보안 관련 유의 사항

Yubikey를 추가하면 시스템에 일정 수준의 보안이 추가됩니다. 누군가 비밀번호 힌트를 알아야하고 Yubikey가 하드 드라이브를 잠금 해제 할 수 있도록해야합니다 (또는 백업으로 사용중인 초기 비밀번호 문구를 찾으십시오). . 그러나 공격자가 입력 암호를 ​​입력하는 동안 "숄더 서핑"과 같은 챌린지 암호를 알고있는 경우 공격자가 하드 드라이브의 암호를 해독 할 수 있으며 기술적으로 단기간 동안 Yubikey에 액세스 할 수 있습니다. 챌린지 암호를 사용하면 Yubikey에서 응답을 받아 저장 한 다음 Yubikey없이 언제든지 하드 드라이브의 암호를 해독하는 데 사용할 수 있습니다. 또는 공격자 또는 맬웨어가 비밀번호 문구를 알고 Yubikey에 연결된 컴퓨터에서 코드를 실행할 수있는 경우에도 이의를 제기하여 응답을 저장할 수 있습니다. 따라서 챌린지 패스 프레이즈를 입력 할 때 항상주의를 기울여야하며 항상 안전한 위치에 Yubikey가 있어야합니다. 또한 신뢰할 수있는 컴퓨터에만 연결해야합니다. Yubikey를 추적하지 못하고 누군가이 키를 사용하여 암호 해독 키를 배우려고했다고 의심되는 경우, 2 단계와 3 단계를 다시 수행하여 Yubikey 내부의 비밀 키를 재설정하고 새로운 챌린지 암호를 선택하십시오. 공격자가 암호문 (유 바이키의 HMAC-SHA1 응답 또는 백업) 중 하나를 학습 한 경우 LUKS 마스터 키를 백업 한 다음이를 사용하여 하드 드라이브의 암호를 해독 할 수 있습니다. 나중에 암호를 변경하십시오. Yubikey를 항상 안전한 곳에 보관하십시오. 또한 신뢰할 수있는 컴퓨터에만 연결해야합니다. Yubikey를 추적하지 못하고 누군가이 키를 사용하여 암호 해독 키를 배우려고했다고 의심되는 경우, 2 단계와 3 단계를 다시 수행하여 Yubikey 내부의 비밀 키를 재설정하고 새로운 챌린지 암호를 선택하십시오. 공격자가 암호문 (유 바이키의 HMAC-SHA1 응답 또는 백업) 중 하나를 학습 한 경우 LUKS 마스터 키를 백업 한 다음이를 사용하여 하드 드라이브의 암호를 해독 할 수 있습니다. 나중에 암호를 변경하십시오. Yubikey를 항상 안전한 곳에 보관하십시오. 또한 신뢰할 수있는 컴퓨터에만 연결해야합니다. Yubikey를 추적하지 못하고 누군가이 키를 사용하여 암호 해독 키를 배우려고했다고 의심되는 경우, 2 단계와 3 단계를 다시 수행하여 Yubikey 내부의 비밀 키를 재설정하고 새로운 챌린지 암호를 선택하십시오. 공격자가 암호문 (유 바이키의 HMAC-SHA1 응답 또는 백업) 중 하나를 학습 한 경우 LUKS 마스터 키를 백업 한 다음이를 사용하여 하드 드라이브의 암호를 해독 할 수 있습니다. 나중에 암호를 변경하십시오. 2 단계와 3 단계를 다시 수행하여 Yubikey 내부의 비밀 키를 재설정하고 새 챌린지 암호를 선택하십시오. 공격자가 암호문 (유 바이키의 HMAC-SHA1 응답 또는 백업) 중 하나를 학습 한 경우 LUKS 마스터 키를 백업 한 다음이를 사용하여 하드 드라이브의 암호를 해독 할 수 있습니다. 나중에 암호를 변경하십시오. 2 단계와 3 단계를 다시 수행하여 Yubikey 내부의 비밀 키를 재설정하고 새 챌린지 암호를 선택하십시오. 공격자가 암호문 (유 바이키의 HMAC-SHA1 응답 또는 백업) 중 하나를 학습 한 경우 LUKS 마스터 키를 백업 한 다음이를 사용하여 하드 드라이브의 암호를 해독 할 수 있습니다. 나중에 암호를 변경하십시오.cryptsetup의 매뉴얼 페이지에서이를 설명합니다 . luksHeaderBackup 섹션을보십시오. 이것이 발생했다고 의심되면 데이터를 보호하기 위해 완전히 새로운 LUKS 볼륨을 만들어야합니다.


업데이트 : 나는 15.04로 이것을 시도했지만 PPA에 필요한 패키지가 빌드되어 있지 않은 것처럼 보이므로 소프트웨어 소스에서 DEV 라인을 변경하여 "vivid"대신 "trusty"저장소를 사용해야합니다. ". 이렇게 변경 한 후 LUKS + Yubikey 설정이 15.04에서 작동합니다.
seanlano

4
더 이상 privacyidea repo를 사용하지 마십시오! 패키지는 이제 업스트림 데비안에 포함되어 있습니다!
cornelinux

1
yubikey없이 피하기 로그인 할 수있는 방법이 있습니다 : 변경 LUKS는 때마다 암호 문구 사용자가 로그인 할 때 여기 젠투에 대한 구현이있다 :. github.com/flowolf/initramfs_ykfde 그것은 짧은 시간 내에 우분투 적용 할 수 있습니다가.
Unnamed_1

1
새로운 18.04 LTS 릴리스에서도 동일한 절차가 작동한다고 생각합니까?
Mark Veenstra

2
우분투 18.04로 시도했지만 정상적으로 작동합니다.
jetole

0

우분투 19.04 업데이트 :

우분투 19.04 (그리고 아마도 18.10, 나는 그 릴리스를 시도하지 않았 음)처럼 작동 cryptsetup방식을 깨뜨릴만큼 충분히 바뀌 었습니다 yubikey-luks. 이 커밋 상류 저장소이 수정 프로그램을 구현하는 것에서,하지만 원래 저장소 I 10 월 2018 년 이후 업데이트 된 것 같지 않습니다 REPO의 포크 발견 수정 프로그램을 가지고뿐만 아니라 tidying-의 몇 가지 다른 비트를 19.04에서 작동하는 패키지를 빌드했습니다.

업데이트 된 포크의 기존 빌드를 찾을 수 없으므로 yubikey-luks작업 방법 은 소스 코드를 가져 와서 DEB 패키지를 로컬로 빌드 한 다음 설치하는 것입니다.

1 단계를 아래로 바꾸는 것을 제외하고는 이전 답변 의 단계를 따르십시오 .


1. yubikey-luks 소스를 가져오고 패키지를 빌드하고 설치하십시오.

다음을 사용하여 빌드 종속성을 설치하십시오.

sudo apt install dh-exec devscripts expect yubikey-personalization

그런 다음 소스 아카이브를 다운로드하여 추출하십시오.

mkdir ~/tmp
cd ~/tmp
wget -O yubikey-luks.zip https://github.com/thuandt/yubikey-luks/archive/master.zip
unzip yubikey-luks.zip
cd yubikey-luks-*

다음을 사용하여 패키지를 빌드하십시오.

make builddeb NO_SIGN=1

그런 다음 설치하십시오.

sudo dpkg -i DEBUILD/yubikey-luks_*.deb

그런 다음 첫 번째 답변의 나머지 단계를 계속하십시오.

바라건대 19.10 yubikey-luks까지는 메인 Ubuntu 아카이브 의 버전 을 수동으로 구축 할 필요가 없도록 업데이트 할 수 있습니다.

보너스로 최신 버전에는 구성 파일이 있으며이 파일은에서 찾을 수 있습니다 /etc/ykluks.cfg. 부팅시 표시되는 메시지는이 파일에서 구성 할 수 있습니다.

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