3.11. 개인 키를 사용하여 커널 모듈 서명
UEFI Secure Boot 메커니즘이 활성화된 경우 서명된 커널 모듈을 로드하여 시스템의 보안을 향상시킬 수 있습니다.
서명된 커널 모듈은 UEFI Secure Boot가 비활성화되거나 비UEFI 시스템에서도 로드할 수 있습니다. 따라서 서명된 커널 모듈 버전과 서명되지 않은 버전을 모두 제공할 필요가 없습니다.
사전 요구 사항
- 공개 및 개인 키 쌍을 생성하고 공개 키의 유효 날짜를 알고 있습니다. 자세한 내용은 공개 및 개인 키 쌍 생성을 참조하십시오.
- 대상 시스템에 공개 키를 등록했습니다. 자세한 내용은 MOK 목록에 공개 키를 추가하여 대상 시스템에서 공개 키 등록을 참조하십시오.
- ELF 이미지 형식의 커널 모듈이 서명에 사용할 수 있습니다.
프로세스
공개 키를
sb_cert.cer파일로 내보냅니다.certutil -d /etc/pki/pesign \ -n 'Custom Secure Boot key' \ -Lr \ > sb_cert.cer# certutil -d /etc/pki/pesign \ -n 'Custom Secure Boot key' \ -Lr \ > sb_cert.cerCopy to Clipboard Copied! Toggle word wrap Toggle overflow NSS 데이터베이스에서 PKCS #12 파일로 키를 추출합니다.
pk12util -o sb_cert.p12 \ -n 'Custom Secure Boot key' \ -d /etc/pki/pesign# pk12util -o sb_cert.p12 \ -n 'Custom Secure Boot key' \ -d /etc/pki/pesignCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 이전 명령에서 프롬프트가 표시되면 개인 키를 암호화하는 새 암호를 입력합니다.
암호화되지 않은 개인 키를 내보냅니다.
openssl pkcs12 \ -in sb_cert.p12 \ -out sb_cert.priv \ -nocerts \ -nodes# openssl pkcs12 \ -in sb_cert.p12 \ -out sb_cert.priv \ -nocerts \ -nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 중요암호화되지 않은 개인 키를 안전하게 유지합니다.
커널 모듈에 서명합니다. 다음 명령은 커널 모듈 파일의 ELF 이미지에 서명을 직접 추가합니다.
/usr/src/kernels/$(uname -r)/scripts/sign-file \ sha256 \ sb_cert.priv \ sb_cert.cer \ my_module.ko# /usr/src/kernels/$(uname -r)/scripts/sign-file \ sha256 \ sb_cert.priv \ sb_cert.cer \ my_module.koCopy to Clipboard Copied! Toggle word wrap Toggle overflow
이제 커널 모듈을 로드할 준비가 되었습니다.
RHEL 8에서 키 쌍 관련 유효 날짜입니다. 키는 만료되지 않지만 서명 키의 유효 기간 내에 커널 모듈에 서명해야 합니다. 서명 파일 유틸리티는 이에 대해 경고하지 않습니다. 예를 들어 2019년에만 유효한 키를 사용하여 2019년에 서명된 커널 모듈을 해당 키로 인증하는 데 사용할 수 있습니다. 그러나 해당 키를 사용하여 2020년 커널 모듈에 서명할 수 없습니다.
검증
커널 모듈 서명에 대한 정보를 표시합니다.
modinfo my_module.ko | grep signer signer: Your Name Key
# modinfo my_module.ko | grep signer signer: Your Name KeyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 서명에 생성 중 입력한 이름이 나열되어 있는지 확인합니다.
참고첨부된 서명은 ELF 이미지 섹션에 포함되지 않으며 ELF 이미지의 공식적인 부분이 아닙니다. 따라서
readelf와 같은 유틸리티는 커널 모듈에 서명을 표시할 수 없습니다.모듈을 로드합니다.
insmod my_module.ko
# insmod my_module.koCopy to Clipboard Copied! Toggle word wrap Toggle overflow 모듈을 제거(load)합니다.
modprobe -r my_module.ko
# modprobe -r my_module.koCopy to Clipboard Copied! Toggle word wrap Toggle overflow