一、SELinux简介
1、什么是SELinux:
SELinux(security enhanced linux)安全增强型Linux系统,它是一个linux内核模块,也是Linux的一个安全子系统。

Selinux的主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)

2、SELinux有两个级别:
强制、警告
setenforce 0 :表示警告(Permissive)
setenforce 1 :表示强制(Enforcing)
3、SELinux相当于一个插件(内核级的插件)
4、SELinux功能开启后,会关闭系统中不安全的功能
5、查看日志中的警告

cat /var/log/audit/audit.log

6、修改SELinux的状态

vim /etc/sysconfig/selinux

状态分为以下三种:
SELINUX=enforcing #selinux开启,级别为强制
SELINUX=permissive #selinux开启,级别为警告
SELINUX=disabled #selinux关闭
7、SELinux有两个功能
1、程序访问文件 :安全上下文
安全上下文的临时更改

chcon -t 安全上下文  文件
chcon -R -t 安全上下文 目录

设置后,可通过ls -lZ进行查看
2、程序访问功能:sebool
selinux 对服务功能添加的开关
#查看xxx的功能开关

getsebool -a | grep xxx  

二、selinux的用法:影响文件的安全上下文
(一)修改文件的安全上下文
当我们从别的地方复制一个文件到/var/ftp,而当我们登录lftp之后,发现看不到该文件,是因为这个文件的安全上下文和/var/ftp的安全上下文不匹配,这就是selinux的保护机制,所以我们需要将这个文件的安全上下文修改和/var/ftp的达到一致。
1、创建文件

touch /mnt/file1

2、将该文件移动到/var/ftp下
注:为什么是移动而不是复制,移动是重命名的过程,文件的属性和权限不会改变,文件的属性和权限不会改变,而复制是新建文件的过程,文件的属性和权限等等可能会发生改变。

mv /mnt/file /var/ftp

3、通过lftp IP 命令 查看当前目录下的文件

lftp 172.25.254.210 ls

在这里插入图片描述
发现并没有生成file1文件

4、切换至 /var/ftp 下

cd /var/ftp

5、通过ls -Z 查看文件类型【包括文件的安全上下文属性】

ls -z

在这里插入图片描述
也可以通过 semanager fcontext -l | grep /var/ftp 查看/var/ftp的安全上下文

semanager fcontext -l | grep /var/ftp

在这里插入图片描述
6、然后修改file1的安全上下文

chcon -t public_content_t file1

7、然后执行lftp IP ls 命令 进行查看

lftp 172.25.254.210 ls

在这里插入图片描述
semanage fcontext -l 显示内核已经记录的安全上下文

(二)修改目录的安全上下文
/var/ftp是lftp的默认发布目录,它默认的安全上下文是public_content_t,如果我们想要修改/var/ftp的默认发布目录,就必须修改这个新的发布目录的安全上下文
实例步骤如下:
1、创建目录

mkdir /jay

2、在该目录下创建文件

touch /jay/file

3、编写配置文件

vim /etc/vsftpd/vsftpd.conf

设置anon_root=/jay
4、重启服务

systemctl restart vsftpd

5、进行初次连接

lftp 172.25.254.210 

6、ls
不会显示/jay和/jay里边的文件,因为其安全上下文不是content_public_t
注:setenfoce 0/1 ls 后可以显示里边的文件,说明这个问题的出现和selinux有关
在这里插入图片描述
7、修改/jay目录的安全上下文由两种方法,一种是临时的,一种是永久的
(1)临时的:

chcon -t -R public_content_t /jay     # -R 表示递归

注意:如果要恢复安全上下文,修改selinux的配置文件,将selinux修改为disable后重启,再修改为enforcing重启,/jay的安全上下文会变回原样。

(2)永久地:
修改/jay和底下的所有文件的安全上下文,-a表示增加,-t表示类型

semanage fcontext -a -t public_content_t '/jay(/.*)/?'

查看/jay的安全上下文

semanage fcontext -l | grep /jay   

递归刷新并显示刷新过程

restorecon -F vvR /jay

然后

lftp 172.25.254.210
ls

便可以查看
在这里插入图片描述
三、selinux的用法:对进程本身开关的影响sebool值
selinux会对我们系统中有些功能加上开关,我们在使用这些功能时,应该先打开开关才可以使用
(一)功能开关的影响
1、

lftp 172.25.254.210 -u abc

2、

put /etc/passwd

// 显示不能上传,如果将selinux的值修改为0,则可以上传,说明这是selonux对上传文件的影响
在这里插入图片描述
3、

getsebool -a | grep ftp  

显示ftp的上传功能未开启
4、

setsebool -P ftp_home_dir on

打开ftp的上传功能 -P表示永久打开
在这里插入图片描述
5、

getsebool -a | greo ftp

显示ftp的上传功能开启
6、

 lftp 172.25.254.210 -u abc

7、

put /etc/group

在这里插入图片描述
(二)selinux的排错工具:setroubleshoot-server
该工具需要安装:

yum install -y setroubleshoot-server

1.touch /mnt/file

2.mv /mnt/file /var/ftp

3.在浏览器里输入ftp://172.25.254.210/file 不能看到自己建立的文件,这是由于安全上下文的关系

4.清空/var/log/messages

5.在浏览器处刷新,查看/var/log/messages

6.里边有解决方案:里边说明解决方案在/var/log/audit/audit.log里

解决方案是:
restorecon -v /var/ftp/*

7.这个解决方案是软件setroubleshoot-server-3.2.17.e17.x86_64提供的

8.如果我们卸载这个软件,那么在/var/log/audit/audit.log里边就不会再有解决方案

原文链接:https://blog.csdn.net/jay_youth/article/details/80327599

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐