安全配置基线

TEE_SECURITY_CONFIG_01:确保内核ASLR已启用

ASLR通过每次将栈的起始位置、函数库和程序本身移至不同的位置,使得缓冲溢出攻击无法猜测正确的位置,导致攻击无法成功实施。

检查方法:

执行以下命令并检查相应的命令返回是否为2

cat /proc/sys/kernel/randomize_va_space

若返回结果不为2,请执行以下命令进行修复。

echo 2 > /proc/sys/kernel/randomize_va_space

TEE_SECURITY_CONFIG_02:确保Core dump配置正确

Core dump是当程序运行过程中异常终止或崩溃时,将内存状态记录下来的行为,有助于后续定位,但可能会包含进程内存里的敏感信息,一般情况下不建议打开。

检查方法:

执行以下命令并检查相应的命令返回是否为0

# ulimit -c

若返回结果不为0,请执行以下命令修复。

# ulimit -c 0

TEE_SECURITY_CONFIG_03:禁止使用SysRq键

SysRq使得具有物理访问的用户能够访问计算机中危险的系统级命令,需要对SysRq的功能使用进行限制。如果没有禁用SysRq键,则可以通过键盘触发SysRq的调用。但该操作可能造成直接发送命令到内核,对系统造成影响,请谨慎使用。

检查方法:

执行以下命令并检查相应的命令返回是否为0

# cat /proc/sys/kernel/sysrq
# grep "^kernel.sysrq" /etc/sysctl.conf /etc/sysctl.d/*

若返回结果大于0,请执行以下命令修复。

# echo 0 > /proc/sys/kernel/sysrq

TEE_SECURITY_CONFIG_04:确保dmesg访问权限配置正确

限制访问dmesg信息权限,无特权的用户无法查看系统信息,从而可以避免任何人从系统信息获取敏感信息,进而减少对系统进行攻击的行为。仅允许具有CAP_SYSLOG能力的进程查看内核日志信息,从而控制关键信息的最小权限,保障系统的安全。

检查方法:

执行以下命令查看kernel.dmesg_restrict的值是否为1

# sysctl kernel.dmesg_restrict
# grep "^kernel.dmesg_restrict" /etc/sysctl.conf /etc/sysctl.d/*

若返回结果不匹配,请执行以下命令修复。

# echo 1 > /proc/sys/kernel/dmesg_restrict

TEE_SECURITY_CONFIG_05:确保内核参数ptrace_scope配置正确

ptrace是一种系统调用用于进程跟踪,提供了父进程可以观察并控制子进程的能力。当配置参数为2时只有CAP_SYS_PTRACE的进程才能使用ptrace,这样会有效防止攻击者恶意提权。

检查方法:

执行以下命令查看kernel.yama.ptrace_scope的值是否为2。

# sysctl kernel.yama.ptrace_scope

若返回结果不为2,请执行以下命令修复。

# echo 2 > /proc/sys/kernel/yama/ptrace_scope

TEE_SECURITY_CONFIG_06:确保内核参数kptr_restrict配置正确

kptr_restrict的作用是保护内核符号地址,保护等级低时普通用户可以访问得到内核符号地址容易被攻击者利用,增加了攻击面降低了系统安全性。

检查方法:

执行以下命令查看kernel.kptr_restrict的值是否为1。

# sysctl kernel.kptr_restrict

若返回结果不为1,请执行以下命令修复。

# echo 1 > /proc/sys/kernel/kptr_restrict

TEE_SECURITY_CONFIG_07:确保内核SMAP已启动

内核参数SMAP(Supervisor Mode Access Prevention,管理模式访问保护),开启后禁止内核访问用户空间的数据。若不开启SMAP内核参数,攻击者可以利用内核态代码重定向的方式访问用户空间数据,增加了攻击面降低了系统安全性。

TEE_SECURITY_CONFIG_08:确保内核SMEP已启动

内核参数SMEP(Supervisor Mode Execution Prevention,管理模式执行保护),开启后禁止内核执行用户空间代码。若不开启SMEP内核参数,攻击者可以利用内核态代码重定向的方式执行用户空间代码,增加了攻击面降低了系统安全性。