Linux之SElinux初级管理

一、什么是selinux

selinux 内核级加强型防火墙

起到限制服务功能,限制服务访问两个功能(在使用lftp访问时体现)

如何验证这两个功能:

1)先删除vsftpd下的配置信息,并重装vsftpd服务,装完后开启服务

Linux之SElinux初级管理

Linux之SElinux初级管理

2)这时在/mnt/目录下建立westos文件,并将建好的westos文件转移到/var/ftp/pub/下

Linux之SElinux初级管理

Linux之SElinux初级管理

3)使用lftp服务,发现可看到转移过来的westos文件

Linux之SElinux初级管理

4)同样,在本地用户student用户下,我们可以上传文件

Linux之SElinux初级管理

但这些操作都是在selinux不工作的前提下实现的,此时我们开启selinux服务,并重启虚拟机

Linux之SElinux初级管理

Linux之SElinux初级管理

5)开启selinux服务后,这时我们同样在/mnt/下建立文件lee并转移到/var/ftp/pub/,再去查看时发现查看不了

Linux之SElinux初级管理

同样,用本地用户身份访问,发现上传不了文件,如下图:

Linux之SElinux初级管理

这就是因为selinux的保护机制,下面我们来介绍selinux的简单管理:


二、如何管理selinux的级别

selinux分为三个级别:分别是开启(Enforing也就是强制),警告(Permissive),和关闭(disable)。由前两个级别向第三个级别相互转换时,在配置文件里改变后要重启机器才能生效,而前两个级别可以在线做转换,如下图:

getebforce可以查看selinux的状态,setenforce改变selinux的状态,跟0转换到警告状态,跟1转换到开启状态

Linux之SElinux初级管理


三、如何更改安全上下文列表

在selinux开启的状态下,开机时会给文件加上标签,所以上面转移的文件查看不了就是因为lee文件和其他文件不是同一个标签,如下图:vsftpd的标签是ftpd_t它只识别public_content_t标签的文件,而lee是mnt_t的标签,所以lftp服务查看不了

Linux之SElinux初级管理

同样,本地用户没有了删除上传的功能也是因为被selinux出于保护机制给关闭了,如下图

Linux之SElinux初级管理

这里我们可以使用setsebool开启服务,如下图,我开启了本地用户的功能,开启后它又具备了删除文件的功能

Linux之SElinux初级管理

所以内核安全性火墙打开,开机时候会给文件加标签,怎么修改,有两种方式:临时更改和永久更改,下面介绍

先ls -Z查看标签,从其他文件转移过来的文件标签不同,写在安全上下文列表里的直接restorecon刷新就可以变成同种类型

Linux之SElinux初级管理

没写在安全上下文列表里可以临时更改标签chcon -t 安全上下文里的  文件的形式临时修改(但临时修改的标签内核级火墙关闭开启时就没有记录)

Linux之SElinux初级管理

查看/var/ftp安全上下文列表可以看到public_content_t标签在里面,所以刚才直接刷新就可以将文件里的不同标签刷新成同种类型,但是查询/westos/文件的安全上下文列表发现是空白

Linux之SElinux初级管理

要想永久修改,就要把其写在列表里,命令fcontext -a -t 标签类型 文件 (-a表示add添加,-t后接类型 最后文件名的书写要和上面列表里的一致)如下图 

但是写入列表以后并不会立刻修改,要刷新,restorecon -RvvF(-R表示递归,把其下的所有文件更新列表,vv表示查看过程,F表示刷新)

Linux之SElinux初级管理

现在/westos/写在列表里,从其他文件转移过来的文件,如在/mnt/下建立一个hello文件,把hello文件转移过来,此时,只需要刷新这个文件,就可以变成同种标签,即可以在lftp里查看到

Linux之SElinux初级管理

Linux之SElinux初级管理



四、在selinux开启的情况下,怎么实现lftp 去写上传文件

第一步:chcon  -t修改文件标签,增加写的功能,如下图

Linux之SElinux初级管理

第二步:setsebool 打开ftp匿名用户write功能(-P表示永久修改)如下图

Linux之SElinux初级管理

第三步:增加组和权限,将/var/ftp/pub/添加到ftp组下,并赋予其组有写的权限

Linux之SElinux初级管理

完成上面三步,原本在selinux开启的情况下,匿名用户上传不了文件现在可以,如下图:

Linux之SElinux初级管理


五、监控selinux的错误信息

如下图,由于selinux产生的错误信息

Linux之SElinux初级管理

会在cat /var/log/messages里显示,并且安装有setroubleshoot-server的机器还会告诉你如何解决报错问题

Linux之SElinux初级管理

所有的报错信息在/var/log/audit/audi.log里,但是只会报错,不会告诉你怎么解决

Linux之SElinux初级管理