初步认识SELinux安全管理

今天我们来看一下Linux系统下一个神秘的安全管理SELinux。

SELinux安全的基本概念

Security Enhanced Linux (SELinux)是一个额外的系统安全层。SELinux的主要目标是防止已遭遇泄露的系统服务访问用户数据。大多数Linux管理员都熟悉标准的用户/组/其他权限安全模型。这种基于用户和组的模型称为自由决定的访问控制。SELinux提供另一层安全,他基于对象并由更加复杂的规则控制,称为强制访问控制。

SELinux是用于确定那个进程可以访问那些文件、目录和端口的一组安全规则。每个文件、进程和端口都具有特别的安全标签,称为SELinux上下文。上下文是一个名称,SELinux策略使用它来确定某个进程能否访问文件、目录或端口。除非显式规则授予访问权限,否则,在默认情况下,策略不允许任何交互。如果没有允许规则,则不允许访问。

SELinux标签具有多种上下文:用户、角色、类型和敏感度。目标策略(即 Red Hat Enterprise Linux 中启用的默认策略)会根据第三个上下文(即类型上下文)来制定自己的规则。类型上下文名称通常以 _t 为结尾。服务器的类型上下文是 httpd_t 。通常位于 /var/www/html 中的文件和目录的类型上下文是 httpd_sys_content_t 。通常位于 /tmp 和 /var/tmp 中的文件和目录的类型上下文是 tmp_t 。Web服务器端口的类型上下文是 http_port_t 。

SELinux模拟练习

练习环境:RHEL7.0

1、如果不知道你的SELinux有没有启动的话,你可以用下面这条命令查看:

[root@server0 ~]# getenforce Enforcing

Enforcing的意思是当前状态是开启的

下面我们来看看如何更改SELinux模式:

[root@server0 ~]# vim /etc/sysconfig/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=enforcing# SELINUXTYPE= can take one of these two values:# targeted – Targeted processes are protected,# minimum – Modification of targeted policy. Only selected processes are protected. # mls – Multi Level Security protection.SELINUXTYPE=targeted

SELinux模式分为三种:Enforcing、Permissive 和 Disabled。Disabled 代表 SELinux 被禁用,Permissive 代表仅记录安全警告但不阻止可疑行为,Enforcing 代表记录警告且阻止可疑行为。

改变 SELinux 运行状态

setenforce [ Enforcing | Permissive | 1 | 0 ]

该命令可以立刻改变 SELinux 运行状态,在 Enforcing 和 Permissive 之间切换,结果保持至关机。一个典型的用途是看看到底是不是 SELinux 导致某个服务或者程序无法运行。若是在 setenforce 0 之后服务或者程序依然无法运行,那么就可以肯定不是 SELinux 导致的。

若是想要永久变更系统 SELinux 运行环境,可以通过更改配置文件 /etc/sysconfig/selinux 实现。注意当从 Disabled 切换到 Permissive 或者 Enforcing 模式后需要重启计算机并为整个文件系统重新创建安全标签(touch /.autorelabel && reboot)。

2、下面我们来做一个小例子:

当我们将SELinux设置为“强制”模式后,我们把httpd.conf里的根目录更改以后,会发现,网页无法打开。

这里我们将http的根目录改为如下:

[root@server0 ~]# vim /etc/httpd/conf/httpd.conf

…DocumentRoot “/html”……<Directory “/html”>

然后再在根下创建html文件夹

[root@server0 ~]# mkdir /html[root@server0 ~]# echo “linuxidc” > /html/index.html

创建完之后我们来看一下咱们创建文件的上下文

显示SELinux上下文的选项(通常是-Z)。例如,ps、ls、cp和mkdir全都使用 -Z 选项来显示或设置SELinux上下文。

更改完目录后我们重启httpd服务然后后打开网页,您将会得到一个错误消息,提示您不具有访问该文件的权限。

打开网页我们这里使用elinks命令,如果没有可以通过yum来安装。

[root@server0 ~]# elinks

为什么会显示没有权限呢?咱们接着往下看。

3、首先咱们来看看/var/www/html目录标准的上下文是什么。

[root@server0 ~]# ll -Z /var/www/html-rw-r–r–. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

然后再看看咱们刚才新创建目录的上下文是什么。

[root@server0 html]# ll -Z-rw-r–r–. root root system_u:object_r:default_t:s0 index.html

这里我们看到/var/www/html(源目录)的上下文是httpd_sys_content_t,而咱们之前创建(目标目录)的index.html文件的上下文是default_t。

由于源上下文和目标上下文的类型不同,httpd进程无法对default_t类的文件及目录的读取,所以会显示没有权限,这里我们需要把/html目录的上下文修改成httpd能够读取的类型。

httpd能够读取什么样的类型呢,从上边我们可以看到httpd 能读取的类型是 httpd_sys_content_t的类型。

知道了这个类型,我们就把/html这个目录改成这个类型。

4、更改文件的SELinux上下文

更改SELinux的上下文可以使用两个命令:chcon和restorecon。

chcon 命令是将文件的上下文更改成已指定为该命令参数的上下文。

chcon 命令:修改对象(文件)的安全上下文。比如:用户:角色:类型:安全级别。 语法: Chcon [OPTIONS…] CONTEXT FILES….. Chcon [OPTIONS…] –reference=PEF_FILES FILES…选项: CONTEXT 为要设置的安全上下文 FILES 对象(文件) –reference 参照的对象 PEF_FILES 参照文件上下文 FILES 应用参照文件上下文为我的上下文。 OPTIONS 如下: -f 强迫执行 -R 递归地修改对象的安全上下文 -r ROLE 修改安全上下文角色的配置 -t TYPE 修改安全上下文类型的配置 -u USER 修改安全上下文用户的配置 -v 显示冗长的信息 -l, –range=RANGE 修改安全上下文中的安全级别

restorecon 命令是更改文件或目录的SELinux上下文的首选方法。不同于 chcon,在使用此命令时,不会明确指定上下文。它使用SELinux策略中的规则来确定应该是那种文件上下文。

好像有头大象在吸水。然后再去了芦笛岩,

初步认识SELinux安全管理

相关文章:

你感兴趣的文章:

标签云: