20.8. 启用内核运行时完整性监控

您可以启用 IMA appraisal 提供的内核运行时完整性监控。

先决条件

  • 系统上安装的 内核 具有 5.14.0-359 或更高版本。
  • dracut 软件包的版本具有 057-43.git20230816 或更高版本。
  • keyutils 软件包已安装。
  • ima-evm-utils 软件包已安装。
  • 被策略覆盖的文件具有有效的签名。具体说明请参阅 向软件包文件中添加 IMA 签名

流程

  1. 要将红帽 IMA 代码签名密钥复制到 /etc/ima/keys 文件中,请运行:

    $ mkdir -p /etc/keys/ima
    $ cp /usr/share/doc/kernel-keys/$(uname -r)/ima.cer /etc/ima/keys
  2. 要将 IMA 代码签名密钥添加到 .ima keyring 中,请运行:

    # keyctl padd asymmetric RedHat-IMA %:.ima < /etc/ima/keys/ima.cer
  3. 根据您的威胁模型,在 /etc/sysconfig/ima-policy 文件中定义一个 IMA 策略。例如,以下 IMA 策略检查可执行文件和涉及内存映射库文件的完整性:

    # PROC_SUPER_MAGIC = 0x9fa0
    dont_appraise fsmagic=0x9fa0
    # SYSFS_MAGIC = 0x62656572
    dont_appraise fsmagic=0x62656572
    # DEBUGFS_MAGIC = 0x64626720
    dont_appraise fsmagic=0x64626720
    # TMPFS_MAGIC = 0x01021994
    dont_appraise fsmagic=0x1021994
    # RAMFS_MAGIC
    dont_appraise fsmagic=0x858458f6
    # DEVPTS_SUPER_MAGIC=0x1cd1
    dont_appraise fsmagic=0x1cd1
    # BINFMTFS_MAGIC=0x42494e4d
    dont_appraise fsmagic=0x42494e4d
    # SECURITYFS_MAGIC=0x73636673
    dont_appraise fsmagic=0x73636673
    # SELINUX_MAGIC=0xf97cff8c
    dont_appraise fsmagic=0xf97cff8c
    # SMACK_MAGIC=0x43415d53
    dont_appraise fsmagic=0x43415d53
    # NSFS_MAGIC=0x6e736673
    dont_appraise fsmagic=0x6e736673
    # EFIVARFS_MAGIC
    dont_appraise fsmagic=0xde5e81e4
    # CGROUP_SUPER_MAGIC=0x27e0eb
    dont_appraise fsmagic=0x27e0eb
    # CGROUP2_SUPER_MAGIC=0x63677270
    dont_appraise fsmagic=0x63677270
    appraise func=BPRM_CHECK
    appraise func=FILE_MMAP mask=MAY_EXEC
  4. 要载入 IMA 策略以确保内核接受这个 IMA 策略,请运行:

    # echo /etc/sysconfig/ima-policy > /sys/kernel/security/ima/policy
    # echo $?
    0
  5. 要启用 dracut 完整性模块来自动载入 IMA 代码签名密钥和 IMA 策略,请运行:

    # echo 'add_dracutmodules+=" integrity "' > /etc/dracut.conf.d/98-integrity.conf
    # dracut -f