검색

8.5. 무결성 측정 아키텍처 및 확장 검증 모듈 활성화

download PDF

무결성 측정 아키텍처(IMA) 및 EVM(Extended verification module)은 다양한 방식으로 시스템 보안을 향상시키는 커널 무결성 하위 시스템의 구성 요소입니다. IMA 및 EVM을 구성하면 파일에 서명하여 시스템 보안을 강화할 수 있습니다.

사전 요구 사항

  • ima-evm-utilskeyutils 패키지가 시스템에 설치됩니다.
  • securityfs 파일 시스템은 /sys/kernel/security/ 디렉토리에 마운트됩니다.
  • /sys/kernel/security/ima/ 디렉토리가 있습니다.

    # mount
    …​
    securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
    …​

절차

  1. IMA 및 EVM을 사용하도록 시스템을 준비합니다.

    1. 다음 커널 명령줄 매개변수를 추가합니다.

      # grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="ima_appraise=fix ima_appraise_tcb evm=fix"

      명령을 사용하면 현재 부팅 항목에 대한 수정 모드에서 IMA 및 EVM을 사용할 수 있으며 사용자가 IMA 측정을 수집 및 업데이트할 수 있습니다.

      ima_appraise_tcb 커널 명령행 매개변수를 사용하면 커널에서 기본 Trusted Computing Base(TCB) 측정 정책 및 appraisal 단계를 사용합니다. 이전 측정 및 현재 측정이 일치하지 않는 파일에 대한 접근을 금지하는 단계 (Arraisal step forbids access to files whose prior and current measurements do not match.)

    2. 변경 사항을 적용하려면 재부팅합니다.
    3. 선택적으로 커널 명령줄에 새 매개변수가 포함되어 있는지 확인합니다.

      # cat /proc/cmdline
      BOOT_IMAGE=/vmlinuz-3.10.0-1136.el7.x86_64 root=/dev/mapper/rhel-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet LANG=en_US.UTF-8 ima_appraise=fix ima_appraise_tcb evm=fix
  2. EVM의 공용 및 개인 키 쌍을 만들고 설정합니다.

    1. EVM의 새 인증 키를 만듭니다.

      # evm_kr_id=$(keyctl newring _evm @u)

      이 명령은 _evm 인증 키를 생성하여 @u 시스템 사용자 인증 키에 연결합니다. 그런 다음 나중에 더 편리하게 처리하기 위해 _evm 의 인증 키 ID가 evm_kr_id 변수에 할당됩니다.

    2. 선택적으로 새로 생성된 인증 키를 확인합니다.

      # keyctl show
      Session Keyring
      1025767139 --alswrv   0     0  keyring: _ses
      548660789 --alswrv   0 65534   \_ keyring: _uid.0
      456142548 --alswrv   0     0       \_ keyring: _evm
    3. 키의 디렉터리를 생성합니다.

      # mkdir -p /etc/keys/
    4. /etc/keys/privkey.pem 파일에 1024비트 RSA 개인 키를 생성합니다.

      # openssl genrsa -out /etc/keys/privkey.pem 1024
      Generating RSA private key, 1024 bit long modulus
      .......++++++
      ...++++++
      e is 65537 (0x10001)
    5. 이전에 생성된 /etc/keys/privkey.pem 개인 키를 사용하여 해당 RSA 공개 키를 /etc/keys/pubkey.pem 파일로 가져옵니다.

      # openssl rsa -pubout -in /etc/keys/privkey.pem -out /etc/keys/pubkey.pem
      writing RSA key
    6. 공개 키를 전용 EVM 인증 키로 가져옵니다.

      # evmctl import --rsa /etc/keys/pubkey.pem $evm_kr_id
      1054989579

      명령은 /etc/keys/pubkey.pem 공개 키를 _evm 인증 키로 가져옵니다. 그런 다음 _evm 인증 키가 커널 인증 키에 연결됩니다. 키 일련 번호는 이전 예제의 두 번째 줄에 있습니다.

    7. 선택적으로 새로 가져온 키를 확인합니다.

      # keyctl show
      Session Keyring
      1025767139 --alswrv   0     0  keyring: _ses
      548660789 --alswrv   0 65534   \_ keyring: _uid.0
      456142548 --alswrv   0     0       \_ keyring: _evm
      1054989579 --alswrv   0     0           \_ user: FA0EF80BF06F80AC
      참고

      이 symmetric 키 쌍을 사용하여 eRuntimeConfig sign 명령을 사용하여 파일의 확장된 속성의 내용을 디지털 서명하는 데 사용할 수 있습니다. 확장 속성은 나중에 커널에서 확인합니다.

    8. EVM 키를 보호하기 위해 커널 마스터 키를 생성합니다.

      # dd if=/dev/urandom bs=1 count=32 2>/dev/null | keyctl padd user kmk-user @u

      커널 마스터 키(kmk)는 전적으로 커널 공간 메모리에 유지됩니다. 커널 마스터 키 kmk 의 32바이트 긴 값은 /dev/urandom 파일에서 임의의 바이트에서 생성되며 사용자(@u) 인증 키에 배치됩니다.

  3. kmk 키를 기반으로 암호화된 EVM 키를 만듭니다.

    # keyctl add encrypted evm-key "new user:kmk 64" @u
    351426499

    명령은 kmk 를 사용하여 64바이트 사용자 키( evm-key)를 생성하고 암호화하며 사용자(@u) 인증 키에 배치합니다. 키 일련 번호는 이전 예제의 두 번째 줄에 있습니다.

    중요

    이는 EVM 하위 시스템에서 예상하고 함께 작동하는 이름이므로 사용자 키 evm-key 의 이름을 지정해야 합니다.

  4. EVM을 활성화합니다.

    # echo 1 > /sys/kernel/security/evm
  5. EVM이 초기화되었는지 확인합니다.

    dmesg | tail -1
    […​] EVM: initialized
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.