当前位置:文档之家› 嵌入式Linux系统安全性探析

嵌入式Linux系统安全性探析

嵌入式Linux系统安全性探析
摘要:阐述了嵌入式Linux内核系统存在的安全性问题,重点分析了增强安全性若干种方法及原理,根据嵌入式产品受尺寸和成本约束的特点,给出了增加安全模块、设置软件防火墙和嵌入式系统特有的方法来增强系统的安全性。

关键词:嵌入式;Linux系统;LSM;系统安全;防火墙
0引言
社会发展日新月异,物联网离百姓生活越来越近,目前很多运行在局域网甚至Internet上的产品如雨后春笋般涌向市场,比如:智能家居、安卓手机等。

这些产品在方便用户的同时也出现一些安全问题,系统置于网络上相当于暴露给所有人,故对嵌入式产品安全性研究刻不容缓。

嵌入式产品由于尺寸、成本的约束注定不可能从硬件部分提供更多的安全措施,故提升安全性重点应考虑Linux内核。

1嵌入式Linux系统存在的安全问题
开源的Linux内核无论在功能上或性能上都有很多优点,但Linux 内核属于开源项目,缺少提供商的安全保证,所以需要使用者最大限度地提升系统的安全性。

根据实际情况裁剪Linux内核,并采取适当的安全措施可提升系统的安全性。

掌握Linux核心技术、配合先进的安全模型、增强其安全性进而研发安全的操作系统非常有必要。

Linux 的安全性问题从机制角度可以有以下几点:
(1) Linux系统访问控制。

Linux系统主流发行版本的访问控制属
于自主访问控制;自主访问控制控制模式任何一个活动主体对应用户标识和组标识。

显然自主访问控制模式的问题是忽略了用户的角色、程序可信性等安全信息,故不能提供有效的安全性保障。

(2) Linux系统管理。

Linux系统中用户可以分为两类,一类是普通用户,另一类是管理员用户。

Linux系统管理员用户拥有系统所有权限,包括用户管理、设备管理、审计管理和安全管理等;这样方便了管理员管理,易于用户操作,但是违背了“最小特权”管理原则。

Linux系统的安全性只是建立在管理员必须正确设置系统功能、且不被冒充和不存在安全漏洞等一系列假设的基础上。

显而易见这样的系统存在巨大的风险,假如系统管理员被非法控制,系统将没有安全性可言。

(3) Linux系统日志。

Linux系统中的日志功能从设计到实现不是以系统安全为目标而是以内核调试为目的;此与系统安全审计有很大差距:第一,缺乏资源访问方面的记录;第二,不能详细记录系统发生的事件;最后,缺少必要数据分析与警告。

由此可见,嵌入式Linux内核自身的安全功能相当薄弱,对于安全性要求比较高的产品,则需要提高Linux内核的安全性。

2安全性问题解决方案
提升Linux安全性所采取措施主要有在Linux系统内核使用安全模块和安装必要的防火墙,还有一些嵌入式特有的安全措施。

(1) 使用安全模块LSM (Linux Security Modules)。

2001年一次Linux内核峰会中美国国家安全局推出了他们的安全增强Linux
(SELinux),与此同时Linux内核创始人提出,Linux内核作为一个开放的系统的确应该有一个通用的安全访问控制框架,不过也提出应该可以使用加载内核模块的方式来支持不同的安全模块,Linux内核的安全模块从此产生。

下面可以通过图1来了解一下安全模块工作原理。

从图1中可知,Linux安全模块工作原理是通过使用函数回调的方法,系统根据用户配置来判断内核对象的访问。

系统运行进程执行系统调用时找到I节点并分配相关资源,就在即将访问相应的对象时,系统立即调用Linux安全模块提供的函数,对安全模块提出疑问:“是否允许访问该对象?”,安全模块根据用户设定的安全策略进行判断该次访问是否具有相应的权限。

在安全模块里可以调用不同的安全模块,使用较多的有SELinux 、Smack (Simplified Mandatory Access Control Kernel)、TOMOYO等。

图1安全模块工作原理
SELinux安全模块。

该模块的使用使得系统由原来的自主访问机制改变为强制访问控制机制。

但是SELinux安全模块并不适用于处理能力有限嵌入式产品,原因有以下几点:首先,SELinux模块的细粒度访问控制造成安全策略的复杂性,例如:Fedora发行版本里就超过800 000行,如此复杂的安全策略肯定不能应用于嵌入式系统;其次,在使用SELinux模块后,若要运行某一个进程时,需要给出所有要调用函数的权限才能运行,在本身资源短缺的嵌入式产品里非常不适用;另外一点,当系统安全策略频繁改变时,要将文件系统重新设置
且重新装载到内核里,嵌入式文件系统一般都烧写在FLASH中,需要重新烧写文件系统,这对于最终用户是不可能实现的事。

使用SELinux模块后,要求系统支持文件扩展属性,而嵌入式系统经常采用的文件系统有CRAMFS、JFFS2等,这些文件系统本身不支持属性扩展。

由此可见,SELinux安全模块不适合在嵌入式产品中使用。

Smack安全模块的原理与SELinux模块一样,同样是强制访问控制的一个实现,与SELinux不同的是使用简单的配置策略来代替配置复杂的SELinux。

因为Smack安全模块基于标签实现强制访问控制,故需要支持标签的文件系统支持。

使用Smack安全模块需要完成3部分工作:配置修改Linux内核支持Smack、设置Smack脚本以及用户空间应用程序的修改。

基于标签实现强制访问的Smack模块需要修改根文件系统,所以Smack不适合作为嵌入式系统的安全模块。

TOMOYO安全模块是基于路径名的强制访问控制安全模块,由NTT DATA公司开发和维护。

MOTOYO 身材较小,只有100K左右代码、300K策略文件,是一个典型的基于路径面向行为的系统分析者和保护者,适合在嵌入式产品使用。

MOTOYO安全模块拥有图形界面编辑策略工具,方便用户编辑策略,除此之外还支持友好的学习模式与强制模式。

当MOTOYO模块处于学习模式时,系统所运行的程序都被加到策略文件中,简化了用户策略设置;而处于强制模式下不满足策略条件的程序与命令将禁止运行。

MOTOYO安全模块除了拥有学习模块和强制模式的优点,还不需要文件属性扩展的支持,做到了与文件系统无关,并且不需要修改应用程序,因此MOTOYO更
适合嵌入式环境。

(2) 安装防火墙(FireWall)。

防火墙是网络的一种访问控制设施,用于隔离网络的一部分与其它部分之间数据的自由流动。

硬件防火墙一般都采用多个高速总线、多处理器并行处理,性能优越是硬件防火墙的优点;因为嵌入式产品的尺寸及成本原因,硬件防火墙不可使用于其中。

软件防火墙本质上是一套软件,其运行于操作系统。

软件防火墙最大的优势是可进行数据包内容分析。

软件防火墙也有缺点,本身算法已经得到极限的优化,面向高端应用运行,仍然无法得到十分满意的性能结果,对于嵌入式产品来说应根据其处理能力和产品定位选择使用。

3提升安全性的特殊方法
可以根据嵌入式Linux任何部分可配置、可裁剪的特点,采取一些特殊方法提升嵌入式系统的安全性。

(1) Linux内核配置时,根据实际情况裁剪掉不需要的功能和服务,比如:telnet、ftp等。

(2) 制作根文件系统时取消不必要的命令。

(3) 修改Linux内核,隐藏引导程序和操作系统程序分区。

一般情况下引导程序与操作系统文件都烧写在FLASH里面,修改FLASH 分区信息只显示根文件系统部分。

(4) 选择文件系统。

嵌入式系统中较多根文件系统为读写文件系统,例如:JFFS2和YAFFS2等文件系统。

为提高文件系统安全性,
可以选择只读文件系统,Linux内核支持的只读文件系统主要有CRAMFS、AXFS等,若应用程序需要存放内容,可使用SD卡等移动存储方式。

参考文献:
\[1\]LINUX SECURITY MODULES \[OL\]. /wiki/Linux_Security_Modules.
\[2\]王高祖,李伟华,徐艳玲,等.基于TrustZone技术和μCLinux 的安全嵌入式系统设计与实现\[J\].计算机研究与应用,2008(6).
\[3\]SMACK IN EMBEDDED COMPUTING\[OL\]. /Articles/292142/.。

相关主题