51 Star 67 Fork 364

openEuler / release-management

 / 详情

SELinux、Audit 安全机制对 OS 的性能影响

待办的
任务
创建于  
2023-06-22 00:28

简介

SELinux(Security-Enhanced Linux)是Linux的安全增强机制,它通过强制访问控制(MAC)机制来保护系统的安全性。Audit 是一种安全审计框架,可以记录系统中发生的各种事件,如用户登录、文件访问、进程创建、系统调用等等。它可以帮助管理员监控系统的安全性,检测潜在的安全威胁和攻击行为,以及跟踪系统的使用情况。

上述两种机制,都是提升系统安全性的机制,但是也会带来一定的性能开销。

Audit 对系统性能的影响

Audit 可以记录系统中发生的各种事件,如用户登录、文件访问、进程创建、系统调用等。因此,启用 Audit 功能会对系统调用性能产生一定的影响。 具体来说,启用 Audit 功能会增加内核的负载,因为它需要在内核中拦截和记录系统调用。这可能会导致系统的响应时间变慢,特别是在高负载情况下。此外,由于 Audit 记录了大量的事件信息,因此会占用一定的系统资源,如磁盘空间和内存。

SELinux 对系统性能的影响

SELinux对系统调用性能的影响主要体现在以下两个方面:

  1. 系统调用的安全检查:SELinux 会对系统调用进行安全检查,以确保进程只能访问其被授权的资源。这种安全检查会增加系统调用的处理时间,从而影响系统的性能。
  2. SELinux策略的加载和解析:SELinux的策略文件是一个非常复杂的规则集合,它定义了系统中每个进程和资源的安全策略。在系统启动时,SELinux需要加载和解析这些策略文件,这会占用一定的系统资源和时间。

如下图所示的示例,writev 系统调用的路径有 selinux 相关的权限检查操作。

输入图片说明

对常见 benchmark 的影响

unixbench

Unixbench 是测试系统微观能力的 Micro benchmark,受系统调用影响大,其中单核用例最能体现 SELinux 和 Audit 的影响。上述数据可以看出,除了前两项是分别测试CPU的整数计算能力和浮点计算能力的,基本无影响。其他测试项都有明显的影响。其中对 Pipe Throughput 和 Syscall 影响最大,超过30%。

测试服务器:Intel 2288H V5 2P

测试项 SELinux & audit enabled SELinux & audit disabled diff
Dhrystone 3476 3480 +0.11%
Whetstone-double 1146 1148 +0.19%
Execl Throughput 1222 1295 +5.98%
File Copy 256 2330 2634 +13.04%
File Copy 1024 3545 3998 +12.78%
File Copy 4096 6621 7239 +9.32%
Pipe Throughput 1495 1973 +31.94%
Pipe based Context Switching 448 463 +3.35%
Process Creation 854 888 +3.94%
Shell1 2289 2394 +4.58%
shell8 7764 8229 +5.99%
Syscall 1205 1630 +35.26%
Score Index(总分) 1963 2160 +10.03%

对 Unixbench 多核用例来说,影响减小,只有 Pipe Throughput 、Context Switching 和 Syscall 三项仍然有较大影响:

测试项 SELinux & audit enabled SELinux & audit disabled diff
Pipe Throughput 66090 90652 +37.16%
Pipe based Context Switching 35123 39782 +13.26
Syscall 3643 4058 +14.41%
Score Index(总分) 15574 16269 +4.46%

netperf

Netperf是一种网络性能测试工具,可以用于测试网络吞吐量、延迟、带宽等指标。在进行测试时,Netperf 会发送一定数量的数据包到目标主机,然后测量发送和接收这些数据包所需的时间和吞吐量。SELinux可能会对小包测试的性能产生以下影响:

  • 延迟增加:由于SELinux需要对进程进行额外的安全检查,因此可能会导致TCP/UDP小包测试的延迟增加。
  • 吞吐量降低:由于SELinux需要对进程进行额外的安全检查,因此可能会导致TCP/UDP小包测试的吞吐量降低。

输入图片说明

从上图可以看出,在 sendto 调用中,selinux 执行开销较高。对小包测试来讲,数据包数量巨大,每次收发都涉及额外的安全检查,因此对小包会产生比较明显的影响。随着数据包 size 增大,安全性选项的影响逐渐减小。经实际测试,TCP 1B 小包,影响约 30%,UDP 1、64、128 Byte 的数据包测试,性能影响约15%。

lmbench

SELinux的安全策略会对系统中的进程进行访问控制,包括文件、网络、进程等资源的访问。这些访问控制规则可能会导致一些系统调用的执行时间增加,从而影响lmbench的时延。具体来说,SELinux可能会对lmbench中使用的一些系统调用(如open、read、write等)进行安全检查,这些检查可能会增加系统调用的执行时间。此外,SELinux还可能会对lmbench中使用的网络通信进行安全检查,这也可能会增加通信的时延。

经实际测试,Processor Processes 和 Local Latencies 影响最为明显。

Processor Processes:

测试项 SELinux & audit enabled SELinux & audit disabled diff
null call 0.1837 0.1374 +25.20%
null io 0.2423 0.1791 +26.08%
stat 0.7638 0.5703 +25.33%
open/close 1.8351 1.5242 +16.94%
slct tcp 2.6404 2.6058 +1.31%
sig inst 0.2519 0.2181 +13.42%
sig hndl 1.074 1.0154 +5.46%
fork/proc 366 362 +0.99%
exec proc 1702 1677 +1.46%
sh proc 2587 2483 +4.03%
几何平均 6.10 5.33 +12.62%

Local Latencies:

测试项 SELinux & audit enabled SELinux & audit disabled diff
Pipe 4.9133 4.575 +6.89%
AF_UNIX 8.98879 6.9329 +22.86%
UDP 12.3529 12.1002 +2.05%
RPC/UDP 17.3437 16.7644 +3.34%
TCP 15.5662 14.8782 +4.42%
RPC/TCP 20.5178 19.0687 +7.06%
TCP conn 39.9513 34.632 +13.31%
几何平均 14.27 13.01 +8.83%

File Latency 涉及文件创建、删除、内存缺页等测试项,也有平均~8%的性能影响。其中对文件创建影响最大,影响超过15%。

可能采取的一些优化思路

openEuler LTS 版本,基于默认安全的理念,提供了默认的安全配置。您可以根据自己的使用场景,选择开启、关闭、或修改某些安全配置项,前提是您清楚操作系统的运行环境,和面临的安全风险。

Audit

为了减少 Audit 对系统性能的影响,可以采取以下措施:

  1. 仅记录必要的事件:可以通过配置 Audit 规则,只记录必要的事件,避免记录过多的无用信息。
  2. 调整 Audit 日志级别:可以将 Audit 日志级别调整为较低的级别,以减少记录的事件数量。
  3. 使用高性能的存储设备:可以使用高性能的存储设备,如固态硬盘,以提高 Audit 记录事件的速度和效率。
  4. 定期清理 Audit 日志:可以定期清理 Audit 日志,以释放磁盘空间和减少系统负载。
  5. 关闭 Audit 机制:如果您清楚 Audit 的作用,并采取了其他安全措施,也可以选择关闭 Audit 机制。
  6. 总之,启用 Audit 功能会对系统调用性能产生一定的影响,但可以通过合理的配置和管理来减少影响。

关闭 Audit 机制的方法:

要关闭 Linux 系统的 audit 机制,可以按照以下步骤进行:

1. 打开终端并以 root 用户身份登录系统。
2. 停止 auditd 服务:
   systemctl stop auditd
3. 禁用 auditd 服务:
   systemctl disable auditd
4. 删除 audit 规则:
   auditctl -D
5. 删除 audit 规则文件:
   rm /etc/audit/audit.rules
6. 重新启动系统以确保更改生效:
   reboot

请注意,关闭 audit 机制可能会影响系统的安全性和可追溯性。在执行此操作之前,请确保您已经了解了风险,并且已经采取了其他措施来保护系统的安全性。

SELinux

为了最大程度地减少SELinux对系统性能的影响,可以采取以下措施:

  1. 优化SELinux的配置。可以通过优化SELinux的配置来减少其对系统性能的影响。例如,可以禁用一些不必要的安全策略,或者调整安全策略的优先级,以减少对系统性能的影响。
  2. 避免使用过于严格的SELinux策略,可以根据实际需求进行适当的调整。
  3. 采用其他安全机制。如果SELinux对业务性能的影响过大,可以考虑采用其他安全机制来保护系统的安全性。例如,可以使用AppArmor等。
  4. 如果您已经了解了风险并采取了其他安全措施,也可以关闭 SELinux。

关闭 SELinux机制的方法:

可以通过以下步骤关闭SELinux:
1. 以root用户身份登录系统。
2. 打开/etc/selinux/config文件,使用文本编辑器打开该文件。
3. 找到SELINUX=字段,将其值更改为disabled。
   # This file controls the state of SELinux on the system.
   # SELINUX= can take one of these three values:
   #     enforcing - SELinux security policy is enforced.
   #     permissive - SELinux prints warnings instead of enforcing.
   #     disabled - No SELinux policy is loaded.
   SELINUX=disabled
4. 保存并关闭文件。
5. 重新启动系统,以使更改生效。

请注意,关闭SELinux可能会降低系统的安全性,因此在进行此操作之前,请确保您已经了解了风险并采取了其他安全措施。

评论 (1)

Xie XiuQi 创建了任务

Hi xiexiuqi, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: sig-release-management, and any of the maintainers: @陈亚强 , @solarhu , @huangchengpiao , @mdche , @openeuler-ci-bot

openeuler-ci-bot 添加了
 
sig/sig-release-mana
标签
Xie XiuQi 修改了描述
Xie XiuQi 修改了描述

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
5329419 openeuler ci bot 1632792936
1
https://gitee.com/openeuler/release-management.git
git@gitee.com:openeuler/release-management.git
openeuler
release-management
release-management

搜索帮助