九、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
|
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,如需转载请自行联系原作者
