九、SELiunx介绍

简介:

  selinux(Security Enhanced Linux ):SELinux 是在进行程序、文件等细部权限配置依据的一个核心模块!由于启动网络服务的也是程序,因此刚好也能够控制网络服务能否存取系统资源的一道关卡!其通过MAC(委任式存取控制) 的方式来控管程序。组成部分

主体 (Subject)程序

目标 (Object)文件系统

策略 (Policy)

  targeted:针对网络服务限制较多,针对本机限制较少,是默认的政策;

  strict:完整的 SELinux 限制,限制方面较为严格。

9.2、SELinux架构

  要了解SELinux架构,首先需要了解一些相关的术语:

身份(identify)

 在SELinux中,身份概念不同于传统UNIX uid,他们可以共存于一个系统,但却是不同的概念。身份是安全上下文的一部分,它会印象那个域可以进入。一个SELinux的身份会根标准UNIX登录名有相似的文本表示,但是运行su命名不会改变SELinux中的身份。常见的身份类型有:

root:表示 root 的帐号身份

system_u:表示系统程序方面的识别,通常就是程序

user_u:代表的是一般使用者帐号相关的身份

策略

 策略就是可以设置的规则,决定了一个角色的用户可以访问什么、哪个角色可以进入那个域,用户可以根据想要建立的系统特点来决定设置什么策略。

 所有进程在域中进行,域直接决定了进程的访问。域基本上是一个进程允许做的操作列表,或者说它决定了一个进程可以对哪些类型进行操作。

root:表示 root 的帐号身份

system_u:表示系统程序方面的识别,通常就是程序

user_u:代表的是一般使用者帐号相关的身份。

类型

  类型是分配给一个对象的并决定谁可以访问这个对象。它的定义和域基本相同,不同点在于域是对进程的应用,而类型是分配给目录、文件和套接字的。

角色

 角色决定了哪些域可以使用。如果一个策略数据库中定义了一个角色不可以使用一个域,那么它将拒绝。如果允许一个属于user_t域的用户执行passwd命令,那么必须在相关的策略配置文件中进行设置

1
  role user_r types user_passwd_t

wKiom1kIKlXxIvLFAACh5JryPoE968.png-wh_50

  SELinux系统示意图如图所示。首先提供策略语言供系统管理者来制定安全策略,并由核心层进行存取控制检查。SELinux将系统核心及安全策略绑在一起,并经由系统呼叫方式检查是否有存取权限。

9.3、SELinux相关的文件

  selinux伪文件系统。/selinux/即selinux伪文件系统,它包括了内核子系统最常使用的各种命令。此文件系统与/proc伪文件系统非常相似。系统管理员和用户通常不需要直接操作该部件。

  /etc/selinux/目录,所有策略文件和主要配置文件所在的首要目录。

1
2
3
4
5
6
7
8
9
10
11
12
[root@mylinux selinux] # cat /etc/selinux/config   selinux配置文件
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
[root@mylinux selinux] #

  /etc/selinux/config 配置文件控制系统下一次启动过程中加载哪个策略,以及系统运行在哪个模式下,可以使用sestatus密令确定当前selinux的状态。该文件控制两个配置设置:selinux模式和活动策略。selinux模式由SELINUX此变量确定,可以有三种状态:enforcing、permissive、disabled。

在Enforcing模式下,策略完整执行,应当在所有要求增强Linux安全性的操作系统上使用。在Peimissive模式下,策略规则不被强制执行;相反,只是审核遭受拒绝的消息。Disable模式下,selinux内核机制策略关闭,只有在系统启动时策略载入前系统才会处于Disable模式。

9.4、SELinux布尔值和上下文配置

 当使用者要执行程序或这进程要执行动作时,系统会依照policy所制定的内容来检查使用者或进程的应用权限,如果权限符合,系统决会允许这个操作执行。SELinux检查方式独立于传统的使用者权限,在selinux中,必须要同时符合传统使用者权限和selinux权限才能顺利执行。

  在Centos系统中使用targeted policy保护系统上的各项服务,其主要分为两种类型的属性:布尔值及安全上下文。布尔值属性用来控制每个守护进程的权限,除了可对单一守护进程做selinux机制开关外,还可以对该进程的局部权限做控制。上下文属性用来控制文件系统中每个文件及目录的selinux权限。简单来说布尔属性控制进程行为本身,文件上下文属性控制进程读/写文件的权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@mylinux targeted] # tree /etc/selinux/targeted/ #targeted policy设定文件的架构
/etc/selinux/targeted/
├── contexts
│   ├── customizable_types
│   ├── dbus_contexts
│   ├── default_contexts
│   ├── default_type
│   ├── failsafe_context
│   ├── files
│   │   ├── file_contexts
│   │   ├── file_contexts.homedirs
│   │   ├── file_contexts.pre
│   │   └── media
│   ├── initrc_context
│   ├── netfilter_contexts
│   ├── removable_context
│   ├── securetty_types
│   ├── sepgsql_contexts
│   ├── userhelper_context
│   ├──  users
│   │   ├── guest_u
│   │   ├── root
│   │   ├── staff_u
│   │   ├── unconfined_u
│   │   ├── user_u
│   │   └── xguest_u
│   ├── virtual_domain_context
│   ├── virtual_image_context
│   └── x_contexts
├── logins
...

contexts/:存储这个targeted policy的安全上下文

modules/:多层次policy模块化目录

modules/active:多层次policy模块化目录,系统目前正在使用的policy

modules/previous:多层次policy模块化目录,系统之前使用的policy

policy/:存放二进制的policy文件

modules/*/booleans:存放targeted policy中每个限制的布尔值

modules/*/booleans.local:管理者自定义的targeted policy布尔值

contexts/files:domain type的policy设定文件

contexts/files/file_contexts.local:管理者自定义的policy文件

  • targeted policy布尔属性设定

getsebool:取得目前系统上selinux布尔属性状态

  格式:getsebool [-a] [boolean]

setsebool:立即变更selinux布尔属性 

  格式:setsebool [ -PV] boolean value | bool1=val1 bool2=val2 ...

  -P选项表示将此配置写入配置文件中,永久有效。不添加此选项只在当前系统下有效,开机后失效。

  • targeted policy上下文属性设定

 上下文属性空来控制系统的每个用户、进程、文件等权限。selinux的上下文格式:

1
user_u:system_r:unconfined_t   #第一个字段用户,第二个字段角色,第三个字段类型。

ls -alZ:查看文件目录的上下文属性

id -Z:查看目前使用者身份的上下文属性

ps -eZ:查看进程的上下文属性

restorecon:改写部分目录内所有文件及目录的上下文

  -R:递归

chcon:手动更改文件或目录的上下文



本文转自 梦想成大牛 51CTO博客,原文链接:http://blog.51cto.com/yinsuifeng/1921139,如需转载请自行联系原作者

相关文章
|
6月前
|
数据采集 人工智能 算法
开源能源管理系统应用前景:以 MyEMS 为例
MyEMS 是一款基于 Python 和 React 的开源能源管理系统,助力企业实现能源数据采集、分析与优化,支持电、水、气、热及新能源的数据接入。其开源特性降低部署成本,结合 AI 分析与模块化设计,广泛应用于工业、建筑、园区等场景,提升能效、降低能耗成本,并推动碳中和目标的实现。
160 0
|
人工智能 Linux iOS开发
操作系统的演变:从批处理系统到现代操作系统
【10月更文挑战第27天】 本文回顾了操作系统的历史,从最早的批处理系统到现代的多任务、多用户操作系统。我们将探讨操作系统的核心概念,包括进程管理、内存管理、文件系统和设备驱动等。我们还将介绍一些著名的操作系统,如Windows、Linux和macOS,并讨论它们的特点和优势。最后,我们将展望操作系统的未来发展趋势。
435 0
|
编译器 数据处理 开发者
Python在嵌入式系统
【4月更文挑战第12天】Python在嵌入式系统中的应用日益增长,得益于其易读性、易用性和丰富的库。它常用于快速原型开发、脚本编程,以及跨平台兼容性的需求。Python的库生态系统简化了开发工作,提高了安全性与可靠性。MicroPython和CircuitPython等解释器让Python能在资源有限的硬件上运行。尽管如此,在高性能或极低资源场景下,C/C++等语言可能仍是首选。开发者需根据实际需求权衡选择。
614 5
|
JavaScript API
在Vue中,有哪些方法可以监听元素的状态变化?
在Vue中,有哪些方法可以监听元素的状态变化?
812 2
|
数据可视化 Linux API
【Python】—— 如果使用matplotlib做数据可视化
【Python】—— 如果使用matplotlib做数据可视化
312 0
|
开发者 索引 Python
Python中的海象运算符:简洁而强大的赋值表达式
【4月更文挑战第17天】Python 3.8 引入了海象运算符 `:=`,也称赋值表达式运算符,用于在表达式内部赋值,简化代码并提升可读性。它能用于条件判断、循环控制和函数参数等场景,优化逻辑流程。然而,使用时需注意可读性、运算符优先级及赋值限制,以确保代码清晰易懂。海象运算符是Python编程的一个有用工具,但应根据情况谨慎使用。
|
内存技术
基于Micropython利用ESP32-C3驱动墨水屏显示图片
基于Micropython利用ESP32-C3驱动墨水屏显示图片
1288 0
Landsat系列卫星WRS条带号Path Row分布介绍与对照图
Landsat系列卫星WRS条带号Path Row分布介绍与对照图
478 1
|
缓存 安全 Linux
智能终端信息安全概念(十):内核安全(2)SElinux
智能终端信息安全概念(十):内核安全(2)SElinux
453 0
|
SQL Oracle 关系型数据库
Oracle 插入时间时 ,报错:ORA-01861: 文字与格式字符串不匹配
Oracle 插入时间时 ,报错:ORA-01861: 文字与格式字符串不匹配
1095 0

热门文章

最新文章