---
title: 安全配置基线
description: "ASLR通过每次将栈的起始位置、函数库和程序本身移至不同的位置，使得缓冲溢出攻击无法猜测正确的位置，导致攻击无法成功实施。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/252RC2/confidt/kunpengtee_16_0052.html
sourcePath: /source/zh/kunpengboostkithistory/252RC2/confidt/kunpengtee_16_0052.html
indexId: 258c7bfca55e0597f767333786577f7c4be98c8ffc5045b8294b90d1489cdfd572
---
# 安全配置基线

#### 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内核参数，攻击者可以利用内核态代码重定向的方式访问用户空间数据，增加了攻击面降低了系统安全性。

- 检查方法：
  执行以下命令，若有返回值中包含nosmap字段，则说明未开启SMAP内核参数，反之则说明已开启SMAP内核参数（如果CPU不支持SMAP特性，忽略该项检查）。

```
# cat /proc/cmdline | grep -i "nosmap"
BOOT_IMAGE=/vmlinuz-4.18.0-147.5.1.6.h425.eulerosv2r9.x86_64 root=/dev/mapper/euleros-root ro
crash_kexec_post_notifiers softlockup_panic=1 panic=3 reserve_kbox_mem=16M nmi_watchdog=1
fsck.mode=auto fsck.repair=yes crashkernel=512M resume=/dev/mapper/euleros-swap
rd.lvm.lv=euleros/root rd.lvm.lv=euleros/swap rd.shell=0 quiet nosmap
```


- 修复方法：
若关闭了SMAP选项，需要编辑grub.cfg文件，在启动参数中删除nosmap选项，重启生效。

  - 引导方式为UEFI时执行下方命令编辑grub.cfg文件，在启动参数中删除nosmap选项。

```
# vim /boot/efi/EFI/openEuler/grub.cfg
```


  - 引导方式为legacy时执行下方命令编辑grub.cfg文件，在启动参数中删除nosmap选项。

```
# vim /boot/grub2/grub.cfg
```


#### TEE_SECURITY_CONFIG_08：确保内核SMEP已启动

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

- 检查方法：
  执行以下命令，若返回值中有nosmep字段，则说明未开启SMEP内核参数，反之则说明开启了SMEP内核参数（如果CPU不支持SMEP特性，忽略该项检查）。

```
# cat /proc/cmdline | grep -i "nosmep"
BOOT_IMAGE=/vmlinuz-4.18.0-147.5.1.6.h425.eulerosv2r9.x86_64 root=/dev/mapper/euleros-root ro
crash_kexec_post_notifiers softlockup_panic=1 panic=3 reserve_kbox_mem=16M nmi_watchdog=1
fsck.mode=auto fsck.repair=yes crashkernel=512M resume=/dev/mapper/euleros-swap
rd.lvm.lv=euleros/root rd.lvm.lv=euleros/swap rd.shell=0 quiet nosmep
```


- 修复方法：
若关闭了SMEP选项，需要编辑grub.cfg文件，在启动参数中删除nosmep选项，重启生效。

  - 引导方式为UEFI时执行下方命令编辑grub.cfg文件，在启动参数中删除nosmep选项。

```
# vim /boot/efi/EFI/openEuler/grub.cfg
```


  - 引导方式为legacy时执行下方命令编辑grub.cfg文件，在启动参数中删除nosmep选项。

```
# vim /boot/grub2/grub.cfg
```
