Linux之SElinux初级管理
一、什么是selinux
selinux 内核级加强型防火墙
起到限制服务功能,限制服务访问两个功能(在使用lftp访问时体现)
如何验证这两个功能:
1)先删除vsftpd下的配置信息,并重装vsftpd服务,装完后开启服务
2)这时在/mnt/目录下建立westos文件,并将建好的westos文件转移到/var/ftp/pub/下
3)使用lftp服务,发现可看到转移过来的westos文件
4)同样,在本地用户student用户下,我们可以上传文件
但这些操作都是在selinux不工作的前提下实现的,此时我们开启selinux服务,并重启虚拟机
5)开启selinux服务后,这时我们同样在/mnt/下建立文件lee并转移到/var/ftp/pub/,再去查看时发现查看不了
同样,用本地用户身份访问,发现上传不了文件,如下图:
这就是因为selinux的保护机制,下面我们来介绍selinux的简单管理:
二、如何管理selinux的级别
selinux分为三个级别:分别是开启(Enforing也就是强制),警告(Permissive),和关闭(disable)。由前两个级别向第三个级别相互转换时,在配置文件里改变后要重启机器才能生效,而前两个级别可以在线做转换,如下图:
getebforce可以查看selinux的状态,setenforce改变selinux的状态,跟0转换到警告状态,跟1转换到开启状态
三、如何更改安全上下文列表
在selinux开启的状态下,开机时会给文件加上标签,所以上面转移的文件查看不了就是因为lee文件和其他文件不是同一个标签,如下图:vsftpd的标签是ftpd_t它只识别public_content_t标签的文件,而lee是mnt_t的标签,所以lftp服务查看不了
同样,本地用户没有了删除上传的功能也是因为被selinux出于保护机制给关闭了,如下图
这里我们可以使用setsebool开启服务,如下图,我开启了本地用户的功能,开启后它又具备了删除文件的功能
所以内核安全性火墙打开,开机时候会给文件加标签,怎么修改,有两种方式:临时更改和永久更改,下面介绍
先ls -Z查看标签,从其他文件转移过来的文件标签不同,写在安全上下文列表里的直接restorecon刷新就可以变成同种类型
没写在安全上下文列表里可以临时更改标签chcon -t 安全上下文里的 文件的形式临时修改(但临时修改的标签内核级火墙关闭开启时就没有记录)
查看/var/ftp安全上下文列表可以看到public_content_t标签在里面,所以刚才直接刷新就可以将文件里的不同标签刷新成同种类型,但是查询/westos/文件的安全上下文列表发现是空白
要想永久修改,就要把其写在列表里,命令fcontext -a -t 标签类型 文件 (-a表示add添加,-t后接类型 最后文件名的书写要和上面列表里的一致)如下图
但是写入列表以后并不会立刻修改,要刷新,restorecon -RvvF(-R表示递归,把其下的所有文件更新列表,vv表示查看过程,F表示刷新)
现在/westos/写在列表里,从其他文件转移过来的文件,如在/mnt/下建立一个hello文件,把hello文件转移过来,此时,只需要刷新这个文件,就可以变成同种标签,即可以在lftp里查看到
第一步:chcon -t修改文件标签,增加写的功能,如下图
第二步:setsebool 打开ftp匿名用户write功能(-P表示永久修改)如下图
第三步:增加组和权限,将/var/ftp/pub/添加到ftp组下,并赋予其组有写的权限
完成上面三步,原本在selinux开启的情况下,匿名用户上传不了文件现在可以,如下图:
五、监控selinux的错误信息
如下图,由于selinux产生的错误信息
会在cat /var/log/messages里显示,并且安装有setroubleshoot-server的机器还会告诉你如何解决报错问题
所有的报错信息在/var/log/audit/audi.log里,但是只会报错,不会告诉你怎么解决