SELINUX

SELinux是美国国家安全局开发的强制访问控制机制,集成在Linux内核中,用于增强系统安全性。它限制了进程对资源的访问,即使root用户也不例外。安全上下文是其核心,包括用户身份、角色、类型和安全级别。SELinux的工作模式有强制、宽容和禁用,其中强制模式下违规行为会被阻止并记录。在宽容模式下,仅记录违规行为。通过调整/etc/selinux/config可以切换工作模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,背景和概念
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问的控制,是Linux历史上最杰出的新安全子系统。
SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个用户,进程,应用和文件的转变的权限,然后它可以使用一个安全策略来控制这些实体(用户,进程,应用和文件)之间的交互,安全策略指定如何安全或宽松的进行检查。

  1. 对内核对象和服务的访问控制
  2. 对进程初始化,继承和程序执行的访问控制
  3. 对文件系统,目录,文件和打开文件描述的访问控制
  4. 对端口,信息和网络接口的访问控制

安全值:在Linux里所有的文件和进程都有一个值。(当满足或者匹配到这个安全值,才能进行访问)
二,SELinux的作用及权限管理机制
1,SELinux的作用
SELinux主要作用就是最大限度的减小系统中服务进程可访问的资源(最小权限原则)。
2,DAC
在没有使用SELinux的操作系统中,决定一个资源是否能被访问的因素:某个资源是否拥有对应用户的权限(读,写,执行)。但是由于root用户不受任何管制,系统上任何资源都可以无限制的访问。
这种权限管理机制主体是用户,也称自主访问控制(DAC)。
3,MAC
在使用SELinux的操作系统中,决定一个资源能否被访问的因素除了上述因素外,还需要判断每一类进程是否拥有对某一类资源的访问权限。(即使是root用户也需要判断,因此进程的活动空间也被压缩到最小。安全性大大增加)
这种权限管理机制的主体是进程,也称为强制访问控制(MAC)。而MAC又分为俩种方式:类别安全(MCS)模式;多级安全(MLS)模式。
三,MSC模式下操作
1,SELinux基本概念
1)主体(Subject):可以完全等同于进程(为了方便理解,以下均把进程视为主体)
2)对象(Object):被主体访问的资源,可以是文件,目录,端口,设备等(为了方便理解,以下均把文件或者目录视为对象)
3)政策和规则(Policy&Rule)
系统中通常有大量的文件和进程,为了节省时间和开销,通常我们只是选择性的对某些进程进行管制。而哪些进程需要管制,要怎么管制都是由政策决定的。一套政策里面有多个规则。部分规则可以按照需求启用或者禁用(以下把该类型的规则称为布尔型规则)。规则是模块化的,可扩展的。在安装新的应用程序时,应用程序可通过添加新的模块来添加规则。用户也可以手动增减规则。
4)安全上下文(Security Context)

  • SELinux的核心:安全上下文
  • 安全上下文:进程安全上下文;文件安全上下文【一个进程上下文对应多个文件安全上下文】
  • 只有俩者的安全上下文对应上了,进程才能访问文件,它们的对应关系是由政策中的规则决定的。
  • 文件安全上下文由文件创建的位置和创建文件的进程所决定的。而且系统有一套默认值,用户也可以对默认值进行设定。需要注意的是,单纯的移动文件操作并不会改变文件的安全上下文。
  • 安全上下文的结构及含义:有四个阶段,分别用冒号隔开。(system_u:object_r:admin_home_t:s0)。

(system_u:object_r:admin_home_t:s0)
用户身份:角色:类型(标签):安全级别
system_u指的是selinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统用户,通过用户可以确定身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于selinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。
object_r:一般为文件目录角色,system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类型类似于用户组的概念,不同的角色具有不同的身份权限,一个用户具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。
admin_home_t:文件和进程都有一个类型,SELinux依据类型的相关组合来限制存取权限

5)SELinux的工作模式(/etc/selinux/config)
(1)enforcing:强制模式。违反SELinux规则的行为被阻止并记录到日志中。
(2)permissive:宽容模式。违反SELinux规则的行为只会记录到日志中。一般为调试用。
(3)disabled:关闭SELinux。
切换工作模式:需要重启系统

级别切换:
禁用<——>强制:下次启动生效
禁用<——>警告:下次启动生效
强制<——>警告:即时生效

enforcing和permissive切换命令:setenforce 1|0
打开SELinux之后的第一次重启速度慢的原因:系统必须为磁盘中的文件创建安全上下文。
将selinux模式改为强制模式重启慢的原因:selinux在操作系统的安全体制结构上进行扩张,增强对进程模块文件打上了一些安全标记。

### SELinux 配置概述 SELinux(Security-Enhanced Linux)是一种强制访问控制系统,旨在通过更精细的权限管理来提高系统的安全性。它不仅依赖于传统的 DAC(Discretionary Access Control),还引入了 MAC(Mandatory Access Control)。这种双重验证机制确保只有经过明确授权的操作才能被执行。 #### SELinux 的三种模式 SELinux 支持三种运行模式: 1. **Enforcing**:这是默认模式,在此模式下,SELinux 执行所有的安全策略并记录任何被拒绝的动作。 2. **Permissive**:在此模式下,SELinux 不会阻止任何操作,但它会记录违反策略的行为以便调试和分析。 3. **Disabled**:完全禁用 SELinux 功能[^1]。 可以通过 `getenforce` 命令查看当前 SELinux 运行模式,并使用 `setenforce` 切换模式(仅限临时更改)。永久修改需编辑 `/etc/selinux/config` 文件中的 `SELINUX=enforcing|permissive|disabled` 参数[^3]。 --- ### SELinux 配置方法 #### 1. 查看 SELinux 当前状态 要检查 SELinux 是否启用以及其当前模式,可执行以下命令: ```bash sestatus ``` #### 2. 修改文件或目录的安全上下文 SELinux 使用安全上下文标记文件、目录和其他对象。如果某些应用程序无法正常工作,可能是因为它们缺少正确的安全上下文。可以使用 `ls -Z` 查看文件的安全上下文,并使用 `chcon` 或 `restorecon` 更改这些上下文。 例如,恢复某个目录的标准安全上下文: ```bash restorecon -R /var/www/html/ ``` #### 3. 创建自定义策略模块 对于复杂场景下的需求,可能需要创建自定义策略模块。以下是基本流程: 1. 记录审计日志中因 SELinux 而受阻的操作: ```bash grep AVC /var/log/audit/audit.log | audit2allow -m mymodule > mymodule.te ``` 2. 编译生成的 `.te` 文件为二进制模块: ```bash checkmodule -M -m -o mymodule.mod mymodule.te semodule_package -o mymodule.pp -m mymodule.mod ``` 3. 加载新编写的策略模块至系统中: ```bash semodule -i mymodule.pp ``` 以上过程能够有效扩展 SELinux 默认行为以适应特定业务环境的要求[^1]。 --- ### 常见问题及解决方案 #### 问题一:Web 服务无法读取指定路径的数据 原因可能是目标数据未分配给 web 应用所需的安全上下文标签。尝试重新设定相关联的内容属性即可解决问题: ```bash chcon -t httpd_sys_content_t /path/to/data ``` 或者利用工具自动修复整个树形结构内的所有项目: ```bash restorecon -Rv /path/to/data ``` #### 问题二:数据库客户端连接失败 当 MySQL 数据库或其他类似的后台服务遇到认证错误时,应核查是否由于 SELinux 导致通信障碍。调整布尔值参数或许能缓解此类状况: ```bash setsebool -P allow_httpd_mod_auth_pam on ``` #### 问题三:邮件传输代理 (MTA) 出现异常 Postfix 等 MTA 工具可能会因为缺乏适当许可而崩溃。确认是否有足够的权利去处理队列里的消息包件: ```bash semanage permissive -a postfix_master_t ``` 每种情况都需要具体分析对应的 AVCS 条目,从而采取针对性措施加以修正[^2]。 --- ### 结论 通过对 SELinux 正确配置与维护,可以在保障灵活性的同时极大提升操作系统层面防护水平。尽管初期学习曲线较陡峭,但从长远来看收益显著。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值