【问题标题】:Integrity Measurement Architecture(IMA) & Linux Extended Verification Module (EVM)完整性测量架构 (IMA) 和 Linux 扩展验证模块 (EVM)
【发布时间】:2013-07-31 09:27:46
【问题描述】:

我正在尝试激活 IMA 评估和 EVM 模块。

在我的 bt5R3 上编译 linux 内核 3.10.2 并像这样第一次设置内核启动选项后:

GRUB_CMDLINE_LINUX="rootflags=i_version ima_tcb ima_appraise=fix ima_appraise_tcb evm=fix"

并在运行此命令后生成 xattr security.ima 和 security.evm

find / \( -fstype rootfs -o -fstype ext4 \) -type f -uid 0 -exec head -c 1 '{}' \;

像这样:

GRUB_CMDLINE_LINUX="rootflags=i_version ima_tcb ima_appraise=enforce ima_appraise_tcb evm=enforce"

我尝试创建 xattr 的数字签名,就像本教程中推荐的那样 Tutorial to IMA & EVM

每个步骤都已完成,创建 RSA 密钥,并在启动时使用 keyctl 在 initramfs 中加载它们。

Session Keyring
       -3 --alswrv      0 65534  keyring: _uid_ses.0
977514165 --alswrv      0 65534   \_ keyring: _uid.0
572301790 --alswrv      0     0       \_ user: kmk-user
126316032 --alswrv      0     0       \_ encrypted: evm-key
570886575 --alswrv      0     0       \_ keyring: _ima
304346597 --alswrv      0     0       \_ keyring: _evm

但是,当我尝试读取已签名和散列的文件时,一旦我重新启动操作系统,我就会收到错误“权限被拒绝” 运行 dmesg 告诉我:

[ 5461.175996] type=1800 audit(1375262160.913:57): pid=1756 uid=0 auid=4294967295 ses=4294967295 op="appraise_data" cause="**invalid-HMAC**" comm="sh" name="/root/Desktop/new.sh" dev="sda1" ino=546526 res=0

你知道为什么我得到无效的 HMAC 吗? 他们的钥匙就像教程说的那样加载......

#!/bin/sh -e

PREREQ=""

# Output pre-requisites
prereqs()
{
        echo "$PREREQ"
}

case "$1" in
    prereqs)
        prereqs
        exit 0
        ;;
esac

grep -q "ima=off" /proc/cmdline && exit 1

mount -n -t securityfs securityfs /sys/kernel/security

IMA_POLICY=/sys/kernel/security/ima/policy
LSM_POLICY=/etc/ima_policy

grep -v "^#" $LSM_POLICY >$IMA_POLICY

# import EVM HMAC key
keyctl show |grep -q kmk || keyctl add user kmk "testing123" @u
keyctl add encrypted evm-key "load `cat /etc/keys/evm-key`" @u
#keyctl revoke kmk

# import Module public key
mod_id=`keyctl newring _module @u`
evmctl import /etc/keys/pubkey_evm.pem $mod_id

# import IMA public key
ima_id=`keyctl newring _ima @u`
evmctl import /etc/keys/pubkey_evm.pem $ima_id

# import EVM public key
evm_id=`keyctl newring _evm @u`
evmctl import /etc/keys/pubkey_evm.pem $evm_id

# enable EVM
echo "1" > /sys/kernel/security/evm

# enable module checking
#echo "1" > /sys/kernel/security/module_check

感谢您的帮助

【问题讨论】:

    标签: security linux-kernel cryptography hmac


    【解决方案1】:

    已解决,新内核使用HMAC v2,编译内核时必须激活非对称密钥。

    cat .config 应该有这个条目:

    CONFIG_EVM_HMAC_VERSION=2
    CONFIG_ASYMMETRIC_KEY_TYPE=y
    

    然后当你散列或签署文件时使用

    evmctl -u - -x --imasig/--imahash $file
    

    您还应该创建非对称密钥并将它们加载到 _evm 和 _ima 密钥环中,使用 keyctl 和 initramfs。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-03
      • 2017-04-16
      • 2011-06-05
      • 2021-09-06
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多