嵌入式 Linux 知识库

原文:eLinux.org
翻译:@lzz5235
校订:@lzufalcon

安全

目录

简介

本文主要包含与嵌入式 Linux 有关的安全方面的技术。

技术/项目主页

Linux Kernel 中的安全子系统

SELinux

  • SELinux - 这个组件主要用来实现对 Linux Kernel 的高级安全瓶通量功能。 SELinux 主要起始于 NSA 在 2001 年给 kernel 提交的补丁,在 LSM 项目中对这个补丁进行了讨论,目前 SELinux 已经帮助 Kernel 定义了大部分的 LSM 接口。

Tomoyo

Tomoyo 在 kernel 2.6.28 时被合并到 kernel 主线中。

SMACK

SMACK 在 kernel 2.6.25 时被合并到 Kernel 主线中。

陈旧的信息 ( 2005 年,CELF 调查的相关信息)

文档

关键需求与相关技术点

与安全相关的技术点,这个会在表格中被引用。

  1. Umbrella
  2. Linux Security Module (LSM) framework
  3. PAX patch – ( x86 架构独有)
  4. LOMAC
  5. LIDS
  6. Netfilter
  7. digsig/bsign/elfsig
  8. 可信计算机集群 (TCG)
  9. TPE (包括 LIDS )
  10. PRAMFS
  11. ACL 文件系统拓展
  12. Posix 中与文件相关的功能
需求 相关技术
可靠性 10
安全/信任的引导 8
访问控制 1, 4, 5, 11, 12
缓冲区/栈的保护 3
入侵检测 5, 8
是否可以配置安全选项 1, 2, 4, 5, 7, 9(?), 11, 12
用户认证 1, 7
Signed binaries 1, 7
可靠的连接 IPSec, SSL already supported
安全服务 1, 4, 5, 7, 8
防火墙 6
安全硬件提供的 API 支持 8
安全固件的可升级性 9
认证 8

对于清单中的相关技术,CELF 安全组织正在研究或者已经支持以下的技术:

  • Umbrella
  • PAX - 目前仅仅是监控
  • LIDS
  • Signed Binaries
  • Linux API for TCG - 仍然处在 NPO 状态,并进行讨论
  • TPE - LIDS 一部分
  • ACL 文件拓展 - CELF 需要 ( PRAMFS,JFFS2 ). 也需要关注 LKLM 讨论,然后进行实现
  • POSIX 中与文件相关的功能

资源

安全框架

  • The Linux Security Modules (LSM) 项目提供 一个轻量级,多种用途的访问权限控制框架。如今计算机的恶意软件增长迅速,通过增加权限访问控制模块 可以提高内核的安全性,使得服务器在大量的攻击中幸存。安全研究已经为多种操作系统环境提供许不同类型的权限访问控制 而 LSM 框架允许权限访问控制被实现为可加载的内核模块。

  • Medusa DS9 Security Project 是另外一个提高 Linux kernel 安全性的项目,它实现了ZP 安全框架 。这个项目的目标就是实现一个安全框架从而实现任何的安全框架模型(不同于其他的 Linux kernel 项目)。

Medusa DS9 主要用来提高 Linux 的安全性,它由两部分组成:Linux kernel 的改变和用户空间守护进程的改变。 Kernel 的改变主要来监视系统调用,文件系统动作和进程,他们被实现为通信协议。安全守护进程使用字符设备收发 数据包来与 kernel 进行通讯。守护进程包含了整个业务逻辑与加固的安全策略,这就意味着 Medusa 可以实现任何类型的 数据保护;而它仅仅取决于配置文件;实际上他是一个存在于程序内部的编程语言,非常类似与 C 。

  • Rule Set Based Access Control (RSBAC) 是一个灵活 ,强大与快速的开源权限控制访问框架,目前被运用到 Linux kernel 中,在 2000 年 1 月后,该项目已经可以稳定 的使用。所有政府与公司的开发是相互独立的,不存在访问控制代码被重用的现象。

标准的安装包包括一系列的访问控制模块,比如 MAC ,RC ,ACL 等,而且运行注册的方式使得我们更加容易 的实现自己的访问控制内核模块,并且将他在运行时注册就可以了。

RSBAC 框架是建立在通用的权限访问控制框架 (GFAC) 之上的,该框架是由 Abrams 与 La Padula 设计。 所有与系统相关的安全代码都可以被成为系统安全的拓展代码。这种代码被认为是一种中央决策组件,可以 称这些中央决策组件为决策模块或者产生组合决策,这些决策可以用来加固系统调用拓展。

决策建立在多种访问类型之上,例如访问目标,对目标的属性类型访问。另外独立属性被运用 在独立的模块中,比如:the privacy module (PM) 所有的属性被存储在受保护的文件夹内,一个文件夹 对应一个挂载设备,因此改变这些属性需要提供特殊的系统调用。

  • TrustedBSD MAC 框架 - 该项目拓展了系统原有的权限访问控制框架,允许系统管理员对系统中不同类型文件 (e.g. processes or sockets) 和对象(e.g. sockets, filesystem objects, sysctl nodes)进行额外的安全加固。开发这个新的访问控制模型 主要是用来促进内核开发更加灵活的权限访问框架,而 TrustedBSD MAC 框架允许模型使用内核模块的形式实现。

  • 可信计算集群 (TCG) - TCG 定义了一种基于硬件的安全架构 ,这是一种非常有效的方式建立在多种平台上的可信计算。更多的介绍请查看 Seiji Munetoh 与 Nicholas Szeto 的演示, TCGOverviewPDF, 这个演示是在 Tech Conference 2005 Docs 页面上. 可信平台模块(TPM) 是一个安全的芯片绑定平台级别的关键架构组件。 TCG 拥有移动电话 WG ,通过 WG 发布了用户用例文档,这个文档可以满足大量通用的 CE 设备(包括移动电话)-- MPWG User Cases

安全组件

  • SELinux - 这个功能主要用来实现对 Linux Kernel 的高级安全瓶通量。 SELinux 主要起始于 NSA 在 2001 给 kernel 提交的补丁,在 LSM 项目中这个补丁进行了讨论,目前 SELinux 已经 定义了大量的 LSM 接口。

  • Apparmor - Apparmor 是一个安全工具,设计的目标就是针对应用程序提供简单易用的安全框架。

  • Linux 入侵防护系统 (LIDS) 是由一个 kernel 补丁和一套管理工具组成,用来实现 Linux 的 权限访问控制,当该系统生效时,被选中的文件访问,所有类型的文件访问,所有系统网络的管理员操作,系统功能 的使用,原始设备,内存,I/O 访问可以被配置成无法访问,即使是 root 用户。我们可以配置特定的应用程序可以 访问某些特定文件。从而拓展整个系统的能力,并将网络与文件系统的安全性加入到 kernel 中。我们可以调整线上系统安全防护措施 ,隐藏敏感进程,获取最近通过网络或者其他发送的安全警报。LIDS 有两个版本树,1.2 与 2.2 。LIDS 2.2 支持 kernel 2.6 。 LIDS 1.2 支持 kernel 2.4 与新的功能,Trusted Path Execution (TPE) 与 Trusted Domain Enforcement (TDE) 。这些可以有效的 创建沙盒环境,目前 LIDS 以 GPL 许可证开源。

  • TOMOYO Linux 主要用来提高 Linux 自身的安全性,这个特性是由NTT DATA CORPORATION, Japan开发。 TOMOYO Linux 是在 2005 年 11 月 11 日,以 GPL 许可证的形式开源的。 TOMOYO Linux 是一个机制,可以被称为安全操作系统, 这个机制可以通过打破现有的访问控制,从而做到更细粒度的访问控制,与 SELinux 非常类似。

Tomoyo 在 kernel 2.6.28 时被合并到 Kernel 主线中。

SMACK 在kernel 2.6.25 时被合并到 Kernel 主线中。

  • Umbrella 基于 Linux 安全模块框架,实现了权限访问控制与文件认证的功能。权限访问控制 方案增强了每个进程的访问控制。

    • 限制资源
    • 限制访问网络接口
    • 限制进程的创建与信号处理
    • 标示文件
  • LOMAC 是面向 UNIX kernel 的动态加载安全模块,其中它使用了低水印的权限访问控制,用来 保护进程的二进制文件与数据不受恶意程序的影响。这里恶意程序包括病毒,特洛伊木马 ,远程恶意用户,破解的网络服务器。LOMAC 设计的目标就是兼容性与易用。

LOMAC 的目标是创建权限访问控制用来保护特定的用户。LOMAC 实现了一种简单的 MAC 集成保护形式, 这个技术基于可加载内核模块( LKM )中的低水印的权限访问控制技术,从而有效的保护系统不受 病毒,特洛伊木马,远程恶意用户,被入侵的网络服务器的损害,这个技术不会修改 kernel 源码,源程序 或则其他的存在的配置。LOMAC 设计的目标就是兼容性,它默认的配置文件主要用来提供有效的保护, 而不用配置特定的用户,服务器,其他系统中的软件。LOMAC 可以通过加载内核模块来加固当前部署的系统。

  • The Enforcer 是一个 Linux 安全模块 ,通过保证文件系统不被恶意篡改,提高运行中计算机的 Linux 完整性。它与 TCPA 硬件进行交互 来提供更高层级的软件与敏感数据的防护。

  • Janus 是一个安全工具,用来给不信任的进程提供一个 沙盒环境,用来限制不信任程序的执行环境。这个工具可以限制破解软件对软件造成的损害。 我们成功的使用 Janus 破解了 Apache ,bind ,和其他程序。并将其限制在沙盒中,没有打断进程运行。 我们还将此方法应用在生产环境中。

  • Domain and Type Enforcement ( DTE ) 是一个权限访问控制系统,可以赋予不同文件的类型与域给特定进程。 如果从其他域访问该进程,那么必须通过 DTE 策略来访问。这个项目首次实现在一篇论文中,这篇论文的名字叫《 A Domain and Type Enforcement Prototype and Confining Root Programs with Domain and Type Enforcement》。

  • The Realtime Linux Security Module (LSM) 是 Linux 2.6 内核中可加载模块的拓展 它可以赋予实时的权限给特殊的用户组和进程。

  • ACL support for Linux kernel - 这个代码包括两部分:Kernel 补丁与用户代码。 支持了 Linux kernel 中全部的访问控制列表 ( ACLs )。

  • http://www.hu.grsecurity.net/ grsecurity (镜像原始站点 here) - 通过使用创新的方式来实现进行多层安全检测,防护,容错模型。 该项目以 GPL 许可证开源。

此外提供了大量其他的特性:

    • 一种智能的,健壮的角色权限控制系统( RBAC ),它可以根据你整个系统产生一系列的权限策略 无需进行配置。
    • 加固 chroot 机制
    • 避免 /tmp 竞争条件
    • 广泛审视
    • 阻止对于整个地址空间的漏洞利用(来自于 Pax 项目)
    • 针对 TCP/IP 栈位置额外的随机性
    • 限制当前用户只能查看自身的进程
    • 每个安全警报或者是安全审计包含每个引起该错误事件用户的 IP 地址

安全特性

其他资源

安全活动

邮件列表

会议

安全相关的文章

移动到:

论文

实例和开源代码

目录: