Red Hat Training

A Red Hat training course is available for RHEL 8

3.11. 개인 키로 커널 모듈 서명

UEFI Secure Boot 메커니즘이 활성화된 경우 서명된 커널 모듈을 로드하여 시스템의 보안을 향상시킬 수 있습니다.

서명된 커널 모듈은 UEFI Secure Boot가 비활성화된 시스템이나 UEFI가 아닌 시스템에서도 로드할 수 있습니다. 따라서 서명된 커널 모듈과 서명되지 않은 버전의 커널 모듈을 모두 제공할 필요가 없습니다.

사전 요구 사항

절차

  1. 공개 키를 sb_cert.cer 파일로 내보냅니다.

    # certutil -d /etc/pki/pesign \
               -n 'Custom Secure Boot key' \
               -Lr \
               > sb_cert.cer
  2. NSS 데이터베이스에서 PKCS #12 파일로 키를 추출합니다.

    # pk12util -o sb_cert.p12 \
               -n 'Custom Secure Boot key' \
               -d /etc/pki/pesign
  3. 이전 명령을 실행하면 개인 키를 암호화하는 새 암호를 입력합니다.
  4. 암호화되지 않은 개인 키를 내보냅니다.

    # openssl pkcs12 \
             -in sb_cert.p12 \
             -out sb_cert.priv \
             -nocerts \
             -nodes
    중요

    암호화되지 않은 개인 키를 처리합니다.

  5. 커널 모듈에 서명합니다. 다음 명령은 커널 모듈 파일의 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년 커널 모듈에 서명하는 데 해당 키를 사용할 수 없습니다.

검증

  1. 커널 모듈 서명에 대한 정보를 표시합니다.

    # modinfo my_module.ko | grep signer
      signer:         Your Name Key

    서명에 생성 중 입력한 이름이 나열되어 있는지 확인합니다.

    참고

    첨부된 서명은 ELF 이미지 섹션에 포함되지 않으며 ELF 이미지의 공식적인 일부가 아닙니다. 따라서 readelf 와 같은 유틸리티에서는 커널 모듈에 서명을 표시할 수 없습니다.

  2. 모듈을 로드합니다.

    # insmod my_module.ko
  3. 모듈을 제거(미로드)합니다.

    # modprobe -r my_module.ko