Security-Enhanced Linux (SELinux)

Linux Security Mode

Linux系统先做DAC检查.如果没有通过DAC权限检查,则操作直接失败.通过DAC检查之后,再做MAC权限检查.

DAC

SELinux出现之前,Linux上的安全模型叫DAC,全称是Discretionary Access Control,翻译为自主访问控制.

核心思想:
进程理论上所拥有的权限与执行它的用户的权限相同.比如,以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情.

MAC

SELinux在DAC之外,设计了一个新的安全模型,叫MAC(Mandatory Access Control),翻译为强制访问控制.

核心思想:
任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限.凡是没有出现在安全策略配置文件中的权限,进程就没有该权限.

Security-Enhanced Linux (SELinux)

SELinux则是由美国NSA(国安局)和一些公司(RedHat、Tresys)设计的一个针对Linux的安全加强系统.

所有DAC机制都有一个共同的弱点,就是它们不能识别自然人与计算机程序之间最基本的区别.
简单点说就是,如果一个用户被授权允许访问,意味着程序也被授权访问,如果程序被授权访问,那么恶意程序也将有同样的访问权.

SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制.由以下两部分组成:
1. Kernel SELinux模块(/kernel/security/selinux)
2. 用户态工具

SELinux定义了系统中每个[用户], [进程], [应用]和[文件]的访问和转变的权限,然后它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,安全策略指定如何严格或宽松地进行检查.

在SELinux中,安全策略文件是最重要的.SELinux有自己的一套规则来编写安全策略文件,这套规则被称之为SELinux Policy语言.

SELinux是典型的MAC实现, 对系统中每个对象都生成一个安全上下文(Security Context),每一个对象访问系统的资源都要进行安全上下文审查.
审查的规则包括
1. 类型强制检测(type enforcement)
2. 多层安全审查(Multi-LevelSecurity)
3. 基于角色的访问控制(RBAC: Role Based Access Control).

SELinux Architecture

selinux architecture

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.