9.1、SELinux介绍

  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命令,那么必须在相关的策略配置文件中进行设置

 role user_r types user_passwd_t

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

9.3、SELinux相关的文件

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

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

[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权限。简单来说布尔属性控制进程行为本身,文件上下文属性控制进程读/写文件的权限。

[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的上下文格式:

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

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

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

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

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

  -R:递归

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