UEFI 보안 부팅에서 Linux 최대 절전 모드를 활성화하고 선택한 현재 배포판(또는 메인라인 커널)에서 커널을 잠그는 방법은 무엇입니까?

UEFI 보안 부팅에서 Linux 최대 절전 모드를 활성화하고 선택한 현재 배포판(또는 메인라인 커널)에서 커널을 잠그는 방법은 무엇입니까?

현재 Linux 배포판이 UEFI 보안 부팅에서 실행되면 커널 잠금이 설정됩니다. 다중 커널 메시지

Lockdown: swapper/0: hibernation is restricted; see man kernel_lockdown.7

설명이 지원될 수 있습니다. UEFI 보안 부팅의 최대 절전 모드가 손상되었습니다. 이 인상은 대부분의 인터넷 소스를 읽을 때 지원됩니다. 이 설명은잘못된, 하지만. 이것이 메시지가 "비활성화됨" 대신 "제한됨"이라는 단어를 사용하는 이유입니다. kernel_lockdown을 지원하기 위한 서명된 커널/메모리 이미지에 대한 패치가 2017년경부터 개발 중인 것으로 나타났습니다. 2011년.

LUKS는 최소한 스왑 공간(풀 HD가 아닌 경우)을 암호화하고 TPM이 포함된 경우 높은 수준의 자동화를 사용하더라도 잠금 상태에서 최대 절전 모드를 활성화할 수 있습니다.

추천 도서:

이 기능을 구현할 수 있는 주류 커널 버전은 무엇입니까? 가장 전문적으로 유지 관리되는 배포판 중 잠금 시 최대 절전 모드를 활성화하는 패치가 설치된 배포판은 무엇입니까? 활성화하려면 어떻게 해야 합니까?

이러한 배포판은 RHEL 및 Clones, Debian(및 Ubuntu), SLES/OpenSuse일 수 있지만 "가장 전문적인" 배포판이 무엇인지에 대한 논의는 시작하지 않겠습니다. 대규모 사용자 기반의 배포에 가장 적합한 "간단한" 솔루션을 알고 계시다면 자유롭게 답변해 주시기 바랍니다.

제안한 대로 자체 패치를 삽입할 수 있는지 궁금합니다.보안 부팅이 활성화된 상태에서 최대 절전 모드를 허용하도록 커널 패치현재 배포판에 꼭 필요합니다. 배포판이 필요해요골프를 치다장소.

답변1

동시에 나는 선언할 수 있다.오픈 수스 15.3그리고15.4확실히 가능하지만 편안함 수준은 다양하며 주로 수동 비밀번호 입력과 암호화된 토큰을 통한 자동 암호 해독에 중점을 둡니다.

신규 설치(OpenSuse)

가장 쉬운 설치 경로는 설치 중에 디스크 암호화 및 LVM("부팅 설치")을 선택하는 것입니다. 이렇게 하면 암호화된 LV에 루트 파일 시스템과 스왑이 배치됩니다. 커널은 여전히 ​​"최대 절전 모드 제한" 메시지를 발행하지만 커널은 스왑 영역이 암호화되어 디스크에서 일시 중지되는 것을 감지한 것으로 보입니다.

systemctl hibernate

그러나 최소한 RAM 크기가 스왑에 맞는지 확인해야 합니다. 하지만 대부분의 RAM이 버퍼 및 캐싱에 사용되는 한 기록되는 이미지는 RAM 크기보다 훨씬 작습니다. GUI(KDE 테스트)에는 "Sleep" 및 "Hibernate" 버튼이 표시됩니다.

기존 시스템 수정

또한 암호화된 교환이 있지만 LVM이 없는 사전 설치된 시스템을 구성할 수도 있었습니다. 이는 배포판 독립적이어야 합니다. 그러나 루트 디렉터리가 암호화되지 않는 한 이는 제한된 보호를 제공한다는 점에 유의하십시오. 안전 부팅에서는 최소한 최대 절전 모드로 들어갈 수 있을 것입니다.

  1. gdisk를 사용하여 기본 스왑 파티션(예: /dev/sdaX)을 만듭니다. 파티션 유형 dm-crypt(8308)

  2. 기본 파티션 포맷

cryptsetup luksFormat -y -v --type luks2 /dev/sdaX

  1. 암호화된 비밀번호를 입력하세요

  2. 암호화되지 않은 장치 열기

cryptsetup luksOpen /dev/sdaX cr_swap

  1. 이 경우 내 /etc/crypttab은 cryptsetup에 의해 생성되지 않았으므로 다음을 입력해야 했습니다(에서 fs uuid 가져오기 lsblk -d -o uuid /dev/sdaX).

cr_swap UUID=[fs UUID of/dev/sdaX] x-initrd.attach 없음

  1. 형식 교환

mkswap /dev/mapper/cr_swap

  1. cr_swap의 UUID를 기록해 두세요.

lsblk -o name,type,uuid

  1. 다음 줄로 /etc/fstab을 업데이트합니다.

UUID=[cr_swap의 UUID] 스왑 기본값 0 0

  1. 테스트 교환

swapon -a swapon -s

  1. GRUB2 부트로더에서 커널 매개변수 추가resume=/dev/disk/by-uuid/[UUID of cr_swap]

  2. initrd가 업데이트되었는지 확인하세요(예: 복구 모듈이 있어야 합니다!)

dracut -f

  1. 재부팅을 수행하고 최대 절전 모드를 시도하십시오.

암호화폐 거래소가 감지되었는지 확인할 수 있습니다:

fwupdmgr security --force

어딘가에 출력이 있어야 합니다.

✔ Linux kernel lockdown:         Enabled
✔ Linux swap:                    Encrypted
✔ fwupd plugins:                 Untainted

결과

그러나 개선의 여지가 있습니다.

  • 옵션 1에 LVM이 포함된 Opensuse 시스템에서는 디스크 비밀번호를 묻습니다. 두 배. (GRUB2+초기화)

  • 두 번째 버전에서는 systemd가 시작 시 교환 비밀번호를 묻는 메시지를 표시해야 합니다. 한 번.

  • TPM 또는 FIDO2 장치를 사용하면 암호 없이 디스크를 해독할 수 있지만 이는 또 다른 이야기입니다.

관련 정보