SELinux(Security Enhanced Linux)

1. SELinux初探

1.1 什么是SELinux

SELinux是整合到内核的一个模块
SELinux是在进行进程、文件等详细权限设置时依据的一个内核模块
由于启动网络服务的也是进程,因此刚好也是控制网络服务能否读写系统资源的一道关卡

1.1.0 自主访问控制(DAC)


上图来自百度百科

使用DAC产生的结果,以Apache为例说明

1.1.1 强制访问控制(MAC)


上图来自百度百科

使用MAC产生的结果,以Apache为例说明

1.2 SELinux的运行模式

SELinux是通过MAC(强制访问控制)的方式来管理进程的,它控制的主体是进程,而目标则是该进程能否读取到文件资源

  • 主体(Subject)
    SELinux主要管理的就是进程
  • 目标(Object)
    主体进程能否读写的目标资源(一般就是文件系统)
  • 策略(Policy)
    由于进程与文件数量庞大,因此SELinux会依据某些服务来制订基本的读写安全性策略,这些策略会有详细规则(Rules)CentOS 7.x里提供三个主要策略
    1.targeted:针对网络服务限制较多,针对本机限制较少(默认策略)
    2.minimum:由target自定义而来,仅针对选择的进程来保护
    3.mls:完整的SELinux限制,限制方面较严格
  • 安全上下文(security context)
    主体与目标的安全上下文必须一致才能够顺利读写
    安全上下文是放置到文件的inode内的


由上图:
(1)主体进程必须要通过 SELinux 策略内的规则放行后,才可以与目标资源进行安全上下文的比对
(2)若比对失效则无法读写目标,若比对成功则可以开始读写目标

策略内需制订详细的 domain(在进程中)/type(在文件中)相关性
文件的type设置错误,那么即使权限设置为 rwx 全开的777,该主体进程也无法读取目标文件

查看root家目录下面的文件的SELinux相关信息

[root@study ~] ls -Z
# -Z, --context
# print any security context of each file


查看系统进程的SELinux相关信息

[root@study ~] ps -e

1.3 SELinux三种模式的启动、关闭与查看

并非所有Linux发行版都支持SELinux
目前SELinux依据是否被启动,分为三种模式:

  1. 强制模式(Enforcing):代表SELinux运行中,且已经开始限制 domain/type
  2. 宽容模式(Permissive):代表SELinux运行中,仅会有警告信息并不会实际限制 domain/type 的读写(可用作SELinux的debug之用)
  3. 关闭模式(Disabled):SELinux并没有实际运行

主体进程需要经过策略规则、安全上下文比对之后,加上rwx的权限规范,若一切合理才会让进程顺利读取文件


并非所有进程都会被SELinux所管制

查看进程是否受到SELinux的限制即是否受限(confined)

范例:
找crond与bash这两个进程是否被限制

[root@study ~] ps -eZ | grep -E 'cron|bash'

由上可以得知
crond是受到SELinux限制的主体进程,
bash因为是系统进程所以为不受限类型(unconfined_t)所以直接判断rwx

查看目前的SELinux模式

[root@study ~] getenforce

显示SELinux状态

sestatus命令的作用是可以查看系统运行SELinux的状态,应用模式、布尔值,以及显示/etc/sestatus.conf文件内列出的文件和进程的安全上下文。

SELinux全称是Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,已在linux内核中存在了许多年,对于目前可用的linux安全模块来说,SELinux功能最全面,测试最充分,是linux内核的安全保镖。

SELinux主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)

[root@study ~] sestatus [参数]
-v : 详细检查进程和文件的安全上下文
-b : 显示当前布尔值状态

SELinux的配置文件为【/etc/seLinux/config】

SELinux的启动与关闭
SELinux在Enforcing与Permissive之间切换

setenforce命令 – 设置SELinux状态
setenforce命令是用来开启和关闭SELinux的

[root@study ~] setenforce [0|1]
0:转成Permissive 宽容模式
1:转成Enforcing 强制模式

范例:
将SELinux在Enforcing与Permissive之间切换与查看
setenforce无法在Disabled模式下切换模式

[root@study ~] setenforce 0
[root@study ~] getenforce
Permissive
[root@study ~] setenforce 1
[root@study ~] getenforce
Enforcing

1.4 SELinux策略内的规则管理

1.4.0 SELinux各个规则的布尔值查询:getsebool

getsebool命令是用来查询SElinux策略内各项规则的布尔值(on/off)

[root@study ~] getsebool [参数]
-a : 列出目前系统上面的所有布尔值

1.4.1 查询SELinux策略规则:seinfo、sesearch等

SELinux的策略与规则管理相关命令:seinfo命令、sesearch命令、getsebool命令、setsebool命令、semanage命令

[root@study ~] seinfo [参数]
-a : 列出SELinux的状态、规则布尔值、身份识别、角色、类型等所有信息
-t : 列出SELinux所有类型(type)的种类
-r : 列出SELinux所有角色(role)的种类
-u : 列出SELinux所有身份识别(user)的种类
-b : 列出所有规则的种类(布尔值)
[root@study ~] sesearch [参数]
-a : 列出该类型或布尔值的所有相关信息
-t : 后面还要接类型,例如 -t httpd_t
-b : 后面还要接布尔值的规则,例如 -b httpd_enable_ftp_server

1.4.2 修改SELinux规则的布尔值:setsebool

setsebool命令是用来修改SElinux策略内各项规则的布尔值

[root@study ~] setsebool [参数]
-P : 直接将设置值写入配置文件,该设置数据将来会生效的

1.5 SELinux安全上下文的修改

1.5.0 手动修改文件的SELinux类型:chcon

chcon命令是修改对象(文件)的安全上下文,比如:用户、角色、类型、安全级别。也就是将每个文件的安全环境变更至指定环境

[root@study ~] chcon [参数]
-h : 影响符号连接而非引用的文件
-R : 递归处理所有的文件及子目录
-v : 为处理的所有文件显示诊断信息
-u : 设置指定用户的目标安全环境
-r : 设置指定角色的目标安全环境
-t : 设置指定类型的目标安全环境
-l : 设置指定范围的目标安全环境

1.5.1 使文件恢复正确的SELinux类型:restorecon

restorecon命令的作用是可以修复SELinux文件属性即恢复文件的安全上下文。

在Selinux中,一切皆对象,由存放在节点的扩展属性域的安全元素所控制其访问。所有文件和端口资源和进程都具备安全标签就是安全上下文。

一般情况下,cp命令会重新生成符合目录本身的安全上下文,当然可以使用-p参数,mv命令只是单纯将原有文件移动过去 不改变文件本身的属性,要用到restorecon命令

[root@study ~] restorecon [参数]
-i : 忽略不存在的文件
-f : infilename 文件 infilename 中记录要处理的文件
-e : directory 排除目录
-v : 将过程显示到屏幕上
-F : 强制恢复文件安全语境

1.5.2 默认目录的安全上下文查询与修改:semanage

semanage命令是用来查询与修改SELinux默认目录的安全上下文

[root@study ~] semanage [参数]
-l : 查询
-a : 增加,你可以增加一些目录的默认安全上下文类型设置
-m : 修改
-d : 删除
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Uncertainty!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值