0

我正在尝试激活 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 的数字签名,就像本教程 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

但是,当我尝试读取已签名和散列的文件时,一旦我重新启动操作系统,就会收到错误“Permission Denied” Running 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

谢谢你的帮助

4

1 回答 1

0

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

cat .config 应该有以下条目:

CONFIG_EVM_HMAC_VERSION=2
CONFIG_ASYMMETRIC_KEY_TYPE=y

然后,当您散列或签署文件时,请使用

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

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

于 2013-08-06T17:24:55.103 回答