外宣 l第二届SAE汽车网络安全workshop安全防护之SELinux

admin 2022年7月29日12:21:48IoT评论4 views3284字阅读10分56秒阅读模式

外宣 l第二届SAE汽车网络安全workshop安全防护之SELinux

2022SAE 汽车网络安全workshop将于825--26日在上海举办,此次Workshop继续由青骥安全小组提供选题策划支持,欢迎大家报名参加!


随着R155法规的生效,各家主机厂投入大量精力以应对网络安全合规。但整车复杂的开发环境,对应的防护策略如此之多,哪些适用于车辆呢?小编觉得,要回答这个问题,首先得明白目前有哪些可用的防护策略,这样方能为车辆量体裁衣。今天就让我们从SELinux开始。

SELinux简介

SELinux(Security-Enhanced Linux),是一个基于Linux内核的安全模块,也是目前应用比较广泛、又相对复杂的一种MAC(Mandatory Access Control)实现。2000年以GNU GPL发布,Linux kenal 2.6后集成在内核中。
SELinux定义了系统中每个【用户】、【进程】、【应用】和【文件】的访问权限,它使用一个安全策略来控制这些对象之间的交互。最典型的,在娱乐主机IVI中,我们可以基于SELinux限制WiFi、USB、蓝牙等进程对系统其他文件的访问,也可以限制其他进程对WiFi、USB、蓝牙等相关文件的访问。相对于基于DAC(Discretionary Access Control)的用户权限控制,SELinux可以实现颗粒度更加细的访问控制。结合网络安全领域中的最小权限原则,工程师可赋予主体(用户或进程)最小的访问特权,以防止或降低主体对其他对象产生的不利影响。

SELinux与DAC的区别和联系

SELinux是一种强制访问控制,相对于自主访问控制,前者实现的策略执行更加严格。在SELinux中没有root这个概念,安全策略是由工程师来定义,任何软件都无法取代它,即使root用户也得遵守该安全策略。因此我们完全可以对具有 root 权限的本地进程实施基于权能(capabilities)的强制访问控制,阻止恶意进程读、写受保护数据或者攻击其他进程
SELinux是否可以完全取代DAC?其实二者不是水与火的关系,相反二者是相辅相成的。对于 Linux 系统安全来说,当使用 SELinux 时,DAC 仍然被使用,且会首先被使用,如果允许访问,再使用 SELinux 策略;反之,如果 DAC 规则拒绝访问,则根本无需使用 SELinux 策略。

SELinux工作模式

SELinux为我们提供了三种工作模式,分别为Disable模式、Permissive模式、Enforcing模式。
  • Disable工作模式(关闭模式)SELinux 被关闭,默认的 DAC 访问控制方式被使用。
  • Permissive工作模式(宽容模式)SELinux 被启用,但安全策略规则并没有被强制执行。当安全策略规则应该拒绝访问时,访问仍然被允许。然而,此时会向日志文件发送一条消息,表示该访问应该被拒绝。
  • Enforcing工作模式(强制模式):从此模式的名称就可以看出,在 Enforcing 模式中, SELinux 被启动,并强制执行所有的安全策略规则。
工程师可根据零件状态和整车需求,选择适当的模式。但需要注意的是,禁用SELinux之前应考虑后面是否有再开启的可能,因为由Disable模式向其他两种模式切换时,系统需要对进程重新标记,并生成安全上下文,这将会是一个漫长的时间。
在Linux中,我们可通过getenforcesestatus命令查看SELinux的工作模式。
[[email protected] ~]# getenforce
#查询SELinux的运行模式
Enforcing
#当前的SELinux是强制模式


[[email protected] ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted

SELinux工作原理

如下图,当主体想要访问某个对象时,如果系统的SELinux处于Enforcing或Permissive模式,则主体的访问请求首先需要和 SELinux 中定义好的策略进行匹配,这个动作由内核中的策略执行服务器检查AVC完成:
  • 如果进程符合策略中定义好的规则,则允许访问,这时进程的安全上下文就可以和目标的安全上下文进行匹配;如果比较失败,则拒绝访问,并通过 AVC记录拒绝访问信息。
  • 如果安全上下文匹配,则可以正常访问目标文件。
当然,主体在访问对象之前,还要先看产生进程(主体)的用户是否对目标对象拥有合理的读、写、执行权限。

外宣 l第二届SAE汽车网络安全workshop安全防护之SELinux

这里有几个关键概念,给大家介绍:
  • 策略(Policy)
所选择的策略类型哪个类型的主体使用哪个方法读取哪一个对象是允许还是拒绝的,并且定义了哪种行为是允许或拒绝。我们可以想象,Linux文件系统庞大,不可能要求工程师为每个文件都设定单独的访问规则,因此SELinux提供了三种策略。规则都已经在这三个策略中写好了,默认只要调用策略就可以正常使用了,每个策略分别实现了可满足不同需求的访问控制。这三个默认策略如下:
-targeted:这SELinux 的默认策略,主要对系统中的服务进程进程访问控制,同时还可以限制其他进程和用户。
-mls:多级安全保护策略,该策略会对系统中的所有进程进行控制。启用 MLS 之后,用户即便执行最简单的命令都会报错。
-minimum :即最小限制,该策略最初是针对低内存设备而创建。从本质上来说,Minimun 和 Target 类似,不同之处在于,它仅使用基本的策略规则包。对于低内存设备来说,Minumun 策略允许 SELinux 在不消耗过多资源的情况下运行。
  • 安全上下文(Security Context)
SELinux的核心。每个进程、文件和目录都有自己的安全上下文,进程具体是否能够访问文件或目录,就要看这个安全上下文是否匹配。如果进程的安全上下文和文件或目录的安全上下文能够匹配,则该进程可以访问这个文件或目录。当然,判断进程的安全上下文和文件或目录的安全上下文是否匹配,则需要依靠策略中的规则。
注意:单纯的移动文件操作并不会改变文件的安全上下文。


  • 访问矢量缓存(Access Vector Cache)
当查看特定安全上下文的策略规则时,SELinux 会使用被称为 AVC(Access Vector Cache,访问矢量缓存)的缓存,里面有缓存的权限信息。如果访问被拒绝(也被称为 AVC 拒绝),则会在一个日志文件中记录下拒绝消息。

SELinux的打开和关闭

  • 使用配置工具:
setenforce 0|1 来调整selinux的状态,0为警告状态,1为强制状态
setenforce 命令只能让 SELinux 在 enforcing 和 permissive 两种模式之间进行切换。如果从启动切换到关闭,或从关闭切换到启动,则只能修改配置文件
  • 修改配置文件 /etc/selinux/config /etc/sysconfig/selinux (链接文件,指向/etc/selinux/config)
1) 打开或关闭SELinux
2) 设置系统执行哪一个策略(policy)
3) 设置系统如何执行策略(policy)
如果从强制模式(enforcing)、宽容模式(permissive)切换到关闭模式(disabled),或者从关闭模式切换到其他两种模式,则必须重启 Linux 系统才能生效,但是强制模式和宽容模式这两种模式互相切换不用重启 Linux 系统就可以生效。

结语

汽车相较于传统的手机、电脑,运行环境更加严苛,涉及的关键技术更加复杂。在汽车智能网联的大浪潮下,如何让汽车在安全、效率、成本之间达到平衡,需要汽车人共同努力。
为此,8月25—26日,相约2022年SAE汽车网络安全workshop,让我们就这个问题来一次经验和知识的碰撞。
外宣 l第二届SAE汽车网络安全workshop安全防护之SELinux

原文始发于微信公众号(汽车信息安全):外宣 l第二届SAE汽车网络安全workshop安全防护之SELinux

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月29日12:21:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  外宣 l第二届SAE汽车网络安全workshop安全防护之SELinux http://cn-sec.com/archives/1208369.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: