【无标题】

SELinux,Security Enhanced Linux 的缩写,也就是安全强化的 Linux,是由美国国家安全局(NSA)联合其他安全机构(比如 SCC 公司)共同开发的,旨在增强传统 Linux 操作系统的安全性,解决传统 Linux 系统中自主访问控制(DAC)系统中的各种权限问题(如 root 权限过高等)。它是部署在 Linux 上用于增强系统安全的功能模块。

  1. 主体 (Subject)
  2. 目标 (Object)
  3. 政策 (Policy)
  4. targeted minimum mls
  5. 安全性本文 (security context)

安全性本文存在于主体程序中与目标文件资源中。程序在内存内,所以安全性本文可以存入 是没问题。 安全性本文是放置到文件的inode 内的,因此主体程序想要读取目标文件资源时,同样需要读取 inode , 这 inode 内就可以比对安全性本文以及 rwx 等权限值是否正确,而给予适当的读取权限依据。 我们先来看看 /root 下面的文件的安全性本文好了。观察安全性本文可使用“ ls -Z ”去观察如下:(注意:你必须已经启动了 SELinux 才行! # 先来观察一下 root 主文件夹下面的“文件的 SELinux 相关信息”

[root@study ~]# ls -Z
# 上述特殊字体的部分,就是安全性本文的内容! 如上所示,安全性本文主要用冒号分为三个字段,这三个字段的意义为: 
Identify:role:type 身份识别:角色:类型 字段说明:身份识别 (Identify): 相当于帐号方面的身份识别!
主要的身份识别常见有下面几种常见的类型: 
unconfined_u:不受限的用户,也就是说,该文件来自于不受限的程序所产生的! 
system_u:系统用户,大部分就是系统自己产生的文件啰! 
角色 (Role): 通过角色字段,我们可以知道这个数据是属于程序、文件资源还是代表使用者。
一般的角色 有: 
object_r:代表的是文件或目录等文件资源,这应该是最常见的啰; 
system_r:代表的就是程序啦!不过,一般使用者也会被指定成为 system_r 喔! 你也会发现角色的字段最后面使用“ _r ”来结尾!因为是 role 的意思嘛! 
类型 (Type) (最重要!): 在默认的 targeted 政策中, Identify 与 Role 字段基本上是不重要的!重要的在于这个类型 (type) 字段! 基本上,一个主体程序能不能读取到这个文件资源,与类型字段有关!
而类 型字段在文件与程序的定义不太相同,分别是: 
type:在文件资源 (Object) 上面称为类型 (Type); 
domain:在主体程序 (Subject) 则称为领域 (domain) 了! domain 需要与 type 搭配,则该程序才能够顺利的读取文件资源啦! 
程序与文件 SELinux type 字段的相关性 那么这三个字段如何利用呢?首先我们来瞧瞧主体程序在这三个字段的意义为何!通过身份 识别与角色字段的定义, 我们可以约略知道某个程序所代表的意义喔!先来动手瞧一瞧目前 系统中的程序在 SELinux 下面的安全本文为何? 
# 再来观察一下系统“程序的 SELinux 相关信息” 
[root@study ~]# ps -eZ -e:显示所有进程; 
# 基本上程序主要就分为两大类,一种是系统有受限的 system_u:system_r,另一种则可能是用户自己的, 
# 比较不受限的程序 (通常是本机用户自己执行的程序),亦即是 unconfined_u:unconfined_r 这两种!

# 1\. 先看看 crond 这个“程序”的安全本文内容: [root@study ~]# ps -eZ | grep cron # 这个安全本文的类型名称为 crond_t 格式! # 2\. 再来瞧瞧可执行文件、配置文件等等的安全本文内容 [root@study ~]# ll -Zd /usr/sbin/crond /etc/crontab /etc/cron.d -d, –directory 将目录象文件一样显示,而不是显示其下的文件。

若文件的 type 设置错误, 那么即使权限设置为 rwx 全开的 777 ,该主体程序也无法读 取目标文件资源的啦!不过如此一来, 也就可以避免使用者将他的主文件夹设置为 777 时所 造成的权限困扰。 就是,万一你的 crond 配置文件的SELinux 并不是 system_cron_spool_t 时, 该配置文件真的可以顺利的被读取运行吗? 
# 1\. 先假设你因为不熟的缘故,因此是在“root 主文件夹”创建一个如下的 cron 设置: 
crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。 
[root@study ~]# vim checktime 
10 * * * * root sleep 60s 
 *    *    *     *     * 
 -    -    -     -     - 
 |    |    |     |     | 
 |    |    |     |     +----- 星期中星期几 (0 - 6) (星期天 为0) 
 |    |    |     +---------- 月份 (1 - 12) 
 |    |    +--------------- 一个月中的第几天 (1 - 31) 
 |    +-------------------- 小时 (0 - 23) 
 +------------------------- 分钟 (0 - 59) 
在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得环境变量生效, 
# 2\. 检查后才发现文件放错目录了,又不想要保留副本,因此使用 mv 移动到正确目录: 
[root@study ~]# mv checktime /etc/cron.d 
[root@study ~]# ll /etc/cron.d/checktime
 -rw-r--r--. 1 root root 27 Aug 7 18:41 /etc/cron.d/checktime 
# 仔细看喔,权限是 644 ,确定没有问题!任何程序都能够读取喔! 
# 3\. 强制重新启动 crond ,然后偷看一下登录文件,看看有没有问题发生! 
[root@study ~]# systemctl restart crond [root@study ~]# tail /var/log/cron 
# 上面的意思是,有错误!因为原本的安全本文与文件的实际安全本文无法搭配的缘故!

SELinux的三种模式

并非所有的 Linux distributions 都支持 SELinux 的,所以你必须要先观察一下你的系统版本

  1. enforcing:强制模式,代表 SELinux 运行中,且已经正确的开始限制 domain/type 了
  2. permissive:宽容模式:代表 SELinux 运行中,不过仅会有警告讯息并不会实际限制
  3. domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
  4. disabled:关闭,SELinux 并没有实际运行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值