SELinux基础

简介

SELinux(Security Enhanced Linux)提供了一个额外的系统安全层。SELinux 可用于解 答:<主体>是否可以针对<对象>进行<操作>?。例如:一个 web 服务器是否可以对用户目录 中的文件进行访问? SELinux 是一个内置在 Linux 内核中的 Linux 安全模块(LSM)。 内核中的 SELinux 子系 统由安全策略驱动,该策略由管理员控制并在引导时载入。系统中所有与安全性相关的、内核 级别的访问操作都会被 SELinux 截取,并在加载的安全策略上下文中检查。如果载入的策略 允许操作,它将继续进行。否则,操作会被阻断,进程会收到一个错误。

系统默认

系统管理员一般无法通过基于用户、组群和其它权限(称为 Discretionary Access Control, DAC)的标准访问策略生成全面、精细的安全策略。

SELinux

Security Enhanced Linux(SELinux)实施强制访问控制(MAC)。每个进程和系统资源都有一 个特殊的安全性标签,称为 SELinux 上下文(context)。SELinux 上下文有时被称为 SELinux 标签,它是一个提取系统级别细节并专注于实体的安全属性的标识符
SELinux 策略在一系列规则中使用这些上下文,它们定义进程如何相互交互以及与各种系统资 源进行交互。默认情况下,策略不允许任何交互,除非规则明确授予了相应的权限。

请记住,对 SELinux 策略规则的检查是在 DAC 规则后进行的。如果 DAC 规则已拒绝了访 问,则不会使用 SELinux 策略规则。这意味着,如果传统的 DAC 规则已阻止了访问,则不会 在 SELinux 中记录拒绝信息。

在上例中,SELinux 允许以 httpd_t 运行的 Apache 进程访问 /var/www/html/ 目录,并 拒绝同一进程访问 /data/mysql/ 目录,因为 httpd_t 和 mysqld_db_t 类型上下文没有允 许规则。另一方面,作为 mysqld_t 运行的 MariaDB 进程可以访问 /data/mysql/ 目录, SELinux 也会正确地拒绝使用 mysqld_t 类型的进程来访问标记为 httpd_sys_content_t 的 /var/www/html/ 目录。

SELinux 的优点:

所有进程和文件都被标记。SELinux 策略规则定义了进程如何与文件交互,以及进程如 何相互交互。只有存在明确允许的 SELinux 策略规则时,才能允许访问。 精细访问控制。传统的 UNIX 通过用户的授权、基于 Linux 的用户和组进行控制。而 SELinux 的访问控制基于所有可用信息,如 SELinux 用户、角色、类型以及可选的安全 级别。 SELinux 策略由系统管理员进行定义,并在系统范围内强制执行。 改进了权限升级攻击的缓解方案。进程在域中运行,因此是相互分离的。SELinux 策略 规则定义了如何处理访问文件和其它进程。如果某个进程被破坏,攻击者只能访问该进 程的正常功能,而且只能访问已被配置为可以被该进程访问的文件。例如:如果 Apache HTTP 服务器被破坏,攻击者无法使用该进程读取用户主目录中的文件,除非添加或者 配置了特定的 SELinux 策略规则允许这类访问。 SELinux 可以用来强制实施数据机密性和完整性,同时保护进程不受不可信输入的影 响。

SELinux 本身并不是: 防病毒软件, 用来替换密码、防火墙和其它安全系统, 只是一个在Linux系统中的。 多合一的安全解决方案。

SELinux 旨在增强现有的安全解决方案,而不是替换它们。

SELinux 如何提高安全性

默认操作为 deny(拒绝)。白名单挂载。

SELinux 可以限制 Linux 用户。SELinux 策略中包括很多受限制的 SELinux 用户。可 将 Linux 用户映射到受限制的 SELinux 用户,以便利用其使用的安全规则和机制。例 增加进程和数据的分离。SELinux 域(domain)的概念允许定义哪些进程可以访问某些 文件和目录。 SELinux 可帮助缓解配置错误带来的破坏。不

SELinux 决策(如允许或禁止访问)会被缓存。这个缓存被称为 Access Vector Cache (AVC)。通过使用这些缓存的决定,可以较少对 SELinux 策略规则的检查,这会提高性 能。请记住,如果 DAC 规则已首先拒绝了访问,则 SELinux 策略规则无效。原始审计消息会 记录到 /var/log/audit/audit.log,它们以 type=AVC 字符串开头。

SELinux 状态和模式

SELinux 可使用三种模式之一运行: enforcing(强制)、permissive(宽容)或 disabled (禁用)。 Enforcing 模式是默认操作模式,在 enforcing 模式下 SELinux 可正常运行,并在整个 系统中强制实施载入的安全策略。 在 permissive 模式中,系统会象 enforcing 模式一样加载安全策略,包括标记对象并 在日志中记录访问拒绝条目,但它并不会拒绝任何操作。不建议在生产环境系统中使用 permissive 模式,但 permissive 模式对 SELinux 策略开发和调试很有帮助。 强烈建议不要使用禁用(disabled)模式。它不仅会使系统避免强制使用 SELinux 策 略,还会避免为任何持久对象(如文件)添加标签,这使得在以后启用 SELinux 非常困 难。

使用 setenforce 工具在 enforcing 和 permissive 模式间进行切换。使用 setenforce 所 做的更改在重启后不会被保留。

使用 getenforce 实用程序查看当前的 SELinux 模式:

/etc/selinux/config

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值