介绍
Linux SELinux是一种安全增强的Linux,它可以让用户和管理员对访问控制有更多的控制。它是一种标签机制,可以对文件和其他对象提供高级别的安全保护,防止未授权的进程或者没有必要访问的授权进程进行滥用。SELinux最初是由美国国家安全局(NSA)开发的,作为一系列使用Linux安全模块(LSM)的Linux内核补丁。SELinux于2000年发布给开源社区,并于2003年集成到上游Linux内核中。
SELinux的工作原理是,它为系统上的应用程序、进程和文件定义了访问控制。它使用安全策略,这是一组规则,告诉SELinux什么可以或者不能被访问,来执行策略允许的访问。当一个应用程序或进程(称为主体)发出一个访问一个对象(如文件)的请求时,SELinux会与一个访问向量缓存(AVC)进行检查,其中缓存了主体和对象的权限。如果SELinux无法根据缓存的权限做出访问决定,它就会将请求发送给安全服务器。安全服务器会检查应用程序或进程和文件的安全上下文。安全上下文是从SELinux策略数据库中应用的。然后授予或拒绝权限。如果权限被拒绝,一个“avc: denied”消息将会出现在/var/log/messages中。
SELinux有多种配置方式来保护你的系统。最常见的是目标策略(targeted policy)或多级安全(MLS)。目标策略是默认选项,涵盖了一系列的进程、任务和服务。MLS可以非常复杂,通常只有政府组织使用。你可以通过查看/etc/selinux/config文件来确定你的系统应该运行哪种策略。该文件有一个部分显示了SELinux是处于宽容模式(permissive mode)、强制模式(enforcing mode)还是禁用状态(disabled),以及应该加载哪种策略。SELINUX变量可以设置为disabled、permissive或enforcing来选择其中一个选项。disableddisables会禁用大部分SELinux内核和应用程序代码,使系统在没有任何SELinux保护的情况下运行。permissiveoption会启用SELinux代码,但使其以一种模式运行,即策略会拒绝的访问被允许但被记录。enforcingoption会启用SELinux代码,并使其强制执行并记录访问拒绝。
SELinux还允许在系统上安装多个策略,但只有一个策略可以在任何给定时间处于活动状态。目前,存在多种类型的SELinux策略:targeted, mls等等。
安全上下文
SELinux安全上下文是一种用于标识进程和文件的安全属性的机制,它由五个字段组成:SELinux用户、角色、类型、灵敏度和类别。SELinux用户表示数据或进程的所有者,角色表示数据是文件还是进程,类型表示数据或进程的功能或用途,灵敏度和类别表示数据或进程的保密性等级。SELinux通过比较进程和文件的安全上下文来决定是否允许访问ÿ