首页 欧洲联赛正文

先婚厚爱,「转」安全增强 Linux (SELinux) 分析,曹云金

Linux 一向被认为是最安全的操作体系之一,可是经过引进安全增强 Linux(Security-Enhanced Linux,SELinux),National Security Agency (NSA) 将 Linux 的安全性进步到了新的高度。SELinux 经过对内核和用户空间进行修正,对现有的 GNU/Linux 操作体系进行了扩展,然后使其变得坚不可摧。假如您现在正在运用 2.6 侧组词版的内核,就会惊讶地发现您已经在运用 SELinux 了!本文将探求 SELinux 背面的思维及其完成办法.

简介

公共网络(比方 Internet)充满着风险。只要将电脑衔接到 Internet(即便只衔接很短的时刻),您就会感遭到这一点。进犯者能够运用不安全性来取得yinleren对一个体系的拜访,取得对信息的未授权拜访,或许对一台计算机进行改造,以运用它发送垃圾邮件或进犯其他高端体系(运用 SYN 泛洪进犯,一种分布式拒绝服务进犯)。

分布式拒绝服务进犯(DDoS)经过 Internet 上的多个体系来完成(所以也称为僵尸电脑),这些体系耗费方针体系上的资源,(运用 TCP 的三向握手)使其不能被合法的用户拜访。一种带有 cookie 的四向握手协议(Stream Control Transmission Protocol [SCTP])能够防护这种进犯,更多信息请拜见 参考资料 一节。

SELinux 的来源

SEcomicdownLinux 是一个面向政府和职业的产品,由 NSA、Network Associates、Tresys 以及其他组织设计和开发。虽然 NSA 将其作为一个补丁集引进,但从 2.6 版开端,它就被参加到 Linux 内核中。

GNU/Linux 十分安全,但它也十分动态:所做的更改会为操作体系带来新的缝隙,这些缝隙或许被进犯者运用,虽然人们都十分关怀阻挠未授权拜访,可是发作侵略后会发作什么呢?

本文将探求 SELinux 背面的思维及其根本架构。关于 SELinux 的完好描绘触及一整本书的内容(拜见 参考资料 一节),所以本文只重视其根本原理,使您了解 SELinux 循化气候的重要性及其完成进程。

拜访操控办法

大多数操作体系运用拜访操控来判别一个实体(用户或程序)是否能够拜访给定资源。依据 UNIX 的体系运用一种自主拜访操控(discretionary access control,DAC)的办法。此办法一般依据目标所属的分组来束缚对目标的拜访。例如,GNU/Linux 中的文件有一个一切者、一个分组和一个权限集。权限界说谁能够拜访给定文件、谁能够读取它、谁能够向其写入,以及谁能够履行它。这些权限被划分到三个用户会集,别离表明用户(文件一切者)、分组(一个用户组的一切成员)和其他(既不是文件一切者,又不是该分组的成员的一切用户)。

许多这样的拜访操控都会带来一个问题,因为所运用的程序能够承继用户的拜访操控。这样,该程序就能够在用户的拜访层进行操作。与经过这种办法界说束缚比较,运用最小特权准则 更安全:程序只能履行完成使命所需的操作。例如,假如一个程序用于呼应 socke世界剑豪扎姆夏t 恳求,但不需求拜访文件体系,那么该程序应该能够监听给定的 socket,可是不能拜访文件体系。经过这种办法,假如该程序被进犯者运用,其拜访权限显然是最小的。这种操控类型称为强制拜访操控(MAC)。

另一种操控拜访的办法是依据人物的拜访操控(RBAC)。在 RBAC 中,权限是依据安全体系所颁发的人物来供给的。人物的概念与传统的分组概念石兰大露八字奶不同,因为一个分组代表一个或多个用户。一个人物能够代表多个用户,但它也代表一个用户集能够履行的权限。

SEL先婚厚爱,「转」安全增强 Linux (SELinux) 剖析,曹云金inux 将 MAC 和 RBAC 都bumzu增加到了 GNU/Linux 操作体系中。下一节将评论 SELinux 完成,以及如何将安全增强透明地增加到 Linux 内核中。

Linux 安全完成

在前期的 SELinux 中,它仍是一个补丁集,它供给了自己的安全性结构。这存在着一些问题,因为它将 GNU/Linux 束缚到一个独自的拜访操控架构。Linux 内核承继了一种通用结构,将战略从完成平别离了出来,而不是选用单一的办法。该解决方案便是 Linux 安全模块(Linux Security Module,LSM)结构。LSM 供给了一种通用的安全结构,答应将安全模型完成为可载入内核模块(拜见图 1)。

图 1. SELinux 将安全战略和施行别离

在拜访内部目标之前对内核代码进行修正,以调用一个代表施行函数的钩子,该施行函数完成安全战略。该函数依据预界说的战略验证操作能否继续进行。安全函数存储在一个安全操作结构中代号qwq,该结构包含有必要遭到保护的根本操作。例如,security_socket_create 钩子(security_ops->socket_create)在创立新 socket 之前查看权限,并考虑协议集、类型、协议,以及 socket 是在内核中创立仍是在用户空间中创立。清单 1 供给了 socket.c 中用于创立 socket 的示例代码(拜见 ./linux/net/socket.c)。

清单 1. 创立 socket 的内核代码

security_socket_create 函数在 ./linux/include/linux/security.h 中界说。它供给了从 security_socket_create 到 security_ops 结构中动态装置的函数的直接调用(拜见清单 2)。

清单 2. 用于 socket 创立查看的直接调用

static inline int security_socket_create (int family, int type,
int protocol, int kern)
{
return security_ops->socket_create(famil叶墉y, type, protocol, kern);
}

security_ops 结构中的函数经过安全模块装置。在本例中,这些钩子在可载入的 SELinux 内核模块中界说。每个 SELinux 调用在 hooks 文件内部界说,该文件完成从内核函数到特定安全模块的动态调用的直接性(拜见清单 3 中的 .../linux/security/selinux先婚厚爱,「转」安全增强 Linux (SELinux) 剖析,曹云金/hooks.c 代码)。

清单 3. SELinux socket 创立查看

清单 3 的中心部分是一个调用,用于验证当时操作是否是当时使命(经过 current->security 界说,其间 current 代表当时正在履行的使命)所答应的。拜访向量缓存(Access Vector无内 Cache,AVC先婚厚爱,「转」安全增强 Linux (SELinux) 剖析,曹云金)缓存了之前的 SELinux 决议计划(进步进程的功用)。此调用包含源安全标识符(sid)、安全类(依据恳求操作的详细信息结构)、特定 socket 调用,以及可选的辅佐审计数据。假如未在缓存中找到决议计划,青丘异镜图那么会调用安全服务器来获取决议计划(此进程如图 2 所示)。

图 2. 分层 Linux 安全进程

初始化到 security_ops 中的回调钩子被动态界说为一个可载入内核模块(经过 register_security()先婚厚爱,「转」安全增强 Linux (SELinux) 剖析,曹云金),可是在没有载入安全模块时,这些钩子包含伪桩(dummy stub)函数(拜见 ./linux/security/dumm钳花小包y.c)。这些桩函数完成规范 Linux DAC 战略。一直存在回调钩子,其间有必要供给目标中介(mediation)来确保安全性。杨彩熙这包含使命办理(创立、告诉、等候)、程序载入(execve)、文件体系办理(超级块、inode、文件钩子)、IPC(音讯行列、同享内存、信号量(semaphore)操作)、模块钩子(刺进和删去)、网络钩子(掩盖 socket、netlink、网络设备和其他协议接口)。更多信息请拜见 参考资料 末节或回忆 security.h 文件。

本文不计划评论 SELinux 战略的办理,但您能够在 参考资料 末节找到关于 SELinux 装备的更多社区福利信息。

其他办法

SELinux 是现在最全面的安全结构之一,但它不是专一的。本节回忆其他一些可用的办法。

AppArmor

AppArmor 开始广头地涡虫由 Immunix 开发,随后由 Novell 保护,它是 SELinux 的代替办法,也运用了 Linux 安全模块(LSM)结构。因为 SELinux 和 AppArmor 运用了相同的结构,所以它们能够交换。AppArmor 的开发初衷是因为人们认为 SELinux 过分杂乱,不适合一般用户办理。AppArmor 包含一个彻底可装备的 MAC 模型和一个学习方式,在学习方式中,程序的典型行为能够转换为一个装备文件。

SELinux 的一个问题在于,它需求一个支撑扩展特点的文件体系;而 AppArmor 对文件体系没有任何要求。您能够在 SUSE、OpenSUSE,以及 Ubuntu 的 Gutsy Gibbon 中找到 AppArmor。

Solaris 10(是受信赖的 Solaris)

Solaris 10 操作体系经过其增强了安全性的 Trusted玩小女子 Extensions 组件供给了强制拜访操控。该功用适用于 MAC 和 RBAC。Solaris 经过向一切目标增加敏感性标签完成了这一点,使您能够操控设备、文件、连网拜访,乃至窗口办理服务。Solaris 10 中的 RBAC 的长处在于,它经过供给对办理使命(可在今后进行分配)的细粒度操控最小化了对根拜访的需求。

TrustedBSD

TrustedBSD 是一个正在进行中的项目,首要开发牢靠的操作体系扩展,这些扩展终究会参加 FreeBSD 操作体系。它包含构建在 Flux Advanced Security Kernel (Flask) 安全架构之上的强制拜访操控,后者包含以插件模块办法供给的类型强制和多级安全(MLS)。TrustedBSD 还兼并了来自 Apple Darwin 操作体系的开源 Basic Security Module (BSM) 审计完成(BSM 开始由 Sun 引进)。BSM 是一个审计 API 和文件格局,它支撑一般的审计盯梢处理。TrustedBSD 还构成了供 Security Ennetlink、网络设备和其他协议接口)。更多信息请hanced Darwin (SEDarwin) 运用的结构。

操作体系虚拟化

增强操作体系内部安全性的最终一个挑选是操作体系虚拟化(也称为虚拟专用服务器(virtual private servers))。一个操作体系具有多个独立的用户空间实例,能够完成功用别离。操作体系虚拟化对在独立用户空间内部运转的应用程序功用进行了束缚。例如,一个用户空间实例或许不能先婚厚爱,「转」安全增强 Linux (SELinux) 剖析,曹云金修正内核(载入或移除内核模块),也不能挂载或卸载文件体系。并且不答应修正内核参数(例如,经过 p蒋铁亮roc 文件体系)。任何修正其他用户实例环境的操作都是不答应的。

许多操作体系都能完成操作体系虚拟化。GNU/Linux 支撑 VServer、Parallels Viruozzo先婚厚爱,「转」安全增强 Linux (SELinux) 剖析,曹云金 Container 和 OpenVZ。在其他操作体系中,您能够找到容器(Solaris)和 jail(BSD)。在 Linux-VServer 中,每个独自的用户空间实例称为一个安全上下文。在每个安全上下文中,会为专用服务器实晓声长谈在线直播例发动一个新的 init。关于操作体系虚拟化和其他虚拟化办法的更多信息,请拜见 参考资料 一节。

结束语

关于 Linux 内核来说,强制拜访操控和依据人物的拜访操控都蔡奉芸是相对较新的功用。跟着 L先婚厚爱,「转」安全增强 Linux (SELinux) 剖析,曹云金SM 结构的引进,新的安全模块将会呈现。除了对结构的增强,还能够堆叠安全模块,然后答应多个安全模块共存,并且最大极限地掩盖了 Linux 的安全需求。跟着对操作体系安全性的深入研究,将会引进新的拜访操控办法。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。