关于在银河麒麟中配置使用自定义IMA功能

关于IMA的配置参考官网

使用

grep CONFIG_IMA /boot/config-$(uname -r)

来查看IMA的情况

CONFIG_IMA=y
CONFIG_IMA_MEASURE_PCR_IDX=10
CONFIG_IMA_LSM_RULES=y
# CONFIG_IMA_TEMPLATE is not set
CONFIG_IMA_NG_TEMPLATE=y
# CONFIG_IMA_SIG_TEMPLATE is not set
CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng"
CONFIG_IMA_DEFAULT_HASH_SHA1=y
# CONFIG_IMA_DEFAULT_HASH_SHA256 is not set
# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set
CONFIG_IMA_DEFAULT_HASH="sha1"
# CONFIG_IMA_WRITE_POLICY is not set
# CONFIG_IMA_READ_POLICY is not set
CONFIG_IMA_APPRAISE=y
# CONFIG_IMA_ARCH_POLICY is not set
# CONFIG_IMA_APPRAISE_BUILD_POLICY is not set
CONFIG_IMA_APPRAISE_BOOTPARAM=y
# CONFIG_IMA_APPRAISE_MODSIG is not set
CONFIG_IMA_TRUSTED_KEYRING=y
# CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY is not set
# CONFIG_IMA_BLACKLIST_KEYRING is not set
# CONFIG_IMA_LOAD_X509 is not set

使用

sudo cat /sys/kernel/security/ima/ascii_runtime_measurements

来查看IMA的完整性度量记录
如果你想修改IMA配置:
使用下面的命令来查看当前用户的id:

id -u

使用下面的命令来增加运行时自定义策略(Runtime Custom Policy):

echo /home/user/tmpfile > /sys/kernel/security/ima/policy
cp tmpfile /sys/kernel/security/ima/policy
cat tmpfile > /sys/kernel/security/ima/policy

但是根据前面读出来的配置:# CONFIG_IMA_WRITE_POLICY is not set
无法使用,除非重新编译内核,行不通

另一种是启动时自定义策略(built-in custom policy)
改变/etc/default/grub来配置成使用自定义策略启动(后来发现其实不用,只要自己创建了/etc/ima/ima-policy文件就会自动地加载自定义策略):

sudo vi /etc/default/grub

将其中的GRUB_CMDLINE_LINUX=""
改变为

GRUB_CMDLINE_LINUX="ima_appraise=fix ima_audit=0"
GRUB_CMDLINE_LINUX_SECURITY="security=kysec"

并使用

sudo update-grub

来更新grub启动配置

其中自定义的策略应该放在/etc/ima/ima-policy
但是银河麒麟首先不能直接sudo vi,会没有权限
然后如果创建这个文件的话可以用下面的命令:

sudo mkdir /etc/ima
sudo touch /etc/ima/ima-policy

然后再

sudo code --no-sandbox --disable-gpu-sandbox --user-data-dir=/root/.vscode/

用root权限打开vscode或者直接用vim来修改

sudo vi /etc/ima/ima-policy

在其中如果加上下面的内容:

dont_measure fsmagic=0x9fa0          # PROC_SUPER_MAGIC
dont_measure fsmagic=0x62656572      # SYSFS_MAGIC
dont_measure fsmagic=0x64626720      # DEBUGFS_MAGIC
dont_measure fsmagic=0x1021994       # TMPFS_MAGIC
dont_measure fsmagic=0x1cd1          # DEVPTS_SUPER_MAGIC
dont_measure fsmagic=0x42494e4d      # BINFMTFS_MAGIC
dont_measure fsmagic=0x73636673      # SECURITYFS_MAGIC
dont_measure fsmagic=0xf97cff8c      # SELINUX_MAGIC
dont_measure fsmagic=0x43415d53      # SMACK_MAGIC
dont_measure fsmagic=0x27e0eb        # CGROUP_SUPER_MAGIC
dont_measure fsmagic=0x63677270      # CGROUP2_SUPER_MAGIC
dont_measure fsmagic=0x6e736673      # NSFS_MAGIC
dont_measure fsmagic=0xde5e81e4      # EFIVARFS_MAGIC
measure func=MMAP_CHECK mask=MAY_EXEC
measure func=BPRM_CHECK mask=MAY_EXEC           # binary executed
measure func=FILE_CHECK mask=^MAY_READ euid=0
measure func=FILE_CHECK mask=^MAY_READ uid=0    # root opened r/o, r/w
measure func=MODULE_CHECK
measure func=FIRMWARE_CHECK
measure func=POLICY_CHECK

重新启动时(在Ubuntu20上)会有报错:Failed to load the IMA custom policy file /etc/ima/ima-policy1:Invalid argument
其中的1:Invalid argument其实是行号(不分开我还以为是其他文件呢...)
最后试了一下用下述的内容:

measure func=MMAP_CHECK mask=MAY_EXEC euid=1000

measure func=FILE_CHECK mask=^MAY_READ euid=1000
measure func=FILE_CHECK mask=^MAY_READ euid=0

measure func=FILE_CHECK mask=MAY_READ uid=1000
#appraise func=FILE_CHECK mask=MAY_READ appraise_type=imasig

是可以启动的,而且度量记录条数并没有过多。如果把最后一行注释取消掉,会有报错:failed to fix pid1 permisssion denied
不太清楚具体原因。

但是使用麒麟改GRUB和ima-policy还是不行,启动卡在图标处,按ESC会有一些错误信息:
Failed to start Authenticate by human biometric
如果把ima-policy改成下述内容:

measure func=FILE_CHECK mask=MAY_READ uid=1000

启动到某个地方黑屏后就没反应了

搞不懂思密达

下面是只使用GRUB选择使用一些预设的度量策略的方法:

改变/etc/default/grub来配置成使用预设策略:

sudo vi /etc/default/grub

将其中的`GRUB_CMDLINE_LINUX=""改成如下的两行:

GRUB_CMDLINE_LINUX="ima_tcb ima_appraise_tcb ima_appraise=off ima_audit=0"
GRUB_CMDLINE_LINUX_SECURITY="security=kysec"

再使用

sudo update-grub

来更新grub启动配置,再重启即可

经过排查,原来是kysec的问题,在ubuntu中配置可行大概是ubuntu没有kysec ,现在是这样配置的:

/etc/ima/ima-policy中的内容如下:

measure func=FILE_CHECK mask=^MAY_READ euid=1000

GRUB启动配置,也就是/etc/default/grub中的内容如下:

GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_DISTRIBUTOR_RELEASE=`lsb_release -d -s | awk -F" " '{print $2 " " $3}' 2> /dev/null || echo ""`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash loglevel=0"
GRUB_CMDLINE_LINUX="ima_appraise_tcb ima_appraise=off ima_audit=0"

再使用

sudo update-grub

更新配置后重启就可以查看度量值了,能看到类似下面的结果:

10 1d8d532d463c9f8c205d0df7787669a85f93e260 ima-ng sha1:0000000000000000000000000000000000000000 boot_aggregate
10 832cdc51f56ab669516480d2f030cfcb9ca70a08 ima-ng sha1:5a493e4a8ace4e0a7bd608936fd8c07e62df9566 /init
10 36c821e585bfc0c164de21bdf1909216318d85aa ima-ng sha1:8c87d9511c99d2ed6bdfa5fd8ceb1ff5b3b3d8c7 /usr/bin/sh
10 804e66ad9b641c6fe8c5c43b0e555b73445c307c ima-ng sha1:7db501b4ac0906d2bc76154be2e474ca49a83ad3 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
10 0bd657c386fef5386f7898046cc9f480ba7756e5 ima-ng sha1:e7639aa9eca7f73561641e14715e4f8810198ea5 /etc/ld.so.cache
10 36f276698feac02280ddb19e3d3f95172702cb71 ima-ng sha1:8f7d59c6f95b0cf57a8db165033296dda91d1239 /usr/lib/x86_64-linux-gnu/libc.so.6
10 223eb68bfb9f72922506747d3bc4dd76d813b5da ima-ng sha1:65030975e1f3887efd00fbb568f00409b7c256d0 /conf/arch.conf
10 42d3c8ce8d3dc2925f434026ff0e497b23871bf1 ima-ng sha1:1ea4f64494e66cf4c77adc2efb46bbc1c30336f0 /conf/initramfs.conf

最后贴一点关于IMA的介绍:

  Linux中的IMA(Integrity Measurement Architecture,完整性度量架构)是内核中的一个子系统,主要用于度量和验证系统文件和可执行文件的完整性,以防止恶意软件的入侵,增强系统的安全性。
IMA的主要功能:
    文件完整性度量:在文件被执行或读取时,计算文件的哈希值,以评估文件的完整性。
文件完整性评估:通过哈希、签名、HMAC等密码学技术对文件的内容进行完整性验证,如果验证失败,则不允许任何进程对该文件进行访问。
支持远程证明:结合TPM(Trusted Platform Module),IMA可以将度量值扩展到TPM的PCR中,增强安全性和真实性,实现系统的远程证明。
灵活的策略配置:支持基于文件路径、文件类型、文件内容等进行配置,管理员可以通过编辑配置文件来定义IMA策略。

IMA的运行模式
    度量(measure)模式:提供对文件的完整性状态观测功能,访问受保护文件时,会往度量日志增加度量记录。如果系统包含TPM芯片,还可以往TPM芯片PCR寄存器中扩展度量摘要值,以保证度量信息不被篡改。度量场景并不提供对文件访问的控制,它记录的文件信息可传递给上层应用软件,进一步用于远程证明。
评估(appraise)模式:提供对文件的完整性校验功能,从根本上杜绝了未知的/被篡改的文件的访问。通过密码学技术对文件的内容进行完整性验证,如果验证失败,则不允许任何进程对该文件进行访问。

IMA的核心组件:
  IMA-measurement:负责度量文件的完整性,计算文件的哈希值等。
  IMA-appraisal:负责评估文件的完整性,验证文件的哈希值是否与预期值匹配。
  IMA-audit:负责记录审计日志,对IMA的操作进行审计。

posted on 2025-03-08 19:02  祝你幸福  阅读(335)  评论(0)    收藏  举报

导航