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
NSS 데이터베이스에서 PKCS #12 파일로 키를 추출합니다.
# pk12util -o sb_cert.p12 \ -n 'Custom Secure Boot key' \ -d /etc/pki/pesign
- 이전 명령을 실행하면 개인 키를 암호화하는 새 암호를 입력합니다.
암호화되지 않은 개인 키를 내보냅니다.
# openssl pkcs12 \ -in sb_cert.p12 \ -out sb_cert.priv \ -nocerts \ -nodes
중요암호화되지 않은 개인 키를 처리합니다.
커널 모듈에 서명합니다. 다음 명령은 커널 모듈 파일의 ELF 이미지에 서명을 직접 추가합니다.
# /usr/src/kernels/$(uname -r)/scripts/sign-file \ sha256 \ sb_cert.priv \ sb_cert.cer \ my_module.ko
이제 커널 모듈을 로드할 준비가 되었습니다.
RHEL 8에서는 키 쌍의 유효 날짜가 중요합니다. 키는 만료되지 않지만 커널 모듈은 서명 키의 유효 기간 내에 서명해야 합니다. sign-file
유틸리티는 이에 대해 경고하지 않습니다. 예를 들어 2019년에만 유효한 키는 해당 키로 2019년에 서명된 커널 모듈을 인증하는 데 사용할 수 있습니다. 그러나 사용자는 2020년 커널 모듈에 서명하는 데 해당 키를 사용할 수 없습니다.
검증
커널 모듈 서명에 대한 정보를 표시합니다.
# modinfo my_module.ko | grep signer signer: Your Name Key
서명에 생성 중 입력한 이름이 나열되어 있는지 확인합니다.
참고첨부된 서명은 ELF 이미지 섹션에 포함되지 않으며 ELF 이미지의 공식적인 일부가 아닙니다. 따라서
readelf
와 같은 유틸리티에서는 커널 모듈에 서명을 표시할 수 없습니다.모듈을 로드합니다.
# insmod my_module.ko
모듈을 제거(미로드)합니다.
# modprobe -r my_module.ko
추가 리소스